hacklist-mcp
This server provides an advanced, intelligent API for discovering, filtering, and analyzing AI and Web3 hackathons, grants, and bounties.
Perform detailed keyword searches and filtering by criteria such as type, format, min prize, and closing deadlines.
Generate personalized recommendations based on your skills, geographic location, and interests, while scoring briefs to avoid generic challenges.
Retrieve comprehensive details for specific listings, including prize breakdowns (cash vs. credits), eligibility checks, and detailed project briefs.
Track new listings daily or find opportunities that are closing soon.
Provide a real-time overview of HackList data, including total prizes and listing counts, or allow for data refreshing.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@hacklist-mcp What should I enter this month? I write Solidity, can't travel."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
hacklist-mcp
An MCP server that gives Claude and ChatGPT live access to HackList, the directory of AI and Web3 hackathons, grants, bounties and programs.
Ask things like:
"What should I enter this month? I write Solidity and Python, build agents, I'm in Nigeria and can't travel."
"When was the Qloo hackathon posted, and what's the actual cash prize?"
"Anything new on HackList this week over $10k?"
"Find ZK or privacy hackathons closing in the next 10 days."
Why it isn't just a scraper
HackList lists everything. This server tells you which listings are worth your weekend:
Problem on the raw list | What the server does |
Same event listed twice (Amazon, GitLab, OpenCV, GenAI Works…) | Detects duplicates by title, organizer, deadline and apply link, and collapses them |
"$190,000 total value" that is mostly AWS credits | Separates cash from credits clause by clause; headline shows the cash |
₹, USDC, USDT, € prizes you can't compare | Converts to an approximate USD figure (original text always kept) |
Events you can't actually enter | Flags students-only, region-locked, in-person-only, partners-only and application-gated events, and drops them from recommendations |
"Build an AI app that solves real-world problems" | Scores each brief for how generic it is (0 = specific, 1 = generic) and lists the concrete hooks: named APIs, datasets, scoring metrics, tracks |
Rolling grants and bounties with no deadline | Kept as open ("no fixed deadline") and ranked fairly instead of being dropped or buried |
best_opportunities combines all of that with your skills and constraints and explains every pick (why) and every risk (watch_outs).
Related MCP server: bounty-mcp
Tools
Tool | What it does |
| Ranks open opportunities for a builder (skills, interests, country, student, can travel, cash only). Down-ranks generic briefs, removes ineligible ones, explains each pick. |
| Keyword search with filters: type, AI/Web3, online/in-person/hybrid, min prize, cash only, closes within N days, updated within N days, include closed. |
| Full detail for one listing by HackList URL, id or title: brief, prize (USD estimate, cash vs credits), deadline and days left, posted/updated date, apply link, eligibility, duplicates. |
| Listings posted or updated in the last N days. |
| Open listings ending within N days, soonest first. |
| Counts, cash prize total, biggest prizes, duplicate groups, data coverage. |
| The two tools ChatGPT connectors and deep research expect. |
All tools are read-only.
Install
Claude and ChatGPT on the web (no install)
A hosted server is live, so on claude.ai and chatgpt.com you only paste one URL:
https://hacklist-mcp.samuelsuccess234.workers.dev/mcpclaude.ai (also syncs to the Claude desktop and mobile apps)
Open Settings → Connectors and click Add custom connector.
Name:
HackList. Remote MCP server URL: the URL above. Click Add.In a chat, open the tools menu next to the message box and make sure HackList is turned on.
Ask: "What hackathons are open right now?" or "What should I enter this month? I write Solidity and I'm in Nigeria."
ChatGPT
Open Settings → Apps & Connectors → Advanced settings and turn on Developer mode.
Back in Apps & Connectors, click Create.
Name:
HackList. MCP server URL: the URL above. Authentication: No authentication. Tick the box saying you trust this application, then click Create.In a chat, click +, choose Developer mode, enable HackList, and ask your question.
ChatGPT's deep research uses the search and fetch tools; normal chats can call all of them.
If you can't find the connector option, check your plan: Claude and ChatGPT decide which plans can add custom connectors, and that changes over time.
Claude Desktop (local, stdio)
Requires Node 18.17+.
Add to claude_desktop_config.json:
{
"mcpServers": {
"hacklist": {
"command": "npx",
"args": ["-y", "hacklist-mcp"]
}
}
}Claude Code
claude mcp add --transport http hacklist https://hacklist-mcp.samuelsuccess234.workers.dev/mcp
# or run it locally:
claude mcp add hacklist -- npx -y hacklist-mcpCursor, Windsurf, other stdio clients
Same command: npx -y hacklist-mcp.
Self-hosting the connector
To run your own copy instead of the hosted URL, deploy the HTTP mode or the Cloudflare Worker (below) and use https://your-host/mcp in the steps above.
Run the HTTP server
npm install && npm run build
PORT=3000 npm run start:http # serves POST /mcp and GET /healthzStateless Streamable HTTP, so it scales horizontally and works behind any load balancer. One HackList snapshot is shared across requests.
Deploy anywhere that runs Docker:
docker build -t hacklist-mcp .
docker run -p 3000:3000 hacklist-mcpWorks as-is on Render, Railway, Fly.io or Cloud Run (all give you HTTPS). To keep it private, set HACKLIST_MCP_TOKEN and the server will require Authorization: Bearer <token>. Leave it unset for a public, no-auth connector.
Cloudflare Workers
src/worker.ts serves the same endpoints without Express or a disk cache:
npx wrangler login
npm run dev:worker # local, http://localhost:8787/mcp
npm run deploy:worker # https://hacklist-mcp.<your-subdomain>.workers.dev/mcp
npx wrangler secret put HACKLIST_MCP_TOKEN # optional, same bearer-token behaviourThe HackList snapshot is cached per Worker instance, so a cold instance's first call re-fetches the feed (about 2s). If the free plan's 10ms CPU limit trips on cold starts (Exceeded CPU Limit in npx wrangler tail), move to Workers Paid.
Check it's reading HackList correctly
npm run checkPrints whether the official feed was used, how many listings were loaded vs. what HackList says is open, and how often each field was filled.
Configuration
Env var | Default | Purpose |
|
| HTTP mode port |
| unset | Require a bearer token in HTTP mode |
|
| How long a snapshot stays fresh |
|
| Cap on detail pages fetched per refresh |
|
| Disk cache for detail pages (restarts are instant) |
|
| Override for testing or a mirror |
|
| Feed path or full URL |
How it gets the data
Official feed (
GET https://hacklist.io/api/opportunities), provided by HackList. One request per refresh (cached 20 min) returns every open hackathon, program, grant and bounty, with each listing's realcreated_atposting date.Fallback: if the feed is down or returns something unexpected, the server reads the public pages instead (homepage,
/sitemap.xml, detail pages), keyed off visible labels so cosmetic redesigns don't break it.Closed listings (
include_closed: true) come from the sitemap and detail pages, since the feed only lists open ones.
hacklist_overview and every result report data_source (feed or pages) and data_as_of (when HackList generated the feed).
Thanks to HackList (@0xbeni, Telegram) for exposing the feed. This project is not affiliated with HackList.
Develop
npm install
npm test # 19 tests: feed + page parsers, fallback, prize/eligibility/duplicate logic, full MCP round-trips
npm run dev # stdio server via tsxLimits
Prize USD figures are estimates (fixed approximate FX rates). The original prize text is always returned alongside.
Prizes paid in crypto (ETH, SOL…) get no USD estimate because the price moves; they're labeled instead.
In page-scraping fallback mode, programs, grants and bounties beyond the homepage's first page may be missing (the sitemap only covers hackathons).
"Generic" scoring is heuristic. It's tuned to separate briefs like "build any AI app" from briefs like "detect 12 knee MRI abnormalities, scored by AUC", and
include_generic: trueturns the penalty off.
MIT licensed.
Available Tools
8 toolsbest_opportunitiesRank the best non-generic opportunitiesARead-onlyIdempotentInspect
Ranks open HackList opportunities for a specific builder and explains each pick. Favours specific briefs (a named API, dataset, metric or protocol) over generic 'build anything with AI' events, weighs prize size and whether it is real cash, deadline runway and accessibility, collapses duplicate listings, and drops events the builder can't enter (students only, region-locked, in-person, partners only). Returns why each one ranks and what to watch out for.
Inputs: kind, limit, skills, country, +7 more.
closing_soonClosing soon on HackListBRead-onlyIdempotentInspect
Open listings whose deadline is within N days, soonest first, with the prize and whether it's worth a sprint.
Inputs: days, limit, min_prize_usd.
fetchFetch HackList listing (connector)ARead-onlyIdempotentInspect
Fetch the full HackList listing for an id returned by search. (Compatibility tool for ChatGPT connectors and deep research.)
Inputs: id (required).
get_opportunityGet HackList listingARead-onlyIdempotentInspect
Full details for one HackList listing: brief, prize (with USD estimate and cash vs credits), deadline and days left, when it was posted/updated on HackList, apply link, eligibility traps (students only, region-locked, in-person, approval needed) and duplicate listings. Accepts a HackList URL, an id, or a title.
Inputs: ref (required).
hacklist_overviewHackList overviewARead-onlyIdempotentInspect
A snapshot of HackList right now: how many open listings by type and category, total listed prize money, the biggest prizes, duplicate listings found, and how fresh/complete this server's data is. Pass refresh=true to re-fetch.
Inputs: refresh.
searchSearch HackList (connector)ARead-onlyIdempotentInspect
Search open HackList hackathons, grants and programs by keyword. Returns ids to pass to fetch. (Compatibility tool for ChatGPT connectors and deep research.)
Inputs: query (required).
search_opportunitiesSearch HackListARead-onlyIdempotentInspect
Search and filter HackList's AI & Web3 hackathons, grants, bounties and programs. Filters by keyword, type, category, format, prize, how soon it closes and how recently it was posted or updated. Duplicate listings of the same event are collapsed by default. Use get_opportunity for the full brief and eligibility details of a result.
Inputs: kind, sort, limit, query, +9 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 8 tools
There is notable functional overlap: search and search_opportunities both do keyword search over listings (one returning ids, the other filtered results), and fetch and get_opportunity both retrieve full details for a single listing. Descriptions partially disambiguate by labeling search/fetch as 'compatibility tools' and by giving search_opportunities richer filtering, but an agent could easily pick the wrong one. Other tools (whats_new, closing_soon, best_opportunities) are more clearly distinct.
The names mix several conventions: verb_noun (search_opportunities, get_opportunity), adjective_noun (best_opportunities, closing_soon), bare verbs (fetch, search), and noun/snapshot forms (whats_new, hacklist_overview). Each name is readable, but there is no single predictable pattern to rely on when guessing a tool name.
Eight tools is a well-scoped size for a read-only listing aggregator covering discovery, detail, ranking, and stats. The only mild redundancy is the pair of compatibility tools (search/fetch) that duplicate search_opportunities/get_opportunity, but the count is still reasonable.
The surface covers the key read workflows: keyword/filter search, recent listings, deadline-driven listing, full detail retrieval, personalized ranking, and a data-freshness overview. As a read-only catalog it is largely complete, with the only real gap being that duplicate-listing and freshness concerns are surfaced only indirectly rather than via dedicated tools.
Maintenance
Related MCP Connectors
Search verified-open US grants (federal, state, foundation). Read-only MCP for AI agents.
Search US grants + federal contracts (Grants.gov + SAM.gov) from any LLM.
Find and win startup funding: programs, investors, perks, and an AI autopilot for applications
Eligibility-first UK & EU grant discovery, inside ChatGPT and Claude.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides hackathon intelligence for builders by analyzing projects to rank best hackathons, target tracks, and differentiate using fit scoring and public gallery intel.28MIT
- AlicenseAqualityDmaintenanceEnables AI agents to find and query real-time GitHub coding bounties with built-in scam filtering, supporting listing, matching, and detailed bounty retrieval.462 npmApache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to discover Gibwork bounties, verify their Solana escrow accounts on-chain, rank opportunities by value, competition and deadline, diff captures over time, and export Markdown/CSV/JSON reports through four read-only MCP tools requiring no wallet or API key.MIT
- AlicenseNot gradedqualityCmaintenanceEnables users to discover, rank, and act on paid opportunities such as bounties, hackathons, and jobs, with execution plans and voice-friendly answers through Alexa+ and MCP.MIT