关于 Openapi To Mcp
Openapi To Mcp 是一个根据 OpenAPI 规范自动生成 MCP 服务的工具,可将 API 端点以强类型工具的形式暴露给 MCP 客户端。适合希望将已有 REST API 快速接入 AI 应用的开发者。
主要功能
- 01将 OpenAPI 端点转换为 MCP 工具
- 02支持 OpenAPI 2.0 与 3.0
- 03支持 JSON 或 YAML 格式的本地与远程规范
- 04通过 x-mcp 扩展自定义工具名称与描述
- 05支持 Bearer Token 与 OAuth2 鉴权
适用场景
- 01为内部 REST API 快速生成 MCP 服务
- 02以 Bearer Token 访问需要鉴权的 GitHub API
- 03通过扩展字段隐藏不需要暴露的端点
MCP 相关
该项目可根据 OpenAPI 规范生成 MCP 服务,通过 STDIO 传输向 MCP 客户端暴露 API 操作对应的工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
openapi-to-mcp
使用 OpenAPI 规范将 API 端点公开为强类型工具。
https://petstore3.swagger.io/ 的基础示例 🎉
{
"mcpServers": {
"petstore": {
"command": "openapi-to-mcp",
"args": [
"https://petstore3.swagger.io/api/v3/openapi.json"
]
}
}
}
更复杂的示例,使用 Github API:
{
"mcpServers": {
"github": {
"command": "openapi-to-mcp",
"args": [
"https://raw.githubusercontent.com/github/rest-api-description/refs/heads/main/descriptions/api.github.com/api.github.com.yaml",
"--bearer-token",
"github_pat_xxxxxx",
"--tool-naming-strategy",
"verbandpath"
]
}
}
}
此示例使用 bearer token 身份验证(通过 Github 个人访问令牌),并强制将工具命名策略设为“verb and path”,因为 Github 的 operation id 不是有效的工具名称。

安装
作为 Nuget 工具:openapi-to-mcp
dotnet tool install --global openapi-to-mcp
或从发布页面下载可执行文件
用法
Usage:
openapi-to-mcp <open-api> [options]
Arguments:
<open-api> You OpenAPI specification (URL or file) [required]
Options:
-t, --tool-naming-strategy <extension|extension_or_operationid_or_verbandpath|operationid|verbandpath> How the tool name should be computed [default: extension_or_operationid_or_verbandpath]
-h, --host-override Host override
-b, --bearer-token Bearer token
-o2, --oauth-2-grant-type <client_credentials|password|refresh_token> OAuth2 flow to be used
-o2_tu, --oauth-2-token-url OAuth2 token endpoint URL (override the one defined in your OpenAPI for your chosen OAuth2 flow)
-o2_ci, --oauth-2-client-id OAuth2 client id (for the client_credentials grant_type)
-o2_cs, --oauth-2-client-secret OAuth2 client secret (for the client_credentials grant_type)
-o2_rt, --oauth-2-refresh-token OAuth2 refresh token (for the refresh_token grant_type)
-o2_un, --oauth-2-username OAuth2 username (for the password grant_type)
-o2_pw, --oauth-2-password OAuth2 password (for the password grant_type)
-i, --instructions MCP instruction to be advertised by the server
--verbose Log more info (in sdterr) [default: False]
-?, -h, --help Show help and usage information
--version Show version information
OpenAPI 支持
- 目前支持 OpenAPI 2.0 和 3.0。
- 不支持 3.1(至少在 microsoft/OpenAPI.NET 支持之前不支持)
- 规范可以是 JSON/YAML 格式,也可以是本地文件或远程 URL
- 仅支持本地 $refs
OpenAPI 自定义扩展
提供了一组自定义扩展,用于自定义 API 的公开方式:
info.x-mcp-instructions(string):在初始化握手期间由 MCP 服务公开的文本说明operation.x-mcp-tool-name(string):自定义工具名称operation.x-mcp-tool-description(string):自定义工具描述operation.x-mcp-tool-enabled(boolean):启用/禁用特定操作(默认启用)
MCP 功能
目前仅支持 STDIO 传输方式。
工具
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
工具调用与主机
调用工具时,MCP 服务会调用底层端点。用于调用的主机由以下参数共同确定:
--host-override选项- 规范中的第一个 server URL(如果是绝对 URL)
- 远程 OpenAPI 规范所在的主机
- 否则会抛出错误
例如,运行 openapi-to-mcp https://petstore3.swagger.io/api/v3/openapi.json:
- https://petstore3.swagger.io/api/v3/openapi.json 定义了一个 server,但其 URL 是相对路径(/api/v3)
- 因此会使用规范自身 URL 的主机:https://petstore3.swagger.io,并将 server 的相对路径追加到该主机后
授权
Bearer token
可以通过选项 --bearer-token 提供令牌。所有调用都会通过 Authorization: Bearer {token} 标头携带该令牌。
获取远程规范时也会提供该令牌。
OAuth2
支持 ClientCredentials、RefreshToken、Password。
如果 OpenAPI 规范为这些流程声明了 securitySchemes,则会使用相应的 tokenUrl。
如何发布
创建新的标签/版本 🤷
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。