Skip to main content
Glama
cver-me

EU Open Banking MCP

by cver-me

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.

Deploy to Cloudflare

[!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-Address und Psu-User-Agent Kopf 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

finance_list_accounts

Aktive Konten und Bankmetadaten entdecken

20 autorisierte Sitzungen, 20 aktive Konten

finance_get_balances

Ein bestimmtes oder alle aktive Konten auden

Teilergebnisse je Konto; innerhalb jeder Bank sequenziell

finance_list_transactions

Paginierte, normalisierte Transaktionen

366 Tage, 100.000 Ergebnisse je Antwort

finance_search_transactions

Textsuche über die Metadaten von Transaktionen

366 Tage, 5 Anbieterseiten, 100 Treffer

finance_summarize_cash_flow

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 /setup verbinden

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/callback

Sie 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:

  1. Kopi des Repos in Ihr GitHub oder GitLab -Konto;

  2. ENABLE_BANKING_APPLICATION_ID und ENABLE_BANKING_PRIVATE_KEY_PEM abfragen;

  3. auswass; das KV-Namespace SESSION_STORE;

  4. die Workload-Access-Richtlinie an das Projekt;

  5. 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

  1. Gehen Sie zu Zero Trust → Access auf Access controlsApplications.

  2. 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

  1. Öffnen Sie https://<her-worker>.workers.dev/setup.

  2. Wählen das Land und ob „Persönlich/Geschäftlich”. Wählen Sie die Bank aus einer live aufgelistete Liste in Energieseiten...

  3. Autorieren Sie die Bankübertragungen.

  4. 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/mcp

Versicherung? – 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/list listet exakt die Tool-X fünf; –

  • finance_list_account gibt 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.com gehen.

  • 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- und Psu-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 check

Die 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.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • F
    license
    Not graded
    quality
    D
    maintenance
    An 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
  • A
    license
    B
    quality
    B
    maintenance
    Enables 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.
    9
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A 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
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI tools to interact with a Firefly III personal finance instance via MCP protocol, deployed on Cloudflare Workers for low-latency global access.
    12
    ISC

View all related MCP servers

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.

View all MCP Connectors

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/cver-me/EU-Open-Banking-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server