Featured

Deploy OpenClaw in 60 seconds β€” 20% off logoDeploy OpenClaw in 60 seconds β€” 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger β†’
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger β†’
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free β†’
6,000+ web scrapers for your AI agent, start free logo6,000+ web scrapers for your AI agent, start free

Apify gives your agent live web data: 6,000+ prebuilt scrapers and actors, MCP-ready. Sign up free with $5 in usage credits.

Try Apify free β†’
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data β€” no proxies, no parsers, no maintenance.

Start building free β†’
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it β€” secured from day one.

Get it set up for you β†’
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free β†’
Reach 48,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here β†’

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

partymola/monzo-mcp MCP server](https://glama.ai/mcp/servers/partymola/monzo-mcp/badges/score.svg)](https://glama.ai/mcp/servers/partymola/monzo-mcp) 🐍 ☁️ 🏠 - Read-only MCP server for the Monzo banking API (UK).

README.md

monzo-mcp

![CI](https://github.com/partymola/monzo-mcp/actions/workflows/ci.yml) ![License: GPL v3](https://www.gnu.org/licenses/gpl-3.0) ![Python 3.13+](https://www.python.org/downloads/) ![Glama MCP Server](https://glama.ai/mcp/servers/partymola/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_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

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/callback
  • Note your Client ID and Client Secret

2. Authenticate

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

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 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.

See related servers & alternatives β†’

Related MCP servers

Browse all β†’

Related guides

Hand-picked reading to help you choose and use Databases servers.