🚀 将 OpenAPI 转换为 FastMCP 2.x 服务器生成器
将任何 OpenAPI 规范转换为企业级认证、模块化架构和全面中间件支持的生产就绪型模型上下文协议(MCP)服务器。
MCP Generator 2.0 是一个高级代码生成器,它可以从 OpenAPI 3.0.x/3.1.x 规范自动生成 FastMCP 2.x 服务器。通过生成完全功能的 MCP 工具,它可以桥接 REST API 和 AI 代理,使像 Claude、ChatGPT 等 AI 助手能够与您的 API 进行交互。
注意:支持 JSON 和 YAML 格式。生成器在内部使用 OpenAPI Generator CLI,可以无缝处理这两种格式。
| 特性 | MCP Generator 2.0 | 典型生成器 |
|---|---|---|
| 架构 | 模块化的子服务器 | 单一文件的单体架构 |
| 认证 | 使用 JWKS 的 JWT 验证,OAuth2 流程 | 基本令牌传递 |
| 中间件系统 | 完整的 FastMCP 2.x 中间件堆栈 | 有限或无 |
| 可扩展性 | 每个 API 类一个模块 | 所有操作在一个文件中 |
| 类型安全性 | 完整的 Pydantic 模型支持 | 基本验证 |
| 测试 | 自动生成测试套件 | 手动测试 |
| 可观测性 | 计时、日志、错误处理中间件 | 基本日志 |
| 事件存储 | 可恢复的 SSE 与事件持久化 | 简单的 SSE |
| 生产就绪 | ✅ 是 | ⚠️ 经常是原型 |
# 克隆仓库
git clone https://github.com/quotentiroler/mcp-generator-2.0.git
cd mcp-generator-2.0
# 安装依赖
uv sync
# 验证安装
uv run generate-mcp --help
# 克隆仓库
git clone https://github.com/quotentiroler/mcp-generator-2.0.git
cd mcp-generator-2.0
# 创建虚拟环境
python -m venv .venv
source .venv/bin/activate # 在 Windows 上:.venv\Scripts\activate
# 安装依赖
pip install -e .
# 验证安装
generate-mcp --help
# 使用 npm(推荐)
npm install -g @openapitools/openapi-generator-cli
# 验证安装
npx @openapitools/openapi-generator-cli version
# 使用本地文件(默认:./openapi.json)
uv run generate-mcp
# 使用自定义文件
uv run generate-mcp --file ./my-api-spec.yaml
# 从 URL 下载
uv run generate-mcp --url https://petstore3.swagger.io/api/v3/openapi.json
会发生什么:
generated_mcp/ 目录# 注册生成的服务器
uv run register-mcp ./generated_mcp
# 验证注册
uv run run-mcp --list
这会将您的服务器添加到本地注册表 ~/.mcp-generator/servers.json 中,以便您可以按名称轻松运行它。
# 选项 1:通过注册表运行(STDIO 模式,适用于本地 AI 客户端)
export BACKEND_API_TOKEN="your-api-token-here" # 在 Windows 上:set BACKEND_API_TOKEN=...
uv run run-mcp swagger_petstore_openapi
# 选项 2:通过注册表运行(HTTP 模式)
uv run run-mcp swagger_petstore_openapi --mode http --port 8000
# 选项 3:直接使用 Python 运行
cd generated_mcp
python swagger_petstore_openapi_mcp_generated.py --transport stdio
# 选项 4:使用 FastMCP CLI 运行
cd generated_mcp
# 注意:使用 :create_server 来正确组合服务器
uv run fastmcp run swagger_petstore_openapi_mcp_generated.py:create_server
# 或使用 fastmcp.json 配置:
uv run fastmcp run fastmcp.json
在 ~/.claude/claude_desktop_config.json 中添加:
{
"mcpServers": {
"my-api": {
"command": "python",
"args": ["/path/to/generated_mcp/swagger_petstore_openapi_mcp_generated.py"],
"env": {
"BACKEND_API_TOKEN": "your-api-token-here"
}
}
}
}
MCP Inspector 是 MCP 服务器的官方调试工具。它提供了视觉 UI 和 CLI 模式来测试您的生成服务器。
# 首先生成您的 MCP 服务器
uv run generate-mcp --file ./openapi.json
# 使用 Inspector 测试(推荐使用 FastMCP)
cd generated_mcp
uv run fastmcp dev swagger_petstore_openapi_mcp_generated.py:create_server
# 或直接使用 Python 测试
npx @modelcontextprotocol/inspector python swagger_petstore_openapi_mcp_generated.py
# 或使用环境变量
npx @modelcontextprotocol/inspector -e BACKEND_API_TOKEN=your-token python swagger_petstore_openapi_mcp_generated.py
注意:当使用
fastmcp dev或fastmcp run时,始终包括:create_server来正确组合模块化服务器架构。
Inspector 将:
http://localhost:6274 打开浏览器 UIhttp://localhost:6277🛠️ 工具测试
📦 资源探索
💬 提示测试
📊 调试
适合 CI/CD 和快速开发周期:
# 列出可用工具
npx @modelcontextprotocol/inspector --cli python swagger_petstore_openapi_mcp_generated.py --method tools/list
# 调用特定工具
npx @modelcontextprotocol/inspector --cli python swagger_petstore_openapi_mcp_generated.py \
--method tools/call \
--tool-name create_pet \
--tool-arg 'name=Fluffy' \
--tool-arg 'status=available'
# 使用环境变量测试
npx @modelcontextprotocol/inspector --cli \
-e BACKEND_API_TOKEN=your-token \
python swagger_petstore_openapi_mcp_generated.py \
--method tools/list
如果您的生成服务器以 HTTP 模式运行:
# 以 HTTP 模式启动服务器
cd generated_mcp
python swagger_petstore_openapi_mcp_generated.py --transport http --port 8000
# 连接到运行中的服务器(SSE 传输)
npx @modelcontextprotocol/inspector http://localhost:8000/sse
# 或使用可流式传输的 HTTP 传输
npx @modelcontextprotocol/inspector http://localhost:8000/mcp --transport http
Inspector 可以导出您的服务器配置,用于 Claude Desktop 或其他 MCP 客户端:
mcp.json 结构示例导出配置:
{
"mcpServers": {
"my-api": {
"command": "python",
"args": ["swagger_petstore_openapi_mcp_generated.py"],
"env": {
"BACKEND_API_TOKEN": "your-token"
}
}
}
}
将 Inspector 整合到您的开发周期中:
# 1. 从 OpenAPI 规范生成服务器
uv run generate-mcp --file ./openapi.yaml
# 2. 使用 Inspector UI 测试(交互式开发)
cd generated_mcp
npx @modelcontextprotocol/inspector -e BACKEND_API_TOKEN=test python *_mcp_generated.py
# 3. 自动化测试(CI/CD)
npx @modelcontextprotocol/inspector --cli \
-e BACKEND_API_TOKEN=test \
python *_mcp_generated.py \
--method tools/list > tools.json
# 4. 测试特定工具
npx @modelcontextprotocol/inspector --cli \
-e BACKEND_API_TOKEN=test \
python *_mcp_generated.py \
--method tools/call \
--tool-name get_user \
--tool-arg 'user_id=123'
--validate-tokens更多详情,请参阅 Inspector 文档。
此项目安装了三个 CLI 命令。这里是一个快速备忘单。
# 使用本地文件(默认)
uv run generate-mcp
# 自定义文件
uv run generate-mcp --file ./my-api.yaml
# 从 URL
uv run generate-mcp --url https://petstore3.swagger.io/api/v3/openapi.json
# 添加(显式)
uv run register-mcp add ./generated_mcp
# 添加(隐式)
uv run register-mcp ./generated_mcp
# 列出已注册的服务器
uv run register-mcp list
# 列出为 JSON
uv run register-mcp list --json
# 通过名称删除
uv run register-mcp remove swagger_petstore_openapi
# 导出服务器元数据用于发布
uv run register-mcp export swagger_petstore_openapi -o server.json
# 列出服务器
uv run run-mcp --list
# 通过 STDIO 运行(Linux/macOS)
export BACKEND_API_TOKEN="your-api-token" && uv run run-mcp swagger_petstore_openapi
# 通过 STDIO 运行(Windows PowerShell)
powershell
$env:BACKEND_API_TOKEN = "your-api-token"
uv run run-mcp swagger_petstore_openapi
# 通过 HTTP 运行
uv run run-mcp swagger_petstore_openapi --mode http --port 8000
# HTTP 带 JWT 验证
uv run run-mcp swagger_petstore_openapi --mode http --port 8000 --validate-tokens
注意事项:
使用 register-mcp 快速创建您生成的 MCP 服务器的本地内部注册表。条目位于 ~/.mcp-generator/servers.json;几秒钟内即可添加/列出/移除,并且 run-mcp 让您可以通过名称启动服务器。您可以并排运行多个服务器(例如,不同的 HTTP 端口),以实现平滑的开发工作流。
您可以运行自己的 MCP 注册表(开源)并将生成的服务器发布到其中:
注意:此项目尚未自动发布。本地每个用户的注册表(~/.mcp-generator/servers.json)是为了方便开发;发布到中央目录是一个可选的单独步骤。
当 OpenAPI 规范包含 OAuth2 安全方案时,会自动生成 OAuth2 提供者。
支持的流程:
功能:
当启用 --validate-tokens 时:
Authorization 头中提取 JWT