bank-mcp
🏦 bank-mcp
为您的 AI 助手提供银行账户的安全、只读访问权限。
大多数人通过登录银行门户网站、下载 CSV 文件并构建电子表格来管理财务。bank-mcp 消除了这种繁琐,让您的 AI 助手可以通过自然语言对话直接查询您的银行账户——包括余额、交易记录和消费明细。它通过 模型上下文协议 (Model Context Protocol) 连接到真实的银行 API,因此任何兼容 MCP 的客户端(如 Claude Code、Claude Desktop 等)都可以理解您的财务状况。
5 个提供商,15,000 多家机构 — 覆盖美国和欧洲银行
设计上只读 — 无写入权限,无法进行转账或修改
适用于任何 MCP 客户端 — Claude Code、Claude Desktop、Cursor 等
插件式架构 — 100 行代码内即可添加您自己的提供商
目录
支持的提供商
提供商 | 地区 | 机构数量 | 认证方式 | 设置难度 |
欧洲 | 2,000+ | RSA 密钥 + 会话 | 中等 | |
美国 | 7,000+ | mTLS 证书 | 中等 | |
美国 / 加拿大 / 欧洲 | 12,000+ | 客户端 ID + 密钥 | 简单 | |
欧洲 | 3,400+ | OAuth2 令牌 | 简单 | |
Mock | 演示 | — | 无 | 即时 |
美国银行
通过 Plaid 和 Teller 支持 — 覆盖美国前 20 大机构及数千家其他机构:
JPMorgan Chase · Bank of America · Wells Fargo · Citibank · Capital One · U.S. Bank · PNC · Truist · Goldman Sachs · TD Bank · Citizens · Fifth Third · M&T Bank · Huntington · KeyBank · Ally · Regions · BMO · American Express · USAA
欧洲银行
通过 Enable Banking 和 Tink 支持 — 覆盖欧盟和英国的主要银行:
HSBC · BNP Paribas · Deutsche Bank · ING · Crédit Agricole · Santander · Société Générale · UniCredit · Intesa Sanpaolo · Barclays · Lloyds · BBVA · CaixaBank · Commerzbank · Rabobank · ABN AMRO · Swedbank · Handelsbanken · Nordea · PKO Bank Polski
快速入门
1. 运行设置向导
npx @bank-mcp/server init交互式向导将引导您完成所有步骤——提供商选择、凭据输入、银行授权和账户验证——所有这些都在精美的终端 UI 中完成:
┌ bank-mcp — Connect your bank account
│
◇ Choose your banking provider
│ Plaid / Teller / Tink / Enable Banking
│
◇ Environment
│ Sandbox / Development / Production
│
◇ Found 3 account(s) ─────────────────────────╮
│ ****1591 (Bank of America Platinum Card) │
│ ****3588 (Bank of America My Checking) │
│ ****2450 (Bank of America Essential Savings)│
├───────────────────────────────────────────────╯
│
└ Setup complete!2. 添加到您的 MCP 客户端
设置完成后,向导会询问您使用的 MCP 客户端并显示确切的配置:
Claude Code — 一条命令:
claude mcp add bank -- npx @bank-mcp/serverCursor — 添加到
.cursor/mcp.jsonWindsurf — 添加到
~/.codeium/windsurf/mcp_config.jsonGemini CLI — 添加到
~/.gemini/settings.jsonCodex CLI — 添加到
~/.codex/config.json
使用其他工具? 请参阅 客户端设置 以获取所有支持的客户端,包括 Claude Desktop、VS Code 和 Zed。
3. 尝试一下
用自然语言向您的 AI 助手询问您的财务状况:
"What's my checking account balance?"
"Show my spending by category this month"
"Find all Amazon purchases over $50"
"Compare my spending this month vs last month"演示模式
还没有银行凭据?从真实的模拟数据开始:
npx @bank-mcp/server --mock这将启动一个模拟提供商,生成确定性的示例账户和交易——非常适合在连接真实账户之前测试您的设置或在 bank-mcp 之上进行构建。
客户端设置
bank-mcp 适用于任何兼容 MCP 的客户端。请在下方选择您的工具。
Claude Code
添加到项目根目录的 .mcp.json(或所有项目的 ~/.claude/.mcp.json):
{
"mcpServers": {
"bank": {
"command": "npx",
"args": ["@bank-mcp/server"]
}
}
}或通过 CLI 添加:
claude mcp add bank -- npx @bank-mcp/serverClaude Desktop
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"bank": {
"command": "npx",
"args": ["@bank-mcp/server"]
}
}
}配置文件位置:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Cursor
添加到项目根目录的 .cursor/mcp.json(或全局的 ~/.cursor/mcp.json):
{
"mcpServers": {
"bank": {
"command": "npx",
"args": ["@bank-mcp/server"]
}
}
}VS Code (Copilot)
添加到工作区中的 .vscode/mcp.json:
{
"servers": {
"bank": {
"type": "stdio",
"command": "npx",
"args": ["@bank-mcp/server"]
}
}
}Windsurf
添加到 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"bank": {
"command": "npx",
"args": ["@bank-mcp/server"]
}
}
}OpenAI Codex CLI
添加到 ~/.codex/config.toml(或项目中的 .codex/config.toml):
[mcp_servers.bank]
command = "npx"
args = ["@bank-mcp/server"]或通过 CLI 添加:
codex mcp add bank -- npx @bank-mcp/serverGemini CLI
添加到 ~/.gemini/settings.json(或项目中的 .gemini/settings.json):
{
"mcpServers": {
"bank": {
"command": "npx",
"args": ["@bank-mcp/server"]
}
}
}Zed
添加到您的 Zed settings.json:
{
"context_servers": {
"bank": {
"command": {
"path": "npx",
"args": ["@bank-mcp/server"]
}
}
}
}没看到您的工具? bank-mcp 使用标准的 MCP stdio 传输。任何支持 MCP stdio 服务器的客户端都可以使用
npx @bank-mcp/server作为命令进行连接。
可用工具
工具 | 描述 | 关键参数 |
| 列出所有连接的银行账户 |
|
| 获取带有过滤条件的交易记录 |
|
| 对描述和商户进行全文搜索 |
|
| 当前余额和可用余额 |
|
| 按商户或类别分组的支出 |
|
截图
以下所有示例均使用带有模拟提供商的 Claude Code (npx @bank-mcp/server --mock)。
列出账户 — "列出我的银行账户"

