OpenAPI到MCP服务器生成器
🚀 表情符号“🚀”通常代表火箭、快速前进或加速的意思。在中文中,它可以直接用作表情符号,不需要翻译成具体的文字,但如果要描述其含义,可以说“🚀”代表火箭或快速前进。 将任何OpenAPI JSON规范转换为功能齐全的C# MCP(模型上下文协议)服务器!
这个工具能够自动生成完整的C# MCP服务器应用程序,其中每个OpenAPI端点都成为一个MCP工具,使得REST API能够立即被AI代理和MCP兼容的客户端访问。
✨ 特点
- 🔄 翻译成中文是:循环、重复。 自动转换将OpenAPI 3.0+规范转换为MCP服务器
- 🛠️(工具或修理的象征) 完整项目生成创建可运行的C#项目
- 📡(天线/卫星天线) MCP 兼容生成的服务器与Cursor IDE、VS Code、Claude Desktop兼容使用
- 🎯(目标、靶心) 智能命名从终端节点和操作ID中智能命名工具
- 🔧(扳手,常用于表示修理或工具相关的情境) 类型映射将OpenAPI类型转换为适当的C#类型
- 📚 书籍或书本的符号,可直接译为“书”或根据上下文译为“书籍”、“书本”等。 文档自动生成的README文件和使用示例
- 🧪 表示“实验瓶”或“化学实验”的符号。 测试包含用于验证的测试脚本
🚀 快速入门
先决条件
- .NET 9.0 SDK 或之后
- OpenAPI 3.0+ JSON 规范文件
安装与使用
# Clone or download this generator
git clone
cd OpenApiToMcpGenerator
# Build the generator
dotnet build
# Generate MCP server from OpenAPI spec
dotnet run -- --openapi petstore.json --output ./Generated-PetStore-Server --name PetStoreMcpServer
# Run the generated server
cd Generated-PetStore-Server
dotnet run📋 命令行选项
dotnet run -- [options]
Options:
--openapi, -o Path to OpenAPI JSON file or URL (required)
Examples:
• ./petstore.json
• https://petstore3.swagger.io/api/v3/openapi.json
• https://localhost:56733/swagger/v1/swagger.json
--output, -out Output directory for generated MCP server (required)
--name, -n Name for the generated project (default: GeneratedMcpServer)
--base-url, -b Base URL for the API (overrides OpenAPI server URLs)
--namespace, -ns Root namespace for generated code (default: GeneratedMcpServer)
--verbose, -v Enable verbose output
--help Show help information🎯 示例用法
从Swagger Petstore(URL)生成
# Generate directly from URL - no need to download first!
dotnet run -- --openapi https://petstore3.swagger.io/api/v3/openapi.json --output ./PetStore-MCP --name PetStoreMcpServer --base-url https://petstore3.swagger.io/api/v3
# Test the generated server
cd PetStore-MCP
dotnet run从本地开发服务器生成
# Generate from your local API's swagger endpoint
dotnet run -- --openapi https://localhost:56733/swagger/v1/swagger.json --output ./MyApi-MCP --name MyApiMcpServer --base-url https://localhost:56733
# Or from a local file
dotnet run -- --openapi ./my-api-spec.json --output ./MyApi-MCP --name MyApiMcpServer与Cursor IDE的集成
{
"mcpServers": {
"petstore": {
"command": "dotnet",
"args": ["run", "--project", "./PetStore-MCP", "--no-build"],
"cwd": "./PetStore-MCP"
}
}
}🏗️ 生成的项目结构
Generated-MCP-Server/
├── 📄 Program.cs # MCP server entry point (identical to reference)
├── 📄 ProjectName.csproj # Project file with MCP dependencies
├── 📄 ApiTools.cs # Generated MCP tools from OpenAPI endpoints
├── 📄 README.md # Generated documentation
└── 📄 test-mcp.bat # Testing script🔄 转换示例
OpenAPI 端点 → MCP 工具
开放API:
{
"paths": {
"/users/{id}": {
"get": {
"operationId": "getUserById",
"summary": "Get user by ID",
"parameters": [
{"name": "id", "in": "path", "required": true, "schema": {"type": "string"}}
]
}
}
}
}生成的MCP工具:
[McpServerTool, Description("Get user by ID")]
public static async Task GetUserById(
[Description("The user ID to retrieve")] string id)
{
try
{
using var client = new HttpClient();
var url = $"{BaseUrl}/users/{id}";
var response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
var responseContent = await response.Content.ReadAsStringAsync();
return JsonSerializer.Serialize(new
{
success = true,
data = JsonSerializer.Deserialize(responseContent),
method = "GET",
url = url
}, new JsonSerializerOptions { WriteIndented = true });
}
catch (Exception ex)
{
return JsonSerializer.Serialize(new
{
success = false,
error = ex.Message,
method = "GET",
endpoint = "/users/{id}"
}, new JsonSerializerOptions { WriteIndented = true });
}
}🎯 支持的功能
✅ HTTP 方法
- GET、POST、PUT、PATCH、DELETE
- 自定义HTTP方法
✅ 参数
- 路径参数(
/users/{id}) - 查询参数(
?limit=10&offset=0) - 请求体(JSON、表单数据等)
- 头部参数
✅ OpenAPI 功能
- 工具命名的操作ID
- 参数描述
- 请求/响应模式
- 多种内容类型
- 服务器URL
✅ 生成的代码特性
- 异步/等待模式
- 适当的错误处理
- JSON序列化
- 类型安全的参数处理
- 全面的文件记录
🔧 架构
该发电机由几个关键部件组成:
- OpenApiParser 翻译为中文是“OpenAPI解析器”解析OpenAPI规范并提取端点信息
- 代码生成器从端点生成C# MCP工具方法
- 项目生成器创建完整的项目结构
- 名称生成器工具和参数的智能命名
- TypeMapper(类型映射器)将OpenAPI类型映射到C#类型
🧪 测试生成的服务器
手动测试
# Test tools list
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | dotnet run
# Test specific tool
echo '{"jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": {"name": "GetUsers", "arguments": {}}}' | dotnet run使用测试脚本
# Windows
test-mcp.bat
# The script tests basic functionality and tool calls🎯 兼容MCP客户端
生成的服务器可以与任何支持通过stdin/stdout进行JSON-RPC的MCP客户端协同工作:
- ✅ Cursor 集成开发环境(IDE) (原生MCP支持)
- ✅ VS Code(Visual Studio Code) (带有MCP扩展)
- ✅(对号,表示正确、确认或同意) Claude Desktop(可译为“Claude桌面版”或根据具体语境简化为“Claude桌面”) (含配置)
- ✅ 自定义MCP客户端
📚 示例
查看 examples/ 包含示例OpenAPI规范及其生成的MCP服务器的目录:
- 宠物商店API → 宠物管理工具
- JSONPlaceholder(可译为“JSON虚拟数据占位符”或根据具体语境简化为“JSON模拟数据服务”) → 博客文章和用户管理
- GitHub API → 仓库和问题管理
🤝 贡献(或“参与贡献”)
欢迎贡献!请随时提交问题、功能请求或拉取请求。
📄 许可证
这个项目在以下条件下可用 麻省理工学院许可证(MIT License)。
🔗 参考文献
______________________________________________________________________
利用MCP的强大功能,将您的REST API转变为AI可访问的工具! 🚀
