一个 MCP(模型上下文协议)服务器,通过 MCP 资源 提供高效访问 OpenAPI(v3.0)和 Swagger(v2.0)规范的方式。
该项目的主要目标是允许 MCP 客户端(如 Cline 或 Claude Desktop)无需将整个文件加载到 LLM 的上下文窗口中,即可探索大型 OpenAPI 规范的结构和细节。它通过暴露规范的部分内容来实现这一点,这些部分通过 MCP 资源提供,非常适合只读数据探索。
该服务器支持从本地文件路径和远程 HTTP/HTTPS URL 加载规范。Swagger v2.0 规范在加载时会自动转换为 OpenAPI v3.0。
模型上下文协议定义了 资源 和 工具。
虽然其他 MCP 服务器通过 工具 提供对 OpenAPI 规范的访问,但此项目特别专注于通过 资源 提供访问。这使得它特别适用于直接在 MCP 客户端应用程序中进行探索。
有关 MCP 客户端及其功能的更多详细信息,请参阅 MCP 客户端文档。
对于推荐的使用方法(npx 和 Docker,如下所述),不需要单独的安装步骤。您的 MCP 客户端将根据您提供的配置自动下载包或拉取 Docker 镜像。
但是,如果您希望或需要明确安装服务器,有两种选项:
全局安装: 您可以使用 npm 全局安装该包:
npm install -g mcp-openapi-schema-explorer
请参阅下面的 方法 3,了解如何配置您的 MCP 客户端以使用全局安装的服务器。
本地开发/安装: 您可以克隆仓库并本地构建:
git clone https://github.com/kadykov/mcp-openapi-schema-explorer.git
cd mcp-openapi-schema-explorer
npm install
npm run build
请参阅下面的 方法 4,了解如何配置您的 MCP 客户端使用 node 运行本地构建的服务器。
此服务器旨在由 MCP 客户端(如 Claude Desktop、Windsurf、Cline 等)运行。要使用它,您需要在客户端设置文件(通常是 JSON 文件)中添加一个配置条目。这个条目告诉客户端如何执行服务器进程(例如,使用 npx、docker 或 node)。服务器本身不需要额外的配置,只需在客户端设置条目中指定的命令行参数即可。
以下是向客户端配置添加服务器条目的常见方法。
使用 npx 是推荐的方法,因为它避免了全局/本地安装,并确保客户端使用最新发布的版本。
客户端配置条目示例(npx 方法):
在您的 MCP 客户端配置文件的 mcpServers 部分添加以下 JSON 对象。这个条目指示客户端如何使用 npx 运行服务器:
{
"mcpServers": {
"我的 API 规范 (npx)": {
"command": "npx",
"args": [
"-y",
"mcp-openapi-schema-explorer@latest",
"<path-or-url-to-spec>",
"--output-format",
"yaml"
],
"env": {}
}
}
}
配置注意事项:
"我的 API 规范 (npx)" 替换为您客户端中此服务器实例的唯一名称。<path-or-url-to-spec> 替换为您的规范的绝对本地文件路径或完整的远程 URL。--output-format 是可选的(json、yaml、json-minified),默认值为 json。mcpServers 中添加单独的条目,每个条目具有唯一的名称并指向不同的规范。您可以指示您的 MCP 客户端使用官方 Docker 镜像运行服务器:kadykov/mcp-openapi-schema-explorer。
客户端配置条目示例(Docker 方法):
在您的 MCP 客户端配置文件的 mcpServers 部分添加以下 JSON 对象之一。这些条目指示客户端如何使用 docker run 运行服务器:
远程 URL: 直接将 URL 传递给 docker run。
使用远程 URL:
{
"mcpServers": {
"我的 API 规范 (Docker 远程)": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"kadykov/mcp-openapi-schema-explorer:latest",
"<remote-url-to-spec>"
],
"env": {}
}
}
}
使用本地文件:(需要将文件挂载到容器中)
{
"mcpServers": {
"我的 API 规范 (Docker 本地)": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v",
"/full/host/path/to/spec.yaml:/spec/api.yaml",
"kadykov/mcp-openapi-schema-explorer:latest",
"/spec/api.yaml",
"--output-format",
"yaml"
],
"env": {}
}
}
}
重要: 将 /full/host/path/to/spec.yaml 替换为您主机上的正确绝对路径。路径 /spec/api.yaml 是容器内的相应路径。
如果您已使用 npm install -g 全局安装了该包,您可以配置客户端直接运行它。
# 在您的终端中运行一次
npm install -g mcp-openapi-schema-explorer
客户端配置条目示例(全局安装方法):
在您的 MCP 客户端配置文件中添加以下条目。这假设 mcp-openapi-schema-explorer 命令在客户端执行环境的 PATH 中可用。
{
"mcpServers": {
"我的 API 规范 (全局)": {
"command": "mcp-openapi-schema-explorer",
"args": ["<path-or-url-to-spec>", "--output-format", "yaml"],
"env": {}
}
}
}
command (mcp-openapi-schema-explorer) 在 MCP 客户端使用的 PATH 环境变量中可用。如果已克隆仓库进行开发或运行修改后的版本,此方法很有用。
设置步骤(在您的终端中运行一次):
git clone https://github.com/kadykov/mcp-openapi-schema-explorer.gitcd mcp-openapi-schema-explorernpm installnpm run build(或 just build)客户端配置条目示例(本地开发方法):
在您的 MCP 客户端配置文件中添加以下条目。这指示客户端使用 node 运行本地构建的服务器。
{
"mcpServers": {
"我的 API 规范 (本地开发)": {
"command": "node",
"args": [
"/full/path/to/cloned/mcp-openapi-schema-explorer/dist/src/index.js",
"<path-or-url-to-spec>",
"--output-format",
"yaml"
],
"env": {}
}
}
}
重要: 将 /full/path/to/cloned/mcp-openapi-schema-explorer/dist/src/index.js 替换为您克隆的仓库中构建的 index.js 文件的正确绝对路径。
openapi://info、openapi://paths/...、openapi://components/...)探索 OpenAPI 规范。--output-format)。info.title。$ref(#/components/...)被转换为可点击的 MCP URI。此服务器公开以下 MCP 资源模板,用于探索 OpenAPI 规范。
理解多值参数 (*)
某些资源模板包含以星号 (*) 结尾的参数,例如 {method*} 或 {name*}。这表示该参数接受 多个逗号分隔的值。例如,要请求路径的 GET 和 POST 方法的详细信息,您可以使用类似 openapi://paths/users/get,post 的 URI。这允许在一个请求中获取多个项目的详细信息。
资源模板:
openapi://{field}
info、servers、tags)或列出 paths 或 components 的内容。具体可用的字段取决于加载的规范。openapi://infotext/plain 列表用于 paths 和 components;配置的格式(JSON/YAML/压缩的 JSON)用于其他字段。{field} 的动态建议。openapi://paths/{path}
{path} - API 路径字符串。必须进行 URL 编码(例如,/users/{id} 变成 users%2F%7Bid%7D)。openapi://paths/users%2F%7Bid%7Dtext/plain 列表的方法。{path} 的动态建议。openapi://paths/{path}/{method*}
{path} - API 路径字符串。必须进行 URL 编码。{method*} - 一个或多个 HTTP 方法(例如,get、post、get,post)。大小写不敏感。openapi://paths/users%2F%7Bid%7D/getopen/paths/users%2F%7Bid%7D/get,post{path} 的动态建议。提供 {method*} 的静态建议(常见的 HTTP 动词如 GET、POST、PUT、DELETE 等)。openapi://components/{type}
schemas、responses、parameters)。具体可用的类型取决于加载的规范。还为每个列出的类型提供简短描述。openapi://components/schemastext/plain 列表的组件名称和描述。{type} 的动态建议。openapi://components/{type}/{name*}
{type} - 组件类型。{name*} - 一个或多个组件名称(例如,User、Order、User,Order)。大小写敏感。openapi://components/schemas/Useropenapi://components/schemas/User,Order{type} 的动态建议。仅当加载的规范中总体上只有一个组件类型(例如,只有 schemas)时,才提供 {name*} 的动态建议。这是因为 MCP SDK 当前不支持按所选 {type} 提供补全建议;提供所有类型的所有名称可能会误导。欢迎贡献!请参阅 CONTRIBUTING.md 文件,了解设置开发环境、运行测试和提交更改的指南。
此项目使用 semantic-release 根据 常规提交 自动管理版本和发布包。
(未来计划待定)