mcp-openapi-代理
mcp-openapi-proxy是一个 Python 包,它实现了模型上下文协议 (MCP) 服务器,旨在将 OpenAPI 规范定义的 REST API 动态公开为 MCP 工具。这有助于将 OpenAPI 描述的 API 无缝集成到基于 MCP 的工作流中。
目录
概述
该软件包提供两种操作模式:
- **低级模式(默认):**动态注册与 OpenAPI 文档中指定的所有有效 API 端点相对应的工具(例如
/chat/completions
变为chat_completions()
)。 - **FastMCP 模式(简单模式):**通过基于静态配置公开一组预定义的工具(例如
list_functions()
和call_function()
)来提供简化的方法。
特征
- **动态工具生成:**从 OpenAPI 端点定义自动创建 MCP 工具。
- **简单模式选项:**通过 FastMCP 模式提供静态配置替代方案。
- **OpenAPI 规范支持:**兼容 OpenAPI v3,并可能支持 v2。
- **灵活过滤:**允许通过路径或其他标准白名单进行端点过滤。
- **有效负载身份验证:**支持通过 JMESPath 表达式进行自定义身份验证(例如,对于 Slack 等 API,它们需要有效负载中的令牌而不是 HTTP 标头)。
- **标头身份验证:**授权标头中
API_KEY
默认使用Bearer
,可针对 Fly.io 等需要Api-Key
API 进行自定义。 - **MCP 集成:**与 MCP 生态系统无缝集成,以调用 REST API 作为工具。
安装
使用以下命令直接从 PyPI 安装包:
MCP 生态系统集成
要将mcp-openapi-proxy纳入您的 MCP 生态系统,请在mcpServers
设置中进行配置。以下是一个通用示例:
请参阅下面的示例部分,了解针对特定 API 定制的实际配置。
操作模式
FastMCP 模式(简单模式)
- **启用方式:**设置环境变量
OPENAPI_SIMPLE_MODE=true
。 - **描述:**公开一组从代码中定义的特定 OpenAPI 端点派生的固定工具。
- **配置:**依靠环境变量来指定工具行为。
低级模式(默认)
- **描述:**自动将提供的 OpenAPI 规范中的所有有效 API 端点注册为单独的工具。
- **工具命名:**从规范化的 OpenAPI 路径和方法中获取工具名称。
- **行为:**从 OpenAPI 操作摘要和描述生成工具描述。
环境变量
OPENAPI_SPEC_URL
:(必需)OpenAPI 规范 JSON 文件的 URL(例如https://example.com/spec.json
或file:///path/to/local/spec.json
)。OPENAPI_LOGFILE_PATH
:(可选)指定日志文件路径。OPENAPI_SIMPLE_MODE
:(可选)设置为true
以启用 FastMCP 模式。TOOL_WHITELIST
:(可选)要作为工具公开的端点路径的逗号分隔列表。TOOL_NAME_PREFIX
:(可选)添加到所有工具名称的前缀。API_KEY
:(可选)默认情况下,API 的身份验证令牌作为授权标头中的Bearer <API_KEY>
发送。API_AUTH_TYPE
:(可选)覆盖默认的Bearer
Authorization 标头类型(例如 GetZep 的Api-Key
)。STRIP_PARAM
:(可选)JMESPath 表达式用于去除不需要的参数(例如 Slack 的token
)。DEBUG
:(可选)设置为“true”、“1”或“yes”时启用详细调试日志记录。EXTRA_HEADERS
:(可选)附加到传出 API 请求的“Header: Value”格式的附加 HTTP 标头(每行一个)。SERVER_URL_OVERRIDE
:(可选)设置时覆盖 OpenAPI 规范中的基本 URL,对于自定义部署很有用。TOOL_NAME_MAX_LENGTH
:(可选)将工具名称截断为最大长度。- 附加变量:
OPENAPI_SPEC_URL_<hash>
– 每个测试配置的唯一变体(回退到OPENAPI_SPEC_URL
)。 IGNORE_SSL_SPEC
:(可选)设置为true
以在获取 OpenAPI 规范时禁用 SSL 证书验证。IGNORE_SSL_TOOLS
:(可选)设置为true
以禁用工具发出的 API 请求的 SSL 证书验证。
示例
为了进行测试,您可以按照示例中所示运行 uvx 命令,然后通过 JSON-RPC 消息与 MCP 服务器交互,列出工具和资源。请参阅下面的“JSON-RPC 测试”部分。
Glama示例
Glama 为 mcp-openapi-proxy 提供了最精简的配置,仅需OPENAPI_SPEC_URL
环境变量。这种简洁性使其成为快速测试的理想选择。
1. 验证OpenAPI规范
检索 Glama OpenAPI 规范:
确保响应是有效的 OpenAPI JSON 文档。
2. 为 Glama 配置 mcp-openapi-proxy
将以下配置添加到您的 MCP 生态系统设置:
3. 测试
使用以下命令启动服务:
然后参考JSON-RPC 测试部分以获取有关列出资源和工具的说明。
Fly.io 示例
Fly.io 提供了一套简单的 API 来管理机器,使其成为理想的起点。请从Fly.io 文档获取 API 令牌。
1. 验证OpenAPI规范
检索 Fly.io OpenAPI 规范:
确保响应是有效的 OpenAPI JSON 文档。
2. 为 Fly.io 配置 mcp-openapi-proxy
更新您的 MCP 生态系统配置:
- OPENAPI_SPEC_URL :指向 Fly.io OpenAPI 规范。
- API_KEY :您的 Fly.io API 令牌(替换
<your_flyio_token_here>
)。 - API_AUTH_TYPE :设置为 Fly.io 基于标头的身份验证的
Api-Key
(覆盖默认Bearer
)。
3. 测试
启动服务后,请参阅JSON-RPC 测试部分,获取有关列出资源和工具的说明。
渲染示例
Render 提供可通过 API 管理的基础设施托管服务。提供的配置文件examples/render-claude_desktop_config.json
演示了如何以最少的设置快速搭建您的 MCP 生态系统。
1. 验证OpenAPI规范
检索 Render OpenAPI 规范:
确保响应是有效的 OpenAPI 文档。
2. 配置 mcp-openapi-proxy 进行渲染
将以下配置添加到您的 MCP 生态系统设置:
3. 测试
使用您的渲染配置启动代理:
然后参考JSON-RPC 测试部分以获取有关列出资源和工具的说明。
Slack 示例
Slack 的 API 展示了如何使用 JMESPath 剥离不必要的令牌负载。请从Slack API 文档获取机器人令牌。
1. 验证OpenAPI规范
检索 Slack OpenAPI 规范:
确保它是有效的 OpenAPI JSON 文档。
2. 为 Slack 配置 mcp-openapi-proxy
更新您的配置:
- OPENAPI_SPEC_URL :Slack 的 OpenAPI 规范 URL。
- TOOL_WHITELIST :将工具限制于有用的端点组(例如聊天、对话、用户)。
- API_KEY :您的 Slack 机器人令牌(例如
xoxb-...
,替换<your_slack_bot_token>
)。 - STRIP_PARAM :从请求有效负载中删除令牌字段。
- TOOL_NAME_PREFIX :将
slack_
添加到工具名称前面。
3. 测试
启动服务后,请参阅JSON-RPC 测试部分,获取有关列出资源和工具的说明。
GetZep 示例
GetZep 提供免费的云 API,用于内存管理,并提供了详细的接口。由于 GetZep 尚未提供官方的 OpenAPI 规范,因此该项目包含一个托管在 GitHub 上的生成规范,以方便用户使用。用户也可以为任何 REST API 生成 OpenAPI 规范,并在本地引用(例如file:///path/to/spec.json
)。请从GetZep 的文档中获取 API 密钥。
1. 验证OpenAPI规范
检索项目提供的 GetZep OpenAPI 规范:
确保它是有效的 OpenAPI JSON 文档。或者,您可以生成自己的规范并使用file://
URL 引用本地文件。
2. 为 GetZep 配置 mcp-openapi-proxy
更新您的配置:
- OPENAPI_SPEC_URL :指向项目提供的 GetZep Swagger 规范(或使用
file:///path/to/your/spec.json
作为本地文件)。 - TOOL_WHITELIST :限制为
/sessions
端点。 - API_KEY :您的 GetZep API 密钥。
- API_AUTH_TYPE :使用
Api-Key
进行基于标头的身份验证。 - TOOL_NAME_PREFIX :将
zep_
添加到工具名称前面。
3.测试
启动服务后,请参阅JSON-RPC 测试部分,获取有关列出资源和工具的说明。
Virustotal 示例
此示例演示:
- 使用 YAML OpenAPI 规范文件
- 使用自定义 HTTP 身份验证标头“x-apikey”
1. 验证OpenAPI规范
检索 Virustotal OpenAPI 规范:
确保响应是有效的 OpenAPI YAML 文档。
2. 为 Virustotal 配置 mcp-openapi-proxy
将以下配置添加到您的 MCP 生态系统设置:
关键配置点:
- 默认情况下,代理需要 JSON 规范并发送带有 Bearer 前缀的 API 密钥。
- 要使用 YAML OpenAPI 规范,请包含
OPENAPI_SPEC_FORMAT="yaml"
。 - 注意:VirusTotal 需要特殊的身份验证标头;EXTRA_HEADERS 用于将 API 密钥传输为“x-apikey:${VIRUSTOTAL_API_KEY}”。
3. 测试
使用 Virustotal 配置启动代理:
启动服务后,请参阅JSON-RPC 测试部分以获取有关列出资源和工具的说明。
概念示例
Notion 的 API 需要通过 HTTP 标头指定特定版本。本示例使用EXTRA_HEADERS
环境变量来包含所需的标头,并重点验证 OpenAPI 规范。
1. 验证OpenAPI规范
检索 Notion OpenAPI 规范:
确保响应是有效的 YAML 文档。
2. 为 Notion 配置 mcp-openapi-proxy
将以下配置添加到您的 MCP 生态系统设置:
3.测试
使用 Notion 配置启动代理:
启动服务后,请参阅JSON-RPC 测试部分以获取有关列出资源和工具的说明。
Asana 示例
Asana 提供了丰富的端点,用于管理工作区、任务、项目和用户。集成测试演示了GET /workspaces
、 GET /tasks
和GET /projects
等端点的用法。
1. 验证OpenAPI规范
检索 Asana OpenAPI 规范:
确保响应是有效的 YAML(或 JSON)文档。
2. 为 Asana 配置 mcp-openapi-proxy
将以下配置添加到您的 MCP 生态系统设置:
注意:大多数 Asana API 端点都需要身份验证。请使用有效的令牌在您的环境变量或.env
文件中设置ASANA_API_KEY
。
3.测试
使用以下命令启动服务:
然后,您可以使用 MCP 生态系统列出并调用/dcim/devices/
和/ipam/ip-addresses/
等端点的工具。
APIs.guru 示例
APIs.guru 提供了一个包含数千个公共 API 的 OpenAPI 定义目录。本示例演示如何使用 mcp-openapi-proxy 将 APIs.guru 目录公开为 MCP 工具。
1. 验证OpenAPI规范
检索 APIs.guru OpenAPI 规范:
确保响应是有效的 OpenAPI YAML 文档。
2. 为 APIs.guru 配置 mcp-openapi-proxy
将以下配置添加到您的 MCP 生态系统设置:
3.测试
使用以下命令启动服务:
然后,您可以使用 MCP 生态系统列出和调用在 APIs.guru 目录中定义的工具,例如listAPIs
、 getMetrics
和getProviders
。
NetBox 示例
NetBox 是一款开源的 IP 地址管理 (IPAM) 和数据中心基础设施管理 (DCIM) 工具。本示例演示了如何使用 mcp-openapi-proxy 将 NetBox API 公开为 MCP 工具。
1. 验证OpenAPI规范
检索 NetBox OpenAPI 规范:
确保响应是有效的 OpenAPI YAML 文档。
2. 为 NetBox 配置 mcp-openapi-proxy
将以下配置添加到您的 MCP 生态系统设置:
注意:大多数 NetBox API 端点都需要身份验证。请在您的环境或.env
文件中设置NETBOX_API_KEY
并使用有效的令牌。
3.测试
使用以下命令启动服务:
然后,您可以使用 MCP 生态系统列出并调用/dcim/devices/
和/ipam/ip-addresses/
等端点的工具。
Box API 示例
您可以使用自己的开发者令牌集成 Box Platform API,以便对您的 Box 帐户进行身份验证访问。此示例演示了如何将 Box API 端点公开为 MCP 工具。
示例配置: examples/box-claude_desktop_config.json
- 将您的 Box 开发者令牌设置为
.env
中的环境变量: - 或者使用一行代码运行代理:
您现在可以使用 MCP 生态系统列出并调用 Box API 工具。有关集成测试,请参阅tests/integration/test_box_integration.py
。
注意:免费套餐用户的开发人员 API 密钥限制为 60 分钟 :(。
WolframAlpha API 示例
您可以使用自己的 App ID 集成 WolframAlpha API,以实现身份验证访问。本示例演示如何将 WolframAlpha API 端点公开为 MCP 工具。
示例配置: examples/wolframalpha-claude_desktop_config.json
- 将您的 WolframAlpha App ID 设置为
.env
中的环境变量: - 或者使用一行代码运行代理:
您现在可以使用 MCP 生态系统列出并调用 WolframAlpha API 工具。有关集成测试,请参阅tests/integration/test_wolframalpha_integration.py
。
故障排除
JSON-RPC测试
为了进行其他测试,您可以通过 JSON-RPC 与 MCP 服务器交互。启动服务器后,粘贴以下初始化消息:
预期响应:
然后粘贴以下后续消息:
- **缺少 OPENAPI_SPEC_URL:**确保将其设置为有效的 OpenAPI JSON URL 或本地文件路径。
- **规范无效:**验证 OpenAPI 文档是否符合标准。
- **工具过滤问题:**检查
TOOL_WHITELIST
是否匹配所需的端点。 - **身份验证错误:**确认
API_KEY
和API_AUTH_TYPE
正确。 - **日志记录:**设置
DEBUG=true
以便将详细内容输出到 stderr。 - **测试服务器:**直接运行:
执照
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
基于 Python 的 MCP 服务器,将 OpenAPI 描述的 REST API 集成到 MCP 工作流中,从而能够将 API 端点动态公开为 MCP 工具。
Related Resources
Related MCP Servers
- -securityFlicense-qualityThis is an MCP server that facilitates building tools for interacting with various APIs and workflows, supporting Python-based development with potential for customizable prompts and user configurations.Last updated -Python
- AsecurityFlicenseAqualityAn MCP server implementation that enables interaction with the Unstructured API, providing tools to list, create, update, and manage sources, destinations, and workflows.Last updated -3928
- -securityFlicense-qualityA Python-based MCP server that dynamically fetches plugin definitions from SuperiorAPIs and auto-generates tool functions based on OpenAPI schemas, enabling seamless integration with API services.Last updated -Python
- -securityAlicense-qualityGenerate an MCP server for any OpenAPI documented endpoint.Last updated -201GoApache 2.0
Appeared in Searches
- How to handle REST APIs
- Making API documentation usable for LLMs
- Troubleshooting 'fetch 中stdio启用失败' Error
- Developing AI-Powered Mobile and Web Applications by Combining and Transferring Knowledge from Open Source AI Models
- A team of expert data scientists with Python, Pandas, and SQL skills for implementation guidance