一个CLI工具,可以从Swagger/OpenAPI文档生成一个模型上下文协议(MCP)服务器。
# 安装依赖
npm install
# 构建项目
npm run build
# 全局链接(可选)
npm link
node dist/cli.js --doc <swagger-json-path-or-url> [--output <output-directory>]
# 从本地Swagger文档生成MCP服务器
node dist/cli.js --doc api-spec.json --output my-api-server
# 从远程URL生成
node dist/cli.js --doc https://petstore.swagger.io/v2/swagger.json --output petstore-server
# 使用默认输出目录(./generated-mcp-server)
node dist/cli.js --doc api-spec.json
--doc <path>: Swagger/OpenAPI JSON文档的路径或URL(必需)--output <path>: 生成的MCP服务器的输出目录(默认:./generated-mcp-server)--help: 显示帮助信息--version: 显示版本信息生成的MCP服务器包括:
src/index.ts: 主MCP服务器实现,每个API端点都有相应的工具src/types.ts: 从Swagger模式生成的TypeScript类型package.json: 包含依赖项的Node.js包配置tsconfig.json: TypeScript编译配置README.md: 生成服务器的文档cd <output-directory>
npm install
npm run build
npm start
该服务器通过stdio传输运行,并且可以与任何兼容MCP的客户端一起使用。
您Swagger文档中的每个API端点都会成为MCP工具:
operationId,或者根据方法+路径生成一个summary或description{
"openapi": "3.0.0",
"info": {
"title": "用户API",
"version": "1.0.0"
},
"paths": {
"/users/{id}": {
"get": {
"operationId": "getUserById",
"summary": "通过ID获取用户",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": { "type": "string" }
}
]
}
}
}
}
上述端点会变成名为getUserById的MCP工具:
id字符串参数/users/{id},替换路径参数mcpr/
├── src/
│ ├── cli.ts # CLI入口点
│ ├── parser.ts # Swagger文档解析器
│ ├── generator.ts # MCP服务器生成器
│ ├── type-generator.ts # TypeScript类型生成器
│ └── templates.ts # 代码模板
├── dist/ # 编译后的JavaScript
├── package.json
├── tsconfig.json
└── README.md
npm run build: 将TypeScript编译成JavaScriptnpm run dev: 在开发模式下运行CLI,使用tsxnpm run lint: 运行ESLintnpm run typecheck: 运行TypeScript类型检查