用途
openapi-to-mcp 是一个 MCP 服务器,用于将你的 API 通过 OpenAPI 规范暴露为强类型的 MCP 工具,使 AI Agent 或兼容 MCP 的客户端能够直接调用 API 端点。
主要能力
- 将 OpenAPI 规范中的操作(端点)翻译为 MCP 工具
- 暴露所有路径参数、查询参数及 JSON 请求体参数(基于其 JSON Schema)
- 响应原样返回
- 工具名称默认依次通过 operation.x-mcp-tool-name 扩展、operation.operationId、
{httpMethod}_{escaped_path}计算得出,也可通过 --tool-naming-strategy 选项定义命名策略。注意:名称不匹配^[a-zA-Z0-9_-]{1,64}$的工具会被丢弃 - 工具描述按 operation.x-mcp-tool-description、operation.description、path.description 的顺序提取
- 支持 Bearer Token 认证(--bearer-token 选项),会以
Authorization: Bearer {token}头提供给所有调用,同时在获取远程规范时也使用 - 支持 ClientCredentials、RefreshToken、Password 等 OAuth 流程,若 OpenAPI 规范中声明了对应 securitySchemes,则使用其 tokenUrl
OpenAPI 支持
- 目前支持 OpenAPI 2.0 和 3.0,不支持 3.1(除非 microsoft/OpenAPI.NET 支持)
- 规范可以是 JSON 或 YAML,本地文件或远程 URL
- 仅支持本地 $refs
自定义扩展
info.x-mcp-instructions(字符串):MCP 服务器在 initialize 握手期间暴露的文本指令operation.x-mcp-tool-name(字符串):自定义工具名称operation.x-mcp-tool-description(字符串):自定义工具描述operation.x-mcp-tool-enabled(布尔值):启用/禁用特定操作(默认启用)
使用方式
- 安装:作为 NuGet 工具使用
openapi-to-mcp,或从 releases 下载可执行文件 - 仅支持 STDIO 传输
- 调用工具时,MCP 服务器会调用底层端点。确定调用主机的方式:--host-override 选项、规范中第一个服务器的 URL(如果是绝对 URL)、远程 OpenAPI 提供者的主机;否则抛出错误
- 例如运行
openapi-to-mcp https://petstore3.swagger.io/api/v3/openapi.json:该规范定义了一个服务器,但其 URL 是相对路径(/api/v3),因此使用规范自身 URL 的主机https://petstore3.swagger.io,并附加服务器的相对路径
适用场景
- 需要让 AI Agent 通过 MCP 协议调用已有 API 的开发者
- 希望将 API 快速暴露为强类型工具供 AI 使用的场景
限制
- 不支持 OpenAPI 3.1
- 仅支持本地 $refs
- 仅支持 STDIO 传输
- 工具名称需符合
^[a-zA-Z0-9_-]{1,64}$,否则被丢弃