MCP server for the Monzo banking API with OAuth, local transaction cache, and spending analysis
- ✓Open-source license (GPL-3.0)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
claude mcp add monzo-mcp -- python -m -e{
"mcpServers": {
"monzo-mcp": {
"command": "python",
"args": ["-m", "-e"]
}
}
}MCP Servers overview
# monzo-mcp [](https://github.com/partymola/monzo-mcp/actions/workflows/ci.yml) [](https://www.gnu.org/licenses/gpl-3.0) [](https://www.python.org/downloads/) [](https://glama.ai/mcp/servers/partymola/monzo-mcp) MCP server for the [Monzo](https://monzo.com) banking API. Read-only access to accounts, balances, pots, transactions, and spending analysis - all through Claude Code or any MCP client. Unlike other Monzo MCP implementations that use raw bearer tokens (which expire in 6 hours), this server handles **full OAuth with automatic token refresh**. ## Features - **7 read-only tools** - no write operations, no money movement - **OAuth with auto-refresh** - tokens refresh automatically, no manual regeneration - **Local transaction cache** - SQLite database survives Monzo's 90-day SCA window - **Auto-sync on demand** - the cache-reading tools run an incremental sync automatically if the cache wasn't synced today, so you rarely need to call `monzo_sync` by hand - **Spending analysis** - category breakdowns, top merchants, month-over-month comparison - **Transaction search** - search by merchant, payee (counterparty), description, or notes across cached history - **Counterparty details** - bank transfers (faster payments, p2p, Bacs) are cached with the payee's name, sort code, and account number ## Tools | Tool | Description | Data source | |------|-------------|-------------| | `monzo_list_accounts` | List accounts with types and IDs | Live API | | `monzo_get_balance` | Current balance and spend today | Live API | | `monzo_list_pots` | Savings pots and balances | Live API | | `monzo_sync` | Sync transactions to local cache | Live API -> SQLite | | `monzo_list_transactions` | List/filter cached transactions | Local cache (auto-syncs if stale) | | `monzo_search_transactions` | Search by merchant/payee/description/notes | Local cache (auto-syncs if stale) | | `monzo_spending` | Spending analysis with category breakdown | Local cache (auto-syncs if stale) | ## Prerequisites - Python 3.13+ - [uv](https://docs.astral.sh/uv/) (recommended) or pip - A Monzo account with an OAuth client registered at [developers.monzo.com](https://developers.monzo.com) ## Installation ```bash git clone https://github.com/partymola/monzo-mcp.git cd monzo-mcp uv venv --python 3.13 .venv uv pip install -e . ``` ## Setup ### 1. Register a Monzo OAuth client Go to [developers.monzo.com](https://developers.monzo.com) and create an OAuth client: - Set the redirect URL to `http://localhost:6600/callback` - Note your **Client ID** and **Client Secret** ### 2. Authenticate ```bash monzo-mcp auth ``` This opens your browser for Monzo OAuth. After authorizing, approve the login in your **Monzo app** within 5 minutes for full transaction history access (Monzo's SCA window). ### 3. Register with Claude Code ```bash claude mcp add -s user monzo -- /path/to/monzo-mcp/.venv/bin/monzo-mcp ``` ### 4. First sync In Claude Code, run `monzo_sync` to populate the local transaction cache. Do this immediately after auth to take advantage of the SCA window (up to 11 months of history). ## CLI ``` monzo-mcp Start the MCP server (stdio transport) monzo-mcp auth Interactive OAuth setup (opens the browser) monzo-mcp --version Print the installed package version ``` ## Configuration All configuration is via environment variables (optional): | Variable | Default | Description | |----------|---------|-------------| | `MONZO_MCP_CONFIG_DIR` | `<package>/config/` | Directory for OAuth credentials and tokens | | `MONZO_MCP_DB_PATH` | `<package>/monzo.db` | Path to SQLite transaction cache | Credential files (created by `monzo-mcp auth`): - `config/monzo_client.json` - OAuth client ID and secret - `config/monzo_tokens.json` - Access and refresh tokens (auto-refreshed) ## Monzo SCA window Monzo's Strong Customer Authentication (SCA) limits transaction history access: - **Within 5 minutes of app approval**: up to ~11 months of history - **After the window expires**: only the last 90 days The local SQLite cache preserves all synced transactions permanently, so run `monzo_sync` promptly after `monzo-mcp auth`. To backfill a specific range, pass `since` to `monzo_sync` - an ISO date (`2026-01-01`) or datetime (`2026-01-01T14:30:00Z`). Reaching back more than ~90 days only works inside the SCA window; outside it, only the last 90 days are returned. Older cached transactions gain fields added in newer versions (e.g. counterparty/payee details on bank transfers) only when re-fetched, which a post-auth full sync does for the history it re-pulls. ## Security - **Zero write tools** - cannot send money, move funds between pots, or modify transactions - **Monzo API itself** cannot send money to external accounts - Tokens stored as JSON files in the `config/` directory (gitignored) - All API calls are GET requests with Bearer token auth ## Troubleshooting - **"SCA required" or only 90 days of history** - re-run `monzo-mcp auth` and approve the login in the Monzo app within 5 minutes, then sync straight away (see the SCA window above). - **Token expired / no refresh** - re-run `monzo-mcp auth` to re-authorise. - **"No transaction data available"** - the cache is empty; call `monzo_sync` (or any cache-reading tool, which auto-syncs) once after authenticating. ## Contributing See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, the test workflow, and the pre-commit hook. Changes are tracked in [CHANGELOG.md](CHANGELOG.md). ## License GPL-3.0-or-later. See [LICENSE](LICENSE).
What people ask about monzo-mcp
What is partymola/monzo-mcp?
+
partymola/monzo-mcp is mcp servers for the Claude AI ecosystem. MCP server for the Monzo banking API with OAuth, local transaction cache, and spending analysis It has 2 GitHub stars and was last updated today.
How do I install monzo-mcp?
+
You can install monzo-mcp by cloning the repository (https://github.com/partymola/monzo-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is partymola/monzo-mcp safe to use?
+
Our security agent has analyzed partymola/monzo-mcp and assigned a Trust Score of 87/100 (tier: Trusted). See the full breakdown of passed checks and flags on this page.
Who maintains partymola/monzo-mcp?
+
partymola/monzo-mcp is maintained by partymola. The last recorded GitHub activity is from today, with 0 open issues.
Are there alternatives to monzo-mcp?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy monzo-mcp to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/partymola-monzo-mcp)<a href="https://claudewave.com/repo/partymola-monzo-mcp"><img src="https://claudewave.com/api/badge/partymola-monzo-mcp" alt="Featured on ClaudeWave: partymola/monzo-mcp" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!