项目简介
OpenAPI Schema Explorer 是一个实现了 Model Context Protocol (MCP) 的服务器,专为大语言模型(LLM)客户端设计。其主要目标是通过 MCP 标准化的 资源 (Resources) 机制,让 LLM 客户端能够高效地访问和探索大型 OpenAPI (v3.0) 或 Swagger (v2.0) 规范的结构和详细内容,而无需将整个规范文件加载到 LLM 的上下文窗口中,从而节省 Token。
它支持从本地文件路径或远程 HTTP/HTTPS URL 加载规范,并能自动将 Swagger v2.0 规范转换为 OpenAPI v3.0。
主要功能点
- MCP 资源访问: 以结构化的方式暴露 OpenAPI/Swagger 规范的各个部分(如 'info', 'paths', 'components')作为 MCP 资源,通过 URI 进行访问,例如 'openapi://info', 'openapi://paths', 'openapi://components/schemas'。
- Token 高效: 允许客户端按需获取规范的特定部分,而不是加载整个文档,大幅降低 LLM 处理大规范时的 Token 消耗。
- 格式转换: 自动识别并转换 Swagger v2.0 规范为 OpenAPI v3.0。
- 多种来源支持: 可加载本地文件或远程 URL 的规范。
- 输出格式定制: 支持 JSON (默认)、YAML、精简 JSON 等多种输出格式,方便客户端消费。
- URI 引用转换: 将规范中的内部 '$ref' 引用(如 '#/components/schemas/User')转换为可点击的 MCP URI(如 'openapi://components/schemas/User'),便于在客户端中直接跳转查看引用内容。
- 动态服务器名称: MCP 客户端中显示的服务器名称会根据加载的规范标题 ('info.title') 动态生成。
- 参数补全: 支持 MCP 客户端在输入资源 URI 时,对路径、方法、组件类型和名称进行动态补全提示。
安装步骤
通常情况下,您无需手动安装此服务器。大多数 MCP 客户端(如 Claude Desktop)在配置中指定使用 'npx' 或 'Docker' 启动服务器时,会自动下载并运行所需代码。
如果需要手动全局安装,可以使用 npm:
npm install -g mcp-openapi-schema-explorer
之后可以通过 'mcp-openapi-schema-explorer' 命令直接运行。
服务器配置(MCP 客户端配置)
此服务器主要由 MCP 客户端启动和管理。您需要在您的 MCP 客户端(通常在其配置文件的 'mcpServers' 部分)中添加一个条目来告诉客户端如何运行此服务器,并指定要加载的 OpenAPI/Swagger 规范路径或 URL。
以下是常见的配置结构(以 JSON 格式为例),您需要将其添加到客户端的配置中,而不是直接运行这些命令:
{ "mcpServers": { "一个自定义的服务器名称": { // 启动服务器的命令 "command": "...", // 传递给命令的参数列表 "args": [ // 通常第一个参数是规范文件的路径或URL "<您要加载的规范文件路径或URL,请替换此占位符>", // 可选参数:指定输出格式,默认为json "--output-format", "json" // 或 "yaml", "json-minified" ], // 环境变量(通常留空) "env": {} } } }
常用的 'command' 和 'args' 组合示例:
- 使用 npx (推荐):
// ... 在 mcpServers 下 "我的API规范 (npx)": { "command": "npx", "args": [ "-y", // 自动确认安装 "mcp-openapi-schema-explorer@latest", // 包名称和版本 "<您的规范文件路径或URL>", "--output-format", "yaml" // 例如,指定 YAML 格式 ], "env": {} } - 使用 Docker:
// ... 在 mcpServers 下,加载远程 URL "Petstore (Docker)": { "command": "docker", "args": [ "run", "--rm", "-i", // Docker 参数 "kadykov/mcp-openapi-schema-explorer:latest", // Docker 镜像名称 "https://petstore3.swagger.io/api/v3/openapi.json" // 远程 URL ], "env": {} }, // ... 或加载本地文件,需要挂载卷 "我的本地规范 (Docker)": { "command": "docker", "args": [ "run", "--rm", "-i", "-v", "/完整的本地文件路径:/spec/api.yaml", // 将本地文件挂载到容器内指定路径 "kadykov/mcp-openapi-schema-explorer:latest", "/spec/api.yaml", // 使用容器内的路径 "--output-format", "json-minified" ], "env": {} }
请注意:
- 您需要将 '"一个自定义的服务器名称"' 替换为一个唯一的、易于识别的名称。
- 您需要将 '<您要加载的规范文件路径或URL>' 替换为您实际的 OpenAPI/Swagger 规范的绝对本地路径或完整 URL。
- 如果您想探索多个规范,请在 'mcpServers' 中添加多个独立的条目,每个条目指向一个不同的规范。
基本使用方法
- 在您的 MCP 客户端中,找到配置文件的位置,并按照上述示例添加一个或多个 MCP 服务器配置条目,指向您要探索的 OpenAPI/Swagger 规范。
- 保存配置文件并重启您的 MCP 客户端。
- 客户端通常会在需要时(例如,您在客户端界面中选择这个服务器时)自动启动配置的 MCP 服务器进程。
- 在客户端的交互界面(如聊天框、资源浏览器),您可以使用特定的 MCP URI 来访问规范的内容。对于此服务器,URI 以 'openapi://' 开头。
- 要查看规范的顶级信息(如 info, servers),使用 'openapi://<字段名>',例如 'openapi://info' 或 'openapi://servers'。
- 要查看所有路径列表,使用 'openapi://paths'。
- 要查看某个具体路径有哪些方法(GET, POST 等),使用 'openapi://paths/<已编码的路径>',例如对于 '/users/{id}' 路径,应使用 'openapi://paths/users%2F%7Bid%7D'。
- 要查看某个路径下特定方法(操作)的详细信息,使用 'openapi://paths/<已编码的路径>/<方法>',例如 'openapi://paths/users%2F%7Bid%7D/get'。您也可以用逗号分隔同时请求多个方法,例如 'openapi://paths/users%2F%7Bid%7D/get,post'。
- 要查看组件类型列表(如 schemas, responses),使用 'openapi://components'。
- 要查看某个组件类型下的所有组件名称列表,使用 'openapi://components/<组件类型>',例如 'openapi://components/schemas'。
- 要查看某个具体组件的详细信息,使用 'openapi://components/<组件类型>/<组件名称>',例如 'openapi://components/schemas/User'。您也可以用逗号分隔同时请求多个组件,例如 'openapi://components/schemas/User,Order'。
- 客户端会向服务器发送相应的请求,服务器将返回规范中对应部分的结构化数据(根据您配置的输出格式),LLM 或客户端界面可以利用这些信息来回答关于 API 的问题、生成代码等。
信息
分类
网页与API