npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

zash-mcp

v1.0.0

Published

Official MCP server for the ZASH Launchpad public API

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_projects and get_project return 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 covers totalRaised, raiseTarget, and milestone fundingAmount tranches.

  • Token amounts are whole-token decimal strings (already post-decimal; no further scaling) — e.g. milestone voteYes/voteNo vote 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 activity amount (USDC) / tokens (whole tokens).

  • The one-line human summary at the top of each result shows friendly $X,XXX.XX dollars 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/mcp

Local stdio server (self-hosters), published to npm — no clone needed:

npx zash-mcp          # runs the local stdio MCP server

Or 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 API

Remote / 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/mcp

It 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/mcp

Connect 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 /health

Or with Docker:

docker build -t zash-mcp mcp/
docker run -p 8020:8020 zash-mcp

Behind 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-mcp

Or 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.