使用说明
OpenAPI到MCP
将OpenAPI规范文件转换为可用于与OpenAPI规范描述的现有web API交互的MCP服务器。
这允许理解MCP的AI代理或其他客户端与OpenAPI规范描述的现有web API进行交互。
特性
- OpenAPI操作自动转换为MCP工具
- 支持现代流式HTTP和传统SSE传输
- 根据OpenAPI规范自动检测API基础URL
- 支持OpenAPI/Swagger 2.0和OpenAPI 3.x
- 二进制响应处理
- 优雅的停机处理
- 调试详细日志记录
先决条件
- Node.js(建议使用v16或更高版本)
安装
- 克隆存储库(或确保您拥有
openapi-to-mcp目录)。 - 导航到
openapi-to-mcp目录:cd openapi-to-mcp - 安装依赖项:
npm install
构建
将TypeScript代码编译为JavaScript:
npm run build
这将创建一个 dist 包含已编译JavaScript文件的目录。
用法
使用启动服务器 start 脚本,使用以下命令提供OpenAPI规范文件的路径 -f 或 --file 选项:
# Example using a local petstore.yaml file
npm start -- serve -f ./path/to/your/openapi.json
# Example with different port and host
npm start -- serve --file ./specs/petstore.json --port 9090 --host 0.0.0.0
- 替换
./path/to/your/openapi.json使用OpenAPI文件的实际路径。 - 服务器将解析文件,使API操作适应MCP功能,并开始侦听。
- 它将打印现代和传统MCP连接的可用端点。
以MCP客户端身份连接
现代连接(推荐)
服务器提供由MCP SDK管理的现代流式HTTP传输。这是连接到服务器的推荐方式。
传统SSE连接
为了向后兼容,服务器还支持SSE连接:
-
连接到SSE端点(例如。,
http://localhost:8080/sse). -
您将收到
mcp-hello连接后的事件。 -
要调用函数,请发送MCP
function_call通过POST请求向/messages带有a的端点sessionId查询与您的SSE连接ID匹配的参数。POST示例
/messages?sessionId=<your_session_id>:标题:
Content-Type: application/json主体:
{ "type": "function_call", "id": "call-123", "function_name": "get_pets_by_status", "parameters": { "status": "available" } } -
服务器将执行相应的API调用,并返回
function_return或error事件发生在已建立的SSE连接上。
发展
在开发模式下运行并自动重新编译:
# Make sure to provide the OpenAPI file path
npm run dev -- -f ./path/to/your/openapi.yaml
当前限制
- 认证:未执行
- 架构验证:虽然基本的模式验证已经到位,但一些复杂的OpenAPI模式功能(鉴别器、复杂组合)可能无法完全支持。
- 测试:目前不包括自动测试。
- 文档:可以通过更多的示例和参数描述来改进单个工具文档。
贡献
欢迎投稿!请随时提交拉取请求。