将您的 OpenAPI 规范转换为生产就绪的 Model Context Protocol (MCP) 服务器,并通过 AI 增强和验证
OpenAPI 转 MCP 是一个强大的工具,可以自动将 OpenAPI/Swagger 规范转换为完全功能的 MCP 服务器。它利用大型语言模型(LLMs)来分析、增强并生成与 MCP 兼容的服务器实现,基于您现有的 API 文档。
[!CAUTION] 本仓库提供的示例仅用于实验和教育目的。它们展示了概念和技术,但不建议直接在生产环境中使用。确保有 Amazon Bedrock 安全措施以防止 提示注入。
随着企业向 AI 就绪转型,确保其 API 也具备 AI 就绪性是关键的一环。为人类消费编写的 API 规范往往缺乏大型语言模型运行所需的细节水平。虽然人类开发者可以依赖领域专业知识和部落知识来填补文档中的空白,但 LLM 可能会幻想缺失的信息,导致 AI 代理无法可靠地在正确的时间调用正确的工具。
影响 AI 就绪性的常见问题包括:
当这些不完整的 API 规范直接转换为 MCP 服务器时,生成的工具规范也会继承同样的缺陷。这会导致不可预测的行为,最坏的情况可能是完全失效。OpenAPI 转 MCP 转换器通过使用 AI 分析、评估和增强您的 API 规范,然后生成 MCP 服务器,解决了这一差距,确保它们符合可靠的 AI 代理操作所需的质量标准。
OpenAPI 转 MCP 转换器遵循多阶段管道架构:
graph TD
A[OpenAPI Spec] --> B[Specification Loader]
B --> C[AI-Powered Evaluator]
C --> D{Quality Check}
D -->|Pass| E[MCP Generator]
D -->|Fail| F[Enhancement Suggestions]
E --> G[MCP Server]
E --> H[MCP Client]
F --> I[Enhanced Spec]
J[LLM Provider] --> C
J --> E
style A fill:#f9f,stroke:#333,stroke-width:2px
style G fill:#9f9,stroke:#333,stroke-width:2px
style H fill:#9f9,stroke:#333,stroke-width:2px
OpenAPI 转 MCP 转换器提供了现有 API 文档与 Model Context Protocol 生态系统之间的无缝桥梁。只需一个命令,即可将任何 OpenAPI 或 Swagger 规范转换为生产就绪的 MCP 服务器。该工具利用先进的大型语言模型不仅进行转换,还分析和增强您的 API 规范,确保它们达到最高标准的 AI 集成。
每次转换都包括全面的评估报告,对您的 API 在多个维度上的评分,包括完整性、安全性以及 AI 就绪性。内置的质量阈值确保只有符合您标准的规范才会进入 MCP 生成,而详细的使用跟踪帮助您监控 LLM 令牌消耗及相关成本的所有操作。
评估引擎对您的 OpenAPI 规范进行深入分析,跨多个维度检查。它通过识别可能影响可用性的缺失描述、示例和模式来检查 API 的完整性。安全性分析评估您的身份验证和授权方案,确保它们符合现代安全标准。
AI 就绪性评估特别有价值,确定您的 API 与 AI 代理和自动化工具的有效工作程度。内置的代码检查器识别规范问题和违反 OpenAPI 最佳实践,而操作分析提供每个端点的详细审查,包括参数文档、响应模式和错误处理。
当您的规范满足质量阈值时,工具会生成一个完整的 MCP 实现包。这包括一个完全功能的基于 Python 的 MCP 服务器,实现了您的所有 API 操作作为 MCP 工具,以及一个用于测试实现的现成客户端。
生成的包包括所有必要的依赖文件、带有使用说明的综合文档以及详细的操作规范,描述了每项操作的 MCP 格式。一切都组织在一个干净的目录结构中,准备好部署或进一步定制。
想看看转换器生成的内容吗?查看我们的预生成示例结果和综合输出指南:
探索示例结果 - 查看我们样本太空任务 API 的真实评估报告、生成的 MCP 服务器等内容
阅读结果指南 - 了解转换器生成的每个文件,附带实际示例链接
这些资源展示了您从转换过程中可以期待的结果,并帮助您解读评估分数和生成的代码。
首先,如果您还没有安装,请安装 uv 包管理器:
# 在 macOS 和 Linux 上
curl -LsSf https://astral.sh/uv/install.sh | sh
# 在 Windows 上
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# 或者使用 pip
pip install uv
git clone https://github.com/agentic-community/openapi-to-mcp.git
cd openapi-to-mcp
# 创建虚拟环境
uv venv
# 激活在 macOS/Linux 上
source .venv/bin/activate
# 激活在 Windows 上
.venv\Scripts\activate
uv pip install -e .
cp env.example .env
# 编辑 .env 文件,添加您的 API 凭证
对于带有额外工具的开发:
uv pip install -e ".[dev]"
评估并转换本地 OpenAPI 规范:
# 对于简单示例
openapi-to-mcp examples/hello.yaml
# 对于更复杂的示例
openapi-to-mcp examples/sample_api.yaml
从 URL 评估规范:
openapi-to-mcp --url https://raw.githubusercontent.com/agentic-community/openapi-to-mcp/refs/heads/main/examples/hello.yaml
openapi-to-mcp [OPTIONS] [FILENAME]
参数:
FILENAME OpenAPI 规范文件(YAML 或 JSON)
选项:
--url URL 从 URL 获取 OpenAPI 规范
--output FILE 结果输出文件(默认:自动生成)
--eval-only 仅运行评估,跳过 MCP 生成
--verbose 启用详细日志
--show-env 显示环境配置
通过环境变量配置您的 LLM 提供商凭证:
export AWS_PROFILE=your-profile-name
export AWS_REGION=us-east-1
export ANTHROPIC_API_KEY=your-api-key
注意:模型选择配置在 config/config.yml 中,而不是通过环境变量。
# 评估简单的 hello API 示例
openapi-to-mcp examples/hello.yaml
# 检查生成的输出
ls output/results_*_hello/
# 评估具有多个端点的更复杂示例 API
openapi-to-mcp examples/sample_api.yaml
# 此示例包括用户、产品等操作
# 直接从 URL 评估
openapi-to-mcp --url https://raw.githubusercontent.com/agentic-community/openapi-to-mcp/refs/heads/main/examples/hello.yaml
# 仅评估而不生成 MCP 服务器
openapi-to-mcp examples/sample_api.yaml --eval-only
# 指定自定义输出文件
openapi-to-mcp examples/hello.yaml --output results/my-api-evaluation.json
此仓库包含使用 examples/sample_api.yaml 规范的完整端到端演示。示例 API 表示一个虚构的太空任务控制系统,具有飞船遥测、机组人员管理、任务操作和科学实验的端点。
为了便于测试而无需真实的后端,我们提供了:
examples/stub_server.py),模拟后端 API 并返回模拟响应为了方便起见,我们在以下位置包含了评估 sample_api.yaml 的预生成结果:
examples/results/anthropic/sample_api/
此目录包含评估报告、增强规范和一个可运行的 MCP 服务器。参阅 RESULTS_GUIDE.md 以获取有关这些文件的详细信息。
按照以下步骤测试完整集成:
首先,运行模拟您的 API 后端的存根服务器:
# 在端口 9002 启动存根服务器
uv run examples/stub_server.py --port 9002
这创建了一个模拟后端,对 API 请求返回模拟数据。
导出 MCP 服务器所需的认证令牌:
export AUTH_TOKEN="your-secret-token"
在新的终端中,导航到生成的 MCP 服务器目录并启动它:
# 导航到生成的服务器目录
cd examples/results/anthropic/sample_api/mcpserver/
# 在端口 9001 启动 MCP 服务器,指向端口 9002 的存根服务器
python server.py --port 9001 --base-url http://localhost:9002
在另一个终端中,运行 MCP 客户端以与您的服务器交互:
# 从相同的 mcpserver 目录
python client.py --server-url http://localhost:9001/mcp
客户端将连接到 MCP 服务器并允许您测试所有可用工具。
# 终端 1:启动存根服务器
uv run examples/stub_server.py --port 9002
# 终端 2:设置认证并启动 MCP 服务器
export AUTH_TOKEN="my-secret-token"
cd examples/results/anthropic/sample_api/mcpserver/
python server.py --port 9001 --base-url http://localhost:9002
# 终端 3:运行客户端
cd examples/results/anthropic/sample_api/mcpserver/
python client.py --server-url http://localhost:9001/mcp
该工具使用 config/config.yml 进行所有设置,包括模型选择:
# 模型配置 - 在这里指定您的模型
model: bedrock/us.anthropic.claude-3-5-sonnet-20241022-v2:0
# 或对于 Anthropic 直接访问:
# model: anthropic/claude-3-5-sonnet-20241022
# 模型参数
max_tokens: 8192
temperature: 0.0
timeout_seconds: 300
# 评估阈值
good_evaluation_threshold: 3.0
generate_mcp_threshold: 3.0
# 功能标志
debug: false
完整性和 AI 就绪性评分必须同时达到阈值才能生成 MCP 服务器。
运行工具后,您会找到以下结构:
output/
└── results_YYYYMMDD_HHMMSS_<spec-name>_<provider>/
├── evaluation_YYYYMMDD_HHMMSS.json # 详细的评估结果
├── summary_YYYYMMDD_HHMMSS.md # 人类可读的摘要
├── usage_YYYYMMDD_HHMMSS.json # 令牌使用和成本
├── enhanced_spec_YYYYMMDD_HHMMSS.yaml # 增强的规范
├── original_spec_YYYYMMDD_HHMMSS.yaml # 原始规范
└── mcpserver/ # 生成的 MCP 服务器(如果符合条件)
├── server.py # MCP 服务器实现
├── client.py # 测试用的 MCP 客户端
├── requirements.txt # Python 依赖
├── README.md # 使用文档
└── tool_spec.txt # 工具规范
OpenAPI 转 MCP 转换器生成全面的评估报告和 MCP 实现。为了帮助您理解和使用这些输出:
此指南解释:
examples/results/anthropic/sample_api/ 中的预生成结果作为参考实现,展示了高质量转换的样子。
Amazon Bedrock
Anthropic(直接访问)
此解决方案使用 LiteLLM 进行 LLM 提供商管理。根据 MODEL 环境变量中的前缀自动检测提供商:
bedrock/ 前缀的模型使用 Amazon Bedrockanthropic/ 前缀的模型直接使用 Anthropic尽管 LiteLLM 支持许多提供商,但此工具已专门针对通过 Amazon Bedrock 和 Anthropic 的 Claude 模型系列进行了测试和优化。