🚀 将任何 OpenAPI JSON 规范转换为完整的 C# MCP(模型上下文协议)服务器!
此工具自动生成完整的 C# MCP 服务器应用程序,其中每个 OpenAPI 端点都成为 MCP 工具,使 REST API 即刻可供 AI 代理和兼容 MCP 的客户端访问。
# 克隆或下载此生成器
git clone <repository-url>
cd OpenApiToMcpGenerator
# 构建生成器
dotnet build
# 从 OpenAPI 规范生成 MCP 服务器
dotnet run -- --openapi petstore.json --output ./Generated-PetStore-Server --name PetStoreMMcpServer
# 运行生成的服务器
cd Generated-PetStore-Server
dotnet run
dotnet run -- [选项]
选项:
--openapi, -o OpenAPI JSON 文件路径或 URL(必需)
示例:
• ./petstore.json
• https://petstore3.swagger.io/api/v3/openapi.json
• https://localhost:56733/swagger/v1/swagger.json
--output, -out 生成的 MCP 服务器输出目录(必需)
--name, -n 生成项目的名称(默认:GeneratedMcpServer)
--base-url, -b API 的基础 URL(覆盖 OpenAPI 服务器 URL)
--namespace, -ns 生成代码的根命名空间(默认:GeneratedMcpServer)
--verbose, -v 启用详细输出
--help 显示帮助信息
# 直接从 URL 生成 - 不需要先下载!
dotnet run -- --openapi https://petstore3.swagger.io/api/v3/openapi.json --output ./PetStore-MCP --name PetStoreMcpServer --base-url https://petstore3.swagger.io/api/v3
# 测试生成的服务器
cd PetStore-MCP
dotnet run
# 从你的本地 API 的 swagger 端点生成
dotnet run -- --openapi https://localhost:56733/swagger/v1/swagger.json --output ./MyApi-MCP --name MyApiMcpServer --base-url https://localhost:56733
# 或从本地文件生成
dotnet run -- --openapi ./my-api-spec.json --output ./MyApi-MCP --name MyApiMcpServer
{
"mcpServers": {
"petstore": {
"command": "dotnet",
"args": ["run", "--project", "./PetStore-MCP", "--no-build"],
"cwd": "./PetStore-MCP"
}
}
}
Generated-MCP-Server/
├── 📄 Program.cs # MCP 服务器入口点(与参考相同)
├── 📄 ProjectName.csproj # 包含 MCP 依赖项的项目文件
├── 📄 ApiTools.cs # 从 OpenAPI 端点生成的 MCP 工具
├── 📄 README.md # 生成的文档
└── 📄 test-mcp.bat # 测试脚本
OpenAPI:
{
"paths": {
"/users/{id}": {
"get": {
"operationId": "getUserById",
"summary": "通过 ID 获取用户",
"parameters": [
{"name": "id", "in": "path", "required": true, "schema": {"type": "string"}}
]
}
}
}
}
生成的 MCP 工具:
[McpServerTool, Description("通过 ID 获取用户")]
public static async Task<string> GetUserById(
[Description("要检索的用户 ID")] 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<object>(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 });
}
}
/users/{id})?limit=10&offset=0)生成器由几个关键组件组成:
# 测试工具列表
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | dotnet run
# 测试特定工具
echo '{"jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": {"name": "GetUsers", "arguments": {}}}' | dotnet run
# Windows
test-mcp.bat
# 脚本测试基本功能和工具调用
生成的服务器与支持通过标准输入/输出进行 JSON-RPC 的任何 MCP 客户端兼容:
查看 examples/ 目录中的样本 OpenAPI 规范及其生成的 MCP 服务器:
欢迎贡献!请随时提交问题、功能请求或拉取请求。
该项目在 MIT 许可证 下提供。
利用 MCP 的力量将您的 REST API 转变为可供 AI 访问的工具!🚀