swagger-mcp
About
mcp server which will dynamically define tools based on swagger
Details
- License
- MIT license
Explore
- Dynamically generates MCP tools from any Swagger/OpenAPI JSON spec.
- Supports stdio and SSE transport modes.
- Offers authentication: basic, API key, and bearer token.
- Allows base URL override for API requests.
- Easy integration with MCP clients like mcphost.
To use swagger-mcp, ensure you have the following dependencies:
1. LLM Model API Key / Local LLM: Requires access to OpenAI, Claude, or Ollama models.
2. Any MCP Client: (Used mark3labs - mcphost)
Follow these steps to install and run swagger-mcp:
go install github.com/hauntingsteps/swagger-mcp@latest
swagger-mcp
To run swagger-mcp directly, use:
swagger-mcp --specUrl=https://your_swagger_api_docs.json
Main flags:
-
--specUrl: Swagger/OpenAPI JSON URL (required)-
--sseMode: Run in SSE mode (default: false, if true runs as SSE server, otherwise uses stdio)-
--sseAddr: SSE server listen address in IP:Port or :Port format (if empty, will use IP:Port from --sseUrl)-
--sseUrl: SSE server base URL (if empty, will use sseAddr to generate, e.g. http://IP:Port or http://localhost:Port)- If both --sseAddr and --sseUrl are set, they are used as-is without auto-complement.
-
--baseUrl: Override base URL for API requests-
--security: API security type (basic, apiKey, or bearer)-
--basicAuth: Basic auth in user:password format-
--bearerAuth: Bearer token for Authorization header-
--apiKeyAuth: API key(s), format passAs:name=value (e.g. header:token=abc,query:user=foo,cookie:sid=xxx)- See main.go for all supported flags and options.
To integrate with mcphost, include the following configuration in .mcp.json:
{
"mcpServers":
{
"swagger_loader": {
"command": "swagger-mcp",
"args": ["--specUrl=<swagger/doc.json_url>"]
}
}
}
Overview
swagger-mcp is a tool designed to scrape Swagger UI by extracting the swagger.json file and dynamically generating well-defined mcp tools at runtime. These tools can be utilized by the MCP client for further tool selection.
📽️ Demo Video
Check out demo video showcasing the project in action:🙌 Support
If you find this project valuable, please support me on LinkedIn by: - 👍 Liking and sharing our demo post - 💬 Leaving your thoughts and feedback in the comments - 🔗 Connecting with me for future updatesYour support on LinkedIn will help me reach more people and improve the project!
Prerequisites
To useswagger-mcp, ensure you have the following dependencies:
1. LLM Model API Key / Local LLM: Requires access to OpenAI, Claude, or Ollama models.
2. Any MCP Client: (Used mark3labs - mcphost)
Installation and Setup
Follow these steps to install and runswagger-mcp:
go install github.com/hauntingsteps/swagger-mcp@latest
swagger-mcp
Run Configuration
To runswagger-mcp directly, use:
swagger-mcp --specUrl=https://your_swagger_api_docs.json
Main flags:
- --specUrl: Swagger/OpenAPI JSON URL (required)
- --sseMode: Run in SSE mode (default: false, if true runs as SSE server, otherwise uses stdio)
- --sseAddr: SSE server listen address in IP:Port or :Port format (if empty, will use IP:Port from --sseUrl)
- --sseUrl: SSE server base URL (if empty, will use sseAddr to generate, e.g. http://IP:Port or http://localhost:Port)
- If both --sseAddr and --sseUrl are set, they are used as-is without auto-complement.
- --baseUrl: Override base URL for API requests
- --security: API security type (basic, apiKey, or bearer)
- --basicAuth: Basic auth in user:password format
- --bearerAuth: Bearer token for Authorization header
- --apiKeyAuth: API key(s), format passAs:name=value (e.g. header:token=abc,query:user=foo,cookie:sid=xxx)
- See main.go for all supported flags and options.
MCP Configuration
To integrate withmcphost, include the following configuration in .mcp.json:
{
"mcpServers":
{
"swagger_loader": {
"command": "swagger-mcp",
"args": ["--specUrl=<swagger/doc.json_url>"]
}
}
}
Demo Flow
1. Some Backend: go install github.com/danishjsheikh/go-backend-demo@latest
go-backend-demo
2. Ollama
ollama run llama3.2
3. MCP Client
go install github.com/mark3labs/mcphost@latest
mcphost -m ollama:llama3.2 --config <.mcp.json_file_path>
Flow Diagram
🛠️ Need Help
I am working on improving tool definitions to enhance: ✅ Better error handling for more accurate responses ✅ LLM behavior control to ensure it relies only on API responses and does not use its own memory ✅ Preventing hallucinations and random data generation by enforcing strict data retrieval from APIsIf you have insights or suggestions on improving these aspects, please contribute by:
- Sharing your experience with similar implementations
- Suggesting modifications to tool definitions
- Providing feedback on current limitations
Your input will be invaluable in making this tool more reliable and effective! 🚀
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



