Turn any API into an MCP server. Takes an OpenAPI spec and serves it as a fully functional Model Context Protocol server — single binary, zero config.
go install github.com/dhruvgupta/mcpgen/cmd/mcpgen@latestOr build from source:
git clone https://github.com/dhruvgupta/mcpgen.git
cd mcpgen
make buildmcpgen serve --openapi ./petstore.yaml# Static auth token
mcpgen serve --openapi ./api.json --auth "Bearer sk-xxx"
# Auth from environment variable
mcpgen serve --openapi ./api.json --auth-env API_KEY
# Custom header name
mcpgen serve --openapi ./api.json --auth-env API_KEY --auth-header "X-API-Key"mcpgen serve --openapi ./api.json --transport sse --port 3100# Only include specific paths
mcpgen serve --openapi ./api.json --pick "/users,/orders"
# Exclude paths
mcpgen serve --openapi ./api.json --exclude "/admin,/internal"
# Only specific HTTP methods
mcpgen serve --openapi ./api.json --methods "GET,POST"mcpgen list --openapi ./petstore.yamlmcpgen serve --curl 'curl -X POST https://api.example.com/data -H "Authorization: Bearer token" -d "{\"key\":\"value\"}'mcpgen init my-server --from-openapi ./api.jsonAdd to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"myapi": {
"command": "mcpgen",
"args": ["serve", "--openapi", "./spec.json", "--auth-env", "API_KEY"]
}
}
}- Parses your OpenAPI 3.x spec (JSON or YAML, local file or URL)
- Converts each endpoint into an MCP tool (
{method}_{path}) - Serves tools over MCP stdio or SSE transport
- When a tool is called, makes the actual HTTP request to the API and returns the response
Each API endpoint becomes an MCP tool named {method}_{path_segments}:
| Endpoint | Tool Name |
|---|---|
GET /v1/users |
get_v1_users |
POST /v1/users |
post_v1_users |
GET /v1/users/{id} |
get_v1_users_id |
DELETE /v1/users/{id}/posts |
delete_v1_users_id_posts |
MIT