mcpField
B
Botwallet MCP

Botwallet MCP

本地服务
github.com/botwallet-co金融数据43 周前更新

关于 Botwallet MCP

Botwallet MCP 是供 Agent 管理 Solana 上 USDC 钱包的 MCP 服务,适用于需要支付、收款或购买付费 API 的工作流。它使用 FROST 2-of-2 阈值签名,并通过支出限额和人工审批控制交易。

主要功能

  1. 01创建和管理 USDC 钱包
  2. 02转账、提现与账单链接
  3. 03发现并调用 x402 付费 API
  4. 04支出限额与人工审批
  5. 05FROST 2-of-2 阈值签名
  6. 06交易记录与待处理状态查询

适用场景

  1. 01让 Agent 在限额内支付服务费用
  2. 02创建账单链接以接收付款
  3. 03调用付费 API 并支付访问费用
  4. 04查看余额、交易及审批状态

MCP 相关

该服务向 MCP 客户端提供钱包、付款、收款、提现和 x402 API 等工具,以及钱包状态资源。服务在本地运行,使用本地保存的密钥份额与 Botwallet 协作签名并提交 Solana 交易。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"botwallet-co": {
"command": "npx",
"args": [
"-y",
"@botwallet/mcp"
]
}
}
}
启动命令npx -y @botwallet/mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@botwallet/mcp

工具

36

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

Botwallet MCP 服务

让 AI Agent 发送发票来赚取收入、支付 API 费用并管理资金,同时由你掌控一切。

npm License GitHub stars

让你的 AI Agent 获得财务自主权,同时不放弃控制权。你的 Agent 可以创建发票收款、向其他 Agent 和付费 API 消费,并管理自己的 USDC 钱包。你可以设置消费限额、批准大额交易,并查看它执行的所有操作。兼容 Claude Desktop、Claude Code、Cursor、Windsurf、Cline 以及任何兼容 MCP 的客户端。

网站 · 控制面板 · 文档 · CLI · npm


在 MCP 客户端配置中添加一个 JSON 块即可。

{
  "mcpServers": {
    "botwallet": {
      "command": "npx",
      "args": ["-y", "@botwallet/mcp"]
    }
  }
}

然后告诉你的 Agent:“为自己创建一个 Botwallet。”

它会运行 botwallet_register,在本地生成一个加密密钥份额,然后返回一个存款地址。无需预先进行设置,也无需配置 API 密钥。

之后可以这样说:

“向 @acme-bot 发送 $5,获取数据报告”

如果金额在保护规则范围内,Agent 就会签署并提交交易。否则,它会请求所有者批准。

“为咨询服务创建一张 $25 的发票”

Agent 会创建一个付款链接。有人付款后,USDC 会直接进入钱包。

“找一个语音转文本 API 并使用它”

Agent 会搜索 x402 目录,找到一个付费 API,支付使用费用并返回结果。

签名的工作原理

每个钱包都使用 FROST 2-of-2 阈值签名。创建钱包时,密钥生成仪式会生成两个份额:

  • 密钥 1 — Agent 的份额,存储在本地的 ~/.botwallet/seeds/
  • 密钥 2 — 服务端的份额,由 Botwallet 保管

完整私钥从不会存在。每笔交易都需要双方共同签名。Agent 和 Botwallet 都无法单独转移资金。所有者可以设置消费限额,并批准任何超出规则的操作。

Botwallet 会准备每笔交易;在密钥 1 共同签名前,本服务会解码交易,并拒绝签署任何不符合以下条件的交易:只能将 USDC 转出钱包,金额必须是约定的金额并转入收款人关联的(标准)USDC 账户,手续费不得超过报价金额(付费 API 的手续费以整美分报价,最多可高出 1 美分),且不得包含其他操作。对于提现、付费 API 以及向 Solana 地址付款,系统会将收款人地址与 Agent 提供的地址进行核对。对于向用户名付款,地址由 Botwallet 查询得出,因此系统只会核对金额和手续费是否符合 Agent 的请求。Agent CLI 和签名页面也采用相同规则。

Agent 自己提供的金额、收款人和手续费会保存在内存中,因此只有在启动转账的 MCP 服务进程仍在运行时才会使用这些信息。服务重启后(所有者可能数小时后才批准,因此这种情况很常见),密钥 1 会根据 Botwallet 记录的金额、收款人和手续费检查交易,并且绝不会签署超过固定上限的手续费。

如果付款调用超时或连接中断,结果会说明资金是否可能已转出。OUTCOME_UNKNOWN 表示应先检查其 check_tool 中指定的工具(通常是 botwallet_list_payments 或 botwallet_get_withdrawal;如果 Botwallet 将转账列为失败但资金仍可能已转出,则检查 botwallet_balance),再尝试付款;若要重试同一笔付款,请传回其 idempotency_key。

待处理、冻结和重复付款

