关于 wise-mcp
wise-mcp 是连接 Wise 账户与 AI 助手的 MCP 服务,供用户查询余额、卡片消费、转账和收款人,也可准备转账等变更。写入操作需在聊天中确认,转账还须由用户在 Wise 应用中付款。
主要功能
- 01查询多个人与商业账户资料
- 02查看余额、Jars 与交易
- 03筛选转账、收款人和汇率
- 04两步准备并确认写入操作
- 05会话管理与审计日志
适用场景
- 01汇总特定月份的卡片消费
- 02查询不同币种的余额与 Jars
- 03核对转账记录和汇率
- 04准备转账并在 Wise 应用中付款
MCP 相关
提供 14 个 MCP 工具,供客户端读取 Wise 数据并准备或确认写入操作。可在本地连接 MCP 客户端,也可自托管为远程连接器;所有写入操作均需两步确认。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @blanketbyte/wise-mcpWISE_API_TOKEN密钥Wise personal API token (Wise → Settings → API tokens). Full access to prepare transfers, Read only for answers.WRITES_ENABLEDSet to false for read-only. Writes are always two-step and transfers are paid by you in the Wise app.MAX_TRANSFER_AMOUNTOptional max amount per transfer, in the source currency.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
14收录的工具列表 · 更新于 3 周前
此工具无需参数。
详细介绍
Wise MCP
向 Claude 或 ChatGPT 询问你的 Wise 资金情况。
为 Wise 余额、银行卡付款、转账和收款人提供最简单、最全面的 MCP 服务,还能准备需要你两次确认的转账。
只需运行一条 npx 命令,即可在本地运行(Claude Desktop、Claude Code、Codex、Cursor……),也可以将其托管为 Claude 和 ChatGPT 的自定义连接器。
“我 9 月在杂货上花了多少钱?” “我的 EUR 罐子里还剩多少?” “显示我今年转给 Mario 的转账记录,以及我获得的汇率。” “给 Mario 转 120 EUR,作为晚餐费用。”
只需提供一次 Wise API 令牌,你的助手就能回答有关所有 Wise 个人和企业资料的问题。它还可以准备转账、新增收款人和取消操作。每项变更都需要你在聊天中明确批准;只有你在 Wise 应用中付款后,转账才会真正执行。
为什么选择它
这是将 Wise 连接到 AI 助手最简单的方式,也是我们所知功能最全面的 Wise MCP 服务(截至 2026 年 10 月):
- 一个令牌,无需合作伙伴账户。 其他服务需要 Wise 合作伙伴 OAuth 凭据,或者只能提供基本的只读功能。这里无论本地运行还是托管,只需个人 API 令牌即可。
- 真实的消费记录。 活动动态涵盖银行卡付款,并显示清晰的商户名称和金额,也包括个人和企业资料中的转账、货币兑换、返现和罐子。
- 值得信赖的写入操作。 汇率报价、新增收款人、转账和取消操作都采用两步流程,并在聊天中获得批准;转账由你在 Wise 应用中付款。
- 随处可用。 可通过
npx用于 Claude Desktop、Claude Code、Codex 和 Cursor,也可一键安装 Claude Desktop 扩展,或自托管连接器,供网页和移动端上的 Claude 与 ChatGPT 使用。 - 为真实账户打造。 提供 14 个工具、加密的令牌存储、会话管理、审计日志,以及针对两种运行模式的端到端测试。
选择运行方式
| 本地 | 远程(可自托管) | |
|---|---|---|
| 适用客户端 | Claude Desktop、Claude Code、Codex、Cursor、VS Code,以及任何 MCP 客户端 | Claude(网页、桌面、移动端)和 ChatGPT 自定义连接器 |
| 设置 | 运行一条 npx 命令,或一键安装 Claude Desktop 扩展 | 在 HTTPS 后部署容器(Dokploy、Easypanel、Docker Compose) |
| 令牌 | 配置在应用的 MCP 设置中,保存在你的设备上 | 在登录页面粘贴,随后加密存储在你的服务上 |
| 指南 | 本地运行 | 部署 |
目录
工具
读取
| 工具 | 返回内容 |
|---|---|
list_profiles | 令牌可访问的所有 Wise 个人资料(个人、企业) |
list_balances | 默认显示所有个人资料中各币种的余额,以及 Jars |
get_transactions | 按时间倒序排列的活动记录:卡片支付、转账、货币兑换、返现、直接扣款。商户名称经过清理,金额为数字,并标明 in / out / neutral 方向。可按类型、状态、日期范围和文本筛选;支持游标分页 |
list_transfers | 按时间倒序排列的转账,包含两种币种、备注、状态和收款人姓名 |
get_transfer | 单笔转账详情:汇率、金额、备注、收款人 |
list_recipients | 已保存的收款人,包含账号 / IBAN,可按币种和文本筛选 |
get_exchange_rate | Wise 中间市场汇率,可查询当前汇率或过去某个日期的汇率 |
写入:始终分两步
| 工具 | 功能 |
|---|---|
get_quote | 计算转账或货币兑换的报价:汇率、费用、到账金额、预计到账时间。不做任何更改 |
get_recipient_requirements | 查询 Wise 针对某币种的收款人所需银行信息(IBAN、排序代码等) |
prepare_transfer | 为转账到已保存的收款人生成报价,检查 Wise 的路线要求和你的余额,并返回摘要和一次性代码 |
prepare_recipient | 验证新收款人并返回摘要和一次性代码 |
prepare_cancel_transfer | 准备取消尚未付款的转账 |
confirm_action | 执行已准备好的操作。仅在你批准确切的摘要后执行 |
discard_action | 丢弃已准备好的操作 |
运行时会根据令牌发现个人资料。每个工具都接受可选的 profile:个人资料 ID、personal、business,或个人资料名称的一部分。
工作原理
本地运行时,服务会作为 MCP 客户端的子进程在你的计算机上运行,并从 WISE_API_TOKEN 读取令牌。它不托管在任何地方,也无需登录。
远程运行时,Wise 不向个人提供 OAuth,因此该服务会作为 Claude 和 ChatGPT 的 OAuth 2.1 授权服务;“登录”时,你只需粘贴一次 Wise 个人 API 令牌。
sequenceDiagram
autonumber
participant C as Claude / ChatGPT
participant S as Wise MCP
participant W as Wise API
C->>S: Dynamic client registration (trusted redirect hosts only)
C->>S: /authorize (PKCE)
S-->>C: Login page: token + "stay connected for"
Note over C,S: You paste a Wise API token, pick 5 / 15 / 30 / 90 days or until revoked
S->>W: GET /v1/me
W-->>S: Wise user id
S->>S: Allowlist check, token sealed with AES-256-GCM
S-->>C: Authorization code → access + refresh tokens
C->>S: MCP tool calls (Bearer, 1 h tokens, rotating refresh)
S->>W: Reads, and writes only after confirm_action
- 会话时长由每次登录时选择。访问令牌有效期为一小时;刷新令牌每次使用时都会轮换,有效期与会话完全相同。
- **
/sessions**会列出 Wise 账户的所有已连接会话,并允许你撤销一个或全部会话。再次粘贴 Wise 令牌即可登录;该令牌仅用于验证你的身份,绝不会被存储。访问权限通过仅限 HTTP 的 Cookie 保持 15 分钟。 - 在 Wise 中撤销也有效:前往 Wise → Settings → API tokens,删除令牌。下次调用会失败并显示明确的错误消息,服务会删除存储的令牌以及使用过该令牌的所有会话。
每次写入操作均需两次确认
prepare_* ──▶ summary + code (TX-…, RCP-…, CXL-…) ──▶ you approve in chat ──▶ confirm_action
nothing written to Wise yet ① created in Wise
│
transfers only: you pay it in the Wise app ◀──────────┘
② money moves only now
- 代码只能使用一次,10 分钟后过期,且只能在生成代码的会话中使用。
- 创建的转账均为未付款状态(
incoming_payment_waiting)。无论如何,Wise 不允许个人令牌为 EU/UK 账户中的转账付款,因此最后一步“Pay”始终由你完成。在此之前,你可以使用prepare_cancel_transfer或在应用中取消转账。 - 每次准备、确认、丢弃和失败都会追加记录到
audit.log(本地路径为~/.wise-mcp/,托管时则写入数据卷)。
安全模型
| ✋ 两步写入 | 每次写入都要经过准备 → 在聊天中由你批准 → 使用一次性代码确认。之后,你还需要在 Wise 应用中支付转账。 |
| 🔒 只读选项 | WRITES_ENABLED=false 会移除所有写入工具。使用 Wise Read only 令牌时,写入工具会返回清晰的错误消息,读取功能仍可正常使用。 |
| 💶 限额 | 可选设置 MAX_TRANSFER_AMOUNT,限制单笔转账金额。Wise 自身的路线检查(用途、资金来源)会在发放代码前执行。 |
| 🧾 允许列表 | 只有 ALLOWED_WISE_USERS 中的 Wise 用户 ID 才能连接。其他令牌都会被拒绝,且不会存储任何相关信息。移除某个 ID 后,该用户现有的会话也会被终止。 |
| 🗝️ 静态加密 | Wise 令牌使用 TOKEN_ENCRYPTION_KEY 通过 AES-256-GCM 加密。OAuth 令牌仅以 SHA-256 哈希形式存储。状态文件和审计日志仅允许所有者访问(0600),并以原子方式写入。 |
| 🧹 最少保留 | 一旦没有活动会话使用某个 Wise 令牌,就会立即删除:撤销后、会话过期后,或 Wise 拒绝该令牌时。 |
| 🔁 强化 OAuth 安全 | 使用 PKCE(S256)、一次性登录码和授权码、轮换刷新令牌;重定向主机仅限 claude.ai、claude.com、chatgpt.com 和 localhost,确保授权码只能发送到你信任的应用。 |
| 🚦 速率限制 | 令牌表单(/login、/sessions/login)每个 IP 每 15 分钟允许尝试 20 次;OAuth 端点使用 MCP SDK 的限制。 |
| 🔐 仅限 HTTPS | 如果 PUBLIC_URL 不是 HTTPS,服务将拒绝启动;如果页面通过纯 HTTP 打开,每个页面都会显示红色警告,避免有人在未加密的页面上粘贴 Wise 令牌。 |
| 🛡️ 页面 | 严格的 CSP(default-src 'none',form-action 仅限服务和客户端自身的重定向源)、X-Frame-Options: DENY、no-store、不发送 referrer。 |
警告
请勿将
TOKEN_ENCRYPTION_KEY纳入数据卷的备份。更改该密钥会导致已存储的令牌无法读取:重新连接即可。
本地运行
需要 Node.js 20 或更高版本。请先创建令牌:Wise → Settings → API tokens → Add new token(准备转账和收款人需要 Full access,仅获取答复则选择 Read only)。
Claude Desktop 扩展(一键安装)
从最新版本下载 wise-mcp-<version>.mcpb 并打开。Claude Desktop 会提示你输入令牌(安全存储,不会保存在纯文本配置文件中),并询问是否允许准备转账。
Claude Code
claude mcp add wise -e WISE_API_TOKEN=your-token -- npx -y @blanketbyte/wise-mcp
Codex
将以下内容添加到 ~/.codex/config.toml:
[mcp_servers.wise]
command = "npx"
args = ["-y", "@blanketbyte/wise-mcp"]
env = { WISE_API_TOKEN = "your-token" }
Claude Desktop、Cursor、VS Code 和其他 MCP 客户端
将以下内容添加到客户端的 MCP 配置中(对于 Claude Desktop:Settings → Developer → Edit config):
{
"mcpServers": {
"wise": {
"command": "npx",
"args": ["-y", "@blanketbyte/wise-mcp"],
"env": { "WISE_API_TOKEN": "your-token" }
}
}
}
此仓库也是一个 Agent 插件(plugin.json + mcp.json),因此支持该标准的客户端和目录可以直接安装。请在客户端中设置 WISE_API_TOKEN。
可选环境变量:设置 WRITES_ENABLED=false 可启用只读模式,设置 MAX_TRANSFER_AMOUNT 可限制单笔转账金额。运行 npx @blanketbyte/wise-mcp --help 可查看所有选项。
说明
ChatGPT 只能连接远程服务,因此请为 ChatGPT 使用可自托管配置。
部署
容器通过 3000 端口提供纯 HTTP 服务;请将其置于任何可终止 HTTPS 的服务之后。状态数据(加密令牌、会话)存储在 /data 中。
每次发布都会发布预构建镜像:ghcr.io/blanketbyte/wise-mcp:<version>(或 :latest),支持 linux/amd64 和 linux/arm64。只要你的平台支持镜像,就请使用该镜像,而不是从源代码构建。
Dokploy
- DNS:将一个主机名(例如
wise.example.com)指向你的 Dokploy 服务。 - 应用程序:Create Service → Application,来源 = 此仓库,分支
main,构建类型为 Dockerfile,上下文为.。 - 域名:填写你的主机名,容器端口 3000,开启 HTTPS,证书选择 Let's Encrypt。
- 卷:挂载一个命名卷到
/data(容器以 uid 1000 运行)。 - 环境变量:
PUBLIC_URL=https://wise.example.com ALLOWED_WISE_USERS= # empty on the first deploy, see step 7 TOKEN_ENCRYPTION_KEY= # openssl rand -base64 32 - 部署,然后访问
https://wise.example.com/health检查。 - 查找你的 Wise 用户 ID:先从 Claude 连接一次。Not allowed 页面会显示你的 ID:设置
ALLOWED_WISE_USERS=<id>,重新部署并再次连接。
Easypanel
- DNS:将一个主机名(例如
wise.example.com)指向你的 Easypanel 服务。 - 服务:在一个项目中,选择 + Service → App,将其命名为
wise-mcp。 - 来源:选择 GitHub,填写此仓库的所有者/仓库,分支
main,构建路径/。(或者选择 Git 并填写仓库 URL。) - 构建:选择 Dockerfile,文件为
Dockerfile。 - 环境变量:
PUBLIC_URL=https://wise.example.com ALLOWED_WISE_USERS= # empty on the first deploy, see step 9 TOKEN_ENCRYPTION_KEY= # openssl rand -base64 32 - 域名:添加
wise.example.com,开启 HTTPS,端口 3000。Easypanel 会签发 Let's Encrypt 证书。 - 挂载:添加一个名为
data、挂载路径为/data的卷挂载。如果没有此挂载,每次重新部署都会丢失会话和令牌。 - 部署,然后访问
https://wise.example.com/health检查。 - 查找你的 Wise 用户 ID:从 Claude 或 ChatGPT 连接一次。Not allowed 页面会显示你的 ID:设置
ALLOWED_WISE_USERS=<id>,再次部署并重新连接。
若要在每次推送时自动重新部署,请在服务上启用 Auto Deploy(这会添加一个 GitHub webhook)。
Docker Compose
cp .env.example .env # fill it in
mkdir -p data && sudo chown 1000:1000 data
docker compose up -d --build # listens on 127.0.0.1:3000
连接 Claude
- 在 Wise 中:选择 Settings → API tokens → Add new token。选择 Full access 以准备转账和收款人,或者如果你只想获取解答,则选择 Read only。
- 在 Claude 中:选择 Settings → Connectors → Add custom connector:
https://wise.example.com/mcp - 粘贴令牌,选择保持连接的时长,完成。
ChatGPT:选择 Settings → Apps & Connectors,开启 Developer mode(在 Advanced 下),然后使用相同的 /mcp 地址和 OAuth 身份验证创建一个连接器。同一个登录页面会打开。
你的服务页面
部署后,你的服务有三个可在浏览器中打开的页面。请将 wise.example.com 替换为你自己的地址。
| 页面 | 地址 | 用途 |
|---|---|---|
| 🏠 主页 | https://wise.example.com/ | 显示连接器地址,以及 Claude 和 ChatGPT 的分步说明。打开此页面可检查服务是否正常运行。 |
| 🔑 登录 | 自动打开 | 在 Claude 或 ChatGPT 中添加连接器时会显示。粘贴你的 Wise API 令牌,选择保持连接的时长,然后点击 Connect Wise。你无需自行打开此页面。 |
| 🧾 管理会话 | https://wise.example.com/sessions | 列出所有已连接到你 Wise 账户的应用(Claude、ChatGPT,以及任何设备),并显示连接时间、上次使用时间和过期时间。可以撤销单个会话,也可以一次性全部撤销。若要登录,请粘贴你账户的 Wise API 令牌;该令牌仅用于确认你的身份,不会被存储。 |
常见情况
- “我想断开某台设备或某个应用。” 打开管理会话,点击对应会话旁的 Revoke。
- “我觉得令牌泄露了。” 在 Wise → Settings → API tokens 中删除该令牌。所有使用它的会话都会立即停止工作,服务也会删除其副本。然后使用新令牌重新连接。
- “Claude 或 ChatGPT 提示我重新连接。” 你的会话已过期或被撤销。移除并重新添加连接器;此时会打开登录页面。
- “登录页面显示 Not allowed。” 你的 Wise 账户不在此服务的允许列表中。页面会显示你的 Wise 用户 ID:将其添加到
ALLOWED_WISE_USERS并重新部署。
此外,还可通过 https://wise.example.com/health 进行监控;服务运行时,该地址会返回 {"ok":true}。
配置
| 变量 | 模式 | 默认值 | |
|---|---|---|---|
WISE_API_TOKEN | 本地,必需 | Wise 个人 API 令牌 | |
WRITES_ENABLED | 两者 | true | false 会移除所有写入工具 |
MAX_TRANSFER_AMOUNT | 两者 | (无上限) | 每笔转账的最高金额,以源货币计 |
DATA_DIR | 两者 | 本地为 ~/.wise-mcp,Docker 中为 /data | 审计日志(以及托管模式下的加密令牌和会话) |
PUBLIC_URL | 远程,必需 | 服务的公开 HTTPS 来源 | |
TOKEN_ENCRYPTION_KEY | 远程,必需 | 至少 32 个字符;用于加密存储的 Wise 令牌 | |
ALLOWED_WISE_USERS | 远程 | (无人) | 以逗号分隔的 Wise 用户 ID |
ALLOWED_REDIRECT_HOSTS | 远程 | claude.ai,claude.com,chatgpt.com,localhost,127.0.0.1 | OAuth 客户端可重定向到的主机 |
PORT | 远程 | 3000 |
启动时,服务会记录允许的用户和加密密钥的简短 SHA-256 指纹,让你在不泄露密钥的情况下确认部署的是哪个密钥。
开发
npm install
npm run dev # remote server with tsx watch (needs the remote env vars)
npm test # typecheck + both end-to-end suites
npm run e2e # remote server against a local mock of the Wise API
npm run e2e:stdio # local mode: spawns the CLI like an MCP client would
npm run mcpb # builds release/wise-mcp-<version>.mcpb
远程端到端测试会在模拟 Wise API 旁启动服务,并完整模拟 Claude 执行的所有操作:客户端注册、PKCE 登录、允许列表、会话时长、令牌刷新轮换、静态加密、每个工具(金额解析、分页、筛选器)、两步写入(一次性代码、跨会话隔离、路由要求、取消、审计日志、只读令牌)、/sessions,以及在 Wise 中撤销令牌。stdio 测试套件覆盖 CLI、令牌错误、通过 stdio 使用的每个工具、两步写入、审计日志和只读模式。
发布
推送一个与 package.json 匹配的标签(例如 v1.1.0)。发布工作流会运行测试,通过来源证明将 @blanketbyte/wise-mcp 发布到 npm(通过 GitHub OIDC 进行可信发布,不在任何位置存储 npm 令牌),根据 server.json 将其列入 官方 MCP Registry,将 .mcpb 附加到 GitHub 发布,并将 Docker 镜像推送到 ghcr.io/blanketbyte/wise-mcp。首次发布前,请从 package.json 中移除 "private": true。
项目布局
src/
cli.ts Entry point: `wise-mcp` (stdio) or `wise-mcp serve` (remote)
stdio.ts Local mode over stdin/stdout
index.ts Remote server: icons, OAuth routes, /login, /sessions, /mcp
config.ts Environment validation (shared and remote-only settings)
meta.ts Version, paths, links
crypto.ts AES-256-GCM sealing, cookie signing
tools.ts MCP tools (read + two-step write)
pending.ts Prepared actions and one-time confirmation codes
wise/client.ts Wise API client (retries, idempotent transfers, revocation detection)
wise/service.ts Profiles, balances, activities, transfers, recipients, rates
wise/connections.ts Encrypted per-token connections
auth/provider.ts OAuth 2.1 provider for Claude, token-paste login
auth/store.ts Clients, sessions, hashed tokens
auth/pages.ts Login, /sessions and message pages
public/ Logo, icons, favicon
mcpb/manifest.json Claude Desktop extension manifest
scripts/e2e.ts Remote end-to-end test with a mock Wise API
scripts/e2e-stdio.ts Local (stdio) end-to-end test
scripts/build-mcpb.sh Builds the .mcpb bundle
.github/workflows/ CI, and release to npm + GitHub
限制
个人 API 令牌无法使用所有 Wise 端点。尤其是对于 EU/UK 账户,PSD2 规则会阻止访问余额对账单(因此没有每笔交易的余额)和卡片列表。活动动态包含银行卡付款,因此日常消费相关问题都能正常处理。
在写入方面,个人令牌无法为 EU/UK 账户充值转账(你需要在 Wise 应用中付款,而本服务本来也依赖这一操作),并且对于设置了付款审批规则的企业账户,Wise 会拒绝 API 转账。
贡献
欢迎提交 Issue 和 Pull Request;请参阅 CONTRIBUTING.md。请按照 SECURITY.md 中的说明,私下报告安全问题。
许可证
由 BlanketByte 制作。独立项目,与 Wise 无关联,也未获 Wise 认可。
Wise 和 Wise 旗帜是 Wise Payments Limited 的商标;旗帜未经修改,仅用于表示兼容性。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。