多签交易管理工具

一个统一的Node.js应用程序,用于管理Safe多签交易,支持AI代理决策和硬件钱包签名。

  • by ivanvolov
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 ivanvolov/transaction-mcp-bandate

使用说明

安全的MCP服务器和分类账集成

一个统一的Node.js应用程序来管理安全的多重签名事务。

设置

  1. 克隆仓库并安装依赖项:
npm install
  1. 配置环境变量:
cp .env.example .env

编辑 .env 并添加您的 SAFE_API_KEY。对于Telegram通知,还添加 TELEGRAM_BOT_TOKEN 和 ADMIN_TELEGRAM_CHAT_ID.

如何跑步

应用程序需要 两面旗帜:输入模式(如何决定交易)和确认模式(如何签名)。

输入模式

标志 描述
--mcp 启动MCP服务器。外部AI代理连接并决定交易。
--dev 交互式CLI。列出待处理的交易,您可以使用箭头键批准/拒绝。

确认模式

标志 描述
--ledger 批准和拒绝的交易将进入分类账队列。打开UI,连接Ledger,签名
--telegram 被拒绝的交易会被发送到Telegram机器人进行人工审核。批准覆盖可用。

npm脚本

npm run mcp:ledger      # AI agent decides via MCP, sign via Ledger
npm run mcp:telegram    # AI agent decides via MCP, review via Telegram
npm run dev:ledger      # You decide via CLI, sign via Ledger
npm run dev:telegram    # You decide via CLI, review via Telegram

或者直接运行:

node index.mjs --mcp --ledger
node index.mjs --dev --telegram

流动

随着 --ledger

Pending Safe tx
  → rules.yml evaluation (auto-approve / auto-reject / ask human)
  → Decision made (via MCP agent or CLI)
     → Approve → added to Ledger queue
     → Reject  → added to Ledger queue (as rejection tx)
  → Open Ledger UI at http://127.0.0.1:3847/ui
  → Connect Ledger hardware wallet → sign

随着 --telegram

Pending Safe tx
  → rules.yml evaluation
  → Decision made
     → Approve → added to Ledger queue
     → Reject  → sent to Telegram bot for human review
       → Override → approve and add to Ledger queue
       → Confirm reject → tx stays pending on-chain

MCP工具

工具 说明
safe_list_pending 列出已配置保险箱的未执行多重签名交易
safe_decide_transaction 批准或拒绝待处理的交易(均进入分类账队列)
safe_get_rules 读取当前防火墙规则(rules.yml)
safe_update_rules 更新防火墙规则

MCP客户端配置

{
  "mcpServers": {
    "safe-agent": {
      "url": "http://127.0.0.1:3847/mcp"
    }
  }
}

通过ngrok曝光

ngrok http 3847

然后使用ngrok URL+ /mcp 作为您的MCP端点。

环境变量

变量 必填 默认 描述
SAFE_API_KEY 是 - 安全交易服务API密钥
MCP_PORT 没有 3847 HTTP服务器的端口(MCP+Ledger UI)
TELEGRAM_BOT_TOKEN 否 -- Telegram机器人令牌(用于通知)
ADMIN_TELEGRAM_CHAT_ID 没有 -- 用于通知的Telegram聊天ID

配置

安全地址、链ID和其他常量位于 config.mjs.

键 值
safeAddress 0xe4522AcE60ccE4658751024310FF04f84daf8149
chainId 42161 (Arbitrum One)
ownerAddress 0x6F4F4da5DD8546c625Ab3a3aF6B4797B66f56f14
signerAddress 0x156D1aBD1F207f73a6ef13EF22E862Fc141156bD

文件

文件 目的
index.mjs 单一入口点-MCP服务器、dev CLI、Ledger API、Telegram bot
config.mjs 安全地址、链和所有者配置
rules.yml 防火墙规则(白名单、已知合同、每日上限)
.env.example 环境变量模板
ledger-ui/index.html 账簿签名UI(纯HTML,无构建步骤)
ledger-queue.json 等待分类账签名的交易(自动创建)
daily-stats.json 利率限制的每日审批统计数据