Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

plaid-mcp

A Model Context Protocol (MCP) server that connects Claude to your bank accounts via the Plaid API. Ask Claude about your balances, recent transactions, or spending by category — directly in conversation.

Why this exists

Most personal finance tools show you data. They give you charts, categories, and summaries — but you still have to interpret it yourself and figure out what questions to ask.

This is different. By connecting your bank data directly to Claude, you get a financial assistant that can reason over your money, not just display it.

Instead of logging into three banking apps, exporting CSVs, or building dashboards, you just ask:

  • "Am I spending more on food this month than last month?"
  • "Which of my accounts has enough to cover a $2,000 expense right now?"
  • "Show me every transaction over $200 in the last 60 days and flag anything unusual"
  • "I'm trying to save $500 this month — based on my spending patterns, where should I cut back?"

Claude doesn't just fetch the data — it interprets it, compares it, and gives you answers in plain English. That's the gap this fills: the space between raw bank data and actual financial clarity.

What it does

Exposes 4 tools to Claude:

Tool Description
list_linked_accounts List all linked bank institutions
get_balances Current balances across all accounts (or a specific one)
get_transactions Recent transactions — filterable by institution, days back, count
get_spending_summary Spending totals by category across all linked accounts

Example prompts once connected:

  • "What's my Chase checking balance?"
  • "Show me all transactions over $100 this month"
  • "How much did I spend on food last 30 days?"

Architecture

Claude (Claude Code / Desktop)
    └── MCP protocol (stdio)
        └── server.py (FastMCP)
            └── Plaid API
                └── Linked bank accounts
  • server.py — MCP server built on FastMCP. Runs as a stdio transport, registered in Claude's MCP config.
  • link.py — One-time Flask app (port 8080) that opens Plaid Link in your browser to connect bank accounts. Saves access tokens to config.json.
  • config.json — Stores Plaid credentials and linked account access tokens (not committed).

Setup

1. Get Plaid credentials

Sign up at plaid.com and get your client_id and secret from the dashboard.

  • Sandbox — free, works immediately, uses test credentials
  • Development — free tier, real accounts (non-OAuth banks only)
  • Production — required for OAuth banks (e.g. Chase)

2. Configure

cp config.example.json config.json

Edit config.json with your credentials:

{
  "client_id": "your_plaid_client_id",
  "secret": "your_plaid_secret",
  "env": "sandbox",
  "access_tokens": {}
}

3. Install dependencies

pip install -r requirements.txt

4. Link a bank account

python3 link.py

Opens a browser at http://localhost:8080. Complete the Plaid Link flow to connect an account. Access token is saved automatically to config.json.

For sandbox, use: username user_good, password pass_good.

5. Register with Claude

Add to your Claude MCP config (~/.claude/settings.json):

{
  "mcpServers": {
    "plaid-bank": {
      "command": "python3",
      "args": ["/path/to/plaid-mcp/server.py"]
    }
  }
}

Restart Claude Code. The 4 tools will be available in your next conversation.

Switching environments

Update config.json:

{
  "env": "development",
  "secret": "your_development_secret",
  "access_tokens": {}
}

Then re-run link.py to connect real accounts.

Notes

  • config.json is gitignored — never commit it (contains API keys and access tokens)
  • Access tokens are persistent — you only need to run link.py once per institution
  • OAuth institutions (Chase, Bank of America, etc.) require Plaid Production access

About

MCP server connecting Claude to bank accounts via the Plaid API

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages