Skip to content
Development
Command

/setup-mcp

Configure MCP server API keys in .env and add the optional MCP servers

From plugin
ai-kit
11154 skills15 agents54 commands4 MCP
> /plugin marketplace add solanabr/ai-kit
> /plugin install solana-ai-kit@stbr

Command definition

setup-mcp.md
description: "Configure MCP server API keys in .env and add the optional MCP servers"
model: sonnet

Walk the user through filling in `.env`. Secrets go in `.env`, never in `.mcp.json`.

Never read `.env` — safe-ai-skill denies it while it is on, High denies it regardless, and at every tier a value read into the transcript has already left the machine. Appending is the only contact this command has with the file.

Steps

1. Don't create `.env` yourself. If it may be missing, print this for the user to run and wait for them:

   cp .env.example .env

2. See which keys are already set, by name only:

   bash .claude/bin/env-keys.sh 2>/dev/null || echo "HELPER_UNAVAILABLE"

It prints one `KEY set|empty` line per key and never a value. Skip keys it reports as `set` unless the user asks to replace one; for a replacement, print the edit for the user to make rather than rewriting the file. On `HELPER_UNAVAILABLE`, ask which keys they want to set instead of guessing. 3. For each remaining key below, in order, ask the user to paste a value or say "skip". Append accepted values; leave skipped keys alone; never echo a value back.

   printf '%s=%s\n' "$KEY" "$VALUE" >> .env

Append, never read-modify-write: there is nothing to read first. If the append is refused (Medium denies `.env` writes), print the line for the user to run.

MCP server key (the only one `.mcp.json` reads):

  • `HELIUS_API_KEY`: Helius RPC and DAS API for the `helius` MCP server (https://dev.helius.xyz)

Optional skill/CLI keys, read at runtime by skill CLIs in `.claude/skills/ext/`, not by any MCP server:

  • `MISTRAL_API_KEY`: QEDGen formal-verification CLI, for `fill-sorry` and `generate` (https://console.mistral.ai)
  • `ARISTOTLE_API_KEY`: QEDGen formal-verification CLI, for the `aristotle` proof-search commands (https://aristotle.harmonic.fun)
  • `THEGRID_API_KEY`: TheGrid Colosseum project-graph queries (https://thegrid.id)
  • `THEGRID_GRAPHQL_ENDPOINT`: the default `https://beta.node.thegrid.id/graphql` works for most
  • `QUICKNODE_RPC_URL`, `QUICKNODE_WSS_URL`, `QUICKNODE_API_KEY`: QuickNode RPC, WebSocket/Streams and DAS for the `quicknode` skill (https://www.quicknode.com)
  • `X_BEARER_TOKEN`: X API bearer token for the `ct-alpha` CT research skill (https://developer.x.com)
  • `DFLOW_API_KEY`: DFlow order-flow integration skill (credentials from hello@dflow.net)

Not an env key: the core `colosseum` skill signs in through its own helper, which keeps the credential in the OS store. If the user wants it working now, have them run `npx @colosseum-org/copilot-connect login` (Node 20+; `--device` where no browser can open) and check it with `status`. Never ask for a `COLOSSEUM_COPILOT_PAT` — that mechanism is retired. 4. Ask which optional MCP servers to add; the default is none, since each one starts with every session. Print the command for each one the user picks, for them to run — `Bash(claude mcp add*)` is denied at every firewall tier: an MCP server runs outside the sandbox, so adding one is the user's call. Each adds the server for this user and project only; append `--scope project` only if the user wants to share it through `.mcp.json`.

  • Playwright, browser automation (needs a browser Playwright can launch): `claude mcp add playwright -- npx -y @playwright/mcp@latest --headless`
  • Chrome DevTools, real performance traces and Core Web Vitals off a running page: `claude mcp add chrome-devtools -- npx -y chrome-devtools-mcp@1.10.1`. Google's own server, published on npm. It drives a Chrome instance, so it reads and acts on whatever that browser can reach, including any session the user is signed into — offer it for performance work against a local dev server, not as a default extra. Pin the version as above rather than `@latest`, so an upstream change cannot alter what attaches.
  • Surfpool, local validator and mainnet-fork control: `claude mcp add surfpool -- surfpool mcp`. It needs the `surfpool` CLI on PATH; check with `command -v surfpool`, and if it is missing give the user the install command (`curl -L https://surfpool.run/install | sh` or `brew install txtx/taps/surfpool`) rather than running it.
  • Chainstack, multi-chain RPC platform control: `claude mcp add --transport http chainstack https://mcp.chainstack.com/mcp`. It needs a key from https://console.chainstack.com/user/settings/api-keys for most of what it does — node deployment, project management and testnet funding — passed as `--header "Authorization: Bearer <key>"` on that command. Five read-only tools (docs search, platform status, pricing) answer without one. Every tool is listed either way, so a keyless install looks complete and fails at the call; say which half works before the user adds it.
  • Supabase, the Postgres backend behind an indexer or dApp. Offer the read-only, project-scoped form first, as the recommended default: `claude mcp add --transport http supabase "https://mcp.supabase.com/mcp?read_only=true&project_ref=<ref>"`. Say what each parameter does and let the user choose — `read_only=true` hides the 12 write tools and forces `execute_sql` into a read-only Postgres session; `project_ref` drops the whole `account` group, which is what removes cross-project reach and `create_project`. Unflagged, `DEFAULT_FEATURES` gives 31 tools of which 12 write (36 exist, 13 of them not read-only). If the user wants write access — applying a migration, seeding a table — give them the form without the parameters they don't want, and tell them what it reaches: `execute_sql` is an unrestricted SQL channel into the app's database, `DROP`, `DELETE` and `TRUNCATE` included with no statement filtering, and `apply_migration` is the same reach with DDL. `create_project` and `create_branch` also spend money, branches hourly-billed on paid plans. Which form fits is the user's call; make it an informed one rather than a narrow one. Quote the path exactly: `https
Read more
@solanabr
Ships withai-kit

Claude Code, set up to ship on Solana. Not programs alone — the whole lifecycle: validating the idea, building the program and the app around it, shipping it, and the launch and growth work that follows.

1113 skills15 agents4 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
111
Star history of solanabr/solana-ai-kit on GitHub, a chart by star-history.com

Other commands on ai-kit.

add-skill

add-skill

Command

Install a pinned skill extension on demand (/add-skill <id>), or list core packs and extensions

@solanabr@solanabrInstall Command
adv

adv

Command

Short for /adversarial: run every task through proposer and adversary pairs, no triage

@solanabr@solanabrInstall Command
adversarial

adversarial

Command

Put a task's load-bearing claims and key decisions through a proposer and an adversary, with proof

@solanabr@solanabrInstall Command
audit-solana

audit-solana

Command

Audit Solana program code for exploitable bugs and write a findings report

@solanabr@solanabrInstall Command
benchmark

benchmark

Command

Compare per-instruction CU with the stored baseline to catch regressions

@solanabr@solanabrInstall Command

More commands from other plugins.

build
Auto-invoked

build

Command

Implement tasks incrementally — build, test, verify, commit. Add "auto" to run the whole plan in one approved pass.

@addyosmani@addyosmaniInstall Command