Local-first personal finance MCP

io.github.adelaidasofia由 GitHub 账号 adelaidasofia 发布v0.1.0更新于 Oct 24, 2026

Local-first personal finance MCP. Aggregates bank, brokerage, credit, and loan accounts via Plaid.…

发布方自己的服务:Finance Foundation

概览

AI 生成的概览

通过 Plaid 汇总银行、券商、信用卡和贷款账户,并将余额、持仓和交易写入本地 markdown 仓库。

可以做什么
通过 Plaid 连接美国金融机构,拉取实时余额、含成本基础的投资持仓、基于游标的交易历史,以及信用卡年利率和学生贷款还款信息等负债明细。结果写入本地 Obsidian 风格 markdown 文件(Accounts.md、Investments.md、Cash Flow.md)的自动同步区块,交易记录则存入本地 SQLite 数据库。它还能计算每月收支汇总,并保留 Plaid 调用和钥匙串访问的审计日志。
适用场景
适合希望让助手读取自己的银行、券商和贷款数据,并在本机保留私有纯 markdown 记录、而不把数据交给个人理财 SaaS 的用户。适用于个人记账、净资产跟踪和每月现金流汇总,而非交易或支付。
运行要求
在 macOS 上本地运行(需要钥匙串),要求 Python 3.11+。需要 Plaid 凭据:PLAID_CLIENT_ID 和 PLAID_SECRET,放在插件根目录的 .env 文件中。需要访问 plaid.com 的网络连接。必须配置仓库文件夹路径;Plaid 环境(sandbox、development、production)通过 PLAID_ENV 选择。
安装前请注意
它处理真实金融账户数据,并要求提供 PLAID_CLIENT_ID 和 PLAID_SECRET,这些凭据存放在 .env 文件中。Plaid 访问令牌保存在 macOS 钥匙串中,不会出现在工具响应里。关联和取消关联机构会改变状态:unlink 会撤销 Plaid item 并删除钥匙串条目。它会在配置的仓库文件夹内写入 markdown 文件,并将交易存入本地 SQLite 数据库。README 称数据只发送到 plaid.com,但也说明首次加载会向 myceliumai.co 发送一次匿名安装信号,可用 MYCELIUM_NO_PING=1 关闭。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Local-first personal finance MCP,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[License] [GitHub stars] [Last commit] [Open issues] [PyPI version] [PyPI downloads] [Built by Mycelium AI]

finance-mcp

Local-first personal finance MCP. Aggregates bank, brokerage, credit, and loan accounts via Plaid. Writes balances, holdings, and transactions to your local Obsidian-style markdown vault. Access tokens stay in macOS Keychain. Never sends data anywhere except plaid.com.

What it does

  • Link any US bank or brokerage via Plaid (Chase, Citi, Schwab, Discover, Fidelity, Wells Fargo, Bank of America, Capital One, Vanguard, Robinhood, Coinbase, student-loan servicers, 12,000+ institutions total).
  • Pull live balances for every account → writes the auto-sync block in your vault's Accounts.md.
  • Pull investment holdings with shares, cost basis, current value → writes Investments.md.
  • Pull transactions cursor-style (delta only after first sync) → stores in local SQLite.
  • Roll up monthly cash flow by category → writes Cash Flow.md.
  • Pull liabilities (credit-card APRs, statement balances, student-loan payoff info).
  • Audit log every Plaid call and every keychain access.

Why local-first matters

Most personal-finance SaaS (Mint, Copilot, YNAB, Monarch) puts your bank data on their servers and charges you for the privilege. This MCP:

  • Runs on your laptop, talks directly to Plaid, writes to your local vault.
  • Stores access tokens in macOS Keychain, not env files or any database.
  • Never returns access tokens in tool responses — items are referenced by alias (chase, citi, etc.).
  • Vault data is plain markdown with inline Dataview fields — your data, your format, queryable forever.

Install

Open Claude Code, paste:

/plugin marketplace add adelaidasofia/finance-mcp/plugin install finance-mcp@finance-mcp

Requires macOS (for Keychain) and Python 3.11+. After install, set your Plaid credentials in .env at the plugin root (see SETUP.md for the Plaid signup walkthrough).

First-time use

> healthcheck

If it shows blockers, follow them. Once green:

> link_start(institution_alias="chase")