已发送,尚未确认。 Botwallet 会等待 Solana 确认付款或提现。如果网络未能及时确认,工具会返回正常结果,而非错误,其中包含 status: "pending"、sent: true、Solana 签名、区块浏览器链接和 check_tool。交易仍有可能成功,因此 Agent 不得再次付款:约一分钟后,check_tool 中的工具会显示 completed 或 failed。

钱包已冻结。 所有者可以在 Botwallet 控制面板中冻结钱包。被冻结的钱包仍可收款,但不能付款:新付款、提现和付费 API 调用都会被阻止;确认操作会在签名或发送任何内容之前以 WALLET_SUSPENDED 终止。冻结前已批准的转账会保留:所有者解除冻结后,Agent 可使用相同的确认工具和 transaction_id 完成转账(对于付费 API,使用相同的 fetch_id 调用 botwallet_x402_pay_and_fetch)。

重试请求。 botwallet_pay 和 botwallet_withdraw 会返回 idempotency_key。再次使用该密钥调用工具,会返回首次请求的处理结果,而不会再次发起付款。如果没有提供密钥,系统会生成一个新密钥,因此该调用会发起一笔新付款。已用于其他类型请求的密钥,或仍在创建中的密钥,会返回 IDEMPOTENCY_KEY_CONFLICT。

安装

Claude Desktop

将以下内容添加到 Claude Desktop 配置文件中:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "botwallet": {
      "command": "npx",
      "args": ["-y", "@botwallet/mcp"]
    }
  }
}
Claude Code
claude mcp add botwallet -- npx -y @botwallet/mcp

这会将其添加到当前项目中。若要在每个项目中都使用,请添加 --scope user:

claude mcp add --scope user botwallet -- npx -y @botwallet/mcp

在原生 Windows(非 WSL)上,npx 需要使用 cmd /c 包装:claude mcp add botwallet -- cmd /c npx -y @botwallet/mcp。

Cursor

前往 Settings > MCP,点击 Add new MCP server,然后添加:

{
  "mcpServers": {
    "botwallet": {
      "command": "npx",
      "args": ["-y", "@botwallet/mcp"]
    }
  }
}
Windsurf

添加到 ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "botwallet": {
      "command": "npx",
      "args": ["-y", "@botwallet/mcp"]
    }
  }
}
Cline

打开 Cline 侧边栏,点击 MCP Servers,然后点击 Configure 并添加:

{
  "mcpServers": {
    "botwallet": {
      "command": "npx",
      "args": ["-y", "@botwallet/mcp"]
    }
  }
}
其他 MCP 客户端

所有客户端的配置都相同——将 npx -y @botwallet/mcp 作为命令。

全局安装(替代方案)
npm install -g @botwallet/mcp

如果选择全局安装,请使用 botwallet-mcp 作为命令,而非 npx -y @botwallet/mcp。

环境变量

变量默认值用途
BOTWALLET_API_KEY—API 密钥(与 CLI 一样,也支持 BW_API_KEY)。设置后,该变量会决定使用哪个钱包。仅凭此变量即可进行只读操作;付款、提现和付费 API 调用还需要该钱包的密钥份额(Key 1),存放在 ~/.botwallet/seeds/<wallet>.seed 中。签名时会使用 config.json 中配置了此密钥的钱包;如果该钱包不在 config.json 中,请将 BOTWALLET_WALLET 设置为种子文件的名称
BOTWALLET_WALLET—要使用的钱包(如果有多个)。如果没有钱包使用此名称,服务将无法启动。仅适用于 MCP:CLI 使用 --wallet
BOTWALLET_API_URLhttps://api.botwallet.co/v1API 端点,与 CLI 读取的变量相同。旧版本使用的 BOTWALLET_BASE_URL 仍然有效。如果两者都未设置,则会像 CLI 一样使用 ~/.botwallet/config.json 中的 base_url

这些变量均为可选项。服务会读取 ~/.botwallet/config.json(与 CLI 共用)并确定其余配置。不设置这些变量时,服务会使用默认钱包;注册或导入钱包后,该钱包会成为默认钱包。

工具

8 个分组,共 36 个工具。

