Token导航 LogoToken导航TokenDH.com
MCP OpenAPI Discovery logo
文档知识未说明官方级别未说明来源级核验

MCP OpenAPI Discovery

MCP Server

一个TypeScript MCP服务器,用于检测、分析和执行OpenAPI/Swagger文档中的端点,支持多种认证方式和请求类型。

工具数

8

提示词数

0

GitHub Stars

4

资源数

0
API文档TypeScriptClaudeClaudeVS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Rekl0w

提供方

Rekl0w

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

@rekl0w/mcp openapi发现

@rekl0w/mcp-openapi-discovery 是一个TypeScript MCP服务器,可以:

  • 从URL检测OpenAPI/Swagger文档,
  • 检查并总结端点,
  • API中的跟踪字段和标识符使用,
  • 并使用auth和payload支持对这些端点执行真正的HTTP请求。

它是为文档化的第一个API工作流而设计的,您希望MCP客户端从 “查找规格”“了解端点”“调用端点”.

已发布包:

释放资源:

为什么这个项目存在

许多API公开文档页面,但并不总是直接公开原始规范URL。该服务器通过发现文档页面后面的OpenAPI文档并将其转换为可调用的MCP工具来帮助弥合这一差距。

它特别适用于:

  • Swagger UI部署
  • ReDoc文档页面
  • Laravel+L5 Swagger项目
  • API暴露 openapi.json, swagger.json, openapi.yaml,或 swagger.yaml
  • 通过HTML或JS配置间接引用规范的文档页面

特性

  • 从文档页面或直接规范URL检测OpenAPI/Swagger规范
  • 通过发送基本身份验证、承载令牌、API密钥或自定义发现头来检测受保护的文档/规范页
  • 在内存中分配一个稳定 specId 对于每个检测到的规范,以便以后的工具可以在不重新公开完整文档的情况下工作
  • 将发现的规格保存在磁盘上,以便 specId-基于工具的程序可以在进程重启后继续运行
  • 总结API元数据、服务器、标记和终结点计数
  • 按方法、标记或路径片段筛选列出端点
  • 在服务器端搜索端点,在方法、路径、标签、摘要、参数、模式字段名、同义词和操作意图之间进行加权匹配
  • 检查特定端点的请求/响应详细信息
  • 跟踪标识符所在的位置 userId, accountId,或 teamId 跨参数和模式显示
  • 查找与另一个端点在结构上相关的端点
  • 建议可能的多步骤API工作流,如登录→ 创建类别→ 创建属性→ 创造产品
  • 捆绑外部 $ref 在分析之前,将文件和远程模式引用保存到本地内存文档中
  • 使用以下命令执行终结点:

- 路径参数 - 查询参数 - 自定义头 - JSON有效载荷 - 表单url编码的有效载荷 - 基本多部分表单数据

  • 使用以下方式应用身份验证:

- 基本认证 - 持有者代币 - API密钥 - OAuth 2.0密码流 - OAuth 2.0客户端凭据流 - 基于OpenAPI安全方案的自动身份选择

可用的MCP工具

  • detect_openapi:检测文档页面或规范URL后面的OpenAPI文档,并返回摘要
  • list_endpoints:列出具有可选筛选的端点
  • search_endpoints:使用服务器端加权评分在缓存端点中搜索检测到的规范
  • suggest_call_sequence:建议目标端点或自然语言目标的可能先决条件调用链
  • get_endpoint_details:返回单个端点的请求/响应详细信息
  • trace_parameter_usage:跨参数、请求体和响应体使用参数或字段的跟踪
  • find_related_endpoints:通过共享资源、标识符和路径结构查找与源终结点相关的终结点
  • call_endpoint:对从OpenAPI文档中发现的端点执行实际请求

需求

  • Node.js 18+
  • NPM9+推荐

安装

从npm安装:

npm i @rekl0w/mcp-openapi-discovery

或者在从源代码工作时安装项目依赖关系:

npm install
npm run build

在本地运行

构建后运行stdio MCP服务器:

node dist/index.js

发展:

npm run dev

从MCP客户端连接

在MCP客户端中使用已发布包的最简单方法是让客户端自动安装并运行它 npx.

使用npm自动安装 npx

如果您的MCP客户端支持 command + args stdio服务器定义,使用:

