About swagger-mcp
swagger-mcp is an MCP server that reads a Swagger 2.0 or OpenAPI 3.0 specification and generates one MCP tool per API endpoint at runtime. It is intended for developers who want an LLM to call REST APIs through any MCP client. Required fields from the schema are reflected in the generated tool definitions.
Key features
- 01Reads Swagger 2.0 and OpenAPI 3.0 specifications
- 02Generates tools per endpoint at runtime
- 03Supports stdio, SSE and StreamableHTTP modes
- 04Filters endpoints by path and HTTP method
- 05Supports basic, bearer and apiKey authentication
Use cases
- 01Letting an LLM call an existing REST API through an MCP client
- 02Generating tools from a remote OpenAPI document
- 03Restricting which endpoints are exposed to the LLM by path or method
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEswagger-mcp
Overview
swagger-mcp is a tool that reads a Swagger 2.0 or OpenAPI 3.0 specification and dynamically generates MCP tools at runtime — one tool per API endpoint. These tools can be used by any MCP client for LLM-driven API interaction.
Supported spec formats:
- Swagger 2.0 (
swagger: "2.0") — path/query/header parameters andin: bodyrequest bodies - OpenAPI 3.0 (
openapi: "3.0.x") — path/query/header parameters andrequestBodywith inline or$refschemas
Required and optional fields are read from the schema's required array and honoured in the generated tool definitions.
📽️ 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 updates
Your support on LinkedIn will help me reach more people and improve the project!
Prerequisites
To use swagger-mcp, ensure you have the following dependencies:
- LLM Model API Key / Local LLM: Requires access to OpenAI, Claude, or Ollama models.
- Any MCP Client: (Used mark3labs - mcphost)
Installation and Setup
go install github.com/danishjsheikh/swagger-mcp@latest
Run Configuration
Stdio mode (default)
swagger-mcp --specUrl=https://your_swagger_api_docs.json
SSE mode
swagger-mcp --specUrl=https://your_swagger_api_docs.json --sse --sseAddr=:8080
StreamableHTTP mode
swagger-mcp --specUrl=https://your_swagger_api_docs.json --http --httpAddr=:8080
All flags
| Flag | Description |
|---|---|
--specUrl | URL or file:// path of the Swagger/OpenAPI JSON spec (required) |
--baseUrl | Override the base URL for API requests |
--sse | Run in SSE mode instead of stdio |
--sseAddr | SSE listen address, :Port or IP:Port |
--sseUrl | SSE base URL (auto-derived from --sseAddr if omitted) |
--sseHeaders | Comma-separated request headers to forward from SSE to API (e.g. Authorization,X-Tenant) |
--http | Run in StreamableHTTP mode instead of stdio |
--httpAddr | StreamableHTTP listen address, :Port or IP:Port |
--httpPath | StreamableHTTP endpoint path (default /mcp) |
--httpHeaders | Comma-separated request headers to forward from HTTP to API |
--includePaths | Comma-separated paths or regex patterns to include |
--excludePaths | Comma-separated paths or regex patterns to exclude |
--includeMethods | Comma-separated HTTP methods to include (e.g. GET,POST) |
--excludeMethods | Comma-separated HTTP methods to exclude |
--security | Auth type: basic, bearer, or apiKey |
--basicAuth | Basic auth credentials in user:password format |
--bearerAuth | Bearer token for the Authorization header |
--apiKeyAuth | API key(s): passAs:name=value — passAs is header, query, or cookie; multiple entries comma-separated (e.g. header:token=abc,query:user=foo) |
--headers | Additional static headers for every request, name1=value1,name2=value2 |
Xquik OpenAPI Example
Xquik publishes a remote OpenAPI document for its X/Twitter automation API.
Because it uses an API key header, pass the key with --security=apiKey and
--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
The same arguments can be used in an MCP client config:
{
"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 Configuration
To integrate with mcphost, include the following configuration in .mcp.json:
{
"mcpServers": {
"swagger_loader": {
"command": "swagger-mcp",
"args": ["--specUrl=<swagger/doc.json_url>"]
}
}
}
With bearer auth and path filtering:
{
"mcpServers": {
"swagger_loader": {
"command": "swagger-mcp",
"args": [
"--specUrl=https://api.example.com/openapi.json",
"--security=bearer",
"--bearerAuth=your-token-here",
"--includeMethods=GET,POST"
]
}
}
}
Request Body Support
Both Swagger 2.0 and OpenAPI 3.0 request bodies are supported:
- Swagger 2.0:
parameterswithin: bodyand a$refor inline schema underdefinitions - OpenAPI 3.0:
requestBody.content.<media-type>.schema— resolved fromcomponents/schemasif a$ref, or used inline if an object schema
Fields listed in the schema's required array are marked as required in the MCP tool. All other fields are optional and are omitted from the request if not provided.
Demo Flow
-
Some Backend:
go install github.com/danishjsheikh/go-backend-demo@latest go-backend-demo -
Ollama
ollama run llama3.2 -
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 APIs
If 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! 🚀
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.