mcpField
P
Personal Finance MCP

Personal Finance MCP

本地服务
github.com/JosueM1109金融数据927 周前更新

关于 Personal Finance MCP

Personal Finance MCP 是面向个人财务查询的可自托管、只读服务,可通过 MCP 客户端访问账户。它经由 Plaid 连接账户,并提供余额、交易、负债和投资查询工具。

主要功能

  1. 01通过 Plaid 连接金融账户
  2. 02读取余额和交易记录
  3. 03搜索交易及定期收支
  4. 04查询负债和投资持仓
  5. 05检查已连接机构状态

适用场景

  1. 01汇总查看已连接账户的支出
  2. 02查找定期扣款和订阅
  3. 03核对贷款及信用卡详情
  4. 04查看投资持仓与交易活动

MCP 相关

该服务通过 MCP 提供九种只读财务工具,包括账户、交易、负债和投资查询。它可连接 Claude Code 等 MCP 客户端。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"personal-finance": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"PLAID_CLIENT_ID",
"-e",
"PLAID_SECRET",
"-e",
"PLAID_ENV",
"-e",
"PORT",
"ghcr.io/josuem1109/personal-finance-mcp:1.0.0"
],
"env": {
"PLAID_CLIENT_ID": "<PLAID_CLIENT_ID>",
"PLAID_SECRET": "<PLAID_SECRET>",
"PLAID_ENV": "<PLAID_ENV>",
"PORT": "<PORT>"
}
}
}
}
启动命令docker run -i --rm -e PLAID_CLIENT_ID -e PLAID_SECRET -e PLAID_ENV -e PORT ghcr.io/josuem1109/personal-finance-mcp:1.0.0
需要配置的环境变量
PLAID_CLIENT_ID密钥Your Plaid client_id from the Plaid dashboard (Team Settings -> API).
PLAID_SECRET密钥Your Plaid secret for the target environment (production or sandbox).
PLAID_ENVPlaid environment: production or sandbox.
PORTPort the MCP HTTP server listens on inside the container.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/josuem1109/personal-finance-mcp:1.0.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

personal-finance-mcp

License: MIT Python 3.11+ MCP

非官方。 本项目与 Plaid Inc. 无关联,未经其认可或赞助。“Plaid”是 Plaid Inc. 的商标。这是一个可自托管的客户端,使用你提供的凭据调用 Plaid 的 API。

一个可自托管、只读的 MCP 服务,可将你的银行账户、信用卡、贷款和券商账户(通过 Plaid)连接到 Claude Code 等 MCP 客户端。用通俗的英语询问你自己的财务状况,无需第三方聚合服务(Monarch、Mint 等)。

你可以询问的问题

  • “我所有账户的总余额是多少?”
  • “显示过去 30 天内金额超过 $100 的交易。”
  • “我还在为哪些订阅付费?”
  • “我上个月在杂货上花了多少钱?”
  • “有哪些银行需要重新进行身份验证?”

会话示例(仅作说明):

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), ...

工具

全部 9 个工具均为只读。每个工具都会返回 {<data>: [...], "warnings": [...]},因此一家银行出问题也不会导致整个查询失败。

工具功能
list_accounts列出所有已关联银行的每个账户及其余额
get_balances获取实时当前余额和可用余额(可选按账户筛选)
get_transactions获取指定日期范围内的交易(最远可追溯 2 年)
search_transactions按关键字搜索商户、名称或交易对方
get_recurring_transactions检测定期收入和支出
get_liabilities获取信用卡、学生贷款和抵押贷款的 APR 及付款详情
get_investment_holdings获取当前持仓及其代码和证券元数据
get_investment_transactions获取指定日期范围内的买入、卖出和股息记录
get_institutions_status查看每家已关联银行的状态(显示是否需要重新进行身份验证)

快速入门

需要 Python 3.11+、Plaid 账户(免费的 Trial 计划)和 MCP 客户端。