{
  "command": "npx",
  "args": ["-y", "@rekl0w/mcp-openapi-discovery"]
}

对于VS Code和类游标MCP客户端等客户端来说,这通常是最干净的设置,因为服务器启动时会自动下载包。

VS代码(.vscode/mcp.json)

VS代码支持 mcp.json 并且可以通过以下方式运行本地MCP服务器 npx.

{
  "servers": {
    "openapi-discovery": {
      "command": "npx",
      "args": ["-y", "@rekl0w/mcp-openapi-discovery"]
    }
  }
}

光标样式MCP配置

对于使用JSON配置的MCP客户端 mcpServers,典型的设置如下:

{
  "mcpServers": {
    "openapi-discovery": {
      "command": "npx",
      "args": ["-y", "@rekl0w/mcp-openapi-discovery"]
    }
  }
}

本地构建而不是npm

如果你更喜欢直接运行本地构建而不是使用npm,请将你的MCP客户端指向 dist/index.js.

克劳德桌面示例(Windows)

将此添加到 %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "openapi-discovery": {
      "command": "node",
      "args": ["C:/absolute/path/to/project/dist/index.js"]
    }
  }
}
使用绝对路径。在Windows上,正斜杠或转义反斜杠都有效。

示例用例

  • 检测背后的规格 https://example.com/docs
  • 检测规格,保留返回的 specId,并仅搜索最相关的端点
  • 检测规格,保留返回的 specId,并通过持久缓存在重新启动时重用它
  • 列出来自的端点 https://api.example.com/openapi.json
  • 检查 PUT /users/{id} 端点
  • 仅筛选 POST 标记为的端点 users
  • 向服务器询问可能的工作流程,例如“创建具有类别和属性的产品”
  • 追踪何处 userId 出现在API中
  • 查找与相关的端点 GET /users/{id}
  • 发送真实 POST /orders 带有JSON有效负载的请求
  • 使用用户名/密码登录,获取令牌,并调用受保护的端点

结构化跟踪

除了简单的端点列表,此服务器还可以帮助回答以下问题:

  • “在哪里 userId 使用?”
  • “哪些端点与 GET /users/{id}?”
  • 此标识符是来自响应体、查询参数还是路径参数

现在,它将结构化分析与轻量级的服务器端端点搜索相结合。服务器可以检查和评分,而不是只在客户端上进行自然语言相似性:

  • 路径参数
  • 查询参数
  • 请求正文字段
  • 响应体字段
  • 路径中的共享资源名称
  • 共享标识符模式,例如 userId, accountId, teamId,或特定实体 id 领域

specId + search_endpoints 流动

detect_openapi 先拿回来 specId.

然后打电话 search_endpoints 说完这个 specId 以及自然语言查询,例如:

  • create user email
  • refresh bearer token
  • order status update

服务器根据以下内容为每个端点构建可搜索的文本索引:

  • HTTP方法和路径
  • operationId、摘要、描述和标记
  • 参数名称
  • 请求正文字段名称
  • 响应体字段名称

这将使端点检索保持在服务器端,并仅返回顶部匹配项。

搜索评分器还添加了意图感知奖金,因此查询如下 add order, login token,或 edit product 仍然可以匹配 createOrder、身份验证端点,以及 PATCH/PUT 没有嵌入的样式操作。

suggest_call_sequence 流动

使用 suggest_call_sequence 当最困难的部分不是找到端点,而是弄清楚依赖调用的顺序时。

它可以在两种模式下工作:

  • 按精确的目标终点: targetMethod + targetPath
  • 按自然语言目标: goal

服务器分析:

  • 身份验证要求
  • 路径参数依赖关系
  • 请求正文标识符字段,例如 categoryId, attributeId, fileId,或 parentId
  • 响应体输出,如 id, accessToken,或资源特定标识符
  • 父/子路径关系

这使得可以建议如下链:

  • 登录→ 创建类别→ 创建类别属性→ 创造产品
  • 登录→ 创建客户→ 创建订单
  • 上传文件→ 使用返回的文件id创建实体

持久缓存

检测到的规格被缓存到磁盘上,并由规范化的输入URL和 specId.

这意味着 search_endpointssuggest_call_sequence 只要缓存的规范仍在缓存TTL内,即使在进程重新启动后,也可以继续工作。

