OPENAPI Specifications => MCP (Model Context Protocol) Tools
开放API规范 => MCP (模型上下文协议) 工具
概述
- 🔧 将 OpenAPI 规范转换为 MCP (模型上下文协议) 工具
- 🚀 基于已有 API 规范快速构建 MCP 服务器
基本使用
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import {
CallToolRequestSchema,
ListToolsRequestSchema,
} from '@modelcontextprotocol/sdk/types.js';
import { Converter } from 'openapi2mcptools';
// 1. 创建转换器
const converter = new Converter({ baseURL: 'https://api.example.com' });
// 2. 加载 OpenAPI 规范
await converter.load({
// OpenAPI 规范对象
});
// 3. 获取工具列表和调用器
const tools = converter.getToolsList();
const toolCaller = converter.getToolsCaller();
// 4. 创建 MCP 服务器
const server = new Server(
{ name: 'mcp-server-openapi', version: '1.0.0' },
{ capabilities: { tools: {} } }
);
// 5. 注册处理程序
server.setRequestHandler(ListToolsRequestSchema, async () => {
return { tools };
});
server.setRequestHandler(CallToolRequestSchema, async (request) => {
return await toolCaller(request);
});
// 6. 启动服务器
const transport = new StdioServerTransport();
await server.connect(transport);
自定义 HTTP 客户端
您可以提供自定义 HTTP 客户端来处理 API 调用:
import axios from 'axios';
import { Converter } from 'openapi2mcptools';
const converter = new Converter({
baseURL: 'https://api.example.com',
httpClient: axios
});
HTTP 客户端接口:
export type RequestConfig = {
url?: string;
method?: string;
headers?: any;
params?: any;
data?: any;
}
export interface HTTPClient {
request: (requestConfig: RequestConfig) => Promise<{ data: any }>;
}