Mirror of the canonical pump.fun MCP server at https://three.ws/api/pump-fun-mcp
(api/pump-fun-mcp.js). Deploy: wrangler deploy
Full MCP Streamable HTTP (protocol 2025-06-18), identical to the Vercel handler:
POST— JSON-RPC 2.0, single requests and batches (max 16). Notification-only requests return202 Acceptedwith no body.GET/HEAD— SSE handshake (content-type: text/event-stream). The worker is stateless and never initiates server→client messages, so the stream closes immediately after opening — permitted by the spec.DELETE— session terminate (204; nothing to tear down).OPTIONS— CORS preflight. CORS is open (*), matching the read-only surface.
Every JSON-RPC response carries the mcp-protocol-version header.
Canonical names are snake_case (search_tokens, get_bonding_curve, …).
tools/list advertises only canonical names; tools/call accepts the legacy
camelCase names (searchTokens, getBondingCurve, …) forever via
TOOL_NAME_ALIASES in src/pump/mcp-tools.js — the shared single source of truth.
These are deliberate scope decisions, not platform constraints — CF Workers support SSE/streams fine:
- Tool subset. The worker serves only the on-chain + indexer data tools
(
get_bonding_curve,get_token_details,get_token_holders,search_tokens,get_token_trades,get_trending_tokens,get_new_tokens,get_graduated_tokens,get_king_of_the_hill,get_creator_profile), and itstools/listhonestly advertises exactly that subset. The kol/sns/social/claims and auth-gated tools depend on three.ws backend modules (x402 settlement, bearer auth, the radar/leaderboard stores) that live in the Vercel deployment. - No auth / x402 gating. None of the gated tools (
pumpfun_vanity_mint,pumpfun_watch_whales,pumpfun_watch_claims) are served here, so the worker carries no bearer or payment plumbing. - No rate limiting in-process. Handled at the Cloudflare edge layer.
get_token_tradesis indexer-only here. The Vercel handler falls back to decoding trades from chain; the worker requiresPUMPFUN_BOT_URL.
| Secret | Purpose |
|---|---|
SOLANA_RPC_URL |
mainnet RPC endpoint (default: public) |
SOLANA_RPC_URL_DEVNET |
devnet RPC endpoint (default: public) |
PUMPFUN_BOT_URL |
upstream indexer endpoint (optional) |
PUMPFUN_BOT_TOKEN |
bearer token for the indexer (optional) |