🏦 mcp银行
让你的AI助手安全、只读地访问你的银行账户。
](https://www.npmjs.com/package/@bank-mcp/server)   ](https://nodejs.org/) 
______________________________________________________________________
大多数人通过登录银行门户、下载CSV和构建电子表格来管理他们的财务。银行mcp通过让你的人工智能助手通过自然对话直接查询你的银行账户——余额、交易、支出明细——消除了这种摩擦。它通过以下方式连接到真实的银行API 模型上下文协议 因此,任何兼容MCP的客户端(Claude Code、Claude Desktop等)都可以了解您的财务状况。
- 5家供应商,15000多家机构 --涵盖美国和欧洲银行
- 按设计只读 --无写访问、无传输、无修改
- 适用于任何MCP客户端 --克劳德代码、克劳德桌面、光标等
- 可插拔架构 --在100行以内添加自己的提供商
目录
支持的提供商
| 提供者 | 地区 | 机构 | 授权方式 | 设置难度 |
|---|---|---|---|---|
| 启用银行服务 | 欧洲 | 2000+ | RSA密钥+会话 | 中等 |
| 出纳员 | 美国 | 7000+ | mTLS证书 | 中等 |
| 格子呢 | 美国/加拿大/欧盟 | 12000+ | 客户ID+机密 | 简单 |
| 叮当 | 欧洲 | 3400+ | OAuth2代币 | 简单 |
| 模拟 | 演示 | -- | 无 | 即时 |
美国银行
通过Plaid和Teller提供支持,覆盖美国前20大机构和数千家机构:
摩根大通·美国银行·富国银行·花旗银行·Capital One·美国银行、PNC·Truist·高盛·道明银行·Citizens·Fifth Third·M&T Bank·Huntington·KeyBank·Ally·Regions·BMO·American Express·USAA
欧洲银行
通过Enable Banking和Tink提供支持,覆盖欧盟和英国的主要银行:
汇丰银行、法国巴黎银行、德意志银行、荷兰国际集团、法国农业信贷银行、桑坦德银行、法国兴业银行、联合信贷银行、联合圣保罗银行、巴克莱银行、劳埃德银行、西班牙对外银行、CaixaBank、德国商业银行、荷兰合作银行、荷兰银行、瑞典银行、Handelsbanken、北欧银行、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 mcp add bank -- npx @bank-mcp/server - 光标 --添加到
.cursor/mcp.json - 帆板运动 --添加到
~/.codeium/windsurf/mcp_config.json - Gemini CLI --添加到
~/.gemini/settings.json - Codex CLI --添加到
~/.codex/config.json
使用不同的工具? 看 客户端设置 适用于所有支持的客户端,包括Claude Desktop、VS Code和Zed。
3.试试看
用自然语言向你的人工智能助手询问你的财务状况:
"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这将与一个模拟提供者一起启动,该提供者生成确定性的示例帐户和交易,非常适合在连接真实帐户之前测试您的设置或在银行mcp上构建。
客户端设置
bank mcp可与任何兼容mcp的客户端配合使用。选择下面的工具。
克劳德代码
增添 .mcp.json 在项目根目录中(或 ~/.claude/.mcp.json 对于所有项目):
{
"mcpServers": {
"bank": {
"command": "npx",
"args": ["@bank-mcp/server"]
}
}
}或者通过CLI添加:
claude mcp add bank -- npx @bank-mcp/server克劳德桌面
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"bank": {
"command": "npx",
"args": ["@bank-mcp/server"]
}
}
}配置文件位置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json
光标
增添 .cursor/mcp.json 在项目根目录中(或 ~/.cursor/mcp.json 全球):
{
"mcpServers": {
"bank": {
"command": "npx",
"args": ["@bank-mcp/server"]
}
}
}VS代码(副本)
增添 .vscode/mcp.json 在您的工作空间中:
{
"servers": {
"bank": {
"type": "stdio",
"command": "npx",
"args": ["@bank-mcp/server"]
}
}
}帆板运动
增添 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"bank": {
"command": "npx",
"args": ["@bank-mcp/server"]
}
}
}OpenAI Codex命令行界面
增添 ~/.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 settings.json:
{
"context_servers": {
"bank": {
"command": {
"path": "npx",
"args": ["@bank-mcp/server"]
}
}
}
}没看到你的工具? 银行mcp使用标准的mcp stdio传输。任何支持MCP stdio服务器的客户端都可以使用 npx @bank-mcp/server 作为命令。可用工具
| 工具 | 说明 | 关键参数 |
|---|---|---|
list_accounts | 列出连接中的所有银行账户 | connectionId? |
list_transactions | 通过过滤获取交易 | accountId, from?, to?, minAmount?, maxAmount? |
search_transactions | 关于描述和商家的全文搜索 | query, accountId?, from?, to? |
get_balance | 当前和可用余额 | accountId, connectionId? |
spending_summary | 按商家或类别分组的费用 | accountId, from?, to?, groupBy? |
截图
下面的所有示例都使用Claude Code和模拟提供者(npx @bank-mcp/server --mock).
列出帐户 — *“列出我的银行账户”*
检查余额 — *“我目前的余额是多少?”*
交易历史记录 — *“显示我过去15天的交易记录”*
Recent transactions with spending breakdown
搜索交易记录 — *“查找过去两周内星巴克的所有购物记录”*
按类别划分的支出 — *“按类别显示我本月的支出”*
More examples (merchant analysis, subscriptions, grocery comparison, financial overview)
顶级商家 — *“我在哪些商家消费最多?”*
订阅跟踪 — *“显示我的定期订阅”*
Recurring subscription analysis
杂货比较 — *“比较Trader Joe’s与Whole Foods的支出”*
Trader Joe's vs Whole Foods analysis
完整的财务状况 — *“给我完整的2月份财务状况”*
Monthly income, expenses, and savings
建筑
文件结构
~/.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;
abstract listTransactions(config, accountId, filter?): Promise;
abstract getBalance(config, accountId): Promise;
abstract getConfigSchema(): ConfigField[];
}提供商设置指南
启用银行服务(PSD2)
您需要什么:
- 一 启用银行服务 注册应用程序的帐户
- \[\]您的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 刷新。出纳员(美国银行)
您需要什么:
- A. 出纳员 开发人员帐户
- \[\]您的应用程序ID(来自柜员仪表板)
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!提示: 从...开始 沙盒 --无需证书,即时测试数据。对于开发/生产,向导会提示输入mTLS证书路径。免费套餐最多支持100个实时连接。
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提示: 从...开始 沙盒 --向导自动创建测试令牌,无需浏览器。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覆盖了欧洲3400多家银行。对于沙盒,使用带有测试凭据的演示银行(如向导所示)。交易包括具有商家丰富性的PFM类别。
缓存
所有数据都缓存在内存中(没有磁盘持久性——缓存随进程一起死亡):
| 数据 | TTL | 为什么 |
|---|---|---|
| 帐户列表 | 1小时 | 帐户很少更改;最小化API调用 |
| 交易 | 15分钟 | 平衡新交易与新鲜度 |
| 平衡 | 5分钟 | 时间最敏感;用户期望当前数据 |
缓存是针对每个连接和每个帐户的。重新启动服务器会清除所有缓存。
多个连接
根据需要配置尽可能多的银行连接,甚至跨不同的提供商:
{
"connections": [
{ "id": "ing-main", "provider": "enable-banking", "..." : "..." },
{ "id": "chase-checking", "provider": "plaid", "..." : "..." },
{ "id": "revolut", "provider": "tink", "..." : "..." }
]
}所有工具都接受可选 connectionId 参数以针对特定连接。如果省略,则会查询每个连接并合并结果,因此“显示我的所有余额”会自动跨银行工作。
安全
设计原则
mcp银行处理敏感的财务凭证。其安全态势建立在尽量减少攻击面之上:
- 按设计只读 --the
BankProvider接口只公开读取方法(listAccounts,listTransactions,getBalance).没有写入方法——没有转账,没有账户修改,没有付款启动。这是在类型级别强制执行的,而不是按照惯例。 - 无网络侦听器 --bank mcp作为stdio进程(stdin/stdout)运行,而不是HTTP服务器。没有开放端口,没有来自网络的攻击面。
- 最小依赖性 --只有4个运行时依赖项(
@modelcontextprotocol/sdk,@clack/prompts,jsonwebtoken,zod).更少的依赖意味着更少的供应链风险。 - 开源 --每一行都是可审计的。没有混淆的代码,没有编译的blob,没有遥测。
凭据存储
- 配置文件位于
~/.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会将您的对话(包括工具结果)发送到其服务器。如果这是一个问题,请使用本地模型或查看您的提供商的数据保留政策。
建议
- 旋转令牌 --如果您的银行服务提供商支持代币轮换,请启用它
- 先使用沙盒 --在连接真实账户之前,使用模拟数据或Plaid沙盒测试您的设置
- 查看权限 --确保
~/.bank-mcp/不是世界可读的(ls -la ~/.bank-mcp/) - 范围访问 --如果您的提供商支持,请请求所需的最小范围(只读帐户和事务访问)
报告漏洞
如果您发现安全问题,请直接向维护人员发送电子邮件,而不是公开问题。看 贡献.md 联系方式。
添加新提供者
可插拔架构使添加对其他银行API的支持变得简单:
- 创建您的提供商 在
src/providers/your-provider/index.ts - 扩展
BankProvider--执行listAccounts,listTransactions,getBalance,以及getConfigSchema - 注册它 在
src/providers/registry.ts - 添加初始化流 在
src/init/flows/your-provider.ts--交互式设置使用@clack/prompts
看 src/providers/enable-banking/ 作为参考实现。模拟提供商 src/providers/mock/ 对于理解预期的数据形状也很有用。
故障排除
npx 正在运行旧版本
npx缓存包。强制使用最新版本:
npx @bank-mcp/server@latest读取配置时“权限被拒绝”
配置文件应该是用户可读的:
ls -la ~/.bank-mcp/config.json
# Should show: -rw------- (600)
# Fix: chmod 600 ~/.bank-mcp/config.json“会话已过期”(启用银行服务)
PSD2会话在90天后过期。重新运行init向导:
npx @bank-mcp/server init
# Select your existing Enable Banking connection to update the sessionMCP客户端中未显示工具
- 验证服务器是否启动:
npx @bank-mcp/server --mock(应在stdout上输出MCP协议) - 检查配置文件路径是否与客户端的预期位置匹配
- 添加配置后重新启动MCP客户端
- 检查客户端的MCP日志是否存在连接错误
“ETLS”或证书错误(出纳员)
Teller需要mTLS。验证您的证书文件:
ls -la ~/.bank-mcp/keys/teller/
# Should contain: certificate.pem, private_key.pem
# Both should be chmod 600发展
git clone https://github.com/elcukro/bank-mcp.git
cd bank-mcp
npm install
npm test # Run tests (vitest)
npm run build # Compile TypeScript
npm run dev # Watch mode (recompile on change)
npm run lint # ESLint贡献
欢迎投稿!请看 贡献.md 作为指导方针。
如果要添加新的提供者,请先打开一个问题来讨论方法——我们希望确保集成符合项目的架构。
许可证
麻省理工学院 --随心所欲地使用它。
______________________________________________________________________
Built for the Model Context Protocol ecosystem
