OpenAPI转换MCP工具

将OpenAPI规范文件转换为MCP服务器,使支持MCP的AI代理或其他客户端能够与现有Web API交互。

  • by spaceguy101
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 spaceguy101/openapi-to-mcpserver

使用说明

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或更高版本)

安装

  1. 克隆存储库(或确保您拥有 openapi-to-mcp 目录)。
  2. 导航到 openapi-to-mcp 目录:
    cd openapi-to-mcp
    
  3. 安装依赖项:
    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连接:

  1. 连接到SSE端点(例如。, http://localhost:8080/sse).

  2. 您将收到 mcp-hello 连接后的事件。

  3. 要调用函数,请发送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"
      }
    }
    
  4. 服务器将执行相应的API调用,并返回 function_return 或 error 事件发生在已建立的SSE连接上。

发展

在开发模式下运行并自动重新编译:

# Make sure to provide the OpenAPI file path
npm run dev -- -f ./path/to/your/openapi.yaml

当前限制

  • 认证:未执行
  • 架构验证:虽然基本的模式验证已经到位,但一些复杂的OpenAPI模式功能(鉴别器、复杂组合)可能无法完全支持。
  • 测试:目前不包括自动测试。
  • 文档:可以通过更多的示例和参数描述来改进单个工具文档。

贡献

欢迎投稿!请随时提交拉取请求。