SwaggerWatcher MCP Server
Provides tools to automatically discover and interact with any API that has an OpenAPI (Swagger) specification, allowing AI agents to call API endpoints dynamically.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SwaggerWatcher MCP Serverlist available pets from petstore API"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
👁️ SwaggerWatcher
给你的 AI Agent 装上实时 API 感知能力——自动发现 OpenAPI 文档,所有接口即时变成可调用的 MCP 工具。
English · 快速开始 · 能力一览 · 动态模式 · 设计理念 · 配置参考 · 对比
💡 为什么需要 SwaggerWatcher?
问题:AI Agent 要调用你的后端 API,通常需要手动把每个接口注册成工具。接口一改,工具定义就得同步更新。在快速迭代的项目里,这几乎不可维护。
方案:SwaggerWatcher 充当一个 MCP 网关——读取你的 OpenAPI/Swagger 文档,把所有接口自动注册为 AI 可调用的工具。配置一次,后续接口变更自动同步:
你写 OpenAPI 文档 → SwaggerWatcher 自动读取
↓
后端新增/修改接口 → 轮询检测到变更 + 增量 Diff
↓
AI Agent 自动获得新工具 ← 热重载通知✅ 在你用之前,你可能想知道
🤔 "我没用过 MCP,能用吗?" → 能。SwaggerWatcher 是标准 MCP Server,支持所有 MCP 客户端(Cursor、Claude Desktop、WorkBuddy、Windsurf 等)。只需配好
config.yaml,一行命令启动。🔒 "API 有认证怎么办?" → 支持 Bearer Token、API Key、自定义 Header。拉文档的认证和调接口的认证分开配置。
📊 "接口太多了(几百个)怎么办?" →
dynamic模式让 AI 自己按需切换工具组;或用include_tags/exclude_tags精确过滤;或用max_tools自动按热度筛选。
Related MCP server: OpenAPI MCP Server
✨ 能力一览
能力 | 说明 |
自动发现 | 给个 OpenAPI URL 或文件路径,所有 endpoint 自动变成 MCP Tool |
变更检测 | 定时轮询,SHA-256 哈希比对,发现增/删/改 |
热重载 | 变更后自动更新工具列表,通知已连接的 MCP 客户端 |
语义 Diff | 日志清晰输出: |
$ref 解析 | 递归展开 JSON Reference,AI 看到完整参数结构 |
参数全支持 | 路径参数 / 查询参数 / 请求头 / 请求体 |
认证隔离 | 拉取文档的认证 vs 调用 API 的认证分开配置 |
动态模式 | AI 通过 |
标签过滤 | 白名单 / 黑名单 / 自动按接口热度筛选 |
多 API 聚合 | 一个实例同时监听多个后端 |
轻量 | Python 3.11+,仅三个依赖(mcp + httpx + pyyaml) |
🚀 快速开始
1️⃣ 安装
pip install git+https://github.com/huixiaheyu/swagger-mcp.git或从源码:
git clone https://github.com/huixiaheyu/swagger-mcp.git
cd swagger-mcp
pip install -e .2️⃣ 配置
创建 config.yaml:
servers:
- name: petstore
openapi_url: "https://petstore3.swagger.io/api/v3/openapi.json"
base_url: "https://petstore3.swagger.io/api/v3"
poll_interval: 300 # 秒3️⃣ 运行
swagger-mcp config.yaml
# 或通过环境变量
export SWAGGER_MCP_CONFIG=config.yaml
swagger-mcp看到 Loaded 19 tools from 'petstore' 即启动成功。
4️⃣ (可选)查看标签组
swagger-mcp config.yaml --list-tags💡 默认 5 分钟轮询一次。接口变了不需要重启,SwaggerWatcher 自动检测、增量更新、通知 AI 客户端。
🔧 配置参考
servers:
- name: my-api # 服务名(工具名前缀)
openapi_url: "https://..." # OpenAPI 文档 URL
# openapi_file: "./spec.yaml" # 或本地文件路径
base_url: "https://..." # API 调用基础 URL
mode: dynamic # static(默认)| dynamic
# --- 过滤选项(全部可选) ---
max_tools: 150 # 自动选接口最多的标签组,不超过此数
# include_tags: # 白名单
# - sys-user
# exclude_tags: # 黑名单
# - gen-controller
spec_headers: # 拉取文档时的认证头
Authorization: "Bearer xxx"
api_headers: # 每次 API 调用自动注入
api-key: "sk-xxx"
X-Tenant-Id: "tenant-01"
poll_interval: 300 # 轮询间隔(秒),0 关闭字段 | 必需 | 默认值 | 说明 |
| 是 | — | 服务标识,用于工具名前缀 |
| 否* | — | OpenAPI 文档 URL |
| 否* | — | 本地文件路径 |
| 是 | — | API 请求的 Base URL |
| 否 |
| 运行模式 |
| 否 | 0(不限) | 自动保留热度最高的 N 个标签组 |
| 否 | — | 白名单 |
| 否 | — | 黑名单 |
| 否 |
| 拉取文档的 HTTP 头 |
| 否 |
| API 调用的 HTTP 头 |
| 否 |
| 轮询间隔(秒) |
* openapi_url 和 openapi_file 至少填一个。
环境变量
SWAGGER_MCP_CONFIG— 配置文件路径(默认config.yaml)
🤖 动态模式
当 API 接口超过模型限制(通常 200+),设置 mode: dynamic 让 AI 自己管理工具上下文:
servers:
- name: ruoyi
openapi_url: "https://..."
mode: dynamic启动后,AI 看到两个额外的控制工具:
工具 | 作用 |
| 列出所有 OpenAPI 标签组及接口数量 |
| 切换到指定标签组,触发工具列表刷新 |
工作流程:
你:查一下 admin 这个用户
AI:
1. 看到当前工具不覆盖用户管理模块
2. 调用 _list_groups() → sys-user-controller(14), auth-controller(7)
3. 调用 _activate_groups(["sys-user-controller"])
4. 收到 tool_list_changed → 工具列表刷新
5. 调用 ruoyi_list({...}) → 查到用户信息关键特性:
启动时只加载最大标签组(通常 10-30 个工具),避免直接超限
AI 自主按需切换模块,不需要人工配置
单进程实现,不依赖多 MCP Server 实例
static模式下同样支持max_tools/include_tags/exclude_tags
🔌 MCP 客户端集成
Cursor / Windsurf / Claude Desktop
{
"mcpServers": {
"swagger-mcp": {
"command": "python",
"args": ["-m", "swagger_mcp", "/path/to/config.yaml"]
}
}
}注意:尚未发布到 PyPI,通过 GitHub 安装:
pip install git+https://github.com/huixiaheyu/swagger-mcp.git
WorkBuddy
加到 ~/.workbuddy/mcp.json:
{
"mcpServers": {
"swagger-mcp": {
"command": "/path/to/venv/bin/python",
"args": ["-m", "swagger_mcp", "/path/to/config.yaml"]
}
}
}任意 MCP 客户端
python -m swagger_mcp /path/to/config.yaml🏗️ 架构说明
┌──────────┐ ┌──────────────────────────────────────┐
│ MCP │ │ SwaggerWatcher │
│ Client │────▶│ │
│ (Cursor, │ │ ┌─────────┐ ┌──────────┐ │
│ AI IDE) │ │ │ Spec │──▶ Tools │ │
│ │ │ │ Loader │ │ Registry │ │
│ │ │ │(URL/文件)│ │($ref 展开)│ │
│ │ │ └────┬────┘ └────┬─────┘ │
│ │ │ │ │ │
│ │ │ ┌────▼────────────▼──────┐ │
│ │ │ │ Change Detector │ │
│ │ │ │ (SHA-256 哈希 + Diff) │ │
│ │ │ └───────────┬────────────┘ │
│ │ │ │ 热重载通知 │
│ │ │ ┌───────────▼──────────┐ │
│ │ │ │ API Proxy │ │
│ │◀────│ │ (httpx → 后端) │ │
└──────────┘ └──────────────────────────────────────┘四个核心组件:
Spec Loader — 从 URL 或本地文件拉取 OpenAPI 文档,自动识别 JSON/YAML
Tool Registry — 遍历
paths.{path}.{method}生成 MCP Tool 定义,递归展开$refChange Detector — 后台定时轮询 SHA-256 哈希,发现变更做增量 diff
API Proxy — LLM 调用工具时重构 HTTP 请求,代理到后端
工具命名规则
优先 operationId,没有时自动生成:
<服务名>_<operationId>
<服务名>_<方法>__<路径分段>OpenAPI | 生成的工具名 |
|
|
|
|
无 operationId, |
|
变更检测示例
[INFO] + added tools: petstore_createUser, petstore_deleteOrder
[INFO] - removed tools: petstore_deprecatedMethod
[INFO] ~ changed tools: petstore_getPetById🎯 设计理念
配置即文档 — OpenAPI 本身就是最权威的接口文档,不需要再维护一套工具定义
实时同步 — 后端接口变了,AI 应该立刻知道,不需要人工介入
认证隔离 — 获取文档的权限 ≠ 调用 API 的权限,分开配置
增量优先 — 变了一个接口,只更新那一个,不是全量重启
零信任代理 — 所有请求走代理层,鉴权、限流、审计在这一层集中治理
AI 自主管理工具上下文 — 接口超限时,AI 自己决定需要哪些模块
📦 开发指南
git clone https://github.com/huixiaheyu/swagger-mcp.git
cd swagger-mcp
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
# 端到端测试
python test_e2e.py项目结构
swagger-mcp/
├── pyproject.toml # 项目元信息 + 依赖
├── config.yaml # 默认配置示例
├── config.local.yaml # 本地开发配置(不进 Git)
├── mcp-config.json # WorkBuddy 集成模板
├── test_e2e.py # 端到端测试
├── README.md # 本文档
├── README.en.md # 英文文档
└── src/swagger_mcp/
├── __init__.py
├── __main__.py # CLI 入口
├── server.py # MCP 服务器 + 轮询
├── loader.py # 文档加载器
├── registry.py # OpenAPI → MCP 工具 + Diff
└── proxy.py # HTTP 代理⚖️ 与现有方案对比
方案 | 技术栈 | 远程 URL 检测 | 变更 diff | 工具超限处理 | 热重载 |
SwaggerWatcher | Python | ✅ 定时轮询 | ✅ 增/删/改 | ✅ dynamic / 标签过滤 | 增量 + 通知 |
Infobip OpenAPI MCP | Java 21 | ✅ cron 轮询 | ✅ 增/删/改 | ❌ 全注册 | 增量 |
mcp-swagger-server | Node.js | ❌ 仅本地 | ❌ 全量重启 | ❌ 全注册 | File watch |
EasyMCP | Python | ❌ 手动 reload | ❌ 全量重载 | ❌ 全注册 | File watch |
mcp-reloader | Node.js | 取决于 wrapped | ❌ 全量重启 | ❌ 全注册 | File watch |
SwaggerWatcher 是目前唯一同时满足以下四点的轻量方案:
✅ 不绑定 Java/Spring 生态
✅ 远程 OpenAPI URL 自动变更检测
✅ 增/删/改语义 diff + 热重载通知
✅ 工具超限处理:dynamic / 标签过滤 / 热度筛选
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityFmaintenanceA MCP server that exposes OpenAPI schema information to LLMs like Claude. This server allows an LLM to explore and understand large OpenAPI schemas through a set of specialized tools, without needing to load the whole schema into the contextLast updated16050MIT
- Alicense-qualityCmaintenanceA generic MCP server that dynamically converts OpenAPI-defined REST APIs into tools for LLMs like Claude. It supports multiple authentication methods and transport protocols, enabling seamless interaction with any OpenAPI-compliant API.Last updated28MIT
- AlicenseAqualityDmaintenanceA generic MCP server that dynamically exposes any OpenAPI-documented REST API to LLMs by auto-discovering endpoints. It provides tools for exploring API capabilities and making authenticated requests directly through natural language interfaces.Last updated22MIT
- AlicenseCqualityCmaintenanceMCP server that turns OpenAPI specs into tools and calls APILast updated1115MIT
Related MCP Connectors
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server exposing the Backtest360 engine API as tools for AI agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/huixiaheyu/swagger-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server