Monarch Mcp Server
MCP Server for use with Monarch Money
- Transport
- Not stated
- Package
- —
- Registry id
- —
No install snippet on purpose. A working MCP config is a command, its arguments and an environment block — the last two are where API keys live, so this catalogue never stores them and cannot publish them. Follow the link above for the authors' own instructions.
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.
🚀 Quick Start
If you plan to use this MCP server locally / on the same computer as Claude Desktop or similar, start with the Local Installation section.
For other deployment scenarios - like containerized deployment or cloud hosting - start with the Containerized Deployment section.
1. Local Installation
Clone this repository:
git clone https://github.com/robcerda/monarch-mcp-server.git cd monarch-mcp-serverInstall dependencies:
Using
uv(recommended):uv sync --locked--lockedinstalls exactly whatuv.lockpins, verified against the hashes it records, and refuses to re-resolve. Without it,uv syncis free to pick up whatever versions happen to satisfy the ranges today.Using
pip:pip install -r requirements-lock.txt --require-hashes pip install -e . --no-depsrequirements-lock.txtis generated fromuv.lockand pins every transitive dependency with hashes, so--require-hashesgives the pip path the same guarantee as the uv one.--no-depson the second command stops pip re-resolving what the first command just pinned.pip install -r requirements.txtstill works and installs exactly the same set. That file is now a one line include ofrequirements-lock.txt, kept so existing setups and scripts do not break. The pins moved out of it because a rootrequirements.txtgets resolved as an independent manifest, which had started producing a pinned set that disagreed withuv.lock.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", "--locked", "--project", "/path/to/your/monarch-mcp-server", "monarch-mcp-server" ] } } }Important: Replace
/path/to/your/monarch-mcp-serverwith your actual path!uv run --locked --projectresolves dependencies from the repo'suv.lock, andmonarch-mcp-serveris the console script declared inpyproject.toml.--lockedmatters: without it, a lockfile that has drifted frompyproject.tomlis silently re-resolved against PyPI and the recorded hashes stop being enforced. With it, drift is a startup error. Earlier versions of this README useduv run --with 'mcp[cli]', which builds a fresh unpinned environment on every launch and silently picks up whatever the newest release happens to be. That is what broke every install when the MCP SDK published 2.0, and the client only reported it as the server disconnecting. Pinning the launch to the lockfile means a new upstream release cannot change what your server runs.Restart Claude Desktop
OR
Configure Claude Code (CLI): Add this to your Claude Code configuration file:
Global (all projects):
From the project's README.