MCP Connector

Access and Manage Your Monzo Bank Data

MCP server giving Claude access to Monzo banking data - balances, pots, transactions, and pot transfers.

Works with monzo

Maintainer of this project? Claim this page to edit the listing.


91
Spark score
out of 100
Updated Jun 2025
Version 1.0.0
Models

Add to Favorites

Why it matters

Connect to your Monzo banking data to effortlessly check balances, manage savings pots, view transactions, and add notes using natural language commands.

Outcomes

What it gets done

01

Retrieve account balances and spending summaries.

02

Deposit and withdraw funds from savings pots.

03

View, filter, and annotate transactions.

04

Access data across various Monzo account types.

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/vb-monzo | bash

Capabilities

Tools your agent gets

balance

Returns the balance, today's spending, and currency for the specified account type

pots

Returns a list of savings pots for the specified account type

pot_deposit

Deposits money from your account to a savings pot

pot_withdraw

Withdraws money from a savings pot back to your account

list_transactions

Shows transactions for the specified account

retrieve_transaction

Retrieves details for a specific transaction

annotate_transaction

Edits transaction metadata

Overview

Monzo MCP Server

An MCP server exposing Monzo balances, pots, transaction listing/annotation, and pot deposit/withdraw tools to Claude, with duplicate-transfer protection via a dedupe_id. Use when you want Claude to check Monzo balances, review or annotate transactions, or move money between an account and a pot.

What it does

This is a Model Context Protocol (MCP) server that provides access to Monzo banking data through a Claude tool, letting Claude answer questions like current balance, joint account funds, all connected accounts, moving money between an account and a Savings pot, and today's transactions. It exposes balance (balance, spending today, and currency for a specified account type - default, personal, prepaid, flex, rewards, or joint - with an optional total_balance flag), pots (list pots for an account type), pot_deposit and pot_withdraw (move money between an account and a pot, specifying pot_id and amount in pence), list_transactions (filterable by account type, since/before ISO 8601 dates, and a result limit, default 1000), retrieve_transaction (fetch a single transaction by ID, expanding merchant data by default), and annotate_transaction (edit a transaction's metadata, e.g. adding or deleting a note).

When to use - and when NOT to

Use this connector when you want Claude to check Monzo balances, review or annotate transactions, or move money between an account and a pot via natural language. Since pot_deposit and pot_withdraw actually move real money, each call generates a unique dedupe_id incorporating a triggered_by parameter (default "mcp", customizable) specifically to prevent accidental duplicate transfers - review requested transfers before confirming. The server does not implement every Monzo API endpoint: creating feed items, uploading/registering/deregistering attachments, creating/retrieving/deleting receipts, registering/listing/deleting webhooks, the transaction-created webhook event, and general payment initiation to accounts outside your own Monzo are all absent from this MCP even though the underlying Monzo API supports them.

Inputs and outputs

Clone the repo and install dependencies with uv install. Create a .env file with Monzo API credentials (MONZO_ACCESS_TOKEN, MONZO_USER_ID, MONZO_ACCOUNT_ID), obtained per the official Monzo Dev API docs; adding specific account IDs for each account type (UK prepaid, retail personal, Monzo Flex, rewards, and retail joint) is recommended to reduce API calls. For Claude Desktop, install automatically with uv run mcp install main.py, or configure manually in claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json) pointing at the local uv binary with run --with mcp[cli],requests mcp run /path/to/main.py - requests must be included in the --with argument or the server won't connect properly.

Integrations

Common setup issues: ensure the latest Claude Desktop version and restart it after config changes; use the absolute path to uv (e.g. /Users/<home>/.local/bin/uv); confirm requests is in the --with list. If Claude doesn't use the MCP server for a balance question, rephrase to explicitly ask it to check Monzo via the tool, and check ~/Library/Logs/Claude/mcp-server-Monzo.log for errors. uv itself is a fast Python package manager and installer that maintains isolated project environments and resolves dependencies efficiently.

Who it's for

Monzo customers who want Claude to check balances, review and annotate transactions, and move money between accounts and pots through natural language - not a fit for workflows needing receipts, webhooks, feed items, or payments to external (non-Monzo) accounts, since those endpoints aren't implemented here.

Source README

๐Ÿฆ Monzo MCP Server

A Model Context Protocol (MCP) server that provides access to your Monzo banking data through a Claude tool.

๐Ÿชง Demo

https://github.com/user-attachments/assets/ca3f9558-bc4b-460f-8658-99674f9c16b7

๐Ÿ–ผ๏ธ Result

monzo_mcp_bfdcampos_result

๐Ÿš€ Installation

# Clone the repository
git clone https://github.com/BfdCampos/monzo-mcp-bfdcampos.git
cd monzo-mcp-bfdcampos/monzo-mcp-bfdcampos

# Install dependencies using uv (Python package manager)
uv install

๐Ÿ”‘ API Setup

Create a .env file in the project directory with your Monzo credentials:

MONZO_ACCESS_TOKEN='your_access_token'
MONZO_USER_ID='your_user_id'
MONZO_ACCOUNT_ID='your_default_account_id'

# Add specific account IDs for different account types
MONZO_UK_PREPAID_PERSONAL_ACCOUNT_ID='your_prepaid_account_id'
MONZO_UK_RETAIL_PERSONAL_ACCOUNT_ID='your_personal_account_id'
MONZO_UK_MONZO_FLEX_PERSONAL_ACCOUNT_ID='your_flex_account_id'
MONZO_UK_REWARDS_PERSONAL_ACCOUNT_ID='your_rewards_account_id'
MONZO_UK_RETAIL_JOINT_JOINT_ACCOUNT_ID='your_joint_account_id'

