Convert any API documentation into an MCP server in minutes.
Point it at API docs, and it scrapes, generates an OpenAPI spec, creates a fully functional MCP server you can chat with, and installs it to Cursor or Claude Desktop.
pip install apitomcpOr with uv:
uv pip install apitomcp# Install
pip install apitomcp
# First-time setup (configure your LLM provider)
apitomcp init
# Generate an MCP server from any API docs
apitomcp generateRestart Cursor/ Claude Desktop and start chatting with your API.
- Scrapes API documentation (handles multi-page docs, finds all endpoints)
- Generates OpenAPI 3.1 specs using LLMs (parallel processing for speed)
- Detects authentication requirements (OAuth2, Bearer tokens, API keys)
- Creates MCP servers that Cursor can use as tools
- Handles OAuth2 token refresh automatically
- Multi-page scraping - Crawls linked pages to find all API endpoints
- Parallel LLM processing - Generates specs for many endpoints simultaneously
- Smart auth detection - Analyzes docs to detect OAuth2, Bearer, or API key auth
- OAuth2 token refresh - Automatically refreshes expired tokens
- Interactive CLI - Clean prompts for configuration
- Multiple LLM providers - OpenRouter, Anthropic, OpenAI, Gemini
| Command | Description |
|---|---|
apitomcp init |
First-time setup - configure LLM provider and API key |
apitomcp generate |
Generate an MCP server from API documentation |
apitomcp list |
Show all generated servers |
apitomcp install |
Install servers to Cursor or Claude Desktop |
apitomcp delete |
Remove a generated server |
apitomcp auth |
Update LLM settings |
apitomcp output |
Export server files to current directory |
apitomcp run <name> |
Run a server (typically used by Cursor or Claude Desktop, not manually) |
$ apitomcp generate
# Enter: https://developer.themoviedb.org/docs/
# Enter your API Read Access Token from https://www.themoviedb.org/settings/apiThen chat with your API in Cursor:
API Docs URL
│
▼
┌─────────────┐
│ Scraper │ BeautifulSoup + MarkItDown
│ (multi-page)│ Extracts endpoints & auth info
└─────────────┘
│
▼
┌─────────────┐
│ Generator │ LLM generates OpenAPI specs
│ (parallel) │ for each endpoint
└─────────────┘
│
▼
┌─────────────┐
│ Validator │ Validates against OpenAPI 3.1
│ │ Auto-retries on errors
└─────────────┘
│
▼
┌─────────────┐
│ Runner │ FastMCP creates tools from spec
│ │ Handles auth & token refresh
└─────────────┘
- OpenRouter
- Anthropic
- OpenAI
- Gemini
- Python 3.10-3.13
- API key for one of the supported LLM providers
Config is stored in ~/.apitomcp/:
config.json- LLM provider settingsservers/<name>/- Generated server files
This is a work in progress. The LLM-based operation extraction and auth detection aren't perfect—some APIs may need manual tweaking of the generated spec. If you run into issues or have improvements, Issues/ PRs are welcome!
Contributions are welcome! If you find a bug or have a feature request, please open an issue. Pull requests are also appreciated—I'll review them as time allows.
Built by @andrew_masek_
MIT


