MCP 服务器:可扩展的 OpenAPI 端点发现和 API 请求工具
待办事项
- 不包含预下载模型的 Docker 镜像大小为 2GB。包含预下载模型后则高达 3.76GB!太大了,请帮忙缩小一下。
配置
通过环境变量进行自定义。GLOBAL_TOOL_PROMPT非常重要 !
OPENAPI_JSON_DOCS_URL
:OpenAPI 规范 JSON 的 URL(默认为https://api.staging.readymojo.com/openapi.json )MCP_API_PREFIX
:可自定义的工具命名空间(默认“any_openapi”):GLOBAL_TOOL_PROMPT
:可选文本,附加到所有工具描述之前。这对于 Claude 准确选择(而非选择)你的工具至关重要。
TL'DR
我为什么创建这个:我想提供我的私有 API,其 swagger openapi 文档大小为几百 KB。
- Claude MCP 在处理这些大小的文件时出现错误
- 我尝试将结果转换为 YAML,但不够小,并且出现很多错误。失败了
- 我尝试提供一个 API 类别,然后让 MCP 客户端(Claude Desktop)按组获取 API 文档。但文档仍然太大,失败了。
最终我找到了这个解决方案:
- 它使用内存语义搜索通过自然语言查找相关的 Api 端点(例如列出产品)
- 它以百万秒为单位(因为它在内存中)返回完整的端点文档(因为我设计它将一个端点存储为一个块)
轰隆隆,Claude 现在知道要调用哪个 API,并且知道完整的参数!
等一下,我必须在这个服务器中创建另一个工具来发出实际的 restful 请求,因为“fetch”服务器根本不起作用,而且我不想调试原因。
https://github.com/user-attachments/assets/484790d2-b5a7-475d-a64d-157e839ad9b0
技术亮点:
特征
- 🧠 使用远程 openapi json 文件作为源,无需访问本地文件系统,API 更改无需更新
- 🔍 使用优化的 MiniLM-L3 模型进行语义搜索(43MB vs 原始 90MB)
- 🚀 基于 FastAPI 且支持异步的服务器
- 🧠 基于端点的分块 OpenAPI 规范(处理 100KB+ 文档),不会丢失端点上下文
- ⚡ 内存中 FAISS 向量搜索,可即时发现端点
限制
- 不支持 linux/arm/v7(Transformer 库构建失败)
- 🐢 如果不使用 docker 镜像,冷启动惩罚(模型加载约 15 秒)
- [已过时] 当前 Docker 镜像已禁用下载模型。您依赖 huggingface。加载 Claude 桌面时,下载模型需要一些时间。如果 huggingface 宕机,您的服务器将无法启动。
- 最新的 Docker 镜像嵌入了预先下载的模型。如果出现问题,我会恢复到旧版本。
多实例配置示例
以下是多实例配置示例。我这样设计是为了能够更灵活地用于多组 API:
在此示例中:
- 服务器将自动从 OpenAPI 文档中提取基本 URL:
https://api.finance.com
用于财务 APIhttps://api.healthcare.com
提供医疗保健 API
- 您可以选择使用
API_REQUEST_BASE_URL
环境变量覆盖基本 URL:
Claude 桌面使用示例
Claude桌面项目提示:
在聊天中,您可以执行以下操作:
安装
通过 Smithery 安装
要通过Smithery自动为 Claude Desktop 安装可扩展 OpenAPI 端点发现和 API 请求工具:
使用 pip
可用工具
服务器提供以下工具(其中{prefix}
由MCP_API_PREFIX
决定):
{前缀}_api_request_schema
获取符合您意图的 API 端点架构。返回端点详细信息,包括路径、方法、参数和响应格式。
输入模式:
{前缀}_make_request
**对于使用复杂 API 进行可靠执行至关重要,**因为简化的实现方式会失效。提供:
输入模式:
响应格式:
Docker 支持
多架构构建
官方镜像支持3个平台:
灵活的工具命名
通过MCP_API_PREFIX
控制工具名称:
支持的平台
- Linux/amd64
- Linux/arm64
选项 1:使用预构建映像(Docker Hub)
选项 2:本地开发构建
运行容器
关键组件
- EndpointSearcher :核心类,处理以下内容:
- OpenAPI规范解析
- 语义搜索索引创建
- 端点文档格式
- 自然语言查询处理
- 服务器实现:
- 异步 FastAPI 服务器
- MCP 协议支持
- 工具注册和调用处理
从源运行
与 Claude Desktop 集成
在 Claude Desktop 设置中配置 MCP 服务器:
贡献
- 分叉存储库
- 创建你的功能分支(
git checkout -b feature/amazing-feature
) - 提交您的更改(
git commit -m 'Add some amazing feature'
) - 推送到分支(
git push origin feature/amazing-feature
) - 打开拉取请求
执照
该项目根据 LICENSE 文件中的条款获得许可。
实施说明
- 以端点为中心的处理:与难以处理大型规范的文档级分析不同,我们使用以下方式对各个端点进行索引:
- 路径 + 方法作为唯一标识符
- 参数感知嵌入
- 响应架构上下文
- 优化的规范处理:通过以下方式处理高达 10MB(约 5,000 个端点)的 OpenAPI 规范:
- 架构组件的延迟加载
- 路径项的并行解析
- 选择性嵌入生成(省略冗余描述)
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
该服务器使用语义搜索和高性能处理来促进 OpenAPI 端点的可扩展发现和执行,克服了大型规范处理对简化 API 交互的限制。
Related Resources
Related MCP Servers
- -securityAlicense-qualityAn MCP server that exposes HTTP methods defined in an OpenAPI specification as tools, enabling interaction with APIs via the Model Context Protocol.Last updated -2PythonMIT License
- -securityFlicense-qualityThis server acts as a Message Communication Protocol (MCP) service for integrating Apifox and Cursor, enabling OpenAPI interface implementation through AI-driven interaction.Last updated -7TypeScript
- -securityAlicense-qualityA server that enables Large Language Models to discover and interact with REST APIs defined by OpenAPI specifications through the Model Context Protocol.Last updated -37896TypeScriptMIT License
- AsecurityAlicenseAqualityA Model Context Protocol server that loads multiple OpenAPI specifications and exposes them to LLM-powered IDE integrations, enabling AI to understand and work with your APIs directly in development tools like Cursor.Last updated -72927TypeScriptMIT License