---
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 <!-- br:mcp.tools -->19<!-- /br:mcp.tools --> 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 <https://user.blockrun.ai> (Google).
2. Mint a key at <https://user.blockrun.ai/dashboard/keys> — `brk_live_…`, shown once.
3. Add credit at <https://user.blockrun.ai/dashboard/credits> (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 <https://user.blockrun.ai/dashboard/activity>.
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.
