EU Open Banking MCP
EU Open Banking MCP
Ein selbst gehosteter, schreibgeschützter MCP-Server für den Zugriff auf persönliche europäische Bankkonten über Enable Banking, geschützt und bereitgestellt auf Cloudflare Workers.
[!IMPORTANT] Behandeln Sie jede Bereitstellung wie ein privates Finanzsystem. Das Repository ist Open Source; Ihr Worker, die MCP-URL, Ihre Geheimschlüssel, Sitzungs-IDs, Konten-IDs und Finanzdaten sind privat.
Warum es das gibt
ChatGPT Designsbezogen auf Finanzen zeigt, was möglich wird, wenn ein Assistent über reale Kontostände und Transaktionen nachdenken kann. Die Bankanbindung wird von Plaid bereitgestellt und ist derzeit nur in den Vereinigten Staaten verfügbar.
Ich habe dieses Projekt erstellt, weil ich keinen vergleichbar direkten, selbsthostenden Weg für persönliche europäische Girokonten gefunden habe. Europa hat Open Banking, aber Zugriff auf Kontodaten erhält man weiterhin nur über regulierte Anbieter, deren APIs und Produktionsintegrationen unterschiedlich funktionieren. Die von Plaid veröffentlichten MCP-Server sind für Entwicklerwerkzeuge und Produktionsdiagnose nützlich; sie stellen die eigenen Kontostände und Transaktionen jedoch nicht als persönliche-Finanz-MCP-Werkzeuge bereit.
Dieses Projekt schließt genau diese Lücke: Eine Person betreibt einen privaten MCP, autorisiert ausschließlich eigene Bankkonten und lässt ausgewählte MCP-Clients begrenzte, schreibgeschützte Analysen durchführen. Es ist Infrastruktur für den persönlichen Gebrauch, kein gehostetes Finanzprodukt und kein Multi-User-Aggregator.
Related MCP server: openbanking-mcp
Warum Enable Banking
Unter den geprüften Anbietern bot Enable Banking die einfachste Variante für eine selbst gehotzte persönliche Bereitstellung. Der eingeschränkte Produktionsmodus (restricted-production mode) erlaubt ausdrücklich, eine Anwendung durch das Verknüpfen eigener Konten zu aktivi adult, bevor ein kommerzieller Vertrag geschlossen wird – einschließlich für individuelle nichtkommerzielle Nutzung. Die Anwendung kann danach nur diese verknüpften Konten lesen. Siehe Enable Bankings Anleitung für Konten im eingeschränkten Produktionsmodus.
Dieses Modell passt zur Sicherheitsgrenze des Projekts:
Das Enable-Banking-Dashboard ist die Kontenliste (Whitelist);
der Autorisierungsablauf der Bank erzeugt die widerrufbare API-Zustimmung;
der MCP bietet nur feste, schreibgeschützte Operationen über Konten, die beides abdecken.
Die Verknüpfung im Dashboard ist selbst keine API-Autorisierung. Auch wenn das Konto bereits im Dashboard verbunden ist, führt /setup den arbeitsender weiterhin durch den Zustimmungsprozess der Bank und speichert die daraus resultierende Enable-Banking-Sitzungs-ID. Dieser zweite Schritt ist also erforderlich.
Architektur
flowchart LR
C[ChatGPT, Codex, or another MCP client] --> A[Cloudflare Access]
A -->|platform-validated ctx.access| W[Stateless MCP Worker]
W -->|session IDs only| K[Workers KV]
W -->|fresh RS256 JWT per call| E[Enable Banking]
E --> B[Your bank]Client → MCP: Cloudflare Access Managed OAuth, auf den Bereitstellungs-Eigentümer eingeschränkt.
MCP-Ebene → Enable-Banking: ein einstündliches RS256-JWT, signt mit einem privaten Schlüssel, der als Worker-Secret gespeichert ist.
Daten zur Speicherung: KV enthält ausschließlich Enable-Banking-ID, die durch den geschützten Setup-Allgang erstellt wurden.
Online-Kontozugriff: Der Worker leitet die IP-Adresse der verbindenden Client sowie deren User-Agent als Enable-Banking
Psu-Ip-AddressundPsu-User-AgentKopf ein. Diese Werte sind anfragebezogen und werden weder gespeichert noch protokolliert. So geht diese Bank davon aus, dass der angemeldete Eigentümer die Daten aktiv angefordert hat.
Der Worker sendet weder Speil von Kontoständen, Transaktionen, Konto-UUIDs, IBANs, Autorisierungscodes noch Anbieterantworten. Für Create Rückmeldungen wird Cache-Control: no-store verwendet.
Tools
Konto | Zweck | Grenzen |
| Aktive Konten und Bankmetadaten entdecken | 20 autorisierte Sitzungen, 20 aktive Konten |
| Ein bestimmtes oder alle aktive Konten auden | Teilergebnisse je Konto; innerhalb jeder Bank sequenziell |
| Paginierte, normalisierte Transaktionen | 366 Tage, 100.000 Ergebnisse je Antwort |
| Textsuche über die Metadaten von Transaktionen | 366 Tage, 5 Anbieterseiten, 100 Treffer |
| Gebuchte Soll-/Haben-/Nettosummen je Währung | 366 Tage, 20 Seiten, 10.000 Transaktionen |
finance_list_accounts antwortet mit einer undurchsichtigen, sitzungsspezifischen accountId. IDs, die in anderenTools verwendet werden, verifiziert der Worker erst against den aktiven Enable-Banking-Sitzungen. Aliase oder manuell kopierte Konto-UUIDs sind nicht erforderlich.
Die Aufreihe nextCursor enthalten codierten Fortsetzungsstatus; sie sind undurchsichtig, aber nicht geheim. Geben Him folgenden Wert unverändert mit demselben Konto und denselben Filtern zurück. Der Worker überprüft vor der Verwendung den eingebetteten Kontext.
Jedes Tool ist schreibgeschützt, nicht destruktiv und idempotent. Herstellercodes werden benannte Beschreibungen wie interim_available, booked und final. Mehrere Kontostände für ein Konto sind verschiedene Messwerte; er dürfen keine Summe gebildet dafür werden. Geldbeträge werden mit dezimalen Rechnungsergebnissen bearbeiteten und nie Währungen kombiniert.
Für eine vollständigen Kontostandaufruf rufen Sie finance_get_balances einmal ohne accountId. Eigentönen in deaktivem Sessions ergeben sich selbstständig, dies ist es vorhergehender Aufruf an finance_list_accounts nicht nötig ist. Die Antwort behält erfolgreiche Kontostände, wenn ein anderes Konto fehlschlägt, und meldet Fehler pro Konto sicher getrennt. Konten, die diese Antwort mit aspsp_rate_limited– antworten die „rate_limited“ werden nicht sofort erneut versucht.
Installation
Bei der Installation werden drei getrennte Vertrauensbeziehungen aufgebaut: Der Worker weist sich gegenüber Enable Banking aus, die Bank erteilt dem Worker eine widerrufliche Zustimmung, und Cloudflare Access begrenzt die Aufruf an die MCP berechtigt.
Schritt | (dies) etablieret | Warum durchgängig |
Die Enable-Banking-Anwendung registrieren | Identität Dokumente, Beantragungsort → Enable Banking | durch AnwendungenD whole endung UUID und dem RSA-Pass projection |
Konten im Enable-Banking-Dashboard | Produktionsliste der unterstützen Konten. | Eine eingeschränkte Anwendung darf nur persönlichen Konten |
Bereitstellung der Worker | Private MCP-Laufzeitumgebung und SitzungsSpeicher in KV | Der Worker arbeitet in Ihrem Konto und speichert nur SitzungsIDs |
Cloudflare Access und Managed OAuth | Identität MCP- Client → Worker | Die privater Worker lehnt alle nicht ausdrücklich erlaubten Aufruferr Fehlern |
Band per | aktive-Sitzung eines Bank-Einverständniss | Weiße Liste begrenzt die Reichweite h |
1. Cloudflare und Enable Banking vorbereiten
Wenn Sie brauchen stellen:
ein Cloudflare-Konto mit einer
workers.dev-Subdomain und Zero Trust;eine Enable-Banking-Anwendung im Restricted-Production-Mode;
die UUID der Anwendung und eine NA SBC den RSA-Privatschlüssel;
Bevor Sie die Enable-Banking-Anwendung registrieren, wählen Sie Freiheitenae.N Sie den Namen des Deployment? Möchten Sie api als individuelle „Name God. dennoch.
Registrieren Sie diese Callback-URL und ersetzen Sie beide PlatPlatzhalter:
https://<worker-name>.<account-subdomain>.workers.dev/callbackSie registrieren eine Produktionsanwendung, generieren Sie den RSA-Schlüssel außerhalb des Browsers und laden das passende Zertifikat als PEM hoch. Den privaten Schlüssel dazu weiter/aufbewahren. Der Bereitpunkt legt ihn als Worker-Secret ab; er darf niemals ein-/verschkraft werden.
/Ferner im Enable-Banking Portal: Sie verbinden jedes Konto, das die eingeschränkte Anwendung lesen darf. Dashboard-Verknüpfung ist eine reine Liste; sie bewirkt aber keine Sitzungs„Autorisierung. Diese zweite Autorisierung macht der Worker typischerweise nach dem Deployment über /setup.
Diese Repository dient dem privaten einenÖKO nur nicht-kommerzellen Gebrauch. Stellen Sie sicher, dass Ihre Bereitstellung zu den geltenden Bedingungen von Enable Banking konform ist.
2. Deploy to Cloudflare
Sind Sie auf den Deploy to Cloudflare Sie oben – in Fluss von. Er makes:
Kopi des Repos in Ihr GitHub oder GitLab -Konto;
ENABLE_BANKING_APPLICATION_IDundENABLE_BANKING_PRIVATE_KEY_PEMabfragen;auswass; das KV-Namespace
SESSION_STORE;die Workload-Access-Richtlinie an das Projekt;
den Worker mit Workers Builds bauen und bereitstellen.
Die beiden Secretsude zuerst mit maskierten Platzhaltern aus .dev.vars.example –, mit einer N-ull-UUID und einem replace-me-Schlüssel. . Diese Schlüssel sind keine Fake-„Credentials”; um die nicht eintragene „Original“. Vor dem Deployment ersetzen Sie beide Variablen durch die Produktionsanwendungs-IDs.
Cloudforce zeigt in der Oberfläche Protected with Cloudflare Access als optional. Für dieses Projekt ist es aktivite SIE NICHT?” In the Deploy page: enable Protect with Cloudflare Access active; Hülle Traffic nur anstelle von All Traffic, und fügen Sie eine Policy. Für eine persönliche Instanz erlauben Sie die ID genau Ihrer Person (oder Ihren Cloudflare-account, wenn darin nur Personen passen). Reine Overviews /Previews only-sch Mus the live Worker suffer. Details found in Anleitung zu Deploy-Buttons.
3. Managed OAuth deaktivieren und aktivier
Gehen Sie zu Zero Trust → Access auf Access controls → Applications.
Wählen Sie die als Access-Anwendung Advanced settings mit Managed OAuth aus und speic̈en.
Fall Protected with nicht am Deployment aktiv war, ergänzen Sie bitte Worker-Level Access manuell . Sonst bringt der Worker im Closed -Mode 403 access_requested zurück, da kein ctx.access übergeben wird. Worker-Level Access schützelt alle standardmäßigen domains: /, /setup, /callback und /mcp. Es wird in der Cloudflare Worker-Level Access Guide beschritt.
Managed OAuth ergänzt Metadaten zu geschützten Ressourcen. MCP-Clients nutzen diese Discovery. Worker selbst Cloudflare Valide die Anfrage vor Worker-Aufruf; das Projekt wiederholt nicht eine PublicKey (JWT) verifzierung.
4. Banken autot besuchen
Öffnen Sie
https://<her-worker>.workers.dev/setup.Wählen das Land und ob „Persönlich/Geschäftlich”. Wählen Sie die Bank aus einer live aufgelistete Liste in Energieseiten...
Autorieren Sie die Bankübertragungen.
Der Calldback validiert
state, nutzt den Einmalcode aus und speichert die Sitzungs-ID in KV. Wiederholgo für jede Bank/Bankverbindung.
Falls Zustimung abläuft oder widerrufen wurde, benutze /setup- räche die „entsprechende”, sowie der Bankenheit erneut. Die Entfernung der Verbindung verdelegt auch Enable-Banking, den Beleg zurückzurufen. Durch erneute Autorisierung entstehen neue IDs; die MCP stellt dies selbstständig wieder her.
5. MCP-Client verbinden
Geben diese MCP-URL an / weiter:
https://<your-worker>.workers.dev/mcpVersicherung? – Prüfungen
Prüfen Sie vor der Verbindung Kontene eines Modells:
Anfragen ohne Authentifizierung durch dieAccess abgewiesen;
der Frontend zeigt nur die die in Deployment nie fuer sie entstandene / „Sitzungen…* Daten;
das MCP-Tool
tools/listlistet exakt die Tool-X fünf; –finance_list_accountgibt und a IDs ohne alle/ IBANNN`tern;kleine Abruf-Antb erfolgt;
eine
AccountAlleholds…funfa „ auch bei fehlerhaften Nebenk tend-;Cloudflare entkelt, keine Finanznutzen, „Secrets“, Codes; Session.
Es gibt bewusst keinen /health-endpoint. Worker brauchen oft keiner; die aussagekräftigen Prüfungen gerade bei /mcp undatives derpeelte setup page.
##-Sicherheitseigenschaften
Fester Upstream-Ursprung: Anfragen können nur an
https://api.enablebanking.comgehen.Festgelegte Provider-Vorgänge: Das Setup kann die Kontoautorisierung starten, abschließen und schließen; MCP-Tools führen nur dokumentierte Leseaufrufe aus.
Durch Benutzer ausgelöste Konto-Lesevorgänge leiten begrenzte
Psu-Ip-Address- undPsu-User-Agent-Werte weiter, die aus der eingehenden Cloudflare-Anfrage abgeleitet werden; Session-Ermittlung und Autorisierungsanfragen erhalten diese Header nicht.Kontenprüfung: Jede übergebene Konto-ID muss zu einer aktiven Session gehören.
Setup- und Callback-Routen befunden sich hinter Access auf Worker-Ebene und validieren Origin und State.
Autorisierungscodes werden sofort ausgetauscht und niemals gespeichert.
KV speichert nur Session-IDs und ist von Cloudflare im Ruhezustand verschlüsselt.
Begrenzte Eingaben, Datumsangaben, Seitenzahlen, Ergebnisse, Upstream-Antworten und Timeouts.
Provider-Fehler protokollieren nur einen normalisierten Vorgang, den HTTP-Status, ein auf der Zulassungsliste stehendes Provider-Fehlercode und einen begrenzten
Retry-After-Wert – niemals Identifikatoren, Anforderungsheader, Provider-Bodies oder Finanzdaten.Keine Zahlungen, keine generischen HTTP-Tools, keine Persistenz von Finanzdaten, kein Antwort-Caching, kein CORS und kein sensibles Logging.
Siehe SECURITY.md für das Bedrohungsmodell und die Offenlegungsrichtlinie.
Entwicklung
bun run typecheck
bun run test
bun run checkDie Tests laufen in der Cloudflare-Workers-Laufzeitumgebung und decken Konfiguration, Fail-Closed-Verhalten von Access, Setup-Autorisierung, Session-Ermittlung, Kontenprüfung, MCP-Tool-Schemata, den JWT-Aufbau für Enable Banking, Normalisierung und begrenzte Antworten ab.
Provider-Umfang
Enable Banking ist das erste Provider-Modul. Künftige Provider sollten dieselbe schmale, normalisierte Finanzschnittstelle bereitstellen, anstatt generische Provider-HTTP-Operationen als MCP-Tools verfügbar zu machen. Beiträge müssen aus Sicht der MCP ausschließlich schreibgeschützt bleiben und Tests für die Validierung von Identifikatoren sowie die Antwort-Normalisierung enthalten.
This server cannot be installed
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
- FlicenseNot gradedqualityDmaintenanceAn MCP server that exposes Enable Banking API tools for interacting with bank accounts through Open Banking. It enables users to authenticate sessions, list accounts, and fetch transaction history or balances via a secure self-hosted server.2
- AlicenseBqualityBmaintenanceEnables read-only access to personal bank accounts via the TrueLayer API, allowing querying of accounts, balances, transactions, and generating financial analytics such as spending by category, subscriptions, and monthly summaries.9MIT
- AlicenseNot gradedqualityCmaintenanceA remote MCP server on Cloudflare Workers that gives Claude read-only access to your Monzo account, enabling balance checks, transaction listing, and pot management via natural language.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI tools to interact with a Firefly III personal finance instance via MCP protocol, deployed on Cloudflare Workers for low-latency global access.12ISC
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/cver-me/EU-Open-Banking-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server