OpenAPI-MCP代理将OpenAPI规范转换为MCP工具,使AI代理无需自定义封装即可访问外部API!
概述
OpenAPI 至模型上下文协议 (MCP)
OpenAPI-MCP代理将OpenAPI规范转换为MCP工具,使AI代理无需自定义封装即可访问外部API!

连接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 Desktop、Cursor和Windsurf,使用以下代码片段并相应调整路径:
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 |
工作原理
- 解析OpenAPI规范: 使用
httpx
和PyYAML
(如需要)加载OpenAPI规范 - 注册操作: 提取API操作并生成兼容MCP的工具,包含正确的输入和响应模式
- 资源注册: 自动将OpenAPI组件模式转换为具有分配URI的资源对象(如
/resource/{name}
) - 提示生成: 基于API操作创建上下文提示,帮助LLM理解API用法
- 认证: 通过客户端凭证流程支持OAuth2认证
- 参数处理: 将参数转换为所需数据类型,支持灵活的查询字符串和JSON格式
- 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上下文改进了集成。

贡献指南
- Fork本仓库
- 创建新分支
- 提交包含更改明确描述的pull request
许可证
如果您觉得有用,请在GitHub上给它一个⭐!