IronWallet

io.ironwallet由 ironwallet.io 發布v1.2.1更新於 Oct 24, 2026

Non-custodial crypto wallet MCP: check balances, sign and send transfers, and swap tokens locally.

已驗證STDIO僅桌面金融安全與監控

概覽

AI 產生的概覽

本機非託管加密錢包 MCP 伺服器,讓 AI 助理查詢餘額、簽章並發送轉帳,以及在多條網路上兌換代幣。

可以做什麼
  • 查詢錢包餘額、交易紀錄與收款 QR code
  • 估算並發送轉帳,之後輪詢操作狀態
  • 列出可兌換網路與資產、取得報價、執行兌換並輪詢兌換狀態
  • 建立錢包、開啟本機瀏覽器管理頁面進行匯入、備份與刪除,並設定單一錢包支出政策
  • 查看執行版本並準備 npm 更新
適用情境
適合讓助理在自己的桌面上操作一個小額熱錢包:在對話中查餘額、轉代幣或跨鏈兌換。不適合主錢包,也不適合手機或遠端代理情境。
執行需求
需要 Node.js 20+ 與 npx,以本機 stdio 程序在桌面執行。日常使用無需設定:首次啟動會在本機金鑰庫目錄寫入中繼 API 金鑰、金鑰庫包裝密鑰與裝置 ID。可選覆寫項包括 IW_PASSPHRASE、IW_READ_ONLY、IW_RELAY_API_KEY、IW_DEVICE_ID、IW_KEYSTORE_DIR 與 IW_TON_API_KEY。需要連線至 IronWallet 後端與公開區塊瀏覽器的網路。
安裝前請注意
助理可以在不再詢問的情況下轉移資金,且沒有逐筆交易確認介面。錢包政策(readOnly、maxPerTxUsd、收款地址白名單)預設關閉,需透過 set_wallet_policy 設定,且該工具會整體取代政策。同時持有金鑰庫與包裝密鑰的人即可控制資金,種子外洩後無法撤銷。請使用餘額有限的熱錢包,切勿使用主錢包。逾時不一定代表失敗,重試前應先查詢狀態。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 IronWallet,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

@ironwallet/mcp-server

Local MCP server for IronWallet (ironwallet-mcp bin).

The IronWallet MCP server gives AI agents secure access to a non-custodial wallet. Seed phrases stay encrypted on the host and never leave this machine — they never pass through the agent. Agents can retrieve balances, sign locally, transfer tokens, and swap across 10+ networks.

Seed-compatible with the IronWallet app.

There is no per-transaction confirmation UI.

Hot-wallet only. Use a dedicated wallet with limited balance. See Security.

Product page: ironwallet.io/ai

Requirements: Node.js 20+ (npx).


Install

bash
npx -y @ironwallet/mcp-server

Or add to MCP config (Cursor: .cursor/mcp.json or global):

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

npx pulls the latest published build. First launch can take ~30s while dependencies install. If the MCP client times out, run the same command once in a terminal to warm the cache, then reconnect.

The plugin install on ironwallet.io/ai wires this up automatically.


How it works

MCP client  →  ironwallet-mcp (stdio)                    ├── encrypted keystore on disk                    ├── signs on this machine                    └── HTTPS to IronWallet backends

The mnemonic never appears in tool inputs/outputs, logs meant for the agent, or requests to backends / the LLM / the MCP client’s cloud.


Features

AreaCapability
NetworksEthereum, BSC, Polygon, Base, Arbitrum, Optimism, Avalanche, Tron, Bitcoin, Litecoin, Dogecoin, Solana, XRP, TON
WalletsCreate, import, list, deposit QR, and back up (local browser for secrets)
BalancesNative coins and tokens
TransfersFee estimate and send through IronWallet’s transfer relay
SwapsQuotes and execution through IronWallet
PolicyOptional per-wallet limits (readOnly, maxPerTxUsd, transfer recipient allow-list) set via set_wallet_policy. Applies to send_transfer and execute_swap.

Tools

ToolPurposeMoves funds?
get_runtime_infoRunning version vs published npm packageno
prepare_updateStage the npm update for the next restartno
list_walletsNames, addresses, and policyno
accept_mcp_consentRecord chat acceptance of the MCP disclaimerno
create_walletsNew wallets; returns a browser backup_urlno
open_wallet_managerLocal browser UI to import / create / back up / deleteno
set_wallet_policyReplace per-wallet limits (readOnly, maxPerTxUsd, allow-list)no
get_deposit_qrPNG QR (try chat; else local qr_url)no
get_balanceNative or token balanceno
get_transaction_historyRecent txs from public explorers (paged)no
estimate_transferFee estimate, no broadcastno
send_transferSign locally and sendyes
get_operation_statusPoll a transferno
list_swap_networksNetworks available for swapno
list_swap_assetsSell / buy catalogno
estimate_swapQuote (may expire)no
execute_swapFresh quote → sign → swapyes
get_swap_statusPoll a swapno

No tool accepts or returns a seed. Import, backup, and delete only in the local browser (open_wallet_manager / backup_url).

