Personal Capital MCP连接器

Personal Capital MCP连接器将 Personal Capital / Empower 财务账户接入 Claude,通过MCP工具提供账户余额、净资产、交易记录与资产配置的查询分析能力,适用于对话式个人理财问答与财务数据管理。

  • by PaulNorton
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 PaulNorton/personal-capital-connector-mcp

使用说明

Personal Capital MCP Connector

File structure

personal-capital-connector/
├── pyproject.toml
└── src/personal_capital_connector/
    ├── __init__.py
    ├── __main__.py
    ├── auth.py      # session + preference persistence, 2FA flow
    ├── client.py    # API wrapper + data formatters
    ├── server.py    # FastMCP server with 7 tools
    └── cli.py       # CLI entry point

7 tools exposed to Claude

Tool What it answers
list_accounts "What's my Chase credit card balance?" / "Show my savings accounts"
get_net_worth "What's my net worth?" / "How much do I owe vs own?"
get_net_worth_history "How has my net worth changed since 2019?" (month-end or daily totals)
get_account_balance_history "What was the mortgage balance each month in 2020?" (per account, closed accounts included)
get_transactions "What did I spend at restaurants last month?"
get_asset_allocation "What am I holding in my 401k?" / "Which funds am I most concentrated in?"
check_auth_status "Is my Empower session still valid?"

get_transactions parameters

Query a date range or a lookback window, filter, and page through results.

Parameter Default Notes
days 30 Lookback from today. Ignored when start_date is set.
start_date / end_date — ISO YYYY-MM-DD. start_date alone runs through today.
search — Substring match on description, original description, or merchant. Comma-separated terms are ORed: "avis, hertz, national".
account — Substring of the account name, e.g. "delta".
category — Substring of the Personal Capital category, e.g. "travel".
min_amount / max_amount 0 Absolute-value bounds. max_amount=0 means no cap.
limit / offset 100 / 0 Page through results. The header always reports the full match count.
oldest_first false Sort ascending by date.

Amounts are signed: money out is negative, money in is positive. The header shows the net, gross in, and gross out for everything matched — not just the rows on the current page.

Transactions — 2026-03-01 to 2026-03-31
3 of 271 matched
Matched total: net $17,746.50  (in $377,693.19 / out $359,946.69)

2026-03-31      5,516.08  Brokeragelink - Contribution  [Amazon 401(k) Plan]  (Retirement Contributions)
...
268 more. Re-run with offset=3 to continue.

Prerequisites

Install uv: https://docs.astral.sh/uv/

To get started

Step 1 — Authenticate once (interactive 2FA):

uv run --directory {full path to this directory} personal-capital-connector auth

Your session is saved to ~/.config/personal-capital-connector/session.json (chmod 600). Re-run this any time your session expires.

Your email and 2FA choice are saved next to it in prefs.json, so the next login is two keystrokes:

Using saved preferences from ~/.config/personal-capital-connector/prefs.json.
Press Enter to accept a default, or type '-' to forget it.

Empower email [paul@example.com]:
Empower password:

2FA required. How do you want to receive the code?
  1) SMS
  2) Email
Choice [2, saved]:

Press Enter to accept a default, type a new value to replace it, or type - to forget it — the answer you give after - is used for that login but not saved.

Manage the same preferences without logging in:

personal-capital-connector prefs                        # show what is saved
personal-capital-connector prefs --email you@email.com  # change the email
personal-capital-connector prefs --2fa sms              # change the 2FA method
personal-capital-connector prefs --clear email          # forget one (email or 2fa)
personal-capital-connector prefs --clear                # forget both

Clearing preferences never touches your session.

Once your preferences are saved, -y takes them all without asking:

personal-capital-connector auth -y

That leaves only the password, and the 2FA code when one is needed. Anything with no saved value is still prompted for. --email and --2fa override a saved value for one run, and --no-remember logs in without reading or writing preferences at all.

Step 2 — Add to Claude Desktop's MCP settings (e.g. ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "personal-capital": {
      "command": "{full path to uv}",
      "args": [
        "run",
        "--directory",
        "{full path to this directory}",
        "personal-capital-connector"
      ]
    }
  }
}

Step 3 — Restart Claude and start asking questions.