Convert any OpenAPI/Swagger spec into an MCP server, instantly exposing your REST API as tools for Claude.
uvx openapi-to-mcp serve ./spec.json --base-url https://api.example.com -a bearer --bearer-token $TOKENNo installation needed — just use uvx:
uvx openapi-to-mcp --helpOr install globally:
uv tool install openapi-to-mcp# See what tools will be generated
uvx openapi-to-mcp list-endpoints ./openapi.json
# Run MCP server
uvx openapi-to-mcp serve ./openapi.json --base-url https://api.example.comSupports all OpenAPI/Swagger security schemes:
# HTTP Basic
uvx openapi-to-mcp serve spec.json -b https://api.example.com \
-a basic -u user -p pass
# Bearer Token
uvx openapi-to-mcp serve spec.json -b https://api.example.com \
-a bearer --bearer-token $TOKEN
# API Key (header, query, or cookie)
uvx openapi-to-mcp serve spec.json -b https://api.example.com \
-a api-key-header --api-key $KEY --api-key-name X-API-Key
# OAuth2 Password (cookie-based login)
uvx openapi-to-mcp serve spec.json -b https://api.example.com \
-a oauth2-password -u user -p pass --login-url /auth/login
# OAuth2 Password (token-based)
uvx openapi-to-mcp serve spec.json -b https://api.example.com \
-a oauth2-password -u user -p pass --token-url /oauth/token
# OAuth2 Client Credentials
uvx openapi-to-mcp serve spec.json -b https://api.example.com \
-a oauth2-client --client-id $ID --client-secret $SECRET --token-url /oauth/tokenAdd to ~/.claude.json or .mcp.json:
{
"mcpServers": {
"my-api": {
"command": "uvx",
"args": [
"openapi-to-mcp",
"serve",
"/path/to/spec.json",
"--base-url", "https://api.example.com",
"--auth-type", "bearer",
"--bearer-token", "your-token"
]
}
}
}Or generate a config:
uvx openapi-to-mcp generate-config ./spec.json \
--base-url https://api.example.com \
--server-name my-api \
-a bearer --bearer-token $TOKENLarge APIs can expose hundreds of tools. Use tag filters:
# Only include specific tags
uvx openapi-to-mcp serve spec.json -b https://api.example.com \
--include-tag Users --include-tag Orders
# Exclude tags
uvx openapi-to-mcp serve spec.json -b https://api.example.com \
--exclude-tag Admin --exclude-tag Internal| Command | Description |
|---|---|
serve |
Run MCP server for an OpenAPI spec |
list-endpoints |
Preview endpoints and generated tool names |
inspect |
Show full tool definitions as JSON |
generate-config |
Generate Claude Code MCP config |
Endpoints are converted to clean tool names:
| Method | Path | Tool Name |
|---|---|---|
| GET | /users | list_users |
| POST | /users | create_user |
| GET | /users/{id} | get_user |
| PATCH | /users/{id} | update_user |
| DELETE | /users/{id} | delete_user |
- Parse — Reads OpenAPI 3.x spec (JSON or YAML, file or URL)
- Generate — Converts each endpoint to an MCP tool with proper input schema
- Authenticate — Handles login flows, stores tokens/cookies
- Serve — Runs stdio MCP server, executes HTTP calls on tool invocation
MIT