使用说明
OpenAPI规范到MCP生成器
一个将openapi v3规范作为mcp服务器提供api服务的实用程序。该实用程序的目标是保持对API实现的厌恶,并完全依赖openapiv3规范来构建MCP服务器。
运行应用程序
为您的API运行它
确保你有 去 安装后运行命令,如下所示:
go run github.com/deyarchit/openapi-mcp-generator/cmd/mcp-server-cli@latest --spec-file=<open_api_spec_json>
将配置添加到mcp配置文件中 ~/.mcp_config:
{
"mcpServers": {
"demo-server": {
"command": "go",
"args": [
"run",
"github.com/deyarchit/openapi-mcp-generator/cmd/mcp-server-cli@latest",
"--spec-file=<open_api_spec_json>"
]
}
}
}
▶ npx @modelcontextprotocol/inspector --config ~/.mcp_config --server <config_dict_name>
Starting MCP inspector...
⚙️ Proxy server listening on localhost:6277
.
.
.
🌐 Opening browser...
New STDIO connection request
.
.
.
STDIO transport: command=/opt/homebrew/opt/go@1.23/bin/go, args=run,github.com/deyarchit/openapi-mcp-generator/cmd/mcp-server-cli@latest,--spec-file=<open_api_spec_json>
Created server transport
Created client transport
Received POST message for sessionId 4c899e13-8c00-4b38-9e8e-62b4933ad87b
Received POST message for sessionId 4c899e13-8c00-4b38-9e8e-62b4933ad87b
Received POST message for sessionId 4c899e13-8c00-4b38-9e8e-62b4933ad87b
Received POST message for sessionId 4c899e13-8c00-4b38-9e8e-62b4933ad87b
Received POST message for sessionId 4c899e13-8c00-4b38-9e8e-62b4933ad87b
Received POST message for sessionId 4c899e13-8c00-4b38-9e8e-62b4933ad87b
Received POST message for sessionId 4c899e13-8c00-4b38-9e8e-62b4933ad87b
Received POST message for sessionId 4c899e13-8c00-4b38-9e8e-62b4933ad87b
Received POST message for sessionId 4c899e13-8c00-4b38-9e8e-62b4933ad87b
运行示例
克隆仓库并导航到 example/python-fastapi-app,跑 uv run fastapi dev:
- 这将运行一个简单的问候API
http://127.0.0.1:8000 - 在端点上提供OpenAPI规范v3
http://127.0.0.1:8000/openapi.json
规范看起来像这样:
{"openapi":"3.1.0","info":{"title":"Greeting API","description":"A simple API to greet users by name.","version":"1.0.0"},"paths":{"/greet/{name}":{"get":{"tags":["Greetings"],"summary":"Greet a user by their name","description":"This endpoint accepts a name as a path parameter and returns a personalized greeting message.","operationId":"greet_user_greet__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Greeting"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"Greeting":{"properties":{"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"Greeting"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}
文档端点 http://127.0.0.1:8000/docs 看起来像这样:
现在,运行mcp检查器,如下所示:
▶ npx @modelcontextprotocol/inspector go run github.com/deyarchit/openapi-mcp-generator/cmd/mcp-server-cli@latest --spec-url="http://127.0.0.1:8000/openapi.json"
Starting MCP inspector...
.
.
.
🌐 Opening browser...
New STDIO connection request
Query parameters: {"command":"go","args":"run github.com/deyarchit/openapi-mcp-generator/cmd/mcp-server-cli@latest --spec-url=http://127.0.0.1:8000/openapi.json",...,"transportType":"stdio"}
STDIO transport: command=/opt/homebrew/opt/go@1.23/bin/go, args=run,github.com/deyarchit/openapi-mcp-generator/cmd/mcp-server-cli@latest,--spec-url=http://127.0.0.1:8000/openapi.json
Created server transport
Created client transport
Received POST message for sessionId ca89382a-02bc-48a0-b43d-367b56618af6
Received POST message for sessionId ca89382a-02bc-48a0-b43d-367b56618af6
Received POST message for sessionId ca89382a-02bc-48a0-b43d-367b56618af6
转到MCP url并测试api:
如果你已经有了现有的mcp服务器配置,那么你可以将其添加到配置文件中:
{
"mcpServers": {
"hello-world-server": {
"command": "go",
"args": [
"run",
"github.com/deyarchit/openapi-mcp-generator/cmd/mcp-server-cli@latest",
"--spec-url=http://127.0.0.1:8000/openapi.json"
]
}
}
}
然后,您可以这样运行mcp检查器: npx @modelcontextprotocol/inspector --config ~/.mcp_config --server hello-world-server
建议
- 暴露的API:注意暴露于LLM的API端点的数量,适当评估哪些端点应暴露于LLM。
- API文档:将LLMs视为团队中的新成员,他们没有您在构建和使用API时可能获得的任何部落知识。因此,为了提高API使用的有效性,请彻底记录API,包括参数。这有助于减少API调用错误。
在制品
- []支持API过滤(选择性地为特定路径提供服务)
- []支持API身份验证
