personal-finance-mcp
personal-finance-mcp
Inoffiziell. Dieses Projekt ist nicht mit Plaid Inc. verbunden, wird von Plaid Inc. nicht unterstützt und nicht gesponsert. „Plaid“ ist eine Marke von Plaid Inc. Dies ist ein selbst gehosteter Client, der über die von Ihnen bereitgestellten Anmeldedaten mit der API von Plaid kommuniziert.
Ein selbst gehosteter, schreibgeschützter MCP-Server, der Ihre Banken, Kreditkarten, Kredite und Brokerage-Konten (über Plaid) mit einem MCP-Client wie Claude Code verbindet. Stellen Sie Fragen zu Ihren eigenen Finanzen in einfachem Englisch – ohne Drittanbieter-Aggregator (Monarch, Mint usw.).
Was Sie fragen können
„Wie hoch ist mein Gesamtsaldo über alle Konten hinweg?“
„Zeige mir Transaktionen über 100 $ in den letzten 30 Tagen.“
„Für welche Abonnements zahle ich noch?“
„Wie viel habe ich letzten Monat für Lebensmittel ausgegeben?“
„Muss eine Bank erneut authentifiziert werden?“
Beispielsitzung (illustrativ):
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), ...Tools
Alle 9 Tools sind schreibgeschützt. Jedes gibt {<data>: [...], "warnings": [...]} zurück, sodass eine defekte Bankverbindung nicht die gesamte Abfrage unterbricht.
Tool | Was es tut |
| Jedes Konto bei jeder verknüpften Bank, mit Salden |
| Aktuelle + verfügbare Live-Salden (optional nach Konto gefiltert) |
| Transaktionen in einem Datumsbereich (bis zu 2 Jahre zurück) |
| Stichwortsuche nach Händler / Name / Gegenpartei |
| Erkannte wiederkehrende Zu- und Abflüsse |
| Kreditkarten, Studienkredite, Hypotheken mit effektiven Jahreszinsen und Zahlungsdetails |
| Aktuelle Bestände mit Symbol + Wertpapier-Metadaten |
| Kauf- / Verkaufs- / Dividendenhistorie in einem Datumsbereich |
| Status jeder verknüpften Bank (zeigt an, ob eine erneute Authentifizierung erforderlich ist) |
Schnellstart
Erfordert Python 3.11+, ein Plaid-Konto (kostenloser Testplan) und einen MCP-Client.
1. Plaid-Einrichtung
Registrieren Sie sich unter https://dashboard.plaid.com/signup → wählen Sie den Trial-Plan (kostenlos, 10 Elemente).
Team Settings → Products: aktivieren Sie Transactions, Liabilities, Investments.
Team Settings → API: kopieren Sie Ihre
client_idund das Produktions-secret.
2. Installation
git clone https://github.com/<you>/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. Jede Bank verknüpfen
Führen Sie dies einmal pro Bank aus, die Sie verbinden möchten:
uvicorn link_helper:app --port 8765Öffnen Sie http://localhost:8765, klicken Sie auf Link a bank und schließen Sie Plaid Link ab. Das Terminal gibt eine Zeile wie PLAID_TOKEN_CHASE=access-prod-xxx... aus – fügen Sie diese in .env ein und wiederholen Sie den Vorgang für jede Bank.
4. Ausführen
python server.py # serves on http://localhost:8000/mcp5. Zu Claude Code hinzufügen
claude mcp add --transport http personal-finance http://localhost:8000/mcpVersuchen Sie „list my accounts“, um dies zu bestätigen.
Bereitstellung
Für eine Bereitstellung, die Sie von überall nutzen können:
Docker (enthalten):
docker build -t personal-finance-mcp . && docker run --rm -p 8000:8000 --env-file .env personal-finance-mcpJeder Python-Host (Fly.io, Railway, Raspberry Pi + Tailscale, ein VPS): Setzen Sie die Umgebungsvariablen aus
.env.example, machen Sie/mcpüber HTTPS verfügbar und sichern Sie es mit einer Authentifizierung.Prefect Horizon (was der Autor verwendet – 0 $ laufende Kosten): siehe docs/DEPLOYMENT.md für die vollständige Anleitung.
Sichern Sie den Endpunkt. Ein exponierter MCP-Endpunkt mit Ihren Token legt jedes verknüpfte Konto offen. Verwenden Sie OAuth 2.1, Cloudflare Access oder binden Sie ihn nur an ein privates Netzwerk.
Sicherheit
Single-Tenant. Eine Bereitstellung pro Person. Nicht teilen.
Schreibgeschützt. Kein Tool ändert den Status bei irgendeinem Institut. Fügen Sie keine Tools hinzu, die dies tun.
Token leben in Umgebungsvariablen, niemals auf der Festplatte.
.envwird von git ignoriert.Sie sind für die Plaid-Compliance verantwortlich. Sie sind der Plaid-Kunde unter Ihrem eigenen Konto.
Vor jeder Bereitstellung:
[ ]
.envniemals committen:git log --all -- .envgibt nichts zurück[ ] Keine echten Token in der Historie:
git log -S'access-prod-' --allgibt nur Platzhalter zurück[ ] Authentifizierungsschutz vor dem MCP-Endpunkt (oder nur localhost)
[ ]
HORIZON=1(oder ähnlich) in der Bereitstellungsumgebung gesetzt, blockiertlink_helper.pydort[ ] Überprüfen Sie
get_institutions_status()alle paar Wochen auf Anforderungen zur erneuten Authentifizierung
Fehlerbehebung
Tool gibt trotz vorhandener Daten nichts zurück. Plaid-Produkte waren nicht aktiviert, als Sie die Bank verknüpft haben. Verknüpfen Sie sie erneut mit aktiven Transaktionen + Verbindlichkeiten + Investitionen. Das Tool zeigt PRODUCTS_NOT_SUPPORTED in warnings an, wenn dies die Ursache ist.
get_institutions_status() zeigt re_auth_required. Die Plaid-Sitzung der Bank ist abgelaufen. Führen Sie link_helper.py im Update-Modus aus – Ihr bestehendes Zugriffstoken bleibt gleich. Siehe docs/DEPLOYMENT.md.
Plaid Link zeigt eine Bank als „nicht unterstützt“ an (häufig bei Amex). Normalerweise ein INSTITUTION_REGISTRATION_REQUIRED-Problem – OAuth-Banken benötigen zuerst eine Registrierung pro Institut im Plaid-Dashboard. Siehe docs/TROUBLESHOOTING.md.
Weitere Probleme: docs/TROUBLESHOOTING.md.
Architektur
server.py — FastMCP-Server, 9 schreibgeschützte Tools.
plaid_client.py — Plaid SDK-Wrapper:
SecretStr-Token-Schwärzung, 5-Minuten-Gesundheitscache pro Element, Antwortformatierung, strukturierte Fehlerzuordnung.link_helper.py — Nur lokal nutzbare FastAPI-App für Plaid Link. Verweigert den Dienst, wenn
HORIZON=1gesetzt ist.
Tieferer Einblick (einschließlich warum /transactions/get gegenüber /transactions/sync): docs/ARCHITECTURE.md.
Mitwirken
Siehe CONTRIBUTING.md. Der Umfang ist bewusst eng gefasst: schreibgeschützt, Single-Tenant, Plaid-basiert.
Latest Blog Posts
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