Finance Manager MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Finance Manager MCPShow my spending by category this month"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Finance Manager MCP
Self-hosted personal finance for MCP clients. Your banks stay read-only (SimpleFIN), your data lives in a local SQLite file you own, and an LLM can only query deterministic totals — it never writes the ledger.
SimpleFIN (read-only)
→ raw_syncs (append-only JSON)
→ truth tables (accounts, transactions, rules, budgets)
→ warm-cache aggregates
→ atomic functions / MCP tools (stdio + gRPC)Why this shape
Idempotent ingest — transactions are keyed on the bank-assigned SimpleFIN id. Re-syncing the same dump yields zero net-new rows; identical-looking new charges are never collapsed.
Deterministic categorization — first-match-wins regex rules. No model in the write path.
Warm cache — monthly spending, cash flow, net-worth snapshots, and recurring streams persist in SQLite so restarts are instantly warm. Cache is derived;
rebuild-cacheregenerates it from truth tables.Profile UUID namespacing — every write tool requires a
profile_id. Multiple profiles never leak into each other.Dual transport — stdio for Claude Desktop / Cursor, gRPC via the sibling GRPC-MCP package.
Related MCP server: personal-finance-mcp
Setup
Python 3.11+.
python -m venv .venv
# Windows: .venv\Scripts\activate
# Unix: source .venv/bin/activate
pip install -e ".[dev]"
# optional gRPC transport (sibling ../GRPC-MCP)
pip install -e "../GRPC-MCP/python"
pip install -e ".[grpc]"cp .env.example .env
# paste a Fernet key into FINANCE_ENCRYPTION_KEY
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
finance-mcp init # creates data/finance.db + a default profile
finance-mcp profile list # copy the profile UUIDPoint it at SimpleFIN
The interactive path is the same from a terminal or an MCP client.
finance-mcp setup # prints the Bridge URL, waits for the pasted token, claims, syncs
finance-mcp setup --dry-run # print the dialogue only (no claim)
finance-mcp setup --token "<setup-token>"From an MCP client, ask to connect a bank. The agent should:
Call
begin_simplefin_connect(or use promptconnect_simplefin).Show you bridge.simplefin.org — you sign in, connect banks (read-only), copy the one-time setup token.
Call
claim_connectionwith that token. The access URL is encrypted at rest.Optionally
sync_nowon the sameprofile_id.
scripts/verify exercises that dialogue with a scripted paste (no TTY, no network). finance-mcp verify --setup-only runs just those tests.
The older one-shot CLI still works:
finance-mcp claim-token --token "<setup-token>" --name "My Banks" --profile <PROFILE_UUID>
finance-mcp sync --profile <PROFILE_UUID>sync is safe to run from Task Scheduler / cron. Overlapping windows do not double-count.
Serve
finance-mcp serve-stdio # Claude Desktop / Cursor
finance-mcp serve-grpc --auth bearer # sibling GRPC-MCP transport
finance-mcp token new --name cursor --profile <PROFILE_UUID>The bearer token is printed once. gRPC stores only the SHA-256 hash.
Atomic functions
Everything in finance_mcp.api is a plain function. MCP tools are thin wrappers. Import the library without running a server:
from finance_mcp.config import Settings
from finance_mcp.core.db import Database
from finance_mcp import api
db = Database.from_settings(Settings.from_env())
print(api.net_worth(db, profile_id))Read
list_accounts, get_balances, net_worth, net_worth_history, search_transactions, recent_transactions, spending_by_category, cash_flow, recurring_streams, upcoming_payments, budget_status, list_rules, sync_status, profile_info, list_profiles, begin_simplefin_connect
Write (always require profile_id)
claim_connection, create_rule, update_rule, delete_rule, apply_rules, create_budget, update_budget, delete_budget, sync_now
Tests
Hermetic tests use synthetic fixtures only (no credentials, no network):
pytest -q -m "not live"
# or the wrapper, which is what to run as we develop:
python scripts/verify # setup dialogue + hermetic suite
python scripts/verify --setup-only # interactive setup path only
# same thing via the CLI:
finance-mcp verify
finance-mcp setup --dry-run # print the live dialogue without claimingLive SimpleFIN checks (claim token → fetch → ingest → idempotent re-sync → read APIs) are opt-in. Put a one-time setup token or an already-claimed access URL in .env:
# SIMPLEFIN_SETUP_TOKEN=<paste setup token>
# or SIMPLEFIN_ACCESS_URL=https://user:pass@bridge…/simplefin
python scripts/verify --liveThe first successful claim writes the access URL to gitignored data/.simplefin_access_url so later --live runs reuse it. The token itself is never committed.
pytest -q -m live # live tests only; skipped if no credentialsSecurity
SimpleFIN access URLs are encrypted with
FINANCE_ENCRYPTION_KEY(Fernet). Back the key up.gRPC bearer tokens are stored as hashes.
Read tools open SQLite with
mode=ro. Write tools are the only mutation path and are profile-scoped.data/and.envare gitignored.
License
Use as you like for personal self-hosted finance.
This server cannot be deployed
Maintenance
Related MCP Connectors
Query your real net worth, spending, transactions, budgets and portfolio from any MCP client.
Personal finance for AI agents — onboard, import statements, categorize & budget over MCP.
- ManiloOAuthapp.manilo
Log, query, and edit expenses, budgets, and accounts in Manilo from any MCP-compatible AI assistant.
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides an MCP server for querying and managing Monarch Money personal finance data through a local SQLite mirror with read-only SQL access. It enables users to sync transaction history from the Monarch API and analyze accounts, categories, and tags.1MIT
- AlicenseAqualityCmaintenanceSelf-hosted, read-only MCP server that connects banks, credit cards, loans, and brokerage accounts via Plaid. 9 tools for balances, transactions, recurring charges, liabilities, and investment holdings.97MIT
- AlicenseCqualityAmaintenanceopen-source personal finance app with a first-party MCP server. 91 HTTP tools (OAuth 2.1 + DCR) and 87 stdio tools cover transactions, budgets, accounts, portfolio analytics, FX conversion, loans, subscriptions, goals, importers, and rules. Users self-host with Docker + PostgreSQL or use the managed cloud8917AGPL 3.0
- FlicenseNot gradedqualityCmaintenanceExposes personal-finance tools like accounts, transactions, spending analysis, budgets, bills, reminders, portfolio, and goals via MCP, enabling any MCP client to query financial data.-