查询余额 — "我当前的余额是多少?"

交易历史 — "显示我过去 15 天的交易"

搜索交易 — "查找过去 2 周内所有的星巴克消费"

按类别支出 — "显示我本月按类别划分的支出"

热门商户 — "我在哪些商户消费最多?"

订阅跟踪 — "显示我的定期订阅"

杂货比较 — "比较 Trader Joe's 和 Whole Foods 的支出"

完整财务状况 — "给我看我二月份的完整财务状况"

架构
文件结构
~/.bank-mcp/
config.json # Connections & credentials (permissions: 600)
keys/ # RSA keys and certificates
src/
providers/
base.ts # Abstract BankProvider class
registry.ts # Provider registration
enable-banking/ # PSD2 via Enable Banking API
teller/ # US banks via mTLS
plaid/ # US/CA/EU via Plaid API
tink/ # EU Open Banking via Tink API
mock/ # Deterministic fake data
tools/ # MCP tool implementations
utils/
cache.ts # In-memory TTL cache
http.ts # Fetch with timeout + retry提供商接口
每个提供商都扩展了相同的抽象类,使得添加新的集成变得非常简单:
abstract class BankProvider {
abstract listAccounts(config): Promise<BankAccount[]>;
abstract listTransactions(config, accountId, filter?): Promise<Transaction[]>;
abstract getBalance(config, accountId): Promise<Balance[]>;
abstract getConfigSchema(): ConfigField[];
}提供商设置指南
Enable Banking (PSD2)
您需要:
[ ] 一个已注册应用的 Enable Banking 账户
[ ] 您的 RSA 私钥(
.pem文件,创建应用时下载)
npx @bank-mcp/server init
# Select: Enable Banking → enter App ID + key path
# Pick your country → select your bank
# Log in at your bank → paste the redirect URL
# → Session created, accounts verified!提示: 向导处理整个 OAuth 流程——重定向 URI 设置、银行选择和会话创建。会话在 90 天后过期(PSD2 法规);重新运行
init即可刷新。
Teller (美国银行)
您需要:
[ ] 一个 Teller 开发者账户
[ ] 您的应用程序 ID(来自 Teller 控制面板)
npx @bank-mcp/server init
# Select: Teller → enter Application ID
# Pick environment (sandbox for testing)
# → Teller Connect opens in your browser
# → Link your bank, token captured automatically!提示: 从 沙盒 (sandbox) 开始——无需证书,即时测试数据。对于开发/生产环境,向导会提示输入 mTLS 证书路径。免费层级支持多达 100 个实时连接。
Plaid (美国/加拿大/欧洲)
您需要:
[ ] 一个 Plaid 开发者账户(免费注册)
[ ] 您的客户端 ID 和密钥(来自 Plaid 控制面板)
npx @bank-mcp/server init
# Select: Plaid → enter client ID + secret
# Pick environment (sandbox for testing)
# → Sandbox: token created automatically!
# → Dev/Prod: paste an existing access token提示: 从 沙盒 (sandbox) 开始——向导会自动创建一个测试令牌,无需浏览器。Plaid 提供最丰富的交易分类——104 个子类别及置信度评分——非常适合基于 LLM 的支出分析。
Tink (欧洲开放银行)
您需要:
npx @bank-mcp/server init
# Select: Tink → enter Client ID + Secret
# Pick your market (country)
# → Tink Link opens in your browser
# → Connect your bank, paste redirect URL提示: Tink 覆盖欧洲 3,400 多家银行。对于沙盒,请使用带有测试凭据的演示银行(向导中显示)。交易包含带有商户丰富信息的 PFM 类别。
缓存
所有数据均在内存中缓存(无磁盘持久化——缓存随进程结束而消失):
数据 | TTL | 原因 |
账户列表 | 1 小时 | 账户很少更改;最小化 API 调用 |
交易记录 | 15 分钟 | 平衡新交易与新鲜度 |
余额 | 5 分钟 | 对时间最敏感;用户期望获得当前数据 |
缓存是按连接和按账户进行的。重启服务器会清除所有缓存。
多连接
根据需要配置任意数量的银行连接——甚至可以跨不同的提供商:
{
"connections": [
{ "id": "ing-main", "provider": "enable-banking", "..." : "..." },
{ "id": "chase-checking", "provider": "plaid", "..." : "..." },
{ "id": "revolut", "provider": "tink", "..." : "..." }
]
}所有工具都接受一个可选的 connectionId 参数来定位特定的连接。如果省略,则会查询每个连接并合并结果——因此“显示我所有的余额”会自动跨银行工作。
安全性
设计原则
bank-mcp 处理敏感的财务凭据。其安全态势建立在最小化攻击面之上:
设计上只读 —
BankProvider接口仅公开读取方法 (listAccounts,listTransactions,getBalance)。没有写入方法——没有转账、没有账户修改、没有支付发起。这是在类型层面强制执行的,而不是通过约定。无网络监听器 — bank-mcp 作为 stdio 进程(stdin/stdout)运行,而不是 HTTP 服务器。没有开放端口,没有来自网络的攻击面。
最小依赖 — 仅 4 个运行时依赖 (
@modelcontextprotocol/sdk,@clack/prompts,jsonwebtoken,zod)。更少的依赖意味着更少的供应链风险。开源 — 每一行代码都是可审计的。没有混淆代码,没有编译后的二进制文件,没有遥测。
凭据存储
~/.bank-mcp/config.json配置文件创建时具有600权限(仅所有者可读写)RSA 密钥和证书存储在
~/.bank-mcp/keys/中,具有相同的限制性权限凭据 从不被记录 — 服务器在任何调试输出之前会清理配置对象
进程生命周期之外没有凭据缓存——当服务器停止时,凭据仅存在于磁盘上
数据流
Your Bank's API ← HTTPS → bank-mcp (local process) ← stdio → MCP Client (local)交易数据直接从您的银行 API 流向您的本地 MCP 客户端
没有任何数据远程存储 — 没有云中继,没有代理服务器,没有中间存储
无遥测 — 零分析,无崩溃报告,无使用跟踪,无回传数据
内存缓存是按进程的,并在服务器停止时消失
您的 MCP 客户端看到了什么
MCP 客户端(Claude、Cursor 等)接收包含以下内容的结构化工具结果:
账户名称、类型和余额
交易描述、金额、日期和类别
支出汇总
LLM 在其上下文窗口中处理这些信息。请注意,云托管的 LLM 会将您的对话(包括工具结果)发送到其服务器。如果这令人担忧,请使用本地模型或查看您提供商的数据保留政策。
建议
轮换令牌 — 如果您的银行提供商支持令牌轮换,请启用它
**先使用
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/elcukro/bank-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server