# monarch-money

Links Monarch Money personal finances to your coding agent. Reads accounts, updates budgets, and tracks cashflow through the service's GraphQL endpoint.

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

## What it does

The server exposes 23 tools split between `readonly` and `manage` tiers. It interfaces directly with `api.monarch.com/graphql` using a minimal internal transport rather than an external library. Through these endpoints, an assistant inspects balances, pulls cashflow details, and reorganizes spending categories or tags.

Session data stays stored locally in `~/.monarch-money-mcp/session.enc` under AES-256-GCM encryption. The utility does not take user passwords via prompt arguments. Because Monarch's initial sign-in enforces an email OTP challenge, grabbing `MONARCH_SESSION_TOKEN` from web DevTools avoids headless startup failures.

Supplying `MONARCH_ENABLED_TOOL_GROUPS=readonly` locks the assistant out of all mutation tools. You can also specify exact functions with `MONARCH_ENABLED_TOOLS` or block individual operations via `MONARCH_DISABLED_TOOLS`.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `MONARCH_SESSION_TOKEN`, `MONARCH_EMAIL`, `MONARCH_PASSWORD`, `MONARCH_TOTP`, `MONARCH_EMAIL_OTP`, `MONARCH_SESSION_PASSPHRASE`, `MONARCH_STATE_DIR`, `MONARCH_ENABLED_TOOL_GROUPS`, `MONARCH_ENABLED_TOOLS`, `MONARCH_DISABLED_TOOLS` — 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 monarch-money -e MONARCH_SESSION_TOKEN=<MONARCH_SESSION_TOKEN> -e MONARCH_PASSWORD=<MONARCH_PASSWORD> -e MONARCH_TOTP=<MONARCH_TOTP> -e MONARCH_EMAIL_OTP=<MONARCH_EMAIL_OTP> -e MONARCH_SESSION_PASSPHRASE=<MONARCH_SESSION_PASSPHRASE> -- npx -y monarch-money-mcp-server
```
Replace <…> with your own values. 5 more environment variables are in the server README

### Codex

**Platform CLI**
```bash
codex mcp add monarch-money --env MONARCH_SESSION_TOKEN=<MONARCH_SESSION_TOKEN> --env MONARCH_EMAIL=<MONARCH_EMAIL> --env MONARCH_PASSWORD=<MONARCH_PASSWORD> --env MONARCH_TOTP=<MONARCH_TOTP> --env MONARCH_EMAIL_OTP=<MONARCH_EMAIL_OTP> -- npx -y monarch-money-mcp-server
```
Replace <…> with your own values. 5 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "monarch-money": {
            "command": "npx",
            "args": [
                "-y",
                "monarch-money-mcp-server"
            ],
            "env": {
                "MONARCH_SESSION_TOKEN": "<MONARCH_SESSION_TOKEN>",
                "MONARCH_EMAIL": "<MONARCH_EMAIL>",
                "MONARCH_PASSWORD": "<MONARCH_PASSWORD>",
                "MONARCH_TOTP": "<MONARCH_TOTP>",
                "MONARCH_EMAIL_OTP": "<MONARCH_EMAIL_OTP>"
            }
        }
    }
}
```
Replace <…> with your own values. 5 more environment variables are in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "monarch-money": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "monarch-money-mcp-server"
            ],
            "env": {
                "MONARCH_SESSION_TOKEN": "<MONARCH_SESSION_TOKEN>",
                "MONARCH_EMAIL": "<MONARCH_EMAIL>",
                "MONARCH_PASSWORD": "<MONARCH_PASSWORD>",
                "MONARCH_TOTP": "<MONARCH_TOTP>",
                "MONARCH_EMAIL_OTP": "<MONARCH_EMAIL_OTP>"
            }
        }
    }
}
```
Replace <…> with your own values. 5 more environment variables are in the server README

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e MONARCH_SESSION_TOKEN=<MONARCH_SESSION_TOKEN> -e MONARCH_EMAIL=<MONARCH_EMAIL> -e MONARCH_PASSWORD=<MONARCH_PASSWORD> -e MONARCH_TOTP=<MONARCH_TOTP> -e MONARCH_EMAIL_OTP=<MONARCH_EMAIL_OTP> monarch-money npx -y monarch-money-mcp-server
```
Replace <…> with your own values. 5 more environment variables are in the server README

## When to use it
- inspect account balances alongside investment holdings
- review recent cashflow and categorize transactions
- adjust monthly budget limits and automated rules
- restrict the agent to read-only financial queries

## Example prompts
- Check my current account balances including investment holdings.
- Verify my Monarch Money authentication status.
- List expenses from the past week and update the category on the last grocery run.

## Similar
- [Monarch MCP Server](https://affpapa.org/en/nevibecode/mcp/monarch-mcp-server.md) — MCP server · ★ 28
- [Lunch Money](https://affpapa.org/en/nevibecode/mcp/lunch-money.md) — MCP server · ★ 110
- [Copilot Money](https://affpapa.org/en/nevibecode/mcp/copilot-money.md) — MCP server · ★ 84
- [emergency-fund](https://affpapa.org/en/nevibecode/skills/emergency-fund.md) — skill · 709 installs
- [zero-based-budget](https://affpapa.org/en/nevibecode/skills/zero-based-budget.md) — skill · 450 installs
- [insurance-audit](https://affpapa.org/en/nevibecode/skills/insurance-audit.md) — skill · 423 installs

From the same set: [pulsemcp/mcp-servers](https://affpapa.org/en/nevibecode/by/pulsemcp/mcp-servers.md) — 28 cards

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