saurav61091/mcp-openapi
Turn any OpenAPI 3.x spec into MCP tools for Claude — zero config, instant API access
Platform-specific configuration:
{
"mcpServers": {
"mcp-openapi": {
"command": "npx",
"args": [
"-y",
"mcp-openapi"
]
}
}
}Add the config above to .claude/settings.json under the mcpServers key.
[](https://www.npmjs.com/package/mcp-openapi-runner) [](https://github.com/saurav61091/mcp-openapi/actions/workflows/ci.yml) [](https://opensource.org/licenses/MIT) [](https://nodejs.org) [](https://modelcontextprotocol.io)
> Turn any OpenAPI spec into MCP tools for Claude — zero config, instant API access.
Point mcp-openapi-runner at any OpenAPI 3.x spec and Claude can call every endpoint through natural language. No custom integration code. No manual tool definitions. One line of config.
| Without mcp-openapi | With mcp-openapi | |---|---| | Write custom MCP server per API | One config line per API | | Define tool schemas manually | Auto-generated from OpenAPI spec | | Handle auth, params, body yourself | Built-in auth + parameter handling | | Maintain code as API evolves | Spec changes = tools update automatically |
Add to your Claude Desktop / Claude Code / Cursor / Cline MCP config:
{
"mcpServers": {
"petstore": {
"command": "npx",
"args": ["-y", "mcp-openapi-runner", "--spec", "https://petstore3.swagger.io/api/v3/openapi.json"]
}
}
}That's it. Claude can now discover and call every endpoint in that API.
> You: What pets are available? Add a new dog named Buddy. > > Claude: Let me check what's available. > *[calls list_endpoints → discovers findPetsByStatus, addPet, ...]* > *[calls call_endpoint → findPetsByStatus with status=available]* > > There are 3 pets currently available. Now I'll add Buddy... > *[calls call_endpoint → addPet with `{"name":"Buddy",
Loading reviews...