article
README
🚀 OpenAPI 到模型上下文协议 (MCP) 代理
OpenAPI 到模型上下文协议 (MCP) 代理可将 OpenAPI 规范转换为 MCP 工具,让 AI 代理无需自定义包装器就能访问外部 API,有效解决了 AI 代理与外部 API 交互的难题。

🚀 快速开始
安装依赖
pip install openapi-mcp-proxy
初始化代理
from openapi_mcp_proxy import MCPProxy
proxy = MCPProxy(openapi_spec_path="path/to/spec.yaml")
获取工具信息
tools_info = proxy.list_tools()
print(tools_info)
✨ 主要特性
- OpenAPI 到 MCP 转换:把 OpenAPI 规范转换为模型上下文协议 (MCP),供 AI 工具链(如 Claude、GPT)使用。
- 工具支持:自动生成的工具具备 API 请求、响应处理和参数解析功能,简化与外部系统的交互。
- 资源管理:从 OpenAPI 组件模式生成资源对象,注册为 URI(如
/resource/{name}),方便进行结构化数据处理。 - 提示语集成:自动生成上下文提示语,帮助 AI 理解 API 功能和使用方法,提升交互体验。
- OAuth2 支持:集成 OAuth2 客户端凭证流程,简化身份验证逻辑,增强安全性。
📦 安装指南
安装依赖
pip install openapi-mcp-proxy
初始化代理
from openapi_mcp_proxy import MCPProxy
proxy = MCPProxy(openapi_spec_path="path/to/spec.yaml")
💻 使用示例
基础用法
from openapi_mcp_proxy import MCPProxy
# 初始化代理
proxy = MCPProxy(openapi_spec_path="path/to/spec.yaml")
# 获取工具信息
tools_info = proxy.list_tools()
print(tools_info)
📚 详细文档
环境变量配置
以下是运行 OpenAPI-MCP 代理所需的环境变量:
| 属性 | 详情 |
|------|------|
| OPENAPI_SPEC_PATH | 字符串类型,默认值为 ./openapi.yaml,用于指定 OpenAPI 规范文件路径 |
| MCP_ENDPOINT | 字符串类型,默认值为 http://localhost:8080,用于定义 MCP 代理的监听地址 |
| OAUTH2_CLIENT_ID | 字符串类型,无默认值,为 OAuth2 客户端标识符(如需要身份验证) |
| OAUTH2_CLIENT_SECRET | 字符串类型,无默认值,为 OAuth2 客户端密钥(如需要身份验证) |
工作原理
sequenceDiagram
参与者 LLM 作为 LLM (Claude/GPT)
参与者 MCP 作为 OpenAPI-MCP 代理
参与者 API 作为 外部 API
注释 在 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. 格式化的响应结果
alt 干运行模式
LLM->>MCP: 调用 dry_run=true
MCP-->>LLM: 显示请求信息,不执行调用
end
资源与提示语
除了工具之外,代理服务器还自动注册了以下内容:
- 资源:从 OpenAPI 组件模式生成的资源对象,注册为定义的 URI(如
/resource/{name}),便于结构化数据处理。 - 提示语:根据 API 操作自动生成上下文提示语,帮助 LLM 理解 API 的功能和使用方法。
这种扩展的元数据提升了集成体验,提供了全面的 API 上下文信息。

贡献指南
- ** Fork 该仓库。
- 在你的分支中创建新的功能或修复问题。
- 提交 Pull Request,附上清晰的更改说明。
📄 许可证
如果你觉得这个项目对你有帮助,请在 GitHub 上给我一个 ⭐!
扫码加入微信群