关于 IronWallet
IronWallet 是面向 AI Agent 的本地 MCP 服务,用于查询和操作非托管加密货币钱包。助记词加密保存在主机上,交易在本地签名,并支持多条网络上的余额查询、转账和兑换。
主要功能
- 01本地加密密钥库与签名
- 02查询原生币和代币余额
- 03估算转账费用并发送
- 04获取兑换报价并执行兑换
- 05按钱包设置操作限制
适用场景
- 01查看钱包余额与交易记录
- 02发送加密货币前估算费用
- 03在支持的网络间兑换代币
- 04通过钱包策略限制转账和兑换
MCP 相关
通过 stdio 向 MCP 客户端提供钱包管理、余额、历史记录、转账和兑换工具。签名在本地进行,工具输入和输出不会暴露助记词。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
18收录的工具列表 · 更新于 3 周前
此工具无需参数。
详细介绍
@ironwallet/mcp-server
适用于 IronWallet 的本地 MCP 服务(ironwallet-mcp 可执行文件)。
IronWallet MCP 服务可让 AI Agent 安全地访问非托管钱包。助记词会加密保存在主机上,绝不会离开这台机器,也不会经过 Agent。Agent 可以查询余额、在本地签名、转移代币,并在 10 多个网络上兑换。
与 IronWallet 应用兼容同一种助记词。
每笔交易都不会弹出确认界面。
仅限热钱包。 请使用余额有限的专用钱包。参见安全性。
产品页面:ironwallet.io/ai
要求: Node.js 20+(npx)。
安装
npx -y @ironwallet/mcp-server
也可以添加到 MCP 配置中(Cursor:.cursor/mcp.json 或全局配置):
{
"mcpServers": {
"ironwallet": {
"command": "npx",
"args": ["-y", "@ironwallet/mcp-server"]
}
}
}
npx 会拉取最新发布的构建版本。首次启动时,依赖项安装可能需要约 30 秒。如果 MCP 客户端超时,请先在终端中运行一次相同的命令以预热缓存,然后重新连接。
在 ironwallet.io/ai 上安装插件会自动完成配置。
工作原理
MCP client → ironwallet-mcp (stdio)
├── encrypted keystore on disk
├── signs on this machine
└── HTTPS to IronWallet backends
助记词绝不会出现在工具的输入/输出、供 Agent 查看日志,或发送到后端、大模型或 MCP 客户端云端的请求中。
功能
| 领域 | 功能 |
|---|---|
| 网络 | Ethereum、BSC、Polygon、Base、Arbitrum、Optimism、Avalanche、Tron、Bitcoin、Litecoin、Dogecoin、Solana、XRP、TON |
| 钱包 | 创建、导入、列出、存款二维码和备份(机密信息使用本地浏览器) |
| 余额 | 原生币和代币 |
| 转账 | 通过 IronWallet 的转账中继估算费用并发送 |
| 兑换 | 通过 IronWallet 获取报价并执行兑换 |
| 策略 | 可选的单钱包限额(readOnly、maxPerTxUsd、转账收款方允许列表),通过 set_wallet_policy 设置。适用于 send_transfer 和 execute_swap。 |
工具
| 工具 | 用途 | 会转移资金吗? |
|---|---|---|
get_runtime_info | 正在运行的版本与已发布的 npm 软件包版本对比 | 否 |
prepare_update | 暂存 npm 更新,供下次重启时应用 | 否 |
list_wallets | 名称、地址和 policy | 否 |
accept_mcp_consent | 记录聊天中对 MCP 免责声明的接受情况 | 否 |
create_wallets | 创建新钱包;返回浏览器 backup_url | 否 |
open_wallet_manager | 本地浏览器界面,可用于导入/创建/备份/删除 | 否 |
set_wallet_policy | 替换单钱包限额(readOnly、maxPerTxUsd、允许列表) | 否 |
get_deposit_qr | PNG 二维码(优先尝试在聊天中显示;否则使用本地 qr_url) | 否 |
get_balance | 原生币或代币余额 | 否 |
get_transaction_history | 从公开区块浏览器获取近期交易(分页) | 否 |
estimate_transfer | 估算费用,不广播交易 | 否 |
send_transfer | 在本地签名并发送 | 是 |
get_operation_status | 查询转账状态 | 否 |
list_swap_networks | 可用于兑换的网络 | 否 |
list_swap_assets | 卖出/买入目录 | 否 |
estimate_swap | 获取报价(可能过期) | 否 |
execute_swap | 获取最新报价 → 签名 → 兑换 | 是 |
get_swap_status | 查询兑换状态 | 否 |
没有任何工具会接受或返回助记词。只能在本地浏览器中导入、备份和删除(open_wallet_manager / backup_url)。
钱包
- 创建:
create_wallets— Agent 会获取名称和地址;在浏览器中打开backup_url,即可查看并备份恢复短语。 - 导入 / 备份:
open_wallet_manager— 仅限环回地址访问的页面;短语只会在浏览器中输入或显示。 - 删除: 管理器中的“删除”按钮。单独的确认页面会要求用户重新输入钱包名称;从未备份的钱包还需要明确确认其恢复短语将被销毁。资金不会转移。没有对应的 MCP 工具。
- 列表:
list_wallets - 存款二维码:
get_deposit_qr— PNG(即时生成)和qr_url。如果宿主能渲染图片,请在聊天中显示;否则打开qr_url。传入network可指定单条链。钱包管理器中每个地址旁也有二维码按钮。
浏览器页面会绑定到 127.0.0.1 下一个不可猜测的路径,并在闲置 15 分钟后关闭。
转账
list_wallets/get_balanceestimate_transfer(可选)send_transfer- 需要等待操作完成时,调用
get_operation_status
send_transfer 可能会略微减少转账金额,以确保余额足以支付手续费;如果发生这种情况,响应中会说明。
兑换
兑换与转账是独立的流程。
list_swap_networkslist_swap_assets(先使用direction=from,再使用所选卖出资产调用direction=to)- 将目录中的 network、symbol、address、decimals 复制到
estimate_swap/execute_swap中(尤其是代币) - 调用
estimate_swap预览,或直接调用execute_swap - 使用
execute_swap返回的operationId调用get_swap_status轮询(estimate_swap是报价,没有状态)
实用选项
maxMode: true— 尽可能多地卖出余额,具体金额由服务决定(手续费由服务器端计算)。设置maxMode后可省略amount。- 只有原生币可以省略
address。对于代币,请始终传入list_swap_assets返回的address(最好也传入decimals)。
操作说明
- 报价会过期。优先使用
execute_swap(获取最新报价)。如果执行超时,请先轮询状态再重试——不要盲目地再次执行。 - 钱包策略:
readOnly会阻止发送和兑换。maxPerTxUsd会在操作时通过 IronWallet 后端汇率将转账金额(或修正后的兑换卖出金额)折算为美元;如果没有可用汇率,操作会被拒绝(失败时默认关闭)。收款方允许列表适用于send_transfer。set_wallet_policy会替换整个策略——请先读取list_wallets.policy。
配置
正常使用时,无需在 MCP 配置中粘贴任何内容。首次启动时,服务会在 ~/.ironwallet-mcp/ 下写入中继 API 密钥、密钥库包装密钥和设备 ID(keystore-passphrase、relay-api-key、device-id;POSIX 系统上仅所有者可访问,权限为 0600;Windows 上使用 NTFS ACL)。仅在需要覆盖这些值时设置环境变量。
面向用户的备份是钱包管理器中的恢复短语,而不是这些文件。
| 变量 | 默认值 | 说明 |
|---|---|---|
IW_PASSPHRASE | 本地生成 | 覆盖密钥库包装密钥 |
IW_READ_ONLY | false | 进程级设置:拒绝 send_transfer 和 execute_swap。设为 true/1 启用;设为 false/0/off/no 禁用。与钱包级的 policy.readOnly 不同。 |
IW_RELAY_API_KEY | 生成的 UUID | 覆盖 x-api-key |
IW_DEVICE_ID | 生成的 UUID | 覆盖设备 UUID(在同一密钥库目录下保持稳定)。发送时使用 X-Device-Id: web:<uuid>;如果值已带有 platform: 前缀,则按原样发送 |
IW_KEYSTORE_DIR | ~/.ironwallet-mcp | 密钥库目录 |
IW_RATES_API_URL | 内置配置文件 | 用于计算 maxPerTxUsd 限额的汇率后端。若配置文件中未设置,则拒绝 USD 限额(默认拒绝) |
IW_STATIC_RESOURCES_URL | 内置配置文件 | 静态资产目录(代币 → 汇率 ID) |
IW_HTTP_TIMEOUT_MS | 15000 | 常规 HTTP 超时(1s–120s) |
IW_HTTP_FORWARD_TIMEOUT_MS | 60000 | 广播类调用的较长超时时间。客户端超时不一定表示操作失败——请检查状态 |
IW_HTTP_RETRIES | 2 | 对安全/幂等调用进行重试;不会自动重试广播 |
IW_HISTORY_APIS | 内置配置文件 | JSON { "<network>": [{ "kind", "url"? }, …] } — get_transaction_history 每个网络的历史索引器链,按顺序尝试。类型:etherscan、nodereal、tronscan、trongrid、esplora、blockcypher、solana-rpc、toncenter、tonapi、xrp-rpc |
IW_TON_API_KEY | 未设置 | TonCenter API 密钥。不带密钥的 TonCenter 每个 IP 约为 1 次请求/秒(同一 NAT 后的所有进程共享此限制) |
IW_TONAPI_KEY | 未设置 | 用于 tonapi 历史回退的 tonapi.io Bearer 令牌;不带密钥时每个 IP 约为 1 次请求/秒 |
IW_LOG_ENABLED | 1 | 将 JSONL 诊断信息写入日志文件(设为 0 可禁用) |
IW_LOG_FILE | {keystoreDir}/logs/iw-mcp-YYYY-MM-DD.jsonl | 日志路径 |
IW_LOG_LEVEL | info | debug / info / warn / error |
IW_LOG_STDERR | 0 | 将日志镜像输出到 stderr(stdout 保留给 MCP) |
安全
- 种子会加密存储。它们绝不会出现在工具结果、Agent 聊天内容或后端请求中。
- Agent 无需再次询问即可转移资金。可选的钱包策略(
readOnly、maxPerTxUsd、转账收款方允许列表——通过set_wallet_policy设置)默认关闭,并同时适用于send_transfer和execute_swap。 - 任何同时持有密钥库和包装密钥的人都能控制资金。泄露的种子无法撤销。
- 超时不一定代表失败:重试发送或兑换前,请先轮询状态。
- 仅支持桌面端 / stdio。手机或远程 Agent 需要采用一种让签名留在可信设备上的设计。
- 不要在此处存放主钱包。请使用小额热钱包。
详情及私下披露方式:SECURITY.md。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。