小贴士:按下Ctrl+D 或 ⌘+D,一键收藏本站,方便下次快速访问!
MIT License
21
最近更新:12天前

OpenAPI-MCP代理将OpenAPI规范转换为MCP工具,使AI代理无需自定义封装即可访问外部API!

OpenAPI 至模型上下文协议 (MCP)

许可证: MIT
仓库大小
最后提交
开放问题
Python版本

OpenAPI-MCP代理将OpenAPI规范转换为MCP工具,使AI代理无需自定义封装即可访问外部API!

OpenAPI-MCP

连接AI代理与外部API的桥梁

OpenAPI至模型上下文协议(MCP)代理服务器通过动态转换OpenAPI规范为标准化的MCP工具资源提示,弥合了AI代理与外部API之间的鸿沟。这简化了集成过程,无需自定义API封装。


如果您觉得有用,请在GitHub上给它一个⭐!


核心特性

  • FastMCP传输: 专为stdio优化,可与主流LLM编排器开箱即用
  • OpenAPI集成: 解析并将OpenAPI操作注册为可调用工具
  • 资源注册: 自动将OpenAPI组件模式转换为具有定义URI的资源对象
  • 提示生成: 基于API操作生成上下文提示,指导LLM使用API
  • OAuth2支持: 通过客户端凭证流程处理机器认证
  • JSON-RPC 2.0支持: 完全兼容的请求/响应结构
  • 自动元数据: 从OpenAPI规范派生工具名称、摘要和模式
  • 净化工具名称: 确保符合MCP命名约束
  • 灵活参数解析: 支持查询字符串(以"?"开头)和多种JSON变体(包括带点键名和数值)
  • 增强参数处理: 自动将参数转换为正确数据类型
  • 扩展工具元数据: 包含详细参数信息和响应模式

快速开始

安装

bash 复制代码
git clone https://github.com/gujord/OpenAPI-MCP.git
cd OpenAPI-MCP
pip install -r requirements.txt

LLM编排器配置

对于Claude DesktopCursorWindsurf,使用以下代码片段并相应调整路径:

json 复制代码
{
  "mcpServers": {

    "petstore3": {
      "command": "full_path_to_openapi_mcp/venv/bin/python",
      "args": ["full_path_to_openapi_mcp/src/server.py"],
      "env": {
        "SERVER_NAME": "petstore3",
        "OPENAPI_URL": "https://petstore3.swagger.io/api/v3/openapi.json"
      },
      "transport": "stdio"
    }

  }
}

将此配置应用于以下文件:

  • Cursor: ~/.cursor/mcp.json
  • Windsurf: ~/.codeium/windsurf/mcp_config.json
  • Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json

full_path_to_openapi_mcp替换为您的实际安装路径

环境变量配置

变量 描述 必填 默认值
OPENAPI_URL OpenAPI规范URL -
SERVER_NAME MCP服务器名称 openapi_proxy_server
OAUTH_CLIENT_ID OAuth客户端ID -
OAUTH_CLIENT_SECRET OAuth客户端密钥 -
OAUTH_TOKEN_URL OAuth令牌端点URL -
OAUTH_SCOPE OAuth作用域 api

工作原理

  1. 解析OpenAPI规范: 使用httpxPyYAML(如需要)加载OpenAPI规范
  2. 注册操作: 提取API操作并生成兼容MCP的工具,包含正确的输入和响应模式
  3. 资源注册: 自动将OpenAPI组件模式转换为具有分配URI的资源对象(如/resource/{name})
  4. 提示生成: 基于API操作创建上下文提示,帮助LLM理解API用法
  5. 认证: 通过客户端凭证流程支持OAuth2认证
  6. 参数处理: 将参数转换为所需数据类型,支持灵活的查询字符串和JSON格式
  7. JSON-RPC 2.0兼容: 确保工具交互的标准通信协议
sequenceDiagram participant LLM as LLM (Claude/GPT) participant MCP as OpenAPI-MCP代理 participant API as 外部API Note over LLM, API: 通信流程 LLM->>MCP: 1. 初始化(initialize) MCP-->>LLM: 元数据、工具、资源和提示 LLM->>MCP: 2. 请求工具(tools_list) MCP-->>LLM: 详细的工具、资源和提示列表 LLM->>MCP: 3. 调用工具(tools_call) alt 使用OAuth2 MCP->>API: 请求OAuth2令牌 API-->>MCP: 访问令牌 end MCP->>API: 4. 使用适当格式执行API调用 API-->>MCP: 5. API响应(JSON) alt 类型转换 MCP->>MCP: 6. 将参数转换为正确数据类型 end MCP-->>LLM: 7. 格式化的API响应 alt 试运行模式 LLM->>MCP: 以dry_run=true调用 MCP-->>LLM: 显示请求信息而不执行调用 end

资源与提示

除了工具外,代理服务器现在还会自动注册:

  • 资源: 从OpenAPI组件模式派生,资源对象通过定义URI(如/resource/{name})注册,用于结构化数据处理
  • 提示: 基于API操作生成的上下文提示,为LLM提供使用指导,增强对可用端点的理解

这些扩展的元数据通过提供全面的API上下文改进了集成。

OpenAPI-MCP

贡献指南

  • Fork本仓库
  • 创建新分支
  • 提交包含更改明确描述的pull request

许可证

MIT许可证

如果您觉得有用,请在GitHub上给它一个⭐!