Server data from the Official MCP Registry
Self-hosted, read-only MCP server that connects your banks and investments via Plaid.
Self-hosted, read-only MCP server that connects your banks and investments via Plaid.
Valid MCP server (0 strong, 3 medium validity signals). 1 known CVE in dependencies Imported from the Official MCP Registry.
4 files analyzed · 1 issue found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Set these up before or after installing:
Environment variable: PLAID_CLIENT_ID
Environment variable: PLAID_SECRET
Environment variable: PLAID_ENV
Environment variable: PORT
From the project's GitHub README.
Unofficial. This project is not affiliated with, endorsed by, or sponsored by Plaid Inc. "Plaid" is a trademark of Plaid Inc. This is a self-hosted client that talks to Plaid's API using credentials you supply.
A self-hosted, read-only MCP server that connects your banks, credit cards, loans, and brokerage accounts (via Plaid) to an MCP client like Claude Code. Ask questions about your own finances in plain English — no third-party aggregator (Monarch, Mint, etc.) involved.
Example session (illustrative):
you : What did I spend on groceries last month?
claude : [calls get_transactions]
$487.23 across 14 transactions. Top merchants:
Whole Foods ($198), Trader Joe's ($156), Safeway ($89).
you : Any subscriptions I'm still paying for?
claude : [calls get_recurring_transactions]
7 active recurring outflows totaling $142/mo:
Netflix ($15.99), Spotify ($11.99), NYT ($4), ...
All 9 tools are read-only. Each returns {<data>: [...], "warnings": [...]} so one broken bank doesn't break the whole query.
| Tool | What it does |
|---|---|
list_accounts | Every account across every linked bank, with balances |
get_balances | Live current + available balances (optionally filtered by account) |
get_transactions | Transactions in a date range (up to 2 years back) |
search_transactions | Keyword search across merchant / name / counterparty |
get_recurring_transactions | Detected recurring inflow + outflow streams |
get_liabilities | Credit cards, student loans, mortgages with APRs and payment details |
get_investment_holdings | Current holdings with symbol + security metadata |
get_investment_transactions | Buy / sell / dividend history in a date range |
get_institutions_status | Health of each linked bank (surfaces re-auth needs) |
Requires Python 3.11+, a Plaid account (free Trial plan), and an MCP client.
client_id and production secret.git clone https://github.com/JosueM1109/personal-finance-mcp.git
cd personal-finance-mcp
python3.11 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # then fill in PLAID_CLIENT_ID and PLAID_SECRET
pytest -v # sanity check
Run once per bank you want to connect:
uvicorn link_helper:app --port 8765
Open http://localhost:8765, click Link a bank, complete Plaid Link. The terminal prints a line like PLAID_TOKEN_CHASE=access-prod-xxx... — paste it into .env and repeat for each bank.
python server.py # serves on http://localhost:8000/mcp
claude mcp add --transport http personal-finance http://localhost:8000/mcp
Try "list my accounts" to confirm.
For a deployment you can use from anywhere:
docker build -t personal-finance-mcp . && docker run --rm -p 8000:8000 --env-file .env personal-finance-mcp.env.example, expose /mcp over HTTPS, gate it with auth.Gate the endpoint. An exposed MCP endpoint with your tokens leaks every linked account. Use OAuth 2.1, Cloudflare Access, or bind to a private network only.
.env is gitignored.Before each deploy:
.env never committed: git log --all -- .env returns nothinggit log -S'access-prod-' --all returns only placeholdersHORIZON=1 (or similar) set in deployment env, blocking link_helper.py thereget_institutions_status() every few weeks for re-auth needsTool returns empty despite real data. Plaid products weren't enabled when you linked the bank. Re-link with Transactions + Liabilities + Investments active. The tool surfaces PRODUCTS_NOT_SUPPORTED in warnings when this is the cause.
get_institutions_status() shows re_auth_required. The bank's Plaid session expired. Run link_helper.py in update mode — your existing access token stays the same. See docs/DEPLOYMENT.md.
Plaid Link shows a bank as "unsupported" (common with Amex). Usually an INSTITUTION_REGISTRATION_REQUIRED issue — OAuth banks need per-institution registration in the Plaid dashboard first. See docs/TROUBLESHOOTING.md.
More issues: docs/TROUBLESHOOTING.md.
SecretStr token redaction, 5-minute per-Item health cache, response shaping, structured error mapping.HORIZON=1 is set.Deeper dive (including why /transactions/get over /transactions/sync): docs/ARCHITECTURE.md.
See CONTRIBUTING.md. Scope is deliberately narrow: read-only, single-tenant, Plaid-backed.
Be the first to review this server!
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.
by Microsoft · Content & Media
Convert files (PDF, Word, Excel, images, audio) to Markdown for LLM consumption