项目简介
'openapi-to-mcp-converter' 是一个Node.js库,旨在简化将现有的RESTful API转换为符合Model Context Protocol (MCP) 的服务器过程。通过解析标准的OpenAPI 3.0规范文件,它可以自动生成一个MCP服务器实例,将规范中定义的每个API操作作为LLM可调用的“工具”暴露出来。
主要功能点
- 自动化转换: 自动读取并解析OpenAPI 3.0规范(JSON格式)。
- 工具生成: 将OpenAPI规范中的每个路径和HTTP方法组合(即每个API操作)映射为一个MCP工具。
- Schema推导: 根据OpenAPI中定义的参数(路径、查询、头部)和请求体,自动生成符合JSON Schema标准的MCP工具输入Schema。
- 请求代理: 作为MCP服务器,接收LLM客户端发出的工具调用请求,将MCP格式的参数映射到对应的HTTP请求参数位置,并通过HTTP客户端(如Axios)调用实际的API端点。
- 结果转换: 将实际API的HTTP响应体封装成MCP工具调用的响应格式返回给LLM客户端。
- 基于MCP SDK: 利用官方Model Context Protocol SDK构建服务器,支持Stdio等传输协议。
安装步骤
使用npm安装此库:
npm install openapi-mcp-converter
项目需要Node.js v18或更高版本,以及TypeScript v5.x或更高版本(如果使用TypeScript编写您的服务器启动脚本)。
服务器配置 (供MCP客户端参考)
MCP客户端需要知道如何启动您的MCP服务器进程并与其通信。使用此库构建的MCP服务器通常作为一个Node.js脚本运行。以下是MCP客户端通常需要配置的信息示例:
- 服务器名称: 服务器启动后会向客户端声明一个名称,例如此转换器默认声明的名称是 '"github-mcp-server"'(可在服务器代码中修改)。这是客户端连接成功后识别服务器的标识。
- 启动命令 (command): 运行服务器脚本的命令。通常是'node'。
- 启动参数 (args): 传递给命令的参数列表。第一个参数通常是您的服务器启动脚本文件的路径。例如,如果您编写了一个名为 'run_my_mcp_server.js' 的脚本来启动服务器,参数列表就是 '["run_my_mcp_server.js"]'。
- 传输协议 (transport): 服务器和客户端通信的方式。此库的示例代码展示了使用'stdio'(标准输入输出流)进行通信。根据您的服务器脚本配置选择对应的协议(例如:'"stdio"')。
MCP客户端通常会有一个JSON格式的配置,包含上述信息,例如:
{ // 其他客户端配置... "servers": [ { "displayName": "我的OpenAPI转工具服务器", // 客户端界面显示的名称 "serverInfo": { "command": "node", // 启动命令 "args": ["/path/to/your/server/script.js"], // 您的服务器启动脚本路径 "transport": "stdio" // 传输协议 } // 其他与此服务器相关的配置... } ] }
请根据您的服务器脚本实际路径和您选择的传输协议来配置您的MCP客户端。
基本使用方法
-
准备您的OpenAPI 3.0规范文件(通常为JSON格式,例如 'openapi.json')。
-
创建一个Node.js脚本文件(例如 'run_server.js')。
-
在该脚本中,使用'openapi-mcp-converter' 库来创建和启动服务器:
import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; import { OpenApiMCPSeverConverter } from 'openapi-mcp-converter'; // 导入库 import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; // 导入Stdio传输 // 获取当前脚本所在目录,读取openapi.json文件 const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const openApiDoc = JSON.parse(fs.readFileSync(path.join(__dirname, 'openapi.json'), 'utf8')); // 创建转换器实例,传入OpenAPI文档和可选配置(如请求超时时间) const converter = new OpenApiMCPSeverConverter(openApiDoc, { timeout: 60000 }); // 获取MCP服务器实例 const server = converter.getServer(); // 创建Stdio传输实例 const transport = new StdioServerTransport(); // 连接服务器到传输,开始监听MCP客户端请求 async function startMcpServer() { try { await server.connect(transport); console.log("MCP Server running on stdio"); // 此消息通常在Stdio模式下不可见,因为Stdio用于MCP通信 } catch (error) { console.error("Fatal error starting MCP server:", error); process.exit(1); } } startMcpServer(); -
将您的 'openapi.json' 文件放在与 'run_server.js' 相同的目录下,或修改代码指定正确路径。
-
配置您的MCP客户端,使其通过 'node run_server.js' 命令启动此服务器脚本,并使用 'stdio' 传输协议。
-
启动MCP客户端。客户端将启动您的服务器进程,并能发现并调用OpenAPI中定义的工具。
信息
分类
开发者工具