๐Ÿ”ง Setup with Claude Desktop

Method 1: Automatic Installation

Use the MCP CLI tool to install the server automatically:

uv run mcp install main.py

Method 2: Manual Configuration

Add the server to your Claude Desktop configuration file located at ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "Monzo": {
      "command": "/Users/[Your Home Directory]/.local/bin/uv",
      "args": [
        "run",
        "--with",
        "mcp[cli],requests",
        "mcp",
        "run",
        "/path/to/your/monzo-mcp-bfdcampos/monzo-mcp-bfdcampos/main.py"
      ]
    }
  }
}

Note: Replace /path/to/your/ with your actual paths.
Important: Make sure to include requests in the --with argument as shown above.

๐Ÿค– Using with Claude Desktop

  1. Restart Claude Desktop after installation.
  2. Open the app and start a new conversation.
  3. You can now ask Claude about your Monzo accounts:
    • "What's my current balance?"
    • "How much money do I have in my joint account?"
    • "Show me all my Monzo accounts"
    • "Move ยฃ50 from my personal account to my Savings pot"
    • "Show me my transactions from today"

๐Ÿ“Š Available Functions

๐Ÿ’ท balance: link to official docs

Returns the balance, spending today, and currency for a specified account type.

Parameters:

  • account_type (optional): Type of account to check balance for. Options: "default", "personal", "prepaid", "flex", "rewards", "joint"
  • total_balance (optional): If set to true, returns the total balance for the account. Default is false

Example requests:

What's my current balance?
How much money do I have in my joint account?
What's the balance of my flex account?

๐Ÿฏ pots: link to official docs

Returns the list of pots for a specified account type.

Parameters:

  • account_type (optional): Type of account to check pots for. Options: "default", "personal", "prepaid", "flex", "rewards", "joint"

Example requests:

Show me my pots
How many pots do I have?
How much money do I have in my "Savings" pot?

๐Ÿช™ pot_deposit: link to official docs

Deposit money from an account into a pot.

Parameters:

  • pot_id (required): The ID of the pot to deposit money into
  • amount (required): The amount to deposit in pence (e.g., 1000 for ยฃ10.00)
  • account_type (optional): The account to withdraw from. Default is "personal"

Example requests:

Add ยฃ25 to my Savings pot
Move ยฃ10 from my personal account to my Holiday pot

๐Ÿง pot_withdraw: link to official docs

Withdraw money from a pot back to an account.

Parameters:

  • pot_id (required): The ID of the pot to withdraw money from
  • amount (required): The amount to withdraw in pence (e.g., 1000 for ยฃ10.00)
  • account_type (optional): The account to deposit into. Default is "personal"

Example requests:

Take ยฃ25 from my Savings pot
Withdraw ยฃ10 from my Holiday pot to my personal account

๐Ÿงพ list_transactions: link to official docs

Lists transactions for a specified account.

Parameters:

  • account_type (optional): Type of account to list transactions for. Default is "personal"
  • since (optional): Start date for transactions in ISO 8601 format (e.g., "2025-05-20T00:00:00Z")
  • before (optional): End date for transactions in ISO 8601 format
  • limit (optional): Maximum number of transactions to return. Default is 1000

Example requests:

Show me my recent transactions
What transactions do I have from today?
List all transactions from my joint account this month

๐Ÿ“– retrieve_transaction: link to official docs

Retrieves details of a specific transaction.

Parameters:

  • transaction_id (required): The ID of the transaction to retrieve
  • expand (optional): Additional data to include in the response. Default is "merchant"

Example requests:

Show me the details of my last transaction
What was the last transaction I made?

๐Ÿ“ annotate_transaction: link to official docs

Edits the metadata of a transaction.

Parameters:

  • transaction_id (required): The ID of the transaction to annotate
  • metadata_key (required): The key of the metadata to edit. Default is 'notes'
  • metadata_value (required): The new value for the metadata key. Empty values will remove the key
  • delete_note (optional): If set to true, the note will be deleted. Default is false

Example requests:

Add a note to my last transaction saying "Dinner with friends"
Remove the note from my last transaction

๐Ÿ“ฆ Missing Functions from the Monzo MCP present in the Monzo API

โ“ FAQ

My Claude Desktop is not detecting the server
  • Ensure you have the latest version of Claude Desktop.
  • Restart Claude Desktop by force quitting the app and reopening it.
  • Make sure your path is correct in the configuration file.
  • Use the absolute path to your uv installation, e.g., /Users/[Your Home Directory]/.local/bin/uv in the command section of the configuration file.
  • Verify that the requests library is included in the --with argument list in your configuration, as this is a common cause of connection issues.
I've asked Claude about my balance but it's not using the MCP server
  • LLMs like Claude may not always use the MCP server for every request. Try rephrasing your question, specifically asking Claude to check your Monzo balance using the Monzo MCP tool.
  • You can check if there were any errors by looking at the logs in ~/Library/Logs/Claude/mcp-server-Monzo.log.
How do pot deposits and withdrawals work?
  • When you deposit money into a pot or withdraw from a pot, the MCP creates a unique dedupe_id that includes the "triggered_by" parameter.
  • This helps identify transactions and prevents accidental duplicate transactions.
  • The default "triggered_by" value is "mcp", but you can customise this to track different sources of pot transfers.
What is uv?
  • uv is a Python package manager and installer that's designed to be much faster than pip.
  • It maintains isolated environments for your projects and resolves dependencies efficiently.
  • Learn more at github.com/astral-sh/uv.

FAQ

Common questions

Discussion

Questions & comments ยท 0

Sign In Sign in to leave a comment.