mcpField
S
swagger-mcp

swagger-mcp

本地服务
github.com/danishjsheikh开发工具8316 周前更新

关于 swagger-mcp

swagger-mcp 是一个 MCP 服务,读取 Swagger 2.0 或 OpenAPI 3.0 规范,并在运行时为每个 API 端点生成一个 MCP 工具。适合希望让 LLM 通过 MCP 调用 REST API 的开发者。

主要功能

  1. 01读取 Swagger 2.0 与 OpenAPI 3.0 规范
  2. 02按端点在运行时动态生成工具
  3. 03支持 stdio、SSE 与 StreamableHTTP 传输模式
  4. 04支持按路径与方法过滤端点
  5. 05支持 basic、bearer 与 apiKey 认证

适用场景

  1. 01让 LLM 通过 MCP 客户端调用已有 REST API
  2. 02为 X/Twitter 自动化 API 等远程 OpenAPI 文档生成工具
  3. 03按路径或 HTTP 方法限制可暴露给 LLM 的接口

MCP 相关

该项目是一个 MCP 服务,将 API 规范中的每个端点暴露为 MCP 工具,供任何 MCP 客户端调用。客户端可通过 .mcp.json 配置启动服务。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

swagger-mcp

Certified by MCP Review

概述

swagger-mcp 是一款工具,可读取 Swagger 2.0 或 OpenAPI 3.0 规范,并在运行时动态生成 MCP 工具——每个 API 端点对应一个工具。任何 MCP 客户端都可以使用这些工具与 API 进行由大模型驱动的交互。

支持的规范格式:

  • Swagger 2.0(swagger: "2.0")——路径、查询和标头参数,以及 in: body 请求体
  • OpenAPI 3.0(openapi: "3.0.x")——路径、查询和标头参数,以及采用内联或 $ref 架构的 requestBody

从架构的 required 数组中读取必填和可选字段,并在生成的工具定义中遵循这些设置。

📽️ 演示视频

观看演示视频,了解该项目的实际运行情况:
Watch the Demo

🙌 支持

如果你认为这个项目有价值,请通过 LinkedIn 支持我:

  • 👍 为我们的演示帖点赞并分享
  • 💬 在评论中留下你的想法和反馈
  • 🔗 与我建立联系,以便获取后续更新

你在 LinkedIn 上的支持将帮助我触达更多人并改进这个项目!

前置条件

使用 swagger-mcp 前,请确保具备以下依赖项:

  1. 大模型 API 密钥/本地大模型:需要能够访问 OpenAI、Claude 或 Ollama 模型。
  2. 任意 MCP 客户端:(使用了 mark3labs - mcphost)

安装与设置

go install github.com/danishjsheikh/swagger-mcp@latest

运行配置

Stdio 模式(默认)
swagger-mcp --specUrl=https://your_swagger_api_docs.json
SSE 模式
swagger-mcp --specUrl=https://your_swagger_api_docs.json --sse --sseAddr=:8080
StreamableHTTP 模式
swagger-mcp --specUrl=https://your_swagger_api_docs.json --http --httpAddr=:8080
所有标志
标志说明
--specUrlSwagger/OpenAPI JSON 规范的 URL 或 file:// 路径(必填)
--baseUrl覆盖 API 请求的基础 URL
--sse以 SSE 模式运行,而非 stdio 模式
--sseAddrSSE 监听地址,格式为 :Port 或 IP:Port
--sseUrlSSE 基础 URL(若未指定,则根据 --sseAddr 自动推导)
--sseHeaders要从 SSE 转发到 API 的逗号分隔请求标头(例如 Authorization,X-Tenant)
--http以 StreamableHTTP 模式运行,而非 stdio 模式
--httpAddrStreamableHTTP 监听地址,格式为 :Port 或 IP:Port
--httpPathStreamableHTTP 端点路径(默认值为 /mcp)
--httpHeaders要从 HTTP 转发到 API 的逗号分隔请求标头
--includePaths要包含的逗号分隔路径或正则表达式模式
--excludePaths要排除的逗号分隔路径或正则表达式模式
--includeMethods要包含的逗号分隔 HTTP 方法(例如 GET,POST)
--excludeMethods要排除的逗号分隔 HTTP 方法
--security身份验证类型:basic、bearer 或 apiKey
--basicAuthBasic 身份验证凭据,格式为 user:password
--bearerAuth用于 Authorization 标头的 Bearer 令牌
--apiKeyAuthAPI 密钥:passAs:name=value——passAs 可以是 header、query 或 cookie;多项配置以逗号分隔(例如 header:token=abc,query:user=foo)
--headers每个请求都要附加的静态标头,格式为 name1=value1,name2=value2
Xquik OpenAPI 示例

Xquik 为其 X/Twitter 自动化 API 发布了远程 OpenAPI 文档。 由于该 API 使用 API 密钥标头,请使用 --security=apiKey 和 --apiKeyAuth 传入密钥:

export XQUIK_API_KEY="your-xquik-api-key"

swagger-mcp \
  --specUrl=https://xquik.com/openapi.json \
  --baseUrl=https://xquik.com \
  --security=apiKey \
  --apiKeyAuth=header:x-api-key=$XQUIK_API_KEY

也可以在 MCP 客户端配置中使用相同的参数:

{
  "mcpServers": {
    "xquik": {
      "command": "swagger-mcp",
      "args": [
        "--specUrl=https://xquik.com/openapi.json",
        "--baseUrl=https://xquik.com",
        "--security=apiKey",
        "--apiKeyAuth=header:x-api-key=<XQUIK_API_KEY>"
      ]
    }
  }
}

MCP 配置

要与 mcphost 集成,请在 .mcp.json 中加入以下配置:

{
    "mcpServers": {
        "swagger_loader": {
            "command": "swagger-mcp",
            "args": ["--specUrl=<swagger/doc.json_url>"]
        }
    }
}

使用 Bearer 身份验证并筛选路径:

{
    "mcpServers": {
        "swagger_loader": {
            "command": "swagger-mcp",
            "args": [
                "--specUrl=https://api.example.com/openapi.json",
                "--security=bearer",
                "--bearerAuth=your-token-here",
                "--includeMethods=GET,POST"
            ]
        }
    }
}

请求正文支持

支持 Swagger 2.0 和 OpenAPI 3.0 请求正文:

  • Swagger 2.0:parameters 中的 in: body,以及 definitions 下的 $ref 或内联架构
  • OpenAPI 3.0:requestBody.content.<media-type>.schema——如果是 $ref,则从 components/schemas 解析;如果是对象架构,则直接使用内联架构

架构 required 数组中列出的字段会在 MCP 工具中标记为必填。其他所有字段均为可选;未提供时,不会包含在请求中。

演示流程

  1. 某个后端:

    go install github.com/danishjsheikh/go-backend-demo@latest 
    go-backend-demo
    
  2. Ollama

    ollama run llama3.2
    
  3. MCP 客户端

    go install github.com/mark3labs/mcphost@latest
    mcphost -m ollama:llama3.2 --config <.mcp.json_file_path>
    

流程图

流程图

🛠️ 需要帮助

我正在努力改进工具定义,以实现以下目标:
✅ 更好地处理错误,从而提供更准确的响应
✅ 控制大模型行为,确保其仅依赖 API 响应,而不使用自身记忆
✅ 通过强制从 API 严格获取数据,防止幻觉和随机生成数据

如果你对改进这些方面有见解或建议,请通过以下方式参与贡献:

  • 分享你在类似实现中的经验
  • 建议修改工具定义
  • 针对当前限制提供反馈

你的意见将对提升此工具的可靠性和有效性大有帮助!🚀

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。