MCP-DOC-MID
MCP-DOC-MID:用于 OpenAPI 与集成生成的 MCP 服务器
为 Node.js(ES Modules)中的 Model Context Protocol(MCP) 生态系统打造的企业级服务器,专注于 学习、解引用($ref)并让 LLM 查询 OpenAPI/Swagger 规范,从而生成可直接用于生产的代码集成。
它使用 @apidevtools/swagger-parser 在服务器启动时于内存中解析所有指针和组件模型,并公开了一个包含 8 个 MCP 工具 的目录,这些工具专为搜索、检查、验证和生成多种语言(TypeScript、Python、JavaScript、cURL、C#)的 HTTP 客户端而设计。
📚 详细文档
如需专业指南和完整图表,请参阅:
🏛️ 系统架构指南(
docs/ARCHITECTURE.md):流程图、会话绑定、可观测性、原子持久化与熔断器。🛠️ MCP 工具参考(
docs/TOOLS_REFERENCE.md):每种工具的参数、JSON 格式和响应示例的详细说明。📂 Swagger / OpenAPI 文件指南(
docs/SWAGGER_GUIDE.md):用于添加、验证和整理.yml和.json文件的说明。📋 Doters API 内部规范(
docs/MIDDLEWARE_API_SPEC.md):对middleware-api.json的 110 个端点、221 个 DTO、响应包裹器和 25 个域的分析。
Related MCP server: mcp-swagger
🏛️ 主要特性
自动读取与解引用(
swaggers/):递归扫描
.yml、.yaml和.json文件。完整解析组件、参数和模型中的
$ref引用。
为 LLM 生成代码整合:
generate_integration_code:为任意端点生成代码片段和强类型客户端。支持 TypeScript(
fetch/axios)、JavaScript、Python(httpx/requests)、cURL 和 C#。
安全验证与提取:
validate_payload:预先检查 JSON 负载是否符合必需的类型和字段。get_security_schemes:提取身份验证方案(Bearer 令牌、API 密钥、OAuth2)。
双传输模式:
STDIO:与 Claude Desktop、Antigravity、Cursor 和 MCP 扩展的标准集成。
SSE / HTTP:Express 服务器,支持
/sse、/messages、/metrics、/health和/dashboard。
可观测性与安全性:
使用 Pino 将日志仅输出到
process.stderr。在
/metrics上提供 Prometheus 指标(prom-client)。在
/messages中实现会话绑定与会话劫持保护。
🛣️ 三步整合流程(零代码)
为了让新 API 的整合 100% 可扩展、无摩擦且无需编写任何代码,服务器实现了 自动发现与约定加载:
flowchart LR
A["1. Copiar Archivo\n(swaggers/mi-api.json o .yml)"] --> B["2. Auto-Discovery & Caching\n(Hash SHA-256 + Dereference)"]
B --> C["3. Auto-Diagnóstico\n(npm run self-test)"]
C --> D["✅ Disponible en las 8 Tools MCP\n(search_docs, get_endpoint_doc, etc.)"]1️⃣ 步骤 1:将文件放入 swaggers/
只需将你的 .json、.yml 或 .yaml 文件保存到 swaggers/ 目录中即可。
📁 推荐的可扩展结构(按域名或微服务组织):
扫描器是 递归的,因此随着 API 数量的增加,你可以将文件整理到按主题分类的子目录中:
swaggers/
├── middleware-api.json # API Core Middleware
├── partners/
│ ├── avasa-car-rental.json # Swagger de Avasa
│ └── iamsa-bus.json # Swagger de IAMSA
├── payments/
│ └── openpay-gateway.yml # OpenAPI de Pasarelas de Pago
└── flights/
└── viva-booking.yaml # OpenAPI de Reservaciones Viva[!TIP] 自动标识符(
specId):
系统会根据文件的基本名称自动生成specId:
avasa-car-rental.json$\rightarrow$specId: "avasa-car-rental"
openpay-gateway.yml$\rightarrow$specId: "openpay-gateway"
2️⃣ 步骤 2:通过 npm run self-test 验证完整性
无需盲目启动 MCP 客户端或重启服务器。在终端运行:
npm run self-test这个命令在 < 15 毫秒内做什么?
检测新文件并计算其 SHA-256 哈希。
自动解析所有
$ref引用并进行解引用。清理损坏或缺失的引用,使服务器永不崩溃。
在
.cache/swaggers/中生成高性能快照。实时显示摘要:
{
"status": "healthy",
"checks": {
"swaggers": {
"status": "pass",
"specsCount": 4,
"endpointsCount": 285,
"schemasCount": 412
}
}
}3️⃣ 步骤 3:可供代理和 LLM 立即查询
8 个 MCP 工具会立即学习新的端点和模式,无需任何额外配置:
全局搜索:
search_docs({ query: "renta autos" })将同时对所有 swaggers 进行搜索。过滤搜索:
search_docs({ query: "renta", specId: "avasa-car-rental" })仅查询该 API。代码生成:
generate_integration_code({ path: "/v1/cars/book", language: "typescript" })将生成类型化客户端。加载模板验证:
validate_payload({ schemaName: "CarBookingDto", payload: { ... } })将根据新模型进行验证。
🏆 确保 LLM 的最大质量的最佳实践
为了使语言模型在读取你的新 swaggers 时生成最佳代码和准确响应:
声明基础 URL(
servers):servers: - url: https://api.vivaaerobus.com/v1 description: Ambiente de Producción在模式中包含示例(
example/examples):示例使generate_integration_code工具和 LLM 能够自动创建真实的测试负载。使用清晰的标签(
tags):按标签分组(例如[ "CarRental", "Payments", "Security" ])可让代理通过search_docs({ tag: "Payments" })快速筛选端点集合。声明安全配置(
components.securitySchemes):指定其使用bearerFormat: JWT、ApiKey还是OAuth2,以便get_security_schemes工具公开所需的对头。
🛠️ 可用的 MCP 工具
工具 | 描述 | 主要对应参数 |
列出所有已加载的 API 及其版本、服务器和路由数量。 | 无 | |
按关键词搜索端点、模型和描述。 |
| |
获取某个端点的完整且已解引用的规范。 |
| |
获取已解引用的数据模型 / schema。 |
| |
生成可直接用于生产的客户端代码(TypeScript、Python、JavaScript、cURL、C#)。 |
| |
获取身份验证方案及必需的对头。 |
| |
在调用 API 之前根据端点的 schema 验证 JSON 负载。 |
| |
综合回答有关 API 的业务或架构问题。 |
|
⚙️ 环境变量(.env)
变量名 | 描述 | 默认值 |
| 传输模式( |
|
| SSE/HTTP 模式的监听端口 |
|
| 日志级别( |
|
| 用于 API 身份验证的密钥 |
|
| 启用/禁用身份验证( |
|
| 允许的 CORS 来源 |
|
| 用于访问 Web 仪表盘的用户名 |
|
| 用于访问 Web 仪表盘的用户名密码 |
|
| Rate Limit 的时间窗口(毫秒) |
|
| 每个时间窗口的最大请求数 |
|
| 是否将统计信息持久化到磁盘 |
|
| 持久化文件的位置 |
|
| OpenAPI 规范文件夹 |
|
🚀 快速入门
# 1. Instalar dependencias
npm install
# 2. Autodiagnóstico en runtime (<5ms)
npm run self-test
# 3. Iniciar en modo STDIO (predeterminado)
npm start
# 4. Iniciar en modo SSE / HTTP (servidor web)
TRANSPORT_MODE=sse PORT=3000 npm start🧪 自动化测试与基准测试
该项目拥有一个全面的测试套件,116 个测试全部通过(100%),语句覆盖率超过 93%:
# 1. Ejecutar suite completa de pruebas unitarias y de integración
npm test
# 2. Reporte de cobertura detallado con Vitest y V8 (>93% Stmts)
npm run test:coverage
# 3. Pruebas de carga de alta concurrencia (100 agentes concurrentes)
npm run test:load
# 4. Benchmark de latencia y throughput (<5ms)
npm run benchmark
# 5. Pipeline de integración continua (CI)
npm run test:ci🐳 使用 Docker 部署
# Construir imagen Docker multi-stage
docker build -t mcp-doc-mid:latest .
# Ejecutar contenedor en modo SSE
docker run -p 3000:3000 -e TRANSPORT_MODE=sse mcp-doc-mid:latestAvailable Tools
8 toolsgenerate_integration_codeB
Genera un snippet/cliente de código listo para producción en TypeScript, JavaScript, Python, cURL o C# para un endpoint específico.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Ruta del endpoint a integrar (ej. "/v1/members/{memberId}/balances", "/v1/security/login"). | |
| method | No | Método HTTP (GET, POST, PUT, DELETE, PATCH). Por defecto GET. | |
| specId | No | ID de la especificación (opcional). | |
| language | No | Lenguaje de programación de destino. | |
| clientType | No | Librería cliente HTTP preferida (ej. "fetch" o "axios" en TypeScript). |
get_endpoint_docB
Obtiene la documentación completa, parámetros, request body y respuestas dereferenciadas de un endpoint específico.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Ruta del endpoint (ej. "/v1/members/{memberId}/balances", "/v1/security/login"). | |
| method | No | Método HTTP (GET, POST, PUT, DELETE, PATCH). Por defecto GET. | |
| specId | No | ID o nombre de la especificación a consultar (opcional). |
get_schema_docA
Obtiene la definición de un modelo de datos o schema dereferenciado (propiedades, tipos, campos obligatorios y enums).
| Name | Required | Description | Default |
|---|---|---|---|
| specId | No | ID o nombre de la especificación a consultar (opcional). | |
| schemaName | Yes | Nombre del schema o componente (ej. "LoginRequestDto", "MemberBalanceResponseDto"). |
get_security_schemesA
Obtiene los esquemas de autenticación y seguridad (Bearer token, API Key, OAuth2) definidos en las especificaciones OpenAPI.
| Name | Required | Description | Default |
|---|---|---|---|
| specId | No | ID de la especificación (opcional, si se omite lista todos). |
list_specsA
Lista todas las especificaciones OpenAPI/Swagger (.yml y .json) que han sido aprendidas y dereferenciadas en memoria con sus servidores y versiones.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
query_api_knowledgeB
Consulta y sintetiza el conocimiento transversal de las APIs OpenAPI aprendidas para resolver dudas de negocio o integración.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Pregunta o consulta técnica/negocio sobre la funcionalidad disponible en las APIs. | |
| specId | No | ID o nombre de la especificación para restringir la consulta (opcional). |
search_docsA
Busca endpoints, operaciones, etiquetas y modelos de datos en todas las especificaciones OpenAPI aprendidas por palabras clave.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Filtrar por etiqueta/tag específico (opcional, ej. "MemberApi", "Security", "CarRental"). | |
| limit | No | Número máximo de resultados a retornar (por defecto 10, máximo 50). | |
| query | Yes | Término de búsqueda (ej. "balances", "login", "points", "memberId", "accrual"). | |
| specId | No | ID o nombre de la especificación para limitar la búsqueda (opcional). |
validate_payloadA
Valida si un payload JSON cumple con la estructura, campos obligatorios y tipos de datos del schema OpenAPI antes de generar código.
| Name | Required | Description | Default |
|---|---|---|---|
| specId | No | ID de la especificación (opcional). | |
| payload | Yes | Objeto JSON a validar. | |
| schemaName | Yes | Nombre del schema a validar contra (ej. "LoginRequestDto", "MemberBalanceResponseDto"). |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v1.0.0- First observed
generate_integration_code - First observed
get_endpoint_doc - First observed
get_schema_doc - First observed
get_security_schemes - First observed
list_specs - First observed
query_api_knowledge - First observed
search_docs - First observed
validate_payload
TDQS
Scored across 8 tools
Each tool targets a distinct operation: list, search, get endpoint/schema, generate code, security, validate, and query knowledge. Some potential overlap exists between search_docs and query_api_knowledge, but descriptions clarify the difference between keyword search and synthesized cross-cutting knowledge.
All tool names follow a consistent verb_noun pattern in snake_case, such as list_specs, get_endpoint_doc, and generate_integration_code. There are no mixed casing styles or vague verb variations.
With 8 tools, the count is well-scoped for an OpenAPI documentation assistant. Each tool covers a necessary aspect of browsing, validating, and generating code from specs without redundancy.
The set covers the full document consumption lifecycle: discovering specs, searching content, retrieving endpoint/schema details, understanding security, validating payloads, and generating integration code. No significant gaps are apparent for the server's stated purpose.
Maintenance
Related MCP Connectors
Turn any task into the right API calls: discover, evaluate, and integrate public APIs.
Point Gecko at an OpenAPI spec; get first-call-correct, auth-hidden agent tools.
Convert, lint and generate LLM tool schemas for OpenAI, Anthropic, Gemini and MCP
Discover, compare, route, and execute machine-accessible capabilities for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to explore and query OpenAPI specifications, allowing natural language interaction with API endpoints, parameters, request bodies, and response schemas from any OpenAPI 3.x spec.14 npmMIT
- AlicenseAqualityDmaintenanceExposes Swagger/OpenAPI API documentation to AI models, enabling exploration, search, and interaction with endpoints, schemas, and execution of API calls.1420 npm2MIT
- FlicenseNot gradedqualityDmaintenanceBrings OpenAPI/Swagger documentation into AI assistants, enabling endpoint discovery, deep inspection, cURL generation, and TypeScript type generation.-
- AlicenseAqualityDmaintenanceEnables AI assistants to understand and interact with OpenAPI specifications, providing deep insight into API structures for faster and more accurate API integration.926 npm1MIT