# Monarch MCP Server

Hands your assistant the Monarch Money account: balances, transactions, budgets, merchant search and batch edits.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 28
- Author: jamiew
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/jamiew/monarch-mcp
- Updated: 2026-10-23
- HTML: https://affpapa.org/en/nevibecode/mcp/monarch-mcp-server

## What it does

A FastMCP build of the Monarch Money connector. The agent lists accounts with balances, filters transactions by date or pending status, and reads categories and automation rules. Merchant and keyword lookup runs across the whole history, and a batch edit returns a separate result for each item.

Money questions get their own tools: totals grouped by category, account or month, a month-over-month comparison, and a single call that pulls accounts, budgets, cashflow, transactions and categories at once. Splits and recurring schedules are readable and editable as well.

The package `monarch-mcp-jamiew` runs through `uvx`, so `uv` has to be on the machine first. Login, password and the TOTP secret sit in `MONARCH_EMAIL`, `MONARCH_PASSWORD` and `MONARCH_MFA_SECRET`, and a missing or wrong secret stops the sign-in. Typing those flags puts them in shell history, so editing the client config file directly is the safer route.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `MONARCH_EMAIL`, `MONARCH_PASSWORD`, `MONARCH_MFA_SECRET`, `MONARCH_FORCE_LOGIN` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env MONARCH_EMAIL=<MONARCH_EMAIL> --env MONARCH_PASSWORD=<MONARCH_PASSWORD> --env MONARCH_MFA_SECRET=<MONARCH_MFA_SECRET> --env MONARCH_FORCE_LOGIN=<MONARCH_FORCE_LOGIN> --transport stdio monarch-mcp-server -- uvx monarch-mcp-jamiew
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from monarch-mcp-jamiew <command>

### Codex

**Platform CLI**
```bash
codex mcp add monarch-mcp-server --env MONARCH_EMAIL=<MONARCH_EMAIL> --env MONARCH_PASSWORD=<MONARCH_PASSWORD> --env MONARCH_MFA_SECRET=<MONARCH_MFA_SECRET> --env MONARCH_FORCE_LOGIN=<MONARCH_FORCE_LOGIN> -- uvx monarch-mcp-jamiew
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from monarch-mcp-jamiew <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "monarch-mcp-server": {
            "command": "uvx",
            "args": [
                "monarch-mcp-jamiew"
            ],
            "env": {
                "MONARCH_EMAIL": "<MONARCH_EMAIL>",
                "MONARCH_PASSWORD": "<MONARCH_PASSWORD>",
                "MONARCH_MFA_SECRET": "<MONARCH_MFA_SECRET>",
                "MONARCH_FORCE_LOGIN": "<MONARCH_FORCE_LOGIN>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from monarch-mcp-jamiew <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "monarch-mcp-server": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "monarch-mcp-jamiew"
            ],
            "env": {
                "MONARCH_EMAIL": "<MONARCH_EMAIL>",
                "MONARCH_PASSWORD": "<MONARCH_PASSWORD>",
                "MONARCH_MFA_SECRET": "<MONARCH_MFA_SECRET>",
                "MONARCH_FORCE_LOGIN": "<MONARCH_FORCE_LOGIN>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from monarch-mcp-jamiew <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e MONARCH_EMAIL=<MONARCH_EMAIL> -e MONARCH_PASSWORD=<MONARCH_PASSWORD> -e MONARCH_MFA_SECRET=<MONARCH_MFA_SECRET> -e MONARCH_FORCE_LOGIN=<MONARCH_FORCE_LOGIN> monarch-mcp-server uvx monarch-mcp-jamiew
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from monarch-mcp-jamiew <command>

## When to use it
- find every transaction from one merchant
- re-tag a batch of transactions in one pass
- compare spending between two months
- pull accounts, budgets and cashflow in one request
- check upcoming recurring charges

## Example prompts
- Find all transactions from this merchant and total them for last month.
- Move the Netflix charges into the Subscriptions category.
- Compare spending by category for May and June and flag what went up.

## Similar
- [World Monitor](https://affpapa.org/en/nevibecode/mcp/world-monitor.md) — MCP server · ★ 89408
- [CCXT](https://affpapa.org/en/nevibecode/mcp/ccxt.md) — MCP server · ★ 44583
- [Finance Toolkit](https://affpapa.org/en/nevibecode/mcp/finance-toolkit.md) — MCP server · ★ 5458
- [EdgarTools](https://affpapa.org/en/nevibecode/mcp/edgartools.md) — MCP server · ★ 2814
- [LetsFG — Flights & Hotels](https://affpapa.org/en/nevibecode/mcp/letsfg-flights-hotels.md) — MCP server · ★ 2188
- [AutoTS](https://affpapa.org/en/nevibecode/mcp/autots.md) — MCP server · ★ 1434

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
