personal-finance-mcp
personal-finance-mcp
非公式。 本プロジェクトはPlaid Inc.と提携、推奨、または後援を受けていません。「Plaid」はPlaid Inc.の商標です。これは、ユーザーが提供した認証情報を使用してPlaidのAPIと通信するセルフホスト型のクライアントです。
銀行、クレジットカード、ローン、証券口座(Plaid経由)をClaude CodeのようなMCPクライアントに接続する、セルフホスト型の読み取り専用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), ...Related MCP server: plaid-mcp
ツール
9つのツールはすべて読み取り専用です。各ツールは {<data>: [...], "warnings": [...]} を返すため、1つの銀行でエラーが発生してもクエリ全体が停止することはありません。
ツール | 機能 |
| リンクされたすべての銀行の全口座と残高 |
| 現在の残高と利用可能残高(口座によるフィルタリング可能) |
| 指定期間内の取引(最大2年前まで) |
| 加盟店名 / 名前 / 取引相手によるキーワード検索 |
| 検出された定期的な入出金ストリーム |
| クレジットカード、学生ローン、住宅ローンのAPRおよび支払い詳細 |
| シンボルと証券メタデータを含む現在の保有状況 |
| 指定期間内の売買 / 配当履歴 |
| 各リンク済み銀行の健全性(再認証が必要な場合に表示) |
クイックスタート
Python 3.11+、Plaidアカウント(無料のTrialプラン)、およびMCPクライアントが必要です。
1. Plaidのセットアップ
https://dashboard.plaid.com/signup に登録し、Trialプラン(無料、10アイテムまで)を選択します。
Team Settings → Products で、Transactions、Liabilities、Investments を有効にします。
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 check3. 各銀行のリンク
接続したい銀行ごとに1回実行します:
uvicorn link_helper:app --port 8765http://localhost:8765 を開き、Link a bank をクリックしてPlaid Linkを完了します。ターミナルに PLAID_TOKEN_CHASE=access-prod-xxx... のような行が表示されるので、それを .env に貼り付け、銀行ごとに繰り返します。
4. 実行
python server.py # serves on http://localhost:8000/mcp5. Claude Codeへの追加
claude mcp add --transport http personal-finance http://localhost:8000/mcp「list my accounts」と入力して確認してください。
デプロイ
どこからでも使用できるデプロイ方法:
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を使用するか、プライベートネットワークのみにバインドしてください。
セキュリティ
シングルテナント。 1人につき1デプロイ。共有しないでください。
読み取り専用。 どの機関の状態も変更しません。変更するツールは追加しないでください。
トークンは環境変数に保存され、ディスクには保存されません。
.envはgitignoredされています。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トークンのマスキング、アイテムごとの5分間のヘルスキャッシュ、レスポンスの整形、構造化されたエラーマッピング。link_helper.py — Plaid Link用のローカル専用FastAPIアプリ。
HORIZON=1が設定されている場合は実行を拒否します。
詳細(/transactions/sync ではなく /transactions/get を使用する理由など): docs/ARCHITECTURE.md
コントリビューション
CONTRIBUTING.md を参照してください。スコープは意図的に「読み取り専用、シングルテナント、Plaidベース」に限定しています。
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceA read-only MCP server that enables users to analyze their real bank, credit card, loan, and brokerage data through Plaid. It provides financial analysis tools for transactions, balances, investments, liabilities, and debt while keeping all access tokens and data locally stored.24MIT
- FlicenseNot gradedqualityCmaintenanceSelf-hosted MCP server enabling Claude to query bank accounts, balances, and transactions through Plaid with OAuth and TLS.
- AlicenseBqualityAmaintenanceopen-source personal finance app with a first-party MCP server. 91 HTTP tools (OAuth 2.1 + DCR) and 87 stdio tools cover transactions, budgets, accounts, portfolio analytics, FX conversion, loans, subscriptions, goals, importers, and rules. Users self-host with Docker + PostgreSQL or use the managed cloud8911AGPL 3.0
- AlicenseNot gradedqualityDmaintenanceA local MCP server that provides read-only SQL access to financial accounts via Plaid, enabling natural language queries about transactions, balances, and holdings.MIT
Related MCP Connectors
Hosted remote MCP server for YNAB on Cloudflare Workers with OAuth
Brazilian Open Finance MCP — 30+ banks (Itaú, Nubank, etc.) to Claude/Cursor. Read-only.
Read-only bank access for your AI agent. Connects Claude, ChatGPT, Cursor, Gemini, Codex.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JosueM1109/personal-finance-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server