Connects your Claude environment to Plaid's 12,000+ supported financial institutions and writes the results into local markdown files. You link banks through Plaid's standard flow, then pull balances, investment holdings, transactions, and liabilities on demand. Access tokens live in macOS Keychain, transaction history goes into local SQLite, and account summaries write to your vault as auto-sync blocks in Accounts.md, Investments.md, and Cash Flow.md. Built for people who want their financial data aggregated locally instead of sitting on a SaaS server. Starts in Plaid sandbox mode by default, supports development and production environments once you're ready to connect real accounts.
Local-first personal finance MCP. Aggregates bank, brokerage, credit, and loan accounts via Plaid. Writes balances, holdings, and transactions to your local Obsidian-style markdown vault. Access tokens stay in macOS Keychain. Never sends data anywhere except plaid.com.
Accounts.md.Investments.md.Cash Flow.md.Most personal-finance SaaS (Mint, Copilot, YNAB, Monarch) puts your bank data on their servers and charges you for the privilege. This MCP:
chase, citi, etc.).Open Claude Code, paste:
/plugin marketplace add adelaidasofia/finance-mcp
/plugin install finance-mcp@finance-mcp
Requires macOS (for Keychain) and Python 3.11+. After install, set your Plaid credentials in .env at the plugin root (see SETUP.md for the Plaid signup walkthrough).
> healthcheck
If it shows blockers, follow them. Once green:
> link_start(institution_alias="chase")
Open the returned link_token in Plaid's Link demo page (paste the token in the field labeled "Link Token", then click "Open Plaid Link"). Complete bank auth in the browser. Copy the public_token from the success page.
> link_complete(institution_alias="chase", public_token="public-sandbox-...")
Repeat for each bank.
> sync_balances
> sync_holdings
> sync_transactions
> rollup_month(month="2026-05")
Your vault's Accounts.md, Investments.md, and Cash Flow.md now have auto-sync blocks with current data. Re-run any time.
| Tool | What it does |
|---|---|
healthcheck | Verify Plaid creds, vault path, keychain access. |
link_start(alias) | Start linking a new bank. Returns link_token. |
link_complete(alias, public_token) | Exchange public_token, store in Keychain. |
list_linked | List linked institutions + last-sync timestamps. |
unlink(alias) | Remove an institution. Revokes Plaid item + deletes Keychain entry. |
sync_balances([alias]) | Pull current balances → Accounts.md. |
sync_holdings([alias]) | Pull investment positions → Investments.md. |
sync_transactions([alias]) | Cursor-based transaction sync → SQLite. |
sync_liabilities([alias]) | Pull credit + loan details. |
sync_all([alias]) | All of the above in sequence. |
rollup_month(month) | Compute monthly income/expense rollup → Cash Flow.md. |
audit_tail(n) | Last N audit-log entries. |
access_token lives in macOS Keychain (security CLI), service name finance-mcp, account name = your institution alias.client_id + secret live in .env (chmod 600). Never committed (in .gitignore).~/.claude/finance-mcp/data.db (not in your vault).FINANCE_MCP_FINANCE_FOLDER. Set to empty string to disable vault writes entirely.user_good / pass_good). Free forever. Use this first.Set via PLAID_ENV in .env. Switch by re-linking all institutions (tokens are environment-bound).
jkoelker/schwab-mcp — Direct Charles Schwab Trader API for options, trade placement, and deep position data beyond what Plaid exposes.tomasgesino/schwab-mcp — Schwab wheel-strategy management with dry-run-default trading.finance-mcp covers Schwab basic balances and holdings via Plaid; the above are the route for Schwab power-user features.
This plugin sends a single anonymous install signal to myceliumai.co the first time it loads in a Claude Code session on a given machine.
What is sent:
slack-mcp)0.1.0)What is NOT sent:
Why: Helps the maintainer know which plugins people actually install, so attention goes to the ones that get used.
Opt out: Set the environment variable MYCELIUM_NO_PING=1 before launching Claude Code. The hook will skip the network call entirely. Already-pinged installs leave a sentinel at ~/.mycelium/onboarded-<plugin> — delete it if you want to reset state.
MIT. See LICENSE.
For users who can't use the plugin marketplace yet, the manual flow:
git clone https://github.com/adelaidasofia/finance-mcp ~/.claude/finance-mcp
cd ~/.claude/finance-mcp
pip3 install --break-system-packages -r requirements.txt
cp .env.example .env
chmod 600 .env
Then register with Claude Code by adding to your vault's .mcp.json (project scope) or ~/.claude.json (user scope, via claude mcp add):
"finance": {
"type": "stdio",
"command": "python3",
"args": ["-m", "finance_mcp.server"],
"env": {
"PYTHONPATH": "/Users/<you>/.claude/finance-mcp",
"FINANCE_MCP_VAULT_PATH": "/Users/<you>/Documents/MyVault",
"FINANCE_MCP_FINANCE_FOLDER": "Finance"
}
}
Restart Claude Code. Tools appear under mcp__finance__*.
Built by Adelaida Diaz-Roa. Full install or team version at diazroa.com.
PLAID_CLIENT_ID*From dashboard.plaid.com
PLAID_SECRET*secretFrom dashboard.plaid.com