如果需要,您可以用以下命令覆盖缓存目录 MCP_OPENAPI_DISCOVERY_CACHE_DIR 环境变量。

跟踪查询示例

使用 trace_parameter_usage 当你想关注一个字段时,例如 userId 穿过API表面。

使用 find_related_endpoints 当您已经知道一个端点并希望发现附近或依赖的端点时,例如使用相同标识符的子资源或端点。

端点执行和身份验证

接受 url 也接受可选 auth 对象。当文档页面或规范URL本身受到保护时使用此选项,例如HTTP Basic auth后面的Laravel Request docs页面。

{
  "url": "https://api.example.com/request-docs",
  "auth": {
    "strategy": "basic",
    "username": "demo",
    "password": "super-secret"
  }
}

发现身份验证仅发送到与输入URL相同的源,包括常见的回退路径,如 request-docs/api?openapi=true 同源远程 $ref 文件夹。

call_endpoint 该工具可以执行实际的API调用,而不仅仅是描述它们。

支持的身份验证策略:

  • basic
  • bearer
  • apiKey
  • oauth2-password
  • oauth2-client-credentials
  • auto

auto 在模式下,该工具检查端点的有效OpenAPI安全要求,并尝试从您提供的凭据中应用最合适的身份验证策略。

支持的请求正文样式

  • JSON
  • application/x-www-form-urlencoded
  • 简单 multipart/form-data
  • 原始弦体通过 rawBody

您还可以使用以下命令显式覆盖传出内容类型 contentType.

示例 call_endpoint 输入

JSON主体+API密钥

{
  "url": "https://orders.example.com/openapi.json",
  "method": "POST",
  "path": "/orders",
  "body": {
    "productId": 42,
    "quantity": 3
  },
  "auth": {
    "apiKey": "your-api-key"
  }
}

OAuth密码流

{
  "url": "https://auth.example.com/openapi.json",
  "method": "GET",
  "path": "/me",
  "auth": {
    "username": "demo",
    "password": "super-secret",
    "clientId": "client",
    "clientSecret": "client-secret",
    "scopes": ["profile"]
  }
}

路径参数+查询参数

{
  "url": "https://api.example.com/openapi.json",
  "method": "GET",
  "path": "/users/{id}",
  "pathParams": {
    "id": 123
  },
  "query": {
    "include": ["roles", "permissions"]
  }
}

直接持有者代币

{
  "url": "https://api.example.com/openapi.json",
  "method": "GET",
  "path": "/profile",
  "auth": {
    "strategy": "bearer",
    "token": "your-access-token"
  }
}

验证

使用以下命令运行完整的验证套件:

npm run check

这运行:

  • TypeScript构建
  • Vitest测试套件

开发说明

  • 运行时:Node.js 18+
  • MCP-SDK: @modelcontextprotocol/sdk 第1版
  • 规范解析:JSON/YAML+HTML发现启发式+捆绑外部 $ref 支持
  • 缓存:内存+磁盘支持的规范缓存,由URL和 specId
  • 工作流规划:跨身份验证、路径参数、请求体ID和响应输出的依赖性推理
  • 请求执行:具有自动身份验证处理的真实HTTP请求
  • 试运行器: vitest

安全说明

  • 不要提交真实的凭据、客户端机密或访问令牌。
  • 比起硬编码的秘密,更喜欢特定于环境的客户端配置。
  • 在对生产API使用此方法时要小心。
  • 仔细审查来自不可信来源的OpenAPI规范,特别是在涉及身份验证和实时请求执行时。

贡献

欢迎问题和拉取请求。

如果你想做出贡献:

  1. fork 仓库
  2. 创建要素分支
  3. npm run check
  4. 打开一个带有清晰描述的拉取请求

路线图

  • 更广泛的Swagger UI/标量检测模式
  • 更丰富的特定于拉脱维亚的API摘要
  • 可选的流式HTTP传输支持

许可证

麻省理工学院

目录标签

目录标签

API文档TypeScriptClaude本地部署端点分析请求执行认证支持工作流建议

支持客户端

ClaudeVS Code

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

oauth

部署方式(deploymentType,部署类型)

remote-capable

工具数量(toolCount,工具数)

8

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明oauthremote-capable

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP