Personal Finance MCP
About
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.
Explore
- Nine read-only tools: list_accounts, get_balances, get_transactions, search_transactions, get_recurring_transactions, get_liabilities, get_investment_holdings, get_investment_transactions, and get_institutions_status
- Self-hosted and single-tenant – one deployment per person
- No third‑party aggregator; connects directly via Plaid
- All tools are read‑only, never mutating financial data
- Credentials stored in environment variables, never on disk
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Personal Finance MCPCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
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.
list_accounts
Every account across every linked bank, with balances
get_balances
Live current + available balances
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
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)
| Tool | What it does |
| --- | --- |
| list_accounts | Every account across every linked bank, with balances |
| get_balances | Live current + available balances |
| 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 |
| 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) |
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"personal finance mcp": {
"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"
}
}
}
}
}
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"
}
}
}
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)
| Tool | What it does | | --- | --- | |list_accounts | Every account across every linked bank, with balances |
| get_balances | Live current + available balances |
| 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 |
| 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) |
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
MITSign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



