尚未检测到更新。GitHub 发布版本后会显示在这里。
BankMCP™: your bank, in Claude. Self-hosted, read-only MCP server for your own bank accounts via open banking (Enable Banking, PSD2).
翻译准备中
正在加载完整 README。 以下为已保存的摘录。
Your bank, in Claude. Read-only, self-hosted, one user.
BankMCP™ is not a bank. It is a small open-source server you host yourself
(package name bank-mcp). It connects to your banks
through Enable Banking, which wraps 2,700+
European banks in one PSD2 API, and exposes them to Claude as an MCP
connector. Read-only, no payments, no third party holding your data.
"Has the invoice from Acme been paid?" · "What did we spend on groceries in
August?" · "Which subscriptions am I paying for, and what do they cost per
year?" · "Tell me when my balance drops below 5,000."查看完整 README ↗Your bank, in Claude. Read-only, self-hosted, one user.
BankMCP™ is not a bank. It is a small open-source server you host yourself
(package name bank-mcp). It connects to your banks
through Enable Banking, which wraps 2,700+
European banks in one PSD2 API, and exposes them to Claude as an MCP
connector. Read-only, no payments, no third party holding your data.
"Has the invoice from Acme been paid?" · "What did we spend on groceries in August?" · "Which subscriptions am I paying for, and what do they cost per year?" · "Tell me when my balance drops below 5,000."
Claude ──OAuth──▶ your BankMCP™ server ──JWT──▶ Enable Banking ──PSD2──▶ your bank
You need an Enable Banking account (free), a place to run a container with a public https address, and about fifteen minutes.
Any container host works. The server needs a persistent volume at /data
and a public https address; it asks you for everything else in the browser.
Railway: New Project, Deploy from GitHub repo, pick this repo. Add a
volume mounted at /data and generate a domain (Settings, Networking, port
8080). The Dockerfile and railway.json are picked up
automatically, and the server learns its own address from Railway.
Docker Compose on your own box: docker compose up -d, then put a TLS
terminator in front (Caddy needs two lines:
YOUR-HOST { reverse_proxy localhost:8080 }) and set BASE_URL to the
public address. Fly.io works like Railway: volume at /data, the app name
gives the address.
Open the address. A fresh server shows a setup page.
The setup page lists the exact values Enable Banking's form asks for: the redirect URL, a description for the consent screen, and the privacy and terms URLs, all pointing at your server. At https://enablebanking.com/cp/applications create an application with them:
.pem file downloads once when you
save; that is the key. The application id (a UUID) is shown after saving.Back on the setup page: paste the application id, choose the .pem file, pick
a password of twelve characters or more. Everything is stored on the volume,
and the page turns into a status page showing the connector URL for Claude.
Prefer configuration by environment? Set these and the setup page never appears:
| Variable | Value |
|---|---|
EB_APP_ID | the application id |
EB_PRIVATE_KEY | the .pem contents, base64: base64 -i app.pem | tr -d '\n' |
ADMIN_PASSWORD_HASH | output of npm run hash-password (or set ADMIN_PASSWORD) |
BASE_URL | https://YOUR-HOST (Railway and Fly set this for you) |
DEFAULT_COUNTRY | your country code, e.g. DK |
APP_NAME | optional, the name shown on the sign-in and status pages (default BankMCP™) |
Optional: NOTIFY_WEBHOOK_URL for watch notifications and sign-in alerts (a
Slack incoming webhook works). Full list in .env.example.
npm run check verifies a configuration from a terminal.
In claude.ai (or the desktop app): Settings → Connectors → Add custom
connector. Name it BankMCP™, paste https://YOUR-HOST/mcp, save, then click
Connect. Your server shows a password page; enter the admin password. That
is the only login you will do.
In Claude Code:
claude mcp add --transport http bank https://YOUR-HOST/mcp
then run /mcp inside Claude Code to sign in.
In Claude, say "connect my bank" (or use the connect-bank prompt). Claude
looks up your bank, gives you a link, you log in at the bank and approve, and
the accounts appear. Consents last up to 180 days; Claude tells you when one
is about to expire and the same conversation renews it.
Give accounts labels ("Everyday", "Joint expenses", "Mortgage") when Claude suggests them. Every tool accepts labels instead of ids.
Enable Banking's production environment normally requires a contract, but it has a restricted mode for accessing your own accounts, explicitly allowed for individual non-commercial use. After registering a Production application:
Read the Restriction of Use section of Enable Banking's Terms of Service before you rely on it: restricted mode is for your own accounts, not for offering a service to others. This project does not change those terms.
Tools (all read-only):
| Tool | What it does |
|---|---|
list_banks, start_consent, consent_status, disconnect_bank | connect and manage banks |
list_accounts, set_account_label | accounts with booked balances; your own names for them |
get_balances | booked and available balance for one account |
get_transactions | signed amounts, one counterparty, one description; paginated |
create_watch, list_watches, delete_watch, check_watches | background rules with webhook notifications |
Prompts: connect-bank, monthly-summary, build-budget,
subscription-audit, unusual-transactions.
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