DEV Community

Weston G
Weston G

Posted on

I shipped an MCP server for crypto airdrops — install in 1 config line

I shipped a tiny MCP server last week that turns a curated crypto airdrop directory into 3 tools any LLM client (Claude Desktop, Cursor, Continue, Windsurf) can call directly.

This post is the install snippet + a screenshot of it returning real data — so you can decide in 30 seconds whether it's worth one config line.

What you get

Three tools, no signup, no API key, no rate limit:

  • list_active_airdrops(chain?, risk?, sort_by?, limit?) — browse 32 vetted active airdrops, filter by chain (Solana, Base, Ethereum…) or risk level (verified / unverified)
  • get_airdrop(slug) — full details for one campaign: action steps, weekly effort, cost floor, risk notes, official URL
  • check_wallet(addr) — paste an EVM or Solana address, fan out to 7 public RPCs (Ethereum, Base, Linea, Arbitrum, Polygon, BSC, Solana), and surface every tracked airdrop whose chain you've already touched

Hosted, JSON-RPC 2.0 over HTTP, CORS-open. Endpoint: https://web3-discover.vercel.app/api/mcp.

Install in Claude Desktop or Cursor

Add this one block to your MCP config:

{
  "mcpServers": {
    "web3-discover": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://web3-discover.vercel.app/api/mcp"]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

That's it. Restart your client. Ask: "What active airdrops can I farm on Solana this week with under $100 capital?"

What it returns (live)

Here's the actual JSON-RPC 2.0 response from a real tools/call against the live endpoint — pulled the moment I wrote this article:

web3-discover MCP returning 3 real airdrop entries via JSON-RPC 2.0

Verify it yourself:

curl -s -X POST https://web3-discover.vercel.app/api/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_active_airdrops","arguments":{"limit":3,"sort_by":"added"}}}'
Enter fullscreen mode Exit fullscreen mode

You get back structured entries: slug, project, chain, blurb, deadline, effort estimate, cost floor, risk flag (verified means the team has publicly confirmed TGE plans; unverified means speculative), and the official URL.

Why this is interesting (beyond "another MCP server")

I run a curated airdrop directory at web3-discover.vercel.app. Every entry is hand-vetted, scam-filtered, and re-checked weekly. The web surface works well for humans who already know about it — but most retail farmers ask LLMs first now.

So I exposed the directory as MCP tools. Three things this unlocks that the web UI alone can't:

  1. Natural-language filtering. "What's verified-only, ongoing, costs gas only?" — the LLM picks list_active_airdrops, filters by risk=verified, sorts by deadline, narrates the result.
  2. Wallet-aware advice. check_wallet returns which chains your wallet has touched plus the entries on those chains. The LLM combines that with your stated risk tolerance and tells you what to prioritize, not just what exists.
  3. Composition with other MCP servers. If you've got a wallet MCP server + this one, the LLM can chain "what airdrops am I close to qualifying for, given my actual on-chain history?"

No tracking. The directory has no signup. The check_wallet tool just reads from public RPCs — no address is logged.

Why hosted, not stdio?

Most MCP servers ship as npx some-package that runs on your machine. I went hosted (HTTP transport via mcp-remote bridge) for one reason: the data changes weekly. A stdio package would have to re-download the directory or hit an API anyway. Hosting it means the data refreshes when I do a freshness sweep, not when you remember to npm update.

Tradeoff: you trust me to keep the endpoint up. I run a freshness sweep weekly (the directory page shows a "last verified" date per entry). If you'd rather self-host, the source is MIT and the MCP handler is a single ~250-line file (api/mcp.mjs).

What works, what doesn't, what's next

Works today:

  • All 3 tools verified end-to-end on Claude Desktop and Cursor with mcp-remote
  • 32 active entries, 7-chain wallet check
  • No auth, no rate limit at current load

Doesn't yet:

  • No eligibility scoring — check_wallet is a presence check, not an "are you actually eligible?" check. Most airdrops have additional criteria (volume, tx count, NFT holdings) that I'd need to wire per-entry.
  • No notifications — if a deadline shifts or an entry gets removed, you'll only see it next time you query.

Next:

  • subscribe_deadlines(addr) returning an iCalendar feed so deadlines land in your calendar
  • Per-entry eligibility checks where the airdrop has a public scoring API
  • Adding the directory as an MCP resource (not just tools) so LLMs can browse without explicit calls

Try it

Drop the config block above into Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on macOS) or Cursor (Settings → MCP). Ask "What airdrops are worth farming this week?"

If it's useful, the directory itself lives at web3-discover.vercel.app — same data, human-shaped.

If something breaks or you want a tool added, open an issue.


Built with Astro + Vercel serverless. Three days, ~250 LOC for the MCP handler. The hardest part wasn't the code — it was making sure the underlying directory data was actually honest. (No paid placements pretending to be listings.)

Top comments (0)