Open the returned link_token in Plaid's Link demo page (paste the token in the field labeled "Link Token", then click "Open Plaid Link"). Complete bank auth in the browser. Copy the public_token from the success page.

> link_complete(institution_alias="chase", public_token="public-sandbox-...")

Repeat for each bank.

> sync_balances> sync_holdings> sync_transactions> rollup_month(month="2026-05")

Your vault's Accounts.md, Investments.md, and Cash Flow.md now have auto-sync blocks with current data. Re-run any time.

Tool surface

ToolWhat it does
healthcheckVerify Plaid creds, vault path, keychain access.
link_start(alias)Start linking a new bank. Returns link_token.
link_complete(alias, public_token)Exchange public_token, store in Keychain.
list_linkedList linked institutions + last-sync timestamps.
unlink(alias)Remove an institution. Revokes Plaid item + deletes Keychain entry.
sync_balances([alias])Pull current balances → Accounts.md.
sync_holdings([alias])Pull investment positions → Investments.md.
sync_transactions([alias])Cursor-based transaction sync → SQLite.
sync_liabilities([alias])Pull credit + loan details.
sync_all([alias])All of the above in sequence.
rollup_month(month)Compute monthly income/expense rollup → Cash Flow.md.
audit_tail(n)Last N audit-log entries.

Security model

  • Plaid access_token lives in macOS Keychain (security CLI), service name finance-mcp, account name = your institution alias.
  • Plaid client_id + secret live in .env (chmod 600). Never committed (in .gitignore).
  • Transaction history lives in SQLite at ~/.claude/finance-mcp/data.db (not in your vault).
  • Vault writes only happen inside the configured FINANCE_MCP_FINANCE_FOLDER. Set to empty string to disable vault writes entirely.
  • Audit log records every Plaid call and every keychain operation.
  • Tool responses never include raw access tokens.

Plaid environments

  • sandbox (default): fake banks, fake credentials (user_good / pass_good). Free forever. Use this first.
  • development: real banks, free up to 100 items per Plaid account. Use this for personal accounts.
  • production: real banks at scale. Requires a Plaid application + paid plan.

Set via PLAID_ENV in .env. Switch by re-linking all institutions (tokens are environment-bound).

Companion MCPs

  • jkoelker/schwab-mcp — Direct Charles Schwab Trader API for options, trade placement, and deep position data beyond what Plaid exposes.
  • tomasgesino/schwab-mcp — Schwab wheel-strategy management with dry-run-default trading.

finance-mcp covers Schwab basic balances and holdings via Plaid; the above are the route for Schwab power-user features.

Related MCPs in this family

Telemetry

This plugin sends a single anonymous install signal to myceliumai.co the first time it loads in a Claude Code session on a given machine.

What is sent:

  • Plugin name (e.g. slack-mcp)
  • Plugin version (e.g. 0.1.0)

What is NOT sent:

  • No user identifiers, names, emails, tokens, or API keys
  • No file paths, message content, or anything from your work
  • No IP address is stored after dedup processing

Why: Helps the maintainer know which plugins people actually install, so attention goes to the ones that get used.

Opt out: Set the environment variable MYCELIUM_NO_PING=1 before launching Claude Code. The hook will skip the network call entirely. Already-pinged installs leave a sentinel at ~/.mycelium/onboarded-<plugin> — delete it if you want to reset state.

License

MIT. See LICENSE.


Legacy install (manual)

For users who can't use the plugin marketplace yet, the manual flow:

bash
git clone https://github.com/adelaidasofia/finance-mcp ~/.claude/finance-mcpcd ~/.claude/finance-mcppip3 install --break-system-packages -r requirements.txtcp .env.example .envchmod 600 .env

Then register with Claude Code by adding to your vault's .mcp.json (project scope) or ~/.claude.json (user scope, via claude mcp add):

json
"finance": {  "type": "stdio",  "command": "python3",  "args": ["-m", "finance_mcp.server"],  "env": {    "PYTHONPATH": "/Users/<you>/.claude/finance-mcp",    "FINANCE_MCP_VAULT_PATH": "/Users/<you>/Documents/MyVault",    "FINANCE_MCP_FINANCE_FOLDER": "Finance"  }}

Restart Claude Code. Tools appear under mcp__finance__*.


Built by Adelaida Diaz-Roa. Full install or team version at diazroa.com.

来源:README.md,提交 9d3b986

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.0最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Finance 集成