使用说明
安全的MCP服务器和分类账集成
一个统一的Node.js应用程序来管理安全的多重签名事务。
设置
- 克隆仓库并安装依赖项:
npm install
- 配置环境变量:
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 |
利率限制的每日审批统计数据 |
