OPENAPI Specifications => MCP (Model Context Protocol) Tools

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 }>;
}