zash-mcp
v1.0.0
Published
Official MCP server for the ZASH Launchpad public API
Maintainers
Readme
zash-mcp — ZASH Launchpad MCP Server
Official MCP (Model Context Protocol) server for the ZASH Launchpad. It wraps the public read-only REST API (https://launchpad.zash.xyz/api/v1) so any MCP-capable client (Claude Code, Claude Desktop, etc.) can browse projects, prices, holders, milestones, activity and comments — no API key required.
Transports: stdio (local) and Streamable HTTP (remote / hosted). Runtime: Node.js >= 18 (uses global fetch). Dependencies: @modelcontextprotocol/sdk + zod only.
Just want to connect? Point any Streamable-HTTP MCP client at
https://launchpad.zash.xyz/mcp— nothing to install. See Remote / hosted below.
Tools
| Tool | Arguments | What it returns |
|---|---|---|
| list_projects | status? (fundraising | live_trading | failed | all), sort? (trending | newest | most-raised | ending-soon), limit? (default 20) | Compact marketplace list: id, name, ticker, status, raise + price summary |
| get_project | idOrTickerOrAddress | Full project detail (metadata, milestones, latest investments, live market fields) |
| get_ohlcv | project, timeframe? (1s…1W, all; default 1h), last? (default 100) | OHLCV candles in USDC, time in unix seconds |
| get_activity | project, limit? (default 50) | Latest buys/sells and governance events |
| get_holders | project | Top 100 holders with share %, role and lock flags |
| get_milestones | project | All milestones: tranches, deadlines, statuses, vote tallies, proofs |
| get_comments | project, limit? (default 100) | Latest top-level community comments |
Every project / idOrTickerOrAddress argument accepts a project UUID, a TokenSale contract address (0x…, the canonical public key), or a ticker (resolved via search; tickers can collide — prefer the address). Results are JSON with a one-line human summary first.
Unit convention
All tools follow one convention, matching the public REST API:
Every JSON value is passed through raw, exactly as the API returns it — no conversion.
list_projectsandget_projectreturn the same raw fields (totalRaised,raiseTarget,currentPrice,marketCap,priceChange24h), so amounts are directly comparable across tools. Simple rule: decimal strings are raw; JSON numbers are already display dollars.USDC BigInt fields are decimal strings holding raw 6-decimal integers: divide by 1,000,000 for dollars (e.g.
"500000000"=$500.00). This coverstotalRaised,raiseTarget, and milestonefundingAmounttranches.Token amounts are whole-token decimal strings (already post-decimal; no further scaling) — e.g. milestone
voteYes/voteNovote weights.Pre-computed values serialized as JSON numbers are already in USDC dollars / whole tokens — use as-is, do not divide. This covers
currentPrice,marketCap, all OHLCV candle values (open/high/low/close/volume, e.g.0.00008=$0.00008), and activityamount(USDC) /tokens(whole tokens).The one-line human summary at the top of each result shows friendly
$X,XXX.XXdollars for readability; the machine-readable JSON below it stays raw.
Install & run
Easiest — the hosted server, nothing to install. Point any Streamable-HTTP MCP client at https://launchpad.zash.xyz/mcp (see Remote / hosted). For Claude Code:
claude mcp add --transport http zash https://launchpad.zash.xyz/mcpLocal stdio server (self-hosters), published to npm — no clone needed:
npx zash-mcp # runs the local stdio MCP serverOr install it globally: npm i -g zash-mcp then run zash-mcp (stdio) or zash-mcp-http (Streamable HTTP server).
Build from the repo
cd mcp
npm install
npm run build # compiles to mcp/dist/
npm run smoke # end-to-end test against the live APIRemote / hosted
The server is also published over the MCP Streamable HTTP transport, so any AI platform can connect to a hosted URL with no install. The public endpoint is:
https://launchpad.zash.xyz/mcpIt exposes the same 7 tools. Sessions are negotiated automatically (the client gets an Mcp-Session-Id on initialize and echoes it back).
Connect from Claude Code
claude mcp add --transport http zash https://launchpad.zash.xyz/mcpConnect from OpenAI Codex CLI
Codex CLI speaks MCP over stdio, so the universal mcp-remote bridge connects it to the hosted URL — no install of ZASH code needed. Add to ~/.codex/config.toml:
# ~/.codex/config.toml
[mcp_servers.zash]
command = "npx"
args = ["-y", "mcp-remote", "https://launchpad.zash.xyz/mcp"]Generic Streamable-HTTP client config
{
"mcpServers": {
"zash": {
"transport": "http",
"url": "https://launchpad.zash.xyz/mcp"
}
}
}(Some clients call the key type instead of transport, or "streamable-http" instead of "http" — use whatever your client expects; the URL is the same.)
Run the HTTP server yourself
cd mcp
npm install
npm run build
npm run start:http # listens on 0.0.0.0:8020, MCP at /mcp, health at /healthOr with Docker:
docker build -t zash-mcp mcp/
docker run -p 8020:8020 zash-mcpBehind an nginx reverse proxy, forward location /mcp { proxy_pass http://127.0.0.1:8020; } (keep proxy_buffering off; and proxy_read_timeout high so SSE streams flow). The container also answers on / so it works whether or not nginx strips the path prefix.
Environment variables (all optional):
| Var | Default | Purpose |
|---|---|---|
| MCP_PORT | 8020 | Listen port |
| MCP_HOST | 0.0.0.0 | Listen host |
| MCP_HTTP_PATH | /mcp | MCP endpoint path (also accepts / and any suffix match) |
| MCP_ALLOWED_HOSTS | launchpad.zash.xyz,localhost,127.0.0.1 | Comma-separated Host allowlist |
| MCP_ENABLE_DNS_REBIND_PROTECTION | false | Enforce the Host/Origin allowlist (off by default since it sits behind a trusted proxy) |
| ZASH_API_URL | https://launchpad.zash.xyz | Upstream launchpad API base |
GET /health returns {"status":"ok","tools":7} for container/uptime checks.
Register with Claude Code (local stdio)
Using the published package (recommended):
claude mcp add zash -- npx -y zash-mcpOr from a local clone:
claude mcp add zash -- node <abs-path>/mcp/dist/index.js(Replace <abs-path> with the absolute path to this repo.)
Register with Claude Desktop
Add to claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"zash": {
"command": "node",
"args": ["<abs-path>/mcp/dist/index.js"]
}
}
}Generic MCP client config
Any client that speaks MCP over stdio:
{
"command": "node",
"args": ["<abs-path>/mcp/dist/index.js"],
"env": { "ZASH_API_URL": "https://launchpad.zash.xyz" }
}Self-hosted instances
Set ZASH_API_URL to point the server at any self-hosted launchpad deployment (default https://launchpad.zash.xyz):
"env": { "ZASH_API_URL": "https://my-launchpad.example.com" }Notes
- The upstream API is rate-limited to 100 requests/min per IP per endpoint; the server surfaces
429s as readable tool errors. - Ticker → project resolutions are cached in-memory for 5 minutes.
