monzo-mcp
This server provides read-only access to your Monzo bank account via 7 tools, with full OAuth support and a local SQLite transaction cache.
List Accounts (
monzo_list_accounts): View all Monzo accounts (personal/joint), including IDs and open/closed status.Check Balance (
monzo_get_balance): Get the current balance and today's spend for a personal or joint account.View Pots (
monzo_list_pots): See all savings pots and their balances for a given account type.Sync Transactions (
monzo_sync): Pull transactions, balances, and pot data from the live Monzo API into a local SQLite cache β supports up to ~11 months of history within the SCA window, or 90 days otherwise.List Transactions (
monzo_list_transactions): Browse and filter cached transactions by date range, category, merchant, or account type (auto-syncs if cache is stale).Search Transactions (
monzo_search_transactions): Search cached transactions by merchant name, description, or notes using case-insensitive partial matching.Spending Analysis (
monzo_spending): Analyse spending for a given month with category breakdowns, with an option to drill into individual transactions.
Key characteristics:
π Zero write operations β cannot send money or modify any financial data
π Automatic OAuth token refresh β no manual token management needed
πΎ Persistent local cache β SQLite database preserves transaction history beyond Monzo's 90-day API limit
Provides read-only access to Monzo banking data including accounts, balances, savings pots, and transaction history. Enables spending analysis with category breakdowns and merchant analytics, with automatic synchronization to a local cache for persistent access beyond Monzo's 90-day SCA window.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@monzo-mcphow much did I spend on groceries last month?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
monzo-mcp
MCP server for the Monzo 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_syncby handSpending 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
Related MCP server: monarch-mcp
Tools
Tool | Description | Data source |
| List accounts with types and IDs | Live API |
| Current balance and spend today | Live API |
| Savings pots and balances | Live API |
| Sync transactions to local cache | Live API -> SQLite |
| List/filter cached transactions | Local cache (auto-syncs if stale) |
| Search by merchant/payee/description/notes | Local cache (auto-syncs if stale) |
| Spending analysis with category breakdown | Local cache (auto-syncs if stale) |
Prerequisites
Python 3.13+
uv (recommended) or pip
A Monzo account with an OAuth client registered at developers.monzo.com
Installation
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 and create an OAuth client:
Set the redirect URL to
http://localhost:6600/callbackNote your Client ID and Client Secret
2. Authenticate
monzo-mcp authThis 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
claude mcp add -s user monzo -- /path/to/monzo-mcp/.venv/bin/monzo-mcp4. 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 versionConfiguration
All configuration is via environment variables (optional):
Variable | Default | Description |
|
| Directory for OAuth credentials and tokens |
|
| Path to SQLite transaction cache |
Credential files (created by monzo-mcp auth):
config/monzo_client.json- OAuth client ID and secretconfig/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 authand 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 authto 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 for development setup, the test workflow, and the pre-commit hook. Changes are tracked in CHANGELOG.md.
License
GPL-3.0-or-later. See LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityBmaintenanceProvides read-only access to Quicken for Mac financial data, allowing users to query accounts, transactions, and spending trends through natural language. The server functions by reading the local SQLite database directly while the Quicken application is open.Last updated6733MIT
- Alicense-qualityBmaintenanceProvides an MCP server for querying and managing Monarch Money personal finance data through a local SQLite mirror with read-only SQL access. It enables users to sync transaction history from the Monarch API and analyze accounts, categories, and tags.Last updated1MIT
- Alicense-qualityCmaintenanceRead-only Monzo banking integration for Claude Code that allows querying balances, transactions, pots, and spending analysis through natural conversation.Last updated4MIT
- Alicense-qualityCmaintenanceRead-only MCP and HTTP proxy server for accessing Monarch Money financial data, enabling transaction analysis, budget tracking, and cashflow insights through natural language.Last updatedMIT
Related MCP Connectors
Brazilian Open Finance MCP β 30+ banks (ItaΓΊ, Nubank, etc.) to Claude/Cursor. Read-only.
Wise (https://wise.com) MCP, multi-currency account access via Personal Token + SCA key. Reads profi
Connect your Banco do Brasil account to AI via Brazil's Open Finance: balances, statements, cards, i
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/partymola/monzo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server