A Model Context Protocol (MCP) server that connects to your financial accounts and lets Claude answer questions about your finances.
- Chase bank accounts & credit cards via Teller API (free for personal use)
- Venmo transactions via CSV import
- Local SQLite storage — your data stays on your machine
- Rich query tools — spending summaries, cash flow, monthly trends, transaction search
git clone <repo-url>
cd personal_finance_mcp
pip3 install -e ".[dev]"- Sign up at teller.io (free for personal use)
- Create an application and download your certificate and private key
- Store the certs in a secure location outside the repo:
mkdir -p ~/.finance_mcp/certs
cp /path/to/certificate.pem ~/.finance_mcp/certs/
cp /path/to/private_key.pem ~/.finance_mcp/certs/
chmod 600 ~/.finance_mcp/certs/*.pemThere are two ways to provide your Teller credentials:
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"finance": {
"command": "/absolute/path/to/python3",
"args": ["-m", "personal_finance_mcp"],
"env": {
"TELLER_APPLICATION_ID": "your-app-id",
"TELLER_CERTIFICATE": "/Users/yourname/.finance_mcp/certs/certificate.pem",
"TELLER_PRIVATE_KEY": "/Users/yourname/.finance_mcp/certs/private_key.pem"
}
}
}
}Important: Use the absolute path to the Python binary where you installed the package. Claude Desktop doesn't inherit your shell's PATH, so python3 may resolve to the system Python which won't have the package. Find the correct path with:
which python3Useful for development or running the server outside of Claude Desktop:
cp .env.example .env
# Edit .env with your Teller credentialsIn Claude, use:
enroll_account— opens a browser to connect your Chase accountsync— pulls latest transactions and balancesimport_venmo_csv— import a Venmo CSV export
Once connected, you can ask Claude things like:
- "How much did I spend on dining this month?"
- "What's my cash flow for the last 3 months?"
- "Show me my spending breakdown by category"
- "Search for all transactions at Whole Foods"
| Tool | Description |
|---|---|
sync |
Pull latest data from connected bank accounts |
import_venmo_csv |
Import a Venmo CSV export |
get_accounts |
List connected accounts with balances |
get_balances |
Get current account balances |
get_transactions |
Search and filter transactions |
get_spending_summary |
Spending by category |
get_cash_flow |
Income vs expenses |
get_monthly_trend |
Month-over-month trends |
enroll_account |
Connect a new bank account |
Don't have a Teller account? You can still use the server with just Venmo CSV imports — no Teller credentials needed.
pip3 install -e ".[dev]"
python3 -m pytest -v- All data stored locally in SQLite (default:
~/.finance_mcp/finance.db) - No data sent to external services (except Teller API for bank sync)
- Credentials never committed (
.envin.gitignore) - Enrollment server binds to localhost only