Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Non-custodial crypto wallet MCP: check balances, sign and send transfers, and swap tokens locally.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
IW_READ_ONLYYou need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"ironwallet": {
"command": "npx",
"args": [
"-y",
"@ironwallet/mcp-server"
],
"env": {
"IW_READ_ONLY": "your-value"
}
}
}
}Run this in your terminal
claude mcp add ironwallet --env IW_READ_ONLY=your-value -- npx -y @ironwallet/mcp-serverFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"ironwallet": {
"command": "npx",
"args": [
"-y",
"@ironwallet/mcp-server"
],
"env": {
"IW_READ_ONLY": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"ironwallet": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@ironwallet/mcp-server"
],
"env": {
"IW_READ_ONLY": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
IW_READ_ONLY envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified against the domain ironwallet.io (the registry checks domain ownership)
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (1.2.1) reached the registry 2 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Starreel
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Turn a script into a finished, downloadable short-drama episode — via MCP or REST.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
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).
npx -y @ironwallet/mcp-server
Or add to MCP config (Cursor: .cursor/mcp.json or global):
{
"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.
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.
| Area | Capability |
|---|---|
| Networks | Ethereum, BSC, Polygon, Base, Arbitrum, Optimism, Avalanche, Tron, Bitcoin, Litecoin, Dogecoin, Solana, XRP, TON |
| Wallets | Create, import, list, deposit QR, and back up (local browser for secrets) |
| Balances | Native coins and tokens |
| Transfers | Fee estimate and send through IronWallet’s transfer relay |
| Swaps | Quotes and execution through IronWallet |
| Policy | Optional per-wallet limits (readOnly, maxPerTxUsd, transfer recipient allow-list) set via set_wallet_policy. Applies to send_transfer and execute_swap. |
| Tool | Purpose | Moves funds? |
|---|---|---|
get_runtime_info | Running version vs published npm package | no |
prepare_update | Stage the npm update for the next restart | no |
list_wallets | Names, addresses, and policy | no |
accept_mcp_consent | Record chat acceptance of the MCP disclaimer | no |
create_wallets | New wallets; returns a browser backup_url | no |
open_wallet_manager | Local browser UI to import / create / back up / delete | no |
set_wallet_policy | Replace per-wallet limits (readOnly, maxPerTxUsd, allow-list) | no |
get_deposit_qr | PNG QR (try chat; else local qr_url) | no |
get_balance | Native or token balance | no |
get_transaction_history | Recent txs from public explorers (paged) | no |
estimate_transfer | Fee estimate, no broadcast | no |
send_transfer | Sign locally and send | yes |
get_operation_status | Poll a transfer | no |
list_swap_networks | Networks available for swap | no |
list_swap_assets | Sell / buy catalog | no |
estimate_swap | Quote (may expire) | no |
execute_swap | Fresh quote → sign → swap | yes |
get_swap_status | Poll a swap | no |
No tool accepts or returns a seed. Import, backup, and delete only in the local browser (open_wallet_manager / backup_url).
create_wallets — the agent gets names and addresses; open backup_url in a browser to view and back up recovery phrases.open_wallet_manager — loopback-only page; the phrase is typed or shown only in the browser.list_walletsget_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.
list_wallets / get_balanceestimate_transfer (optional)send_transferget_operation_status when you need to wait on the operationsend_transfer may reduce the amount slightly so the fee still fits the balance; the response reports when that happened.
Swaps are a separate flow from transfers.
list_swap_networkslist_swap_assets (direction=from, then direction=to with the chosen sell asset)estimate_swap / execute_swap (especially for tokens)estimate_swap for a preview, or go straight to execute_swapget_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.address only for native coins. For tokens, always pass address (and ideally decimals) from list_swap_assets.Operational notes
execute_swap (fresh quote). If execute times out, poll status before retrying — do not blindly re-run execute.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.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.
| Variable | Default | Notes |
|---|---|---|
IW_PASSPHRASE | generated locally | Override keystore wrapping secret |
IW_READ_ONLY | false | Process-wide: reject send_transfer and execute_swap. true/1 enable; false/0/off/no disable. Distinct from per-wallet policy.readOnly. |
IW_RELAY_API_KEY | generated UUID | Override x-api-key |
IW_DEVICE_ID | generated UUID | Override the device UUID (stable per keystore directory). Sent as X-Device-Id: web: ; a value that already has a platform: prefix is sent unchanged |
IW_KEYSTORE_DIR | ~/.ironwallet-mcp | Keystore directory |
IW_RATES_API_URL | baked profile | Rates backend for maxPerTxUsd valuation. Unset in the profile → USD limits reject (fail closed) |
IW_STATIC_RESOURCES_URL | baked profile | Static asset catalogs (token → rates id) |
IW_HTTP_TIMEOUT_MS | 15000 | General HTTP timeout (1s–120s) |
IW_HTTP_FORWARD_TIMEOUT_MS | 60000 | Longer timeout for broadcast-style calls. A client timeout does not always mean the operation failed — check status |
IW_HTTP_RETRIES | 2 | Retries for safe/idempotent calls; broadcasts are not auto-retried |
IW_HISTORY_APIS | baked profile | JSON { " ": [{ "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_KEY | unset | TonCenter API key. Keyless TonCenter is ~1 request/s per IP (shared by every process behind the same NAT) |
IW_TONAPI_KEY | unset | tonapi.io Bearer token for the tonapi history fallback; keyless is ~1 request/s per IP |
IW_LOG_ENABLED | 1 | JSONL diagnostics to a log file (0 to disable) |
IW_LOG_FILE | {keystoreDir}/logs/iw-mcp-YYYY-MM-DD.jsonl | Log path |
IW_LOG_LEVEL | info | debug / info / warn / error |
IW_LOG_STDERR | 0 | Mirror logs to stderr (stdout is reserved for MCP) |
readOnly, maxPerTxUsd, transfer recipient allow-list — set via set_wallet_policy) is off by default and applies to both send_transfer and execute_swap.Details and private disclosure: SECURITY.md.
MIT