1. 设置 Plaid
  1. 在 https://dashboard.plaid.com/signup 注册 → 选择 Trial 计划(免费,10 个 Items)。
  2. Team Settings → Products:启用 Transactions、Liabilities、Investments。
  3. Team Settings → API:复制你的 client_id 和生产环境 secret。
2. 安装
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
3. 关联每家银行

对要连接的每家银行各运行一次:

uvicorn link_helper:app --port 8765

打开 http://localhost:8765,点击 Link a bank,完成 Plaid Link 流程。终端会输出类似 PLAID_TOKEN_CHASE=access-prod-xxx... 的一行内容——将其粘贴到 .env,并对每家银行重复此步骤。

4. 运行
python server.py   # serves on http://localhost:8000/mcp
5. 添加到 Claude Code
claude mcp add --transport http personal-finance http://localhost:8000/mcp

尝试询问“列出我的账户”以确认配置成功。

部署

如需随时随地使用,可选择以下部署方式:

  • Docker(已包含):docker build -t personal-finance-mcp . && docker run --rm -p 8000:8000 --env-file .env personal-finance-mcp
  • 任意 Python 主机(Fly.io、Railway、Raspberry Pi + Tailscale、VPS):设置 .env.example 中的环境变量,通过 HTTPS 暴露 /mcp,并为其配置身份验证。
  • Prefect Horizon(作者使用的方案——每月固定成本为 $0):完整操作指南见 docs/DEPLOYMENT.md。

保护端点。 暴露的 MCP 端点会泄露你所有已关联账户的令牌。请使用 OAuth 2.1、Cloudflare Access,或仅绑定到专用网络。

安全性

  • 单租户。 每人部署一个实例。不要共享。
  • 只读。 不会通过任何工具更改任何机构的状态。不要添加会更改状态的工具。
  • 令牌仅存于环境变量中,绝不存入磁盘。.env 已加入 gitignore。
  • Plaid 合规由你负责。 你是 Plaid 的客户,使用自己的账户。

每次部署前:

  • .env 从未提交:git log --all -- .env 无返回结果
  • 历史记录中没有真实令牌:git log -S'access-prod-' --all 只返回占位符
  • MCP 端点前有身份验证门禁(或仅限 localhost)
  • 在部署环境中设置 HORIZON=1(或类似设置),以阻止 link_helper.py 在该环境中运行
  • 每隔几周检查一次 get_institutions_status(),确认是否需要重新认证

故障排除

工具返回空结果,但实际存在数据。 链接银行时未启用 Plaid 产品。重新链接,并启用 Transactions、Liabilities 和 Investments。如果这是原因,工具会在 warnings 中显示 PRODUCTS_NOT_SUPPORTED。

get_institutions_status() 显示 re_auth_required。 银行的 Plaid 会话已过期。以更新模式运行 link_helper.py——现有访问令牌保持不变。参见 docs/DEPLOYMENT.md。

Plaid Link 将某家银行显示为“不支持”(Amex 常见)。 通常是 INSTITUTION_REGISTRATION_REQUIRED 问题——OAuth 银行需要先在 Plaid 控制面板中逐一注册。参见 docs/TROUBLESHOOTING.md。

更多问题请参见:docs/TROUBLESHOOTING.md。

架构

  • server.py — FastMCP 服务,提供 9 个只读工具。
  • plaid_client.py — Plaid SDK 封装:SecretStr 令牌脱敏、每个 Item 的 5 分钟健康状态缓存、响应整形、结构化错误映射。
  • link_helper.py — 仅限本地使用的 FastAPI 应用,用于 Plaid Link。设置 HORIZON=1 时拒绝运行。

深入了解(包括为什么使用 /transactions/get 而不是 /transactions/sync):docs/ARCHITECTURE.md。

贡献

参见 CONTRIBUTING.md。项目范围刻意保持狭窄:只读、单租户、基于 Plaid。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。