A Model Context Protocol (MCP) server for integrating with the Monarch Money personal finance platform. This server provides seamless access to your financial accounts, transactions, budgets, and analytics through Claude Desktop and Claude Code.
My MonarchMoney referral: https://www.monarchmoney.com/referral/ufmn0r83yf?r_source=share
Built with the MonarchMoneyCommunity Python library - An actively maintained community fork of the Monarch Money API with full MFA support.
-
Clone this repository:
git clone https://github.com/robcerda/monarch-mcp-server.git cd monarch-mcp-server -
Install dependencies:
Using
pip:pip install -r requirements.txt pip install -e .Using
uv(alternative):uv sync
-
Configure Claude Desktop: Add this to your Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json{ "mcpServers": { "Monarch Money": { "command": "/opt/homebrew/bin/uv", "args": [ "run", "--with", "mcp[cli]", "--with-editable", "/path/to/your/monarch-mcp-server", "mcp", "run", "/path/to/your/monarch-mcp-server/src/monarch_mcp_server/server.py" ] } } }Important: Replace
/path/to/your/monarch-mcp-serverwith your actual path! -
Restart Claude Desktop
OR
-
Configure Claude Code (CLI): Add this to your Claude Code configuration file:
Global (all projects):
macOS/Linux:
~/.claude.jsonWindows:
%USERPROFILE%\.claude.json{ "mcpServers": { "Monarch Money": { "command": "/opt/homebrew/bin/uv", "args": [ "run", "--with", "mcp[cli]", "--with-editable", "/path/to/your/monarch-mcp-server", "mcp", "run", "/path/to/your/monarch-mcp-server/src/monarch_mcp_server/server.py" ] } } }Project-level (specific directory):
Create
.mcp.jsonin your project directory:{ "Monarch Money": { "command": "/opt/homebrew/bin/uv", "args": [ "run", "--with", "mcp[cli]", "--with-editable", "/path/to/your/monarch-mcp-server", "mcp", "run", "/path/to/your/monarch-mcp-server/src/monarch_mcp_server/server.py" ] } }If installed via
pipinstead ofuv, use:{ "command": "python", "args": ["/path/to/your/monarch-mcp-server/src/monarch_mcp_server/server.py"] }Important: Replace
/path/to/your/monarch-mcp-serverwith your actual path! -
Restart Claude Code
Important: For security and MFA support, authentication is done outside of Claude.
Open Terminal and run:
Using python:
cd /path/to/your/monarch-mcp-server
python login_setup.pyUsing uv:
cd /path/to/your/monarch-mcp-server
uv run python login_setup.pyFollow the prompts:
- Enter your Monarch Money email and password
- Provide 2FA code if you have MFA enabled
- Session will be saved automatically
Once authenticated, use these tools directly in Claude Desktop or Claude Code:
get_accounts- View all your financial accountsget_transactions- Recent transactions with filteringget_budgets- Budget information and spendingget_cashflow- Income/expense analysis
- Get Accounts: View all linked financial accounts with balances and institution info
- Get Account Holdings: See securities and investments in investment accounts
- Refresh Accounts: Request real-time data updates from financial institutions
- Get Transactions: Fetch transaction data with filtering by date, account, and pagination
- Create Transaction: Add new transactions to accounts
- Update Transaction: Modify existing transactions (amount, description, category, date)
- Get Budgets: Access budget information including spent amounts and remaining balances
- Get Cashflow: Analyze financial cashflow over specified date ranges with income/expense breakdowns
- One-Time Setup: Authenticate once, use for weeks/months
- MFA Support: Full support for two-factor authentication
- Session Persistence: No need to re-authenticate frequently
- Secure: Credentials never pass through Claude
| Tool | Description | Parameters |
|---|---|---|
setup_authentication |
Get setup instructions | None |
check_auth_status |
Check authentication status | None |
get_accounts |
Get all financial accounts | None |
get_transactions |
Get transactions with filtering | limit, offset, start_date, end_date, account_id |
get_budgets |
Get budget information | None |
get_cashflow |
Get cashflow analysis | start_date, end_date |
get_account_holdings |
Get investment holdings | account_id |
create_transaction |
Create new transaction | account_id, amount, description, date, category_id, merchant_name |
update_transaction |
Update existing transaction | transaction_id, amount, description, category_id, date |
refresh_accounts |
Request account data refresh | None |
Use get_accounts to show me all my financial accounts
Show me my last 50 transactions using get_transactions with limit 50
Use get_budgets to show my current budget status
Get my cashflow for the last 3 months using get_cashflow
- All dates should be in
YYYY-MM-DDformat (e.g., "2024-01-15") - Transaction amounts: positive for income, negative for expenses
If you see "Authentication needed" errors:
- Run the setup command:
cd /path/to/your/monarch-mcp-server && python login_setup.py(oruv run python login_setup.py) - Restart Claude Desktop or Claude Code
- Try using a tool like
get_accounts
Sessions last for weeks, but if expired:
- Run the same setup command again:
python login_setup.py(oruv run python login_setup.py) - Enter your credentials and 2FA code
- Session will be refreshed automatically
- "No valid session found": Run
python login_setup.py(oruv run python login_setup.py) - "Invalid account ID": Use
get_accountsto see valid account IDs - "Date format error": Use YYYY-MM-DD format for dates
monarch-mcp-server/
βββ src/monarch_mcp_server/
β βββ __init__.py
β βββ server.py # Main server implementation
βββ login_setup.py # Authentication setup script
βββ pyproject.toml # Project configuration
βββ requirements.txt # Dependencies
βββ README.md # This documentation
- Sessions are stored securely in
.mm/mm_session.pickle - Automatic session discovery and loading
- Sessions persist across Claude Desktop and Claude Code restarts
- No need for frequent re-authentication
- Credentials never transmitted through Claude Desktop or Claude Code
- MFA/2FA fully supported
- Session files are encrypted
- Authentication handled in secure terminal environment
This MCP server is built on top of the MonarchMoneyCommunity Python library, an actively maintained community fork of the original MonarchMoney library by @hammem. The community fork provides:
- Updated API endpoints for Monarch Money's current domain
- Secure authentication with MFA support
- Comprehensive API coverage for Monarch Money
- Session management and persistence
Thank you to @hammem for creating and maintaining this essential library!
MIT License
For issues:
- Check authentication with
check_auth_status - Run the setup command again:
cd /path/to/your/monarch-mcp-server && python login_setup.py - Check error logs for detailed messages
- Ensure Monarch Money service is accessible
To update the server:
- Pull latest changes from repository
- Restart Claude Desktop or Claude Code
- Re-run authentication if needed:
python login_setup.py
