
Monzo Mcp
io.github.partymola由 GitHub 帳號 partymola 發布v0.13.0更新於 Nov 6, 2026
Read-only MCP server for the Monzo banking API: OAuth, local transaction cache, spending analysis.
概覽
針對 Monzo 銀行 API 的唯讀 MCP 伺服器,讓助理查看帳戶、餘額與儲蓄罐,同步交易到本機快取並分析消費。
- 可以做什麼
- 從 Monzo 即時 API 列出帳戶、目前餘額、當日支出與儲蓄罐
- 將交易同步到本機 SQLite 快取,可用 since 日期回補歷史
- 列出並篩選快取交易,依商家、收款人、描述或備註搜尋
- 產生消費分析,包含分類明細、主要商家與月度比較
- 顯示快取中的轉帳對手方資訊,例如收款人姓名、分行代號與帳號
- 適用情境
- 適合讓助理回答關於自己 Monzo 帳戶、餘額與儲蓄罐的問題,或透過本機快取檢索與分析超出 Monzo 90 天限制的消費紀錄。它為唯讀,適合分析而非付款。
- 執行需求
- 本機程序:需 Python 3.13+ 與 uv 或 pip,從 git 複製安裝(未發布到 PyPI),或使用已發布的 docker 容器映像。需要 Monzo 帳戶,並在 developers.monzo.com 註冊 OAuth 用戶端,重新導向網址為 ID 與密鑰在互動式 auth 指令中輸入。選用環境變數 MONZO_MCP_CONFIG_DIR、MONZO_MCP_DB_PATH、MONZO_MCP_CALLBACK_HOST。使用 Docker 時必須在 /data 掛載磁碟區。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Monzo Mcp,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
monzo-mcp
[CI] [License: GPL v3] [Python 3.13+] [Glama MCP Server]
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 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
Prerequisites
- Python 3.13+ (tested on 3.13, 3.14 and 3.15, on Linux, macOS and Windows, in CI)
- uv (recommended) or pip
- A Monzo account with an OAuth client registered at developers.monzo.com
Installation
This package is not on PyPI - the name belongs to an unrelated project. A container image is published instead; see Docker.
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
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
On Windows the console script is at .venv\Scripts\monzo-mcp.exe.
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).
Docker
Images are published to ghcr.io/partymola/monzo-mcp. Tags carry a v prefix (:vX.Y.Z), and :latest follows the most recent release.
The container needs a volume. Credentials and the transaction cache live under /data; with nothing mounted there, the container still starts and every tool reports that it is not configured, and anything you authorise is lost as soon as the container is replaced.
First register an OAuth client as described in Setup step 1 - auth prompts for the Client ID and secret, and there is no way to supply them later. The redirect URL is http://localhost:6600/callback, the same as a source install.
Authenticate once, into a named volume. Decide before you run this whether you want a bind mount instead - switching afterwards means authorising again:
The published port is needed only for this step, so the OAuth redirect can reach the container. Binding it to 127.0.0.1 keeps the callback listener off your network. No browser opens - the container has none - so copy the URL it prints. Then approve the login in your Monzo app within 5 minutes (see Monzo SCA window).
Then register the server, reusing the same volume:
-i is required - the server speaks JSON-RPC over stdin and stdout.
Sync straight away. The 11-month backfill closes 5 minutes after you approve in the Monzo app (see Monzo SCA window), and this route is longer than a source install - so call monzo_sync as soon as the server is registered. Miss it and you silently get 90 days instead, with no error.
To keep the files somewhere you can read them, use a bind mount instead of a named volume. The container runs as root and writes credentials owner-only, so without --user they end up root-owned:
Pass the same -v and --user to the server command. Create the directory first - --user against a named volume fails, because the volume initialises root-owned from the image.
CLI
Configuration
All configuration is via environment variables (optional):
The container image sets the first two under /data, because the package-relative defaults resolve into the interpreter's lib directory there, which cannot be mounted. It sets the third to 0.0.0.0, because a published port arrives on the container's bridge interface and a localhost bind refuses it.
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). Within the last 90 days this works at any time. Reaching further back only works inside the SCA window; outside it the request is refused, and the sync quietly fetches only what is newer than the newest cached transaction.
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, and the rest of the message says why. If it says the last sync failed, run
monzo_syncto see the error. Runmonzo-mcp authonly if it says the stored credentials were refused or cannot be used, or that the login needs approving in the Monzo app, and then callmonzo_synconce. - Every tool reports "not configured" under Docker, or authentication does not survive a restart - nothing is mounted at
/data. See Docker; the same volume must be passed to theauthrun and to the server. authsits on "Waiting for callback..." after you approve - the callback was not delivered. Press Ctrl-C and run it again. Under Docker, check the port is published (-p 127.0.0.1:6600:6600).
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.
來源:README.md,提交 6c6e0fb
工具
0版本歷史
5- v0.13.0最新Nov 6, 2026
- v0.12.0Nov 4, 2026
- v0.11.1Nov 3, 2026
- v0.10.0Sep 29, 2026
- v0.9.0Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分