A serverless Monzo → Claude connector on Cloudflare Workers
Description
There are already a few Monzo MCP servers (partymola, BfdCampos, an npm one), and they're good — but they're all local stdio servers you run on your own machine. This is the first remote/serverless one I've found: it lives on a Cloudflare Worker, so you authenticate once and it…
About
There are already a few Monzo MCP servers (partymola, BfdCampos, an npm one), and they're good — but they're all local stdio servers you run on your own machine. This is the first remote/serverless one I've found: it lives on a Cloudflare Worker, so you authenticate once and it follows you to every Claude surface…
Details
- Author
- silkyrich
- Categories
- Finance, Other, AI, Cloud Service, Infrastructure
Jump to
Setup
Install A serverless Monzo → Claude connector on Cloudflare Workers in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/silkyrich/monzo-claude-connector
Follow the installation instructions in the repository README, then restart your MCP client.
A serverless Monzo → Claude connector on Cloudflare Workers
There are already a few Monzo MCP servers (partymola, BfdCampos, an npm one), and they're good — but they're all local stdio servers you run on your own machine. This is the first remote/serverless one I've found: it lives on a Cloudflare Worker, so you authenticate once and it follows you to every Claude surface, with nothing to keep running.
Once connected in claude.ai, you can ask things like"what's my Monzo balance?","list my recent transactions", or"how much is in my savings pots?"in any chat — web, desktop, or phone. Authenticate once; it follows you everywhere. No laptop, no local server, nothing to keep running.
Not affiliated with Monzo.This is a personal-use tool built on Monzo's publicdeveloper API. Use at your own risk, and readSecurity modelbefore deploying.
Read-only by design: no payments, transfers, or pot movements — the tools simply don't exist, so no amount of prompt injection can move money.
Claude (claude.ai) ──OAuth──> This Worker ──OAuth──> Monzo API │ workers-oauth-provider (KV) + McpAgent (Durable Object)
- @cloudflare/workers-oauth-provideris the OAuth server Claude authenticates to — it handles dynamic client registration,/authorize,/token, and grant storage in KV.
- src/monzo-handler.tsbridges that to Monzo's OAuth (authorize → magic-link email → in-app approval → callback).
- src/mcp.tsis theMcpAgent— one Durable Object per connected user, holding that user's Monzo tokens and refreshing them automatically via the refresh token.
- src/monzo.tsis the thin Monzo API client.
Worth understanding before you deploy — the design isolates users by construction:
- No standing bank credential in the Worker.The only Worker-level secrets are the Monzo OAuthclient_id/client_secret, which can exchange authorization codes but cannot read any account data by themselves.
- Tokens live per-grant, not per-Worker.When a user completes the OAuth dance, their Monzo tokens are stored encrypted insidetheirgrant (completeAuthorization({ props: ...tokens })). Every MCP request is resolved through the caller's bearer token totheirgrant,theirDurable Object,theirMonzo account. There is no request that reaches another user's data.
- Unauthenticated requests get 401.The/mcpendpoint only answers to bearer tokens the Worker itself issued.
- Monzo adds its own gates.Developer-portal OAuth clients only authorize the client owner (plus explicitly added collaborators), and every login requires approval in the Monzo app on the account holder's phone (SCA).
- Scopes are read-onlyand the payment/transfer endpoints are never called.
Residual risks are the usual ones for any connector: protect the deployed secrets, and treat your claude.ai session like the credential it is.
-
Register a Monzo OAuth clientathttps://developers.monzo.com—Confidentiality: Confidential(required for refresh tokens). Redirect URL:https://<your-worker>.workers.dev/callback.
Fill secretsin.dev.vars(gitignored) for local dev:
Create the KV namespaceand paste the returned id intowrangler.jsonc(replacing<YOUR_OAUTH_KV_NAMESPACE_ID>):
npx wrangler kv namespace create OAUTH_KV
Add the connector in claude.ai→ Settings → Connectors → Add custom connector →https://<your-worker>.workers.dev/mcp→ authorize. You'll be bounced through Monzo's login (magic-link email + approve in the Monzo app), then Claude shows the five tools.
claude mcp add --transport http monzo https://<your-worker>.workers.dev/mcp
- Monzo only exposes thelast 90 daysof transactions unless you re-authenticate immediately after approving access; this connector accepts that rolling window.
- Monzo developer clients aresingle-userunless Monzo approves your app for production — fine for the personal-use case this is built for.
- Secrets live in.dev.vars(local) and Wrangler secrets (prod) — never in git. The.gitignoreenforces this.
Competitive intelligence platform with 24 tools — monitor competitor pricing, content, positioning, tech stacks, and how ChatGPT, Claude, and Gemini rank your brand.
MCP Server for full Easypanel control via Claude Code, Cursor and Claude Desktop.
A Model Context Protocol (MCP) server for managing app publishing on Huawei AppGallery Connect. Integrates directly with Claude Desktop or any MCP-compatible client.
Interact with Infactory APIs using Claude and other large language models.
Connect your Shopify store to Claude, Cursor, or Windsurf and get 100+ pre-calculated ecommerce metrics like net profit, blended CAC, per-channel ROAS, and customer LTV segments.
Run Proxmox VE and Backup Server from Claude — 69 token-efficient, safety-gated tools with dry-run previews and a tamper-evident audit trail.
Create and publish websites from ChatGPT, Claude, Codex, Cline, and other AI agents with no account required and optional free custom domains.
Access Scorecard's AI model evaluation and testing tools via a Cloudflare Workers deployment.
AI code reviews for GitHub, GitLab, Azure DevOps & Bitbucket PR/MR URLs from Cursor, Claude, or Copilot.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.




