使用说明
马大伟
概述
swagger-mcp 是一种读取Swagger 2.0或OpenAPI 3.0规范并在运行时动态生成MCP工具的工具-每个API端点一个工具。任何MCP客户端都可以使用这些工具进行LLM驱动的API交互。
支持的规范格式:
- Swagger 2.0 (
swagger: "2.0")--路径/查询/标头参数和in: body请求机构 - OpenAPI 3.0 (
openapi: "3.0.x")--路径/查询/标头参数和requestBody与内联或$ref模式
从架构中读取必填和可选字段 required 数组,并在生成的工具定义中得到尊重。
📽️ 演示视频
查看演示视频,展示项目的实际情况:
🙌 支持
如果你觉得这个项目很有价值,请支持我 领英 通过:
- 👍 喜欢并分享我们的演示帖子
- 💬 在评论中留下你的想法和反馈
- 🔗 与我联系以获取未来的更新
您在LinkedIn上的支持将帮助我接触到更多的人,并改进项目!
先决条件
使用 swagger-mcp,确保您具有以下依赖关系:
- LLM模型API密钥/本地LLM:需要访问OpenAI、Claude或Ollama模型。
- 任何MCP客户端:(已使用 mark3labs-mcphost)
安装和设置
go install github.com/danishjsheikh/swagger-mcp@latest
运行配置
标准模式(默认)
swagger-mcp --specUrl=https://your_swagger_api_docs.json
SSE模式
swagger-mcp --specUrl=https://your_swagger_api_docs.json --sse --sseAddr=:8080
流式HTTP模式
swagger-mcp --specUrl=https://your_swagger_api_docs.json --http --httpAddr=:8080
所有旗帜
| 标志 | 描述 |
|---|---|
--specUrl |
URL或 file:// Swagger/OpenAPI JSON规范的路径(必需) |
--baseUrl |
覆盖API请求的基本URL |
--sse |
以SSE模式而不是stdio运行 |
--sseAddr |
SSE监听地址, :Port 或 IP:Port |
--sseUrl |
SSE基本URL(自动派生自 --sseAddr 如果省略) |
--sseHeaders |
从SSE转发到API的逗号分隔请求头(例如。 Authorization,X-Tenant) |
--http |
以StreamableHTTP模式而不是stdio运行 |
--httpAddr |
流式HTTP侦听地址, :Port 或 IP:Port |
--httpPath |
StreamableHTTP端点路径(默认 /mcp) |
--httpHeaders |
用逗号分隔的请求头从HTTP转发到API |
--includePaths |
要包含的逗号分隔路径或正则表达式模式 |
--excludePaths |
要排除的逗号分隔路径或正则表达式模式 |
--includeMethods |
包含逗号分隔的HTTP方法(例如。 GET,POST) |
--excludeMethods |
要排除的逗号分隔的HTTP方法 |
--security |
身份验证类型: basic, bearer,或 apiKey |
--basicAuth |
中的基本身份验证凭据 user:password 格式 |
--bearerAuth |
持有者代币 Authorization 头球 |
--apiKeyAuth |
API密钥: passAs:name=value — passAs 是 header, query,或 cookie;多个条目逗号分隔(例如。 header:token=abc,query:user=foo) |
--headers |
每个请求都有额外的静态标头, name1=value1,name2=value2 |
Xquik OpenAPI示例
Xquik为其X/Twitter自动化API发布了一个远程OpenAPI文档。
因为它使用API密钥头,所以使用 --security=apiKey 和
--apiKeyAuth:
export XQUIK_API_KEY="your-xquik-api-key"
swagger-mcp \
--specUrl=https://xquik.com/openapi.json \
--baseUrl=https://xquik.com \
--security=apiKey \
--apiKeyAuth=header:x-api-key=$XQUIK_API_KEY
MCP客户端配置中可以使用相同的参数:
{
"mcpServers": {
"xquik": {
"command": "swagger-mcp",
"args": [
"--specUrl=https://xquik.com/openapi.json",
"--baseUrl=https://xquik.com",
"--security=apiKey",
"--apiKeyAuth=header:x-api-key=<XQUIK_API_KEY>"
]
}
}
}
MCP配置
与整合 mcphost,包括以下配置 .mcp.json:
{
"mcpServers": {
"swagger_loader": {
"command": "swagger-mcp",
"args": ["--specUrl=<swagger/doc.json_url>"]
}
}
}
使用承载身份验证和路径过滤:
{
"mcpServers": {
"swagger_loader": {
"command": "swagger-mcp",
"args": [
"--specUrl=https://api.example.com/openapi.json",
"--security=bearer",
"--bearerAuth=your-token-here",
"--includeMethods=GET,POST"
]
}
}
}
请求身体支持
Swagger 2.0和OpenAPI 3.0都支持请求体:
- Swagger 2.0:
parameters与in: body和一个$ref或内联模式definitions - OpenAPI 3.0:
requestBody.content.<media-type>.schema--已解决components/schemas如果A$ref,如果是对象架构,则内联使用
架构中列出的字段 required 阵列在MCP工具中按要求标记。所有其他字段都是可选的,如果没有提供,则从请求中省略。
演示流程
-
一些后端:
go install github.com/danishjsheikh/go-backend-demo@latest go-backend-demo -
Ollama
ollama run llama3.2 -
MCP客户端
go install github.com/mark3labs/mcphost@latest mcphost -m ollama:llama3.2 --config <.mcp.json_file_path>
流程图
🛠️ 需要帮助
我正在处理 改进工具定义 增强:
✅ 更好的错误处理 以获得更准确的响应
✅ LLM行为控制 以确保其依赖 仅针对API响应 并且不使用自己的内存
✅ 预防幻觉 和 随机数据生成 通过从API强制执行严格的数据检索
如果您对改进这些方面有见解或建议,请通过以下方式做出贡献:
- 分享您的经验 具有类似的实现
- 建议修改 工具定义
- 提供反馈 关于当前的局限性
您的意见对于使此工具更加可靠和有效将是无价的! 🚀