钱包管理
工具功能说明
botwallet_ping检查 API 连通性
botwallet_register创建新钱包(FROST 密钥生成)
botwallet_info钱包元数据和状态
botwallet_balance链上余额和剩余预算
botwallet_update_owner设置所有者邮箱
botwallet_rename更改显示名称
botwallet_wallet_list列出本地钱包
botwallet_wallet_use切换活动钱包
付款
工具功能说明
botwallet_lookup检查收款方是否存在
botwallet_can_i_afford付款前检查
botwallet_pay向他人付款(在限额内时自动签名)
botwallet_confirm_payment所有者批准后完成付款
botwallet_list_payments列出转出付款
botwallet_cancel_payment取消待处理的付款
收款
工具功能说明
botwallet_create_paylink创建付款请求或发票
botwallet_send_paylink通过电子邮件或机器人收件箱发送付款链接
botwallet_get_paylink检查付款链接状态
botwallet_list_paylinks列出你的付款链接
botwallet_cancel_paylink取消待处理的付款链接
资金存入
工具功能说明
botwallet_get_deposit_address获取 USDC 存款地址
botwallet_request_funds向人类所有者请求资金
botwallet_list_fund_requests列出过去的资金请求
提现
工具功能说明
botwallet_withdraw将 USDC 提现到外部 Solana 地址
botwallet_confirm_withdrawal批准后完成提现
botwallet_get_withdrawal检查提现状态
x402 付费 API
工具功能说明
botwallet_x402_discover搜索付费 API
botwallet_x402_fetch探测 URL 以了解付款要求
botwallet_x402_pay_and_fetch付款并从 x402 API 获取内容
历史记录和安全限制
工具功能说明
botwallet_transactions完整交易账本
botwallet_my_limits查看所有者设置的支出限额
botwallet_pending_approvals列出等待批准的操作
botwallet_approval_status检查特定审批
botwallet_events钱包通知
钱包转移
工具功能说明
botwallet_wallet_export将钱包导出为加密的 .bwlt 文件(可在 24 小时内导入,最多导入 5 次)
botwallet_wallet_import从 .bwlt 文件导入钱包,并使用新的本地名称
botwallet_wallet_backup显示密钥 1(12 个单词)以供所有者备份,分两次调用并使用一次性代码

资源

URI返回内容
botwallet://status钱包摘要——余额、预算、种子文件状态,以及在尚无所有者认领钱包时显示的认领链接

架构

┌─────────────────┐     stdio (JSON-RPC)     ┌──────────────────┐
│   AI Client     │◄────────────────────────►│  Botwallet MCP   │
│ (Claude/Cursor) │                          │     Server       │
└─────────────────┘                          └────────┬─────────┘
                                                      │
                                              ┌───────┴───────┐
                                              │               │
                                     ~/.botwallet/     api.botwallet.co
                                     (seeds, config)        (API)
                                                              │
                                                        ┌─────┴─────┐
                                                        │  Solana   │
                                                        │ (mainnet) │
                                                        └───────────┘

服务在 Agent 的机器上本地运行。密钥份额存储在 ~/.botwallet/seeds/ 中,绝不会发送给 Botwallet。服务会与 Botwallet API 通信以进行联合签名,并将组合后的签名提交到 Solana。

安全

Agent 无法绕过消费限额。这些限额由服务器端强制执行。超过自动批准阈值的交易会提交给所有者审批。系统中的任何位置都不会存储完整私钥。

每个工具都带有 MCP 工具注解。余额、历史记录和查询工具被标记为只读,因此支持注解的客户端可以直接运行,无需询问。转移资金的工具(botwallet_pay、botwallet_withdraw、确认工具、botwallet_x402_pay_and_fetch)、操作 Key 1 的工具(botwallet_wallet_backup、botwallet_wallet_export、botwallet_wallet_import)以及更改所有者的工具都被标记为破坏性操作,因此客户端可以继续在执行前询问。只允许只读工具,比对整个服务选择“始终允许”更安全。

Key 1(Agent 的密钥份额)仅存储在 Agent 的设备上,绝不会发送给 Botwallet。注册时,API 密钥会保存到 ~/.botwallet/config.json,不会显示出来。有两种操作会显示密钥材料,因此只有在所有者要求时才使用:

  • botwallet_wallet_backup 会向 Agent 显示 Key 1(12 个单词),以便 Agent 将其交给所有者;所有者需要这些单词才能提款和恢复钱包。随后,这些单词会留在 AI 对话中,因此应将该对话视为敏感信息。与 CLI 一样,需要调用两次:第一次返回一个有效期为 30 秒的一次性代码,第二次提供该代码后才会显示这些单词。这可以防止意外泄露 Key 1,但无法阻止蓄意泄露它的 Agent。
  • botwallet_wallet_export 会写入一个包含 Key 1 和 API 密钥的 .bwlt 文件。任何持有该文件的人都可以在 24 小时内导入钱包。

有关漏洞报告,请参阅 SECURITY.md。

CLI 互操作

此 MCP 服务与 Botwallet CLI 共用相同的本地文件:

  • 配置:~/.botwallet/config.json
  • 种子:~/.botwallet/seeds/*.seed
  • 导出格式:.bwlt(加密,支持双向使用;包含 Key 1 和 API 密钥,请妥善保密)

使用 CLI 创建的钱包可在 MCP 服务中使用,反之亦然。

开发

git clone https://github.com/botwallet-co/mcp.git
cd mcp
npm install
npm run build
npm test                # unit + integration tests, offline
npm run test:e2e        # E2E tests against the live API (no payments)
npm run inspect         # Open in MCP Inspector

许可证

Apache 2.0

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。