Personal Finance MCP

Created By
JosueM1109a month ago
Self-hosted, read-only MCP server for personal finance. Connect your banks, credit cards, loans, and brokerage accounts via Plaid and query them from Claude Code in plain English — no third-party aggregator involved.
Overview

Personal Finance MCP

A self-hosted, read-only MCP server that connects your banks, credit cards, loans, and brokerage accounts (via Plaid) to Claude Code. Ask questions about your own finances in plain English — no Monarch, no Mint, no third-party aggregator.

Unofficial. Not affiliated with Plaid Inc. Self-hosted client using credentials you supply.

What you can ask

  • "What's my total balance across all accounts?"
  • "Show me transactions over $100 in the last 30 days."
  • "Which subscriptions am I still paying for?"
  • "How much did I spend on groceries last month?"
  • "Any bank that needs re-authentication?"

Tools (9, all read-only)

ToolWhat it does
list_accountsEvery account across every linked bank, with balances
get_balancesLive current + available balances
get_transactionsTransactions in a date range (up to 2 years back)
search_transactionsKeyword search across merchant / name / counterparty
get_recurring_transactionsDetected recurring inflow + outflow streams
get_liabilitiesCredit cards, student loans, mortgages with APRs
get_investment_holdingsCurrent holdings with symbol + security metadata
get_investment_transactionsBuy / sell / dividend history in a date range
get_institutions_statusHealth of each linked bank (surfaces re-auth needs)

Quickstart

Requires Python 3.11+, a Plaid account (free Trial plan, 10 Items), and an MCP client.

  1. Sign up at plaid.com → Trial plan → enable Transactions, Liabilities, Investments.
  2. Clone the repo, install requirements, copy .env.example to .env, fill in Plaid credentials.
  3. Run uvicorn link_helper:app --port 8765 once per bank to generate access tokens.
  4. Run python server.py — serves on http://localhost:8000/mcp.
  5. Add to Claude Code:
    claude mcp add --transport http personal-finance http://localhost:8000/mcp
    

Full setup, deployment (Docker, Fly.io, Raspberry Pi, Prefect Horizon), and security notes in the GitHub README.

Security

  • Single-tenant. One deployment per person. Don't share.
  • Read-only. No tool mutates state at any institution.
  • Tokens live in env vars, never on disk. .env is gitignored.
  • You own Plaid compliance — you're the Plaid customer under your own account.

License

MIT

Server Config

{
  "mcpServers": {
    "personal-finance": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-p",
        "8000:8000",
        "-e",
        "PLAID_CLIENT_ID",
        "-e",
        "PLAID_SECRET",
        "-e",
        "PLAID_ENV",
        "personal-finance-mcp"
      ],
      "env": {
        "PLAID_CLIENT_ID": "<YOUR_PLAID_CLIENT_ID>",
        "PLAID_SECRET": "<YOUR_PLAID_SECRET>",
        "PLAID_ENV": "production"
      }
    }
  }
}
Project Info
Created At
a month ago
Updated At
a month ago
Author Name
JosueM1109
Star
-
Language
-
License
-
Category

Recommend Servers

View All
Bring your real authenticated browser session to AI coding agents. Local-first MCP server + Chrome MV3 extension. No cloud. No telemetry.
@Cubenest

peek records the user's actual logged-in browser (DOM via rrweb, console events, network metadata, optional response bodies via opt-in Deep capture) through a Chrome MV3 extension. The extension ships events through a native-messaging stdio bridge to a local MCP server (peek-mcp), which persists them to a SQLite database at ~/.peek/sessions.db. AI coding agents (Claude Code, Cursor, Cline, Windsurf) read sessions from the database via 10 MCP tools: Tool What it does list_recent_sessions List recently recorded sessions (id, origin, ts, event count). get_session_summary LLM-readable narrative summary of a session. get_session_console_errors Console errors recorded in a session. get_session_network_errors Failed/notable network requests in a session. get_user_action_before_error Last N user actions before a console error. generate_playwright_repro Generate a runnable Playwright test from a session. get_dom_snapshot Reconstruct the DOM at a given timestamp. query_dom_history Timeline of attribute/text changes for a selector. request_authorization Side-panel consent for write actions (Level 3). execute_action Dispatch a UI action (gated by permission level + destructive blocklist). Why local-first matters Every other "browser session for AI" tool ships to a vendor cloud. peek's SQLite + extension live on the user's machine — no remote endpoints, no telemetry. The privacy policy (docs/peek/PRIVACY_POLICY.md) is the source of truth. Install # 1. Add the MCP server to Claude Code claude mcp add peek -- npx -y @peekdev/mcp # 2. Install the Chrome extension from the Chrome Web Store # (link added once the CWS listing is approved)

a day ago