Model Context Protocol (MCP) server for Monarch Money personal finance platform
Project description
Monarch Money MCP Server
A Model Context Protocol (MCP) server for integrating with the Monarch Money personal finance platform through Claude Desktop.
Overview
- Secure by design — browser-based login, token stored in OS keychain (never in config files or env vars)
- Safe by default — read-only mode prevents accidental changes; write tools require explicit opt-in
- Comprehensive — 37 tools covering accounts, transactions, splits, budgets, cashflow, tags, categories, and credit history
- Easy to install — Claude Desktop extension (
.mcpb),uvx, orpip
Two operating modes:
The server starts in read-only mode by default. Write tools are hidden and blocked until you explicitly opt in.
| Read-only (default) | Write mode | |
|---|---|---|
| View accounts, transactions, budgets | Yes | Yes |
| Analyze cashflow, spending, net worth | Yes | Yes |
| Create transactions, tags, categories | No | Yes |
| Update accounts, budgets, splits | No | Yes |
| Delete transactions, tags, accounts | No | Yes |
Quick Start
Installation
Option 1: Claude Desktop Extension (.mcpb) — Recommended for Claude Desktop
Enables toggling write mode on/off directly from the Claude Desktop app.
- Download the latest
.mcpbfrom Releases - In Claude Desktop: Settings > Extensions > Advanced Settings > Install Extensions — select the
.mcpbfile - Restart Claude Desktop
To enable write tools: Settings > Extensions > Monarch Money MCP Server > Configure — toggle "Enable write tools" and click Save.
Option 2: uvx (no install required) — Recommended for agents (e.g. Claude Code or Cursor)
Also works with Claude Desktop, but write mode cannot be toggled from the app — set it in the config instead.
Add to your MCP config file:
{
"mcpServers": {
"Monarch Money": {
"command": "uvx",
"args": ["monarch-mcp"]
}
}
}
To enable write tools:
{
"mcpServers": {
"Monarch Money": {
"command": "uvx",
"args": ["monarch-mcp", "--enable-write"]
}
}
}
Option 3: pip install — Recommended for local installation and venv
pip install monarch-mcp
Contributors: See docs/releasing.md for the release process, version scheme, and pre-release testing via TestPyPI.
Add to your MCP config using the full path to your Python interpreter:
{
"mcpServers": {
"Monarch Money": {
"command": "/path/to/bin/python3",
"args": ["-m", "monarch_mcp"]
}
}
}
To enable write tools, add "--enable-write" to args.
Option 4: Clone and install — Recommended for development
git clone https://github.com/vargahis/monarch-mcp.git
cd monarch-mcp
pip install -e .
Then add to your MCP config using the Python interpreter from your dev environment:
{
"mcpServers": {
"Monarch Money": {
"command": "/path/to/bin/python3",
"args": ["-m", "monarch_mcp"]
}
}
}
To enable write tools, add "--enable-write" to args.
Authentication
Authentication happens automatically in your browser the first time the MCP server starts without a saved session.
- Start (or restart) Claude Desktop
- The server detects that no token exists and opens a login page in your browser
- Enter your Monarch Money email and password
- Provide your 2FA code if you have MFA enabled
- Once authenticated, the token is saved to your system keyring — you're all set
Key details:
- Credentials are entered in your browser only — never through Claude Desktop
- Token stored in the OS keyring — persists across restarts, lasts weeks/months
- Expired sessions re-authenticate automatically — the browser login re-triggers on the next tool call
- MFA fully supported
- Fallback: run
python login_setup.pyin a terminal for headless environments
For technical details on the auth architecture, see docs/authentication.md.
Usage Examples
Show me all my financial accounts
What were my last 50 transactions?
How's my budget looking this month?
Analyze my cashflow for the last 3 months
Create a tag called "Business Expenses" in red
Available Tools
| Tool | Description | Mode |
|---|---|---|
| Auth | ||
setup_authentication |
Get setup instructions | read |
check_auth_status |
Check authentication status | read |
debug_session_loading |
Debug keyring issues | read |
| Accounts | ||
get_accounts |
Get all financial accounts | read |
get_account_holdings |
Get investment holdings | read |
get_account_history |
Get historical balance data | read |
get_recent_account_balances |
Get daily balances | read |
get_account_snapshots_by_type |
Net worth by account type | read |
get_aggregate_snapshots |
Daily aggregate net value | read |
get_institutions |
Get connected institutions | read |
get_account_type_options |
Get valid account types | read |
refresh_accounts |
Request account data refresh | read |
create_manual_account |
Create manual account | write |
update_account |
Update account settings | write |
delete_account |
Delete an account | write |
| Transactions | ||
get_transactions |
Get transactions with filtering | read |
get_transaction_details |
Get full transaction detail | read |
get_transactions_summary |
Aggregate transaction stats | read |
get_transaction_splits |
Get split information | read |
get_recurring_transactions |
Get recurring transactions | read |
create_transaction |
Create new transaction | write |
update_transaction |
Update existing transaction | write |
delete_transaction |
Delete a transaction | write |
update_transaction_splits |
Create/modify/delete splits | write |
| Tags | ||
get_transaction_tags |
Get all tags | read |
create_transaction_tag |
Create new tag | write |
delete_transaction_tag |
Delete a tag | write |
set_transaction_tags |
Set tags on a transaction | write |
| Categories | ||
get_transaction_categories |
Get all categories | read |
get_transaction_category_groups |
Get category groups | read |
create_transaction_category |
Create a category | write |
delete_transaction_category |
Delete a category | write |
| Budgets & Cashflow | ||
get_budgets |
Get budget information | read |
get_cashflow |
Get cashflow analysis | read |
get_cashflow_summary |
Get cashflow summary | read |
set_budget_amount |
Set budget for category | write |
| Other | ||
get_subscription_details |
Get subscription status | read |
get_credit_history |
Get credit score history | read |
🙏 Acknowledgments
Forked from @robcerda's monarch-mcp-server, maintained by vargahis.
Built on the monarchmoneycommunity Python library.
Thanks to:
- @robcerda for the original MCP server
- @hammem for the original monarchmoney library
- @bradleyseanf for the community fork
License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file monarch_mcp-0.1.2.tar.gz.
File metadata
- Download URL: monarch_mcp-0.1.2.tar.gz
- Upload date:
- Size: 158.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30100b55dbd3da9ee296824179c75abb3be0c4d293eedb4f1e6fa9996ee22c71
|
|
| MD5 |
54250edaac9fa9f9665f60c92cc71a3a
|
|
| BLAKE2b-256 |
c288a99860c82562521f4847576446c711216586aeda6c0f0644b38e2583cf7a
|
Provenance
The following attestation bundles were made for monarch_mcp-0.1.2.tar.gz:
Publisher:
publish.yml on vargahis/monarch-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
monarch_mcp-0.1.2.tar.gz -
Subject digest:
30100b55dbd3da9ee296824179c75abb3be0c4d293eedb4f1e6fa9996ee22c71 - Sigstore transparency entry: 1006116554
- Sigstore integration time:
-
Permalink:
vargahis/monarch-mcp@82d6208858bb366561d03f39d761cacf479fcf84 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/vargahis
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@82d6208858bb366561d03f39d761cacf479fcf84 -
Trigger Event:
push
-
Statement type:
File details
Details for the file monarch_mcp-0.1.2-py3-none-any.whl.
File metadata
- Download URL: monarch_mcp-0.1.2-py3-none-any.whl
- Upload date:
- Size: 21.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41e599248b571cf2dc32d02256e6a525b6802627d60080419ebe8c2b97de6920
|
|
| MD5 |
32e6d7cccc2b4f0f656db1869c9869b1
|
|
| BLAKE2b-256 |
33ec42e5a19f5affe8c24db5d4c9a42c625fc88028a81843e4f3e4bb7fec2e2b
|
Provenance
The following attestation bundles were made for monarch_mcp-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on vargahis/monarch-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
monarch_mcp-0.1.2-py3-none-any.whl -
Subject digest:
41e599248b571cf2dc32d02256e6a525b6802627d60080419ebe8c2b97de6920 - Sigstore transparency entry: 1006116555
- Sigstore integration time:
-
Permalink:
vargahis/monarch-mcp@82d6208858bb366561d03f39d761cacf479fcf84 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/vargahis
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@82d6208858bb366561d03f39d761cacf479fcf84 -
Trigger Event:
push
-
Statement type: