carsol/monarch-mcp-server
If you are the rightful owner of monarch-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The Monarch Money MCP Server is a read-only server that provides access to financial data from Monarch Money, allowing AI assistants to analyze transactions, budgets, and cashflow.
Monarch Money MCP Server
A Model Context Protocol (MCP) server that provides read-only access to Monarch Money financial data. This allows AI assistants like Claude Desktop to analyze your financial information, transactions, budgets, and cashflow data.
Note: I've created this for personal fun and is not affiated with Monarch Money. I mostly created it for learning about my spending, using it for projections. Since I don't have any need to mutate any data it's currently READONLY.
Shout out to
Features
- Read-only access to Monarch Money accounts
- Transaction analysis with date filtering and search
- Budget tracking and cashflow analysis
- Account details including investment holdings
- Secure authentication with MFA support
- Session persistence to minimize re-authentication
Installation
Prerequisites
- Python 3.13+
- uv package manager (recommended)
- A Monarch Money account
Setup
-
Clone the repository:
-
Install dependencies:
uv add mcp monarchmoney python-dotenv
-
Configure environment variables:
cp .env.example .env
Edit
.env
with your Monarch Money credentials:MONARCH_EMAIL=your-email@example.com MONARCH_PASSWORD=your-monarch-password MONARCH_MFA_SECRET=your-mfa-secret-key # Optional but recommended
-
Test the connection:
python test_api.py
Usage
Running the Server
Start the MCP server:
python run_server.py
Claude Desktop Integration
Add to your Claude Desktop configuration (claude_desktop_config.json
):
{
"mcpServers": {
"monarch-money": {
"command": "python",
"args": ["/path/to/monarch-mcp-server/run_server.py"],
"env": {
"MONARCH_EMAIL": "your-email@example.com",
"MONARCH_PASSWORD": "your-password",
"MONARCH_MFA_SECRET": "your-mfa-secret"
}
}
}
}
Available Resources
monarch://accounts
- All linked accountsmonarch://transactions/recent
- Last 100 transactionsmonarch://budgets
- Budget information with actual vs targetmonarch://cashflow/summary
- Income, expenses, and savings summary
Available Tools
- get_transactions - Get transactions with date range filtering
- get_account_details - Detailed account information including holdings
- get_cashflow_analysis - Cashflow analysis by category and time period
- search_transactions - Search transactions by description or merchant
- get_categories - All transaction categories
- get_institutions - Linked financial institutions
Example Prompts
Once configured with Claude Desktop, you can ask:
- "Show me my recent transactions from last month"
- "What's my current budget status?"
- "Analyze my spending patterns by category"
- "How much did I spend on groceries this year?"
- "What are my investment account balances?"
Security
- No write operations - Server is read-only for safety
- Local credentials - Your login details stay on your machine
- Session caching - Reduces authentication frequency
- MFA support - Two-factor authentication recommended
Troubleshooting
Authentication Issues
-
Run the debug script:
python debug_server.py
-
Check environment variables:
python -c "import os; print('Email:', bool(os.getenv('MONARCH_EMAIL'))); print('Password:', bool(os.getenv('MONARCH_PASSWORD')))"
-
Clear session cache:
rm -rf .mm/
Common Issues
- MFA required: Set
MONARCH_MFA_SECRET
environment variable - Session expired: Delete
.mm/
directory to force fresh login - Import errors: Ensure all dependencies installed with
uv add
Development
Project Structure
monarch-mcp-server/
āāā monarch_mcp_server.py # Main MCP server implementation
āāā run_server.py # Server launcher script
āāā debug_server.py # Authentication debugging
āāā test_api.py # API connection testing
āāā tests/ # Unit tests
ā āāā __init__.py
ā āāā test_monarch_mcp_server.py
āāā pyproject.toml # Project dependencies
āāā .github/workflows/ # CI/CD workflows
āāā .env.example # Environment template
Testing
Install test dependencies:
uv sync --extra test
Run the unit test suite:
uv run pytest tests/ -v
Run tests with coverage:
uv run pytest tests/ --cov=monarch_mcp_server --cov-report=term
Run manual API test:
python test_api.py
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
License
MIT License - see file for details.
Disclaimer
This project is not affiliated with Monarch Money. Use at your own risk and ensure compliance with Monarch Money's terms of service.