OpenAPI MCP桥
Rust MCP(模型上下文协议)服务器,可将OpenAPI规范动态转换为MCP工具。
特性
- 动态工具生成:自动将OpenAPI 3.0操作转换为MCP工具
- 多种运输支持:支持从本地文件或远程URL加载OpenAPI规范
- 灵活配置:所有配置均通过环境变量进行
- 身份验证支持:支持承载令牌和API密钥认证
- YAML和JSON支持:自动检测和解析YAML和JSON OpenAPI规范
- 错误处理:自动修复常见的OpenAPI规范问题(例如布尔字段中的数值)
安装
cargo build --release可执行文件将位于 target/release/openapi-mcp-bridge.exe
配置
使用环境变量配置服务器:
必需
OPENAPI_SPEC_PATH:OpenAPI规范文件的路径或URL
- 本地文件: ./openapi.json 或 /path/to/spec.yaml - 远程URL: https://api.example.com/openapi.json
可选的
API_BASE_URL:API请求的基本URL(例如。,https://api.example.com)
- 如果您的OpenAPI规范已经包含服务器,则可以省略
API_AUTH_TOKEN:用于身份验证的承载令牌
- 增加 Authorization: Bearer 所有请求的标题
API_KEY:用于身份验证的API密钥
- 增加 X-API-Key: 所有请求的标题
SKILLS_MD_PATH:工具默认值的skills.md文件的路径(未来功能)
用法
运行服务器
# Set environment variables
export OPENAPI_SPEC_PATH="./openapi.json"
export API_BASE_URL="https://api.example.com"
export API_AUTH_TOKEN="your-bearer-token"
# Run the server
./target/release/openapi-mcp-bridgeClaude桌面集成
添加到您的Claude Desktop配置(claude_desktop_config.json):
{
"mcpServers": {
"openapi-bridge": {
"command": "path/to/openapi-mcp-bridge.exe",
"env": {
"OPENAPI_SPEC_PATH": "https://api.example.com/openapi.json",
"API_BASE_URL": "https://api.example.com",
"API_AUTH_TOKEN": "your-bearer-token"
}
}
}
}运作原理
- 启动时:服务器从指定的路径/URL加载OpenAPI规范
- 工具发现:规范中的每个GET和POST操作都成为MCP工具
- 工具名称来源于 operationId (例如。, getUsers, createOrder) - 工具描述来自 summary 或 description 领域
- 工具执行:当Claude调用工具时:
- 服务器使用以下命令构造完整的URL API_BASE_URL +操作路径 - 如果已配置,则添加身份验证标头 - 对于GET请求:从工具参数中查询参数 - 对于POST请求:从工具参数请求正文 - 返回API对Claude的响应
OpenAPI规范示例
openapi: 3.0.0
info:
title: Sample API
version: 1.0.0
servers:
- url: https://api.example.com/v1
paths:
/users:
get:
operationId: getUsers
summary: Get all users
parameters:
- name: limit
in: query
schema:
type: integer
- name: offset
in: query
schema:
type: integer
responses:
'200':
description: Success
post:
operationId: createUser
summary: Create a new user
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
email:
type: string
responses:
'201':
description: Created这将生成两个MCP工具:
getUsers:GET/具有可选限制/偏移参数的用户createUser:POST/具有名称/电子邮件正文参数的用户
发展
运行测试
cargo test使用调试日志运行
RUST_LOG=debug cargo run生产大楼
cargo build --release局限性
目前支持:
- ✅ GET和POST操作
- ✅ 查询参数(GET)
- ✅ JSON请求体(POST)
- ✅ 承载令牌身份验证
- ✅ API密钥验证
- ✅ 本地文件和远程URL规范
- ✅ YAML和JSON格式
马上就来:
- 🔲 PUT、DELETE、PATCH操作
- 🔲 路径参数
- 🔲 OpenAPI规范中的标头
- 🔲 请求根据模式进行验证
- 🔲 Skills.md集成
故障排除
“无效类型:浮点 0.0,预期为布尔值“
当OpenAPI规范使用数值(如 0.0 或 1.0)而不是 true/false 对于布尔字段。服务器会自动修复这些问题:
- 转换
0.0→false以及任何非零数字→true - 修复了常见的布尔字段:
deprecated,required,nullable,readOnly,writeOnly,uniqueItems
如果您在日志中看到此错误,服务器将尝试自动修复它,并且应该正常工作。
“连接已关闭”或“启动失败”
- 检查您的OpenAPI规范URL:确保
OPENAPI_SPEC_PATH可访问的 - 启用调试日志:设置
RUST_LOG=debug查看详细的错误消息 - 测试URL:验证您可以在浏览器中或使用curl访问规范
- 检查身份验证:确保
API_AUTH_TOKEN或API_KEY如果需要,是正确的
调试模式
运行详细日志记录:
export RUST_LOG=debug
./target/debug/openapi-mcp-bridge.exe这将显示:
- 规格加载过程
- 提取的工具数量
- 正在发出API请求
- 详细的错误消息
建筑
src/
├── main.rs # Entry point, sets up MCP server with stdio transport
├── lib.rs # MCP handler implementation (list_tools, call_tool)
├── config.rs # Environment variable configuration
├── state.rs # Shared state (tools list, HTTP client, config)
├── openapi.rs # OpenAPI spec loading and tool extraction
└── tools.rs # Tool execution logic (makes HTTP requests)许可证
麻省理工学院
贡献
欢迎投稿!请打开问题或提交拉取请求。
