mcp-openapi-proxy 是一个 Python 包,实现了 Model Context Protocol (MCP) 服务器,旨在动态暴露由 OpenAPI 规范定义的 REST API,作为 MCP 工具。这有助于将 OpenAPI 描述的 API 平滑地集成到基于 MCP 的工作流中。
该包提供了两种操作模式:
/chat/completions 变成 chat_completions())。list_functions() 和 call_function()),这些工具基于静态配置。Bearer 对 API_KEY 在 Authorization 头部进行身份验证,可定制以适应如 Fly.io 所需的 Api-Key。使用以下命令直接从 PyPI 安装该包:
uvx mcp-openapi-proxy
要将 mcp-openapi-proxy 集成到您的 MCP 生态系统中,请在您的 mcpServers 设置中进行配置。下面是一个通用示例:
{
"mcpServers": {
"mcp-openapi-proxy": {
"command": "uvx",
"args": ["mcp-openapi-proxy"],
"env": {
"OPENAPI_SPEC_URL": "${OPENAPI_SPEC_URL}",
"API_KEY": "${API_OPENAPI_KEY}"
}
}
}
}
请参阅下面的 示例 部分,了解针对特定 API 的实际配置。
OPENAPI_SIMPLE_MODE=true。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:(可选)发送到 Authorization 头部的 API 身份验证令牌,默认为 Bearer <API_KEY>。API_AUTH_TYPE:(可选)覆盖默认的 Bearer Authorization 头类型(例如,GetZep 使用 Api-Key)。STRIP_PARAM:(可选)JMESPath 表达式用于剥离不需要的参数(例如,Slack 中的 token)。DEBUG:(可选)当设置为 "true"、"1" 或 "yes" 时启用详细调试日志。EXTRA_HEADERS:(可选)附加到传出 API 请求的额外 HTTP 头部,在 "Header: Value" 格式下(每行一个)。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 提供了最简单的 mcp-openapi-proxy 配置,仅需要 OPENAPI_SPEC_URL 环境变量。这种简洁性使其非常适合快速测试。
检索 Glama OpenAPI 规范:
curl https://glama.ai/api/mcp/openapi.json
确保响应是一个有效的 OpenAPI JSON 文档。
向您的 MCP 生态系统设置添加以下配置:
{
"mcpServers": {
"glama": {
"command": "uvx",
"args": ["mcp-openapi-proxy"],
"env": {
"OPENAPI_SPEC_URL": "https://glama.ai/api/mcp/openapi.json"
}
}
}
}
启动服务:
OPENAPI_SPEC_URL="https://glama.ai/api/mcp/openapi.json" uvx mcp-openapi-proxy
然后参阅 JSON-RPC 测试 部分以获取列出资源和工具的说明。
Fly.io 提供了一个简单的 API 来管理机器,使其成为理想的起点。从 Fly.io 文档 获取 API 令牌。
检索 Fly.io OpenAPI 规范:
curl https://raw.githubusercontent.com/abhiaagarwal/peristera/refs/heads/main/fly-machines-gen/fixed_spec.json
确保响应是一个有效的 OpenAPI JSON 文档。
更新您的 MCP 生态系统配置:
{
"mcpServers": {
"flyio": {
"command": "uvx",
"args": ["mcp-openapi-proxy"],
"env": {
"OPENAPI_SPEC_URL": "https://raw.githubusercontent.com/abhiaagarwal/peristera/refs/heads/main/fly-machines-gen/fixed_spec.json",
"API_KEY": "<your_flyio_token_here>"
}
}
}
}
<your_flyio_token_here>)。Api-Key 以适应 Fly.io 的基于头部的身份验证(覆盖默认的 Bearer)。启动服务后,参阅 JSON-RPC 测试 部分以获取列出资源和工具的说明。
Render 提供了可以通过 API 管理的基础架构托管。提供的配置文件 examples/render-claude_desktop_config.json 展示了如何快速设置 MCP 生态系统,只需最少的设置。
检索 Render OpenAPI 规范:
curl https://api-docs.render.com/openapi/6140fb3daeae351056086186
确保响应是一个有效的 OpenAPI 文档。
向您的 MCP 生态系统设置添加以下配置:
{
"mcpServers": {
"render": {
"command": "uvx",
"args": ["mcp-openapi-proxy"],
"env": {
"OPENAPI_SPEC_URL": "https://api-docs.render.com/openapi/6140fb3daeae351056086186",
"TOOL_WHITELIST": "/services,/maintenance",
"API_KEY": "your_render_token_here"
}
}
}
}
使用您的 Render 配置启动代理:
OPENAPI_SPEC_URL="https://api-docs.render.com/openapi/6140fb3daeae351056086186" TOOL_WHITELIST="/services,/maintenance" API_KEY="your_render_token_here" uvx mcp-openapi-proxy
然后参阅 JSON-RPC 测试 部分以获取列出资源和工具的说明。
Slack 的 API 展示了如何使用 JMESPath 剥离不必要的令牌负载。从 Slack API 文档 获取机器人令牌。
检索 Slack OpenAPI 规范:
curl https://raw.githubusercontent.com/slackapi/slack-api-specs/master/web-api/slack_web_openapi_v2.json
确保它是一个有效的 OpenAPI JSON 文档。
更新您的配置:
{
"mcpServers": {
"slack": {
"command": "uvx",
"args": ["mcp-openapi-proxy"],
"env": {
"OPENAPI_SPEC_URL": "https://raw.githubusercontent.com/slackapi/slack-api-specs/master/web-api/slack_web_openapi_v2.json",
"TOOL_WHITELIST": "/chat,/bots,/conversations,/reminders,/files,/users",
"API_KEY": "<your_slack_bot_token, starts with xoxb>",
"STRIP_PARAM": "token",
"TOOL_NAME_PREFIX": "slack_"
}
}
}
}
xoxb-...,替换 <your_slack_bot_token>)。slack_。启动服务后,参阅 JSON-RPC 测试 部分以获取列出资源和工具的说明。
GetZep 提供了一个免费的云 API 用于记忆管理,具有详细的端点。由于 GetZep 没有提供官方的 OpenAPI 规范,该项目包括了一个在 GitHub 上方便使用的生成规范。用户可以类似地为任何 REST API 生成 OpenAPI 规范,并引用本地文件(例如 file:///path/to/spec.json)。从 GetZep 的文档 获取 API 密钥。
检索项目提供的 GetZep OpenAPI 规范:
curl https://raw.githubusercontent.com/matthewhand/mcp-openapi-proxy/refs/heads/main/examples/getzep.swagger.json
确保它是一个有效的 OpenAPI JSON 文档。或者,生成您自己的规范并使用 file:// URL 引用本地文件。
更新您的配置:
{
"mcpServers": {
"getzep": {
"command": "uvx",
"args": ["mcp-openapi-proxy"],
"env": {
"OPENAPI_SPEC_URL": "https://raw.githubusercontent.com/matthewhand/mcp-openapi-proxy/refs/heads/main/examples/getzep.swagger.json",
"TOOL_WHITELIST": "/sessions",
"API_KEY": "<your_getzep_api_key>",
"API_AUTH_TYPE": "Api-Key",
"TOOL_NAME_PREFIX": "zep_"
}
}
}
}
file:///path/to/your/spec.json 引用本地文件)。/sessions 端点。Api-Key 进行基于头部的身份验证。zep_。启动服务后,参阅 JSON-RPC 测试 部分以获取列出资源和工具的说明。
此示例演示了:
检索 VirusTotal OpenAPI 规范:
curl https://raw.githubusercontent.com/matthewhand/mcp-openapi-proxy/refs/heads/main/examples/virustotal.openapi.yml
确保响应是一个有效的 OpenAPI YAML 文档。
向您的 MCP 生态系统设置添加以下配置:
{
"mcpServers": {
"virustotal": {
"command": "uvx",
"args": ["mcp-openapi-proxy"],
"env": {
"OPENAPI_SPEC_URL": "https://raw.githubusercontent.com/matthewhand/mcp-openapi-proxy/refs/heads/main/examples/virustotal.openapi.yml",
"EXTRA_HEADERS": "x-apikey: ${VIRUSTOTAL_API_KEY}",
"OPENAPI_SPEC_FORMAT": "yaml"
}
}
}
}
关键配置点: