OpenAPI到MCP生成器
该项目提供了一个强大的工具,用于自动将OpenAPI/Swagger规范转换为模型上下文协议(MCP)服务器,允许LLM通过标准化工具与任何RESTneneneba API交互。
组件
SwaggerToMcpGenerator.java
一个全面的实用程序,可以将任何OpenAPI/Swagger规范转换为功能齐全的MCP服务器:
- 解析OpenAPI规范文件
- 将API端点转换为MCP工具
- 处理路径参数、查询参数和请求体
- 支持多种HTTP方法(GET、POST、PUT、DELETE、PATCH)
- 提供身份验证支持(API密钥、承载令牌、基本身份验证)
- 格式化JSON响应以提高可读性
- 生成稳健的错误处理
- 包括具有有效值和默认值的参数文档
从OpenAPI生成MCP服务器
要从任何OpenAPI规范生成MCP服务器:
jbang SwaggerToMcpGenerator.java path/to/swagger.json GeneratedMcpServer [options]参数:
path/to/swagger.json:OpenAPI/Swagger规范文件的路径GeneratedMcpServer:输出Java文件的名称(不带.Java扩展名)
选项:
--server-index:OpenAPI规范中要使用的服务器索引(基于0)--server-url:要使用的服务器的URL(覆盖服务器索引)
这将创建一个新文件 GeneratedMcpServer.java 其实现MCP服务器,该MCP服务器具有在swagger文件中定义的每个API端点的工具。如果OpenAPI规范中定义了多个服务器,并且没有明确选择任何服务器,生成器将发出警告。
运行生成的MCP服务器
要运行生成的MCP服务器:
jbang GeneratedMcpServer.java服务器选择
生成的MCP服务器包括OpenAPI规范中定义的所有服务器的常量,允许您选择在运行时使用哪个服务器。默认情况下,使用列表中的第一个服务器,但您可以使用环境变量选择特定的服务器:
# Select server by index (0-based)
export SERVER_INDEX=1
# Or select server by URL
export SERVER_URL="https://api-example.com/v2"
jbang GeneratedMcpServer.java认证
生成的MCP服务器通过环境变量支持多种身份验证方法:
- API密钥:设置
API_KEY和API_KEY_HEADER环境变量 - 承载令牌:设置
BEARER_TOKEN环境变量 - 基本认证:设置
API_USERNAME和API_PASSWORD环境变量
例子:
export API_KEY="your-api-key"
export API_KEY_HEADER="X-API-Key"
jbang GeneratedMcpServer.java例子
开放气象API
该项目包含一个Open-Meteo Weather API的示例OpenAPI规范,位于 examples/open-meteo 目录。
生成开放Meteo MCP服务器
cd examples/open-meteo
jbang ../../SwaggerToMcpGenerator.java open-meteo-openapi.yml OpenMeteoMcpServer这将产生 OpenMeteoMcpServer.java 使用MCP工具访问天气预报数据。
运行开放Meteo MCP服务器
cd examples/open-meteo
jbang OpenMeteoMcpServer.java使用开放式Meteo MCP服务器
生成的MCP服务器提供用于访问天气预报的工具。使用服务器时,请注意包含有效值和默认值的参数描述。例如:
- 对于
wind_speed_unit参数,使用ms(不是“m/s”)表示米每秒 - 的有效值
wind_speed_unit是:kmh(默认),ms,mph,以及kn - 对于温度单位,使用
celsius(默认)或fahrenheit
西班牙塞维利亚天气查询示例:
latitude: 37.3891
longitude: -5.9845
current_weather: true
wind_speed_unit: ms生成Clever Cloud MCP服务器
cd examples/clever-cloud
jbang ../../SwaggerToMcpGenerator.java clever-cloud-openapi.yml CleverCloudMcpServer --server-index 1请注意,我们正在使用 --server-index 1 (列表中的第二个服务器),其是令牌认证所需的API桥URL。这将产生 CleverCloudMcpServer.java 使用MCP工具管理Clever Cloud资源。
或者,您可以直接指定服务器URL:
cd examples/clever-cloud
jbang ../../SwaggerToMcpGenerator.java clever-cloud-openapi.yml CleverCloudMcpServer --server-url https://api-bridge.clever-cloud.com/v2运行Clever Cloud MCP服务器
cd examples/clever-cloud
# Set your Clever Cloud API token
export BEARER_TOKEN=your_api_token
jbang CleverCloudMcpServer.java生成Clever Cloud API令牌
要为Clever Cloud生成API令牌,您需要使用 Clever Tools命令行界面:
# Install Clever Tools (if not already installed)
npm install -g clever-tools
# Login to Clever Cloud
clever login
# Enable the tokens feature
clever features enable tokens
# Create a token (with optional expiration)
clever tokens create "MCP Server Token"
clever tokens create "Temporary Token" --expiration 24h您还可以列出和撤销令牌:
# List existing tokens
clever tokens -F json
# Revoke a token
clever tokens revoke api_tokens_xxx使用Clever Cloud MCP服务器
生成的MCP服务器提供了与Clever Cloud API交互的工具。可用工具包括:
get_self:获取当前用户信息get_summary:获取用户摘要get_organisations__organisationId__applications:列出组织的应用程序get_organisations__organisationId__applications__applicationId_:获取应用程序详细信息
列出组织应用程序的示例查询:
organisationId: your_organization_id运作原理
MCP协议
模型上下文协议(MCP)是工具和LLM通信的标准化方式,允许:
- 将其功能暴露给任何兼容MCP的LLM的工具
- LLM发现和使用工具,而不受特定实现的约束
- 工具规范和调用的一致接口
OpenAPI到MCP的转换
发电机的工作原理如下:
- 解析OpenAPI规范 使用Swagger解析器
- 转换每个API终结点 到a
@Tool注释方法 - 映射参数:
- 路径参数被合并到URL中 - 查询参数被添加到URL生成器中 - 请求正文格式正确,并附加到请求中
- 正在生成HTTP客户端代码 通过适当的错误处理
- 格式化响应 基于内容类型(漂亮的打印JSON)
- 添加身份验证 基于环境变量
高级功能
- 多种HTTP方法:支持GET、POST、PUT、DELETE和PATCH
- 内容类型处理:正确处理不同的内容类型
- 错误处理:详细的错误报告,包括状态代码和响应机构
- 认证:支持API密钥、承载令牌和基本身份验证
- 超时:可配置的连接、读取和写入超时
- 多个服务器:支持从OpenAPI规范中定义的多个服务器URL中进行选择
环境说明
这 jbang-wrapper.sh 该脚本解决了从AI助手运行时的环境问题,例如 克劳德桌面 在Mac上,确保正确的PATH和环境变量可用。
后续步骤
- 添加对表单数据和多部分请求的支持
- 实现OAuth 2.0身份验证流程
- 添加对自定义响应转换的支持
- 创建用于上传OpenAPI规范和生成服务器的web UI
- 添加对WebSocket端点的支持