Wallets

  • Create: create_wallets — the agent gets names and addresses; open backup_url in a browser to view and back up recovery phrases.
  • Import / back up: open_wallet_manager — loopback-only page; the phrase is typed or shown only in the browser.
  • Delete: the Delete button in the manager. A separate confirmation page asks the user to retype the wallet name; a wallet that was never backed up also needs an explicit acknowledgement that its recovery phrase is destroyed. Funds are not moved. There is no MCP tool for this.
  • List: list_wallets
  • Deposit QR: get_deposit_qr — PNG (generated on the fly) plus qr_url. Show the image in chat when the host renders it; otherwise open qr_url. Pass network for one chain. The wallet manager also has a QR button next to each address.

The browser page binds to 127.0.0.1 under an unguessable path and shuts down after 15 minutes of inactivity.

Transfers

  1. list_wallets / get_balance
  2. estimate_transfer (optional)
  3. send_transfer
  4. get_operation_status when you need to wait on the operation

send_transfer may reduce the amount slightly so the fee still fits the balance; the response reports when that happened.

Swaps

Swaps are a separate flow from transfers.

  1. list_swap_networks
  2. list_swap_assets (direction=from, then direction=to with the chosen sell asset)
  3. Copy network, symbol, address, decimals from the catalog into estimate_swap / execute_swap (especially for tokens)
  4. estimate_swap for a preview, or go straight to execute_swap
  5. Poll with get_swap_status using the operationId from execute_swap (estimate_swap is a quote and has no status)

Useful options

  • maxMode: true — sell as much of the balance as the service allows (fees are accounted for server-side). amount can be omitted when maxMode is set.
  • Omit address only for native coins. For tokens, always pass address (and ideally decimals) from list_swap_assets.

Operational notes

  • Quotes expire. Prefer execute_swap (fresh quote). If execute times out, poll status before retrying — do not blindly re-run execute.
  • Wallet policy: readOnly blocks sends and swaps. maxPerTxUsd values the transfer amount (or the corrected swap sell amount) in USD at operation time via IronWallet backend rates; when no rate is available the operation is rejected (fail closed). The recipient allow-list applies to send_transfer. set_wallet_policy replaces the whole policy — read list_wallets.policy first.

Configuration

Nothing to paste into MCP config for normal use. On first launch the server writes a relay API key, keystore wrapping secret, and device id under ~/.ironwallet-mcp/ (keystore-passphrase, relay-api-key, device-id; owner-only POSIX 0600 or NTFS ACL on Windows). Set the env vars only to override.

The user-facing backup is the recovery phrase in the wallet manager, not those files.

VariableDefaultNotes
IW_PASSPHRASEgenerated locallyOverride keystore wrapping secret
IW_READ_ONLYfalseProcess-wide: reject send_transfer and execute_swap. true/1 enable; false/0/off/no disable. Distinct from per-wallet policy.readOnly.
IW_RELAY_API_KEYgenerated UUIDOverride x-api-key
IW_DEVICE_IDgenerated UUIDOverride the device UUID (stable per keystore directory). Sent as X-Device-Id: web:<uuid>; a value that already has a platform: prefix is sent unchanged
IW_KEYSTORE_DIR~/.ironwallet-mcpKeystore directory
IW_RATES_API_URLbaked profileRates backend for maxPerTxUsd valuation. Unset in the profile → USD limits reject (fail closed)
IW_STATIC_RESOURCES_URLbaked profileStatic asset catalogs (token → rates id)
IW_HTTP_TIMEOUT_MS15000General HTTP timeout (1s–120s)
IW_HTTP_FORWARD_TIMEOUT_MS60000Longer timeout for broadcast-style calls. A client timeout does not always mean the operation failed — check status
IW_HTTP_RETRIES2Retries for safe/idempotent calls; broadcasts are not auto-retried
IW_HISTORY_APISbaked profileJSON { "<network>": [{ "kind", "url"? }, …] } — per-network chain of history indexers for get_transaction_history, tried in order. Kinds: etherscan, nodereal, tronscan, trongrid, esplora, blockcypher, solana-rpc, toncenter, tonapi, xrp-rpc
IW_TON_API_KEYunsetTonCenter API key. Keyless TonCenter is ~1 request/s per IP (shared by every process behind the same NAT)
IW_TONAPI_KEYunsettonapi.io Bearer token for the tonapi history fallback; keyless is ~1 request/s per IP
IW_LOG_ENABLED1JSONL diagnostics to a log file (0 to disable)
IW_LOG_FILE{keystoreDir}/logs/iw-mcp-YYYY-MM-DD.jsonlLog path
IW_LOG_LEVELinfodebug / info / warn / error
IW_LOG_STDERR0Mirror logs to stderr (stdout is reserved for MCP)

Security

  • Seeds are encrypted at rest. They never appear in tool results, agent chat, or backend requests.
  • The agent can move funds without asking again. Optional wallet policy (readOnly, maxPerTxUsd, transfer recipient allow-list — set via set_wallet_policy) is off by default and applies to both send_transfer and execute_swap.
  • Anyone with the keystore and the wrapping secret controls the funds. A leaked seed cannot be revoked.
  • Timeout is not always failure: poll status before retrying a send or swap.
  • Desktop / stdio only. A phone or remote agent would need a design where signing stays on a trusted device.
  • Do not put a main wallet here. Use a small hot wallet.

Details and private disclosure: SECURITY.md.

License

MIT

來源:packages/mcp-server/README.md,提交 173c2d6

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.2.1最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分