--- name: blockrun-setup description: "Use when asked to install, add, configure, or set up the BlockRun MCP server (@blockrun/mcp) in Claude Code, Claude Desktop, Cursor, Windsurf, Codex CLI, Grok or another MCP client — including first-run wallet creation, funding with USDC, choosing a tool profile, and proving the install works. Also use when a fresh install 'doesn't show up' or a user asks how to pay for calls." triggers: - "install blockrun" - "add blockrun mcp" - "set up blockrun" - "blockrun setup" - "claude mcp add blockrun" - "grok mcp add blockrun" - "blockrun unavailable" - "mcp server timed out" - "@blockrun/mcp" - "fund my blockrun wallet" - "how do I pay for blockrun" - "blockrun profile" --- # Installing BlockRun MCP One command per client, then one tool call to see the wallet. Do it in this order; the PATH step is the one people skip and then spend an hour on. ## 1. Check Node first ```bash node -v # must print v20.19 or newer which npx ``` If `node` is from **nvm, Homebrew, fnm, volta or asdf**, assume the client's launcher will NOT find it. GUI-launched apps and Claude Code's MCP spawner do not source your shell profile. The fix is to pass your shell's PATH through at install time — not to pin `nvm alias default`, not to edit `.zshrc`, not to symlink node into `/usr/local/bin`. ## 2. Install — pick the client **Claude Code** (recommended; `-s user` = every project): ```bash claude mcp add blockrun -s user -e PATH="$PATH" -- npx -y @blockrun/mcp@latest ``` The `--` matters: it stops `-y` being parsed by `claude mcp add`. The `-e PATH="$PATH"` is the nvm/Homebrew fix from step 1; it is harmless on a system Node, so always include it. **Codex CLI** (`--env` is Codex's equivalent of `-e`; config lands in `~/.codex/config.toml`): ```bash codex mcp add blockrun --env PATH="$PATH" -- npx -y @blockrun/mcp@latest ``` **Claude Desktop / Cursor / Windsurf** — JSON, in the client's MCP config file: ```json { "mcpServers": { "blockrun": { "command": "npx", "args": ["-y", "@blockrun/mcp@latest"] } } } ``` | Client | File | |---|---| | Claude Desktop | `claude_desktop_config.json` (Settings → Developer → Edit Config) | | Cursor | `~/.cursor/mcp.json` · Windows `%APPDATA%\Cursor\mcp.json` | | Windsurf | `~/.codeium/windsurf/mcp_config.json` · Linux `~/.config/.codeium/windsurf/mcp_config.json` | For a JSON client with nvm/Homebrew Node, put the absolute `npx` path (`which npx`) in `command` — there is no `-e PATH` equivalent there. **Grok** — raise the startup timeout BEFORE the first run. Grok waits `startup_timeout_sec` (default **30**) for the server to answer, and a cold `npx -y` has to download this package and its dependencies first: measured 17s on a fast connection, 42-46s on a slower box. Lose that race and the UI says `blockrun [unavailable]` for an install that is merely still downloading. In `~/.grok/config.toml`: ```toml [mcp_servers.blockrun] command = "npx" args = ["-y", "@blockrun/mcp@latest"] enabled = true startup_timeout_sec = 120 ``` Or sidestep it: `npm install -g @blockrun/mcp@latest` then `grok mcp add blockrun -- blockrun-mcp`, which launches an already-installed binary. Only the first run is slow either way — npx caches by exact spec. **Optional flags** (append after `@latest`): `--profile trading|research|media|chat` exposes a smaller tool set so the client loads fewer schemas. Omit for all 19 tools. **Optional env** (`-e KEY=value` on Claude Code, `"env": {}` in JSON): `BLOCKRUN_CONFIRM_SPEND=on` asks before each paid call on clients that support MCP elicitation; `BLOCKRUN_CONFIRM_THRESHOLD=0.05` limits that to calls above $0.05; `BLOCKRUN_BUDGET_LIMIT=5` hard-caps the process at $5. ## 3. Restart, then prove it Restart the client — for Claude Code that means quit and relaunch `claude`; a running session does not pick up a new server. Then: ```bash claude mcp list # expect: blockrun: npx -y @blockrun/mcp@latest - ✓ Connected claude mcp get blockrun # confirms the scope and that PATH / any -e vars were captured ``` Inside the session, call **`blockrun_wallet`** with no arguments. It prints the wallet address, chain, and balance. That call is free and needs no funds — if it returns, the install works. Do not "test" with a paid tool. ## 4. The wallet and how paying works - The server **creates the wallets on first use**: an EVM key in `~/.blockrun/.session` and a Solana key in `~/.blockrun/.solana-session` (both `0600`). On a new install the **funded one is the Solana key** — that is where the USDC goes by default. On macOS/Linux both are also mirrored into the OS keychain, but the files stay authoritative unless the user opts into `BLOCKRUN_KEYCHAIN=strict` (then the keychain entries are the copies to export). Tell the user to **back up both files** — they are the only copies of the keys; BlockRun cannot recover them. - Payment is **per call**, and there are two ways to pay. Free tools (`blockrun_wallet`, `blockrun_models`, `blockrun_dex`, crypto `blockrun_price`, `blockrun_chat mode:"free"`) need neither. **Wallet (the default — no account, no signup).** USDC over x402. New installs default to **Solana**; an install that already has a Base wallet stays on Base. - `blockrun_wallet action:"setup"` shows the address and a QR. Send USDC (SPL) on Solana — Coinbase (pick "Solana"), Phantom, Solflare or Backpack. $5 covers hundreds of calls. - To use Base instead: `blockrun_wallet action:"chain" chain:"base"` then `action:"setup"`, and send USDC on the Base network. No restart either way. - Only `blockrun_defi`, `blockrun_modal` and `claude-*` chat with `thinking` are Base-only; they say so rather than charging. **API key (for teams who cannot hand a wallet to an agent).** Ask the user whether they want this before setting it up — it is a real account, not a local file. 1. Sign in at (Google). 2. Mint a key at — `brk_live_…`, shown once. 3. Add credit at (card or wire). 4. Set `BLOCKRUN_API_KEY` in the client's MCP server config, e.g. `claude mcp add blockrun -s user -e BLOCKRUN_API_KEY=brk_live_… -- npx -y @blockrun/mcp@latest` 5. Confirm with `blockrun_wallet action:"status"` — it must say *"Paying with: BlockRun account API key"*. In this mode no wallet is created or read, billing is post-hoc at exact usage (no per-call minimum, no transaction fee), and the ledger is . Polymarket trading, wallet balances/top-ups and `blockrun_realface action:"list"` need a keypair and are unavailable; everything else works. ## 5. Optional: install the agent skills The package ships 17 skills (which tool to use, worked examples, this one). Claude Code users: `/plugin marketplace add BlockRunAI/blockrun-mcp`. Everyone else: ```bash npx -y @blockrun/mcp@latest skills install # → ./.claude/skills npx -y @blockrun/mcp@latest skills install --global # → ~/.claude/skills npx -y @blockrun/mcp@latest skills install --to ~/.codex/skills ``` ## Common mistakes | Mistake | Why it bites | |---|---| | Omitting `-e PATH="$PATH"` on nvm/Homebrew | `spawn npx ENOENT` / "Failed to connect" — the #1 support issue | | Omitting `--` before `npx` | `-y` is eaten by `claude mcp add`; npx then prompts and hangs | | Testing with a paid tool | You cannot tell "unfunded" from "broken". Use `blockrun_wallet`. | | Sending USDC on Ethereum mainnet | Wrong network; the Base address is the same string but the funds are elsewhere. Say "Base". | | Funding inside a sandboxed client (Claude Desktop / Cowork / Web bash) | The wallet lives in the sandbox and dies with it. Test: if `~/.blockrun/.session` is gone in the next session, you are sandboxed — install on the user's real machine. | If the install is done and something still fails, switch to the `blockrun-debug` skill.