HackList

io.github.mrfomoweb3由 GitHub 帳號 mrfomoweb3 發布v0.2.0更新於 Oct 27, 2026

Live AI & Web3 hackathons, grants and programs from HackList, ranked for what's worth entering.

已驗證Streamable HTTP可網頁執行效率與工作流網頁搜尋與抓取

概覽

AI 產生的概覽

讓助理取得 HackList 上 AI 與 Web3 黑客松、補助、懸賞和計畫的即時資訊,可搜尋、查看詳情並依技能排序推薦。

可以做什麼
  • 依關鍵字、類型、類別、形式、獎金、截止時間與更新時間搜尋並篩選開放的黑客松、補助、懸賞與計畫
  • 查看單筆項目的完整資訊:簡介、獎金(含美元估算及現金與抵用額度區分)、截止時間、申請連結、資格限制與重複項目
  • 依開發者的技能與限制條件排序開放機會,並為每項推薦說明理由與注意事項
  • 列出最近 N 天內新發布或更新的項目,以及 N 天內即將截止的項目
  • 彙整目錄概況:依類型與類別的數量、獎金總額、最高獎金與資料新鮮度
  • 提供供 ChatGPT 連接器與深度研究使用的相容搜尋與擷取工具
適用情境
適合想找黑客松、補助或懸賞參加、判斷哪些值得投入時間,或查詢某筆項目的獎金、截止時間與資格條件時使用。也適合每週查看新增與即將截止的機會。
執行需求
可使用託管的遠端端點(免安裝、免驗證),或透過 npx 在本機執行,需要 Node 18.17 以上版本。自行部署 HTTP 或 Cloudflare Worker 模式時可選用 HACKLIST_MCP_TOKEN 要求 bearer 權杖,其他設定涉及連接埠、快取與訂閱來源網址。需要能連線至 HackList 的網路。
安裝前請注意
所有工具皆為唯讀,託管端點無需任何憑證。獎金美元數值是以固定匯率估算,加密貨幣獎金不提供估算,通用型題目的評分屬啟發式判斷,結果應與原始項目文字核對。本專案與 HackList 無隸屬關係,依賴其訂閱來源,退回網頁擷取時可能遺漏部分計畫、補助與懸賞。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 HackList,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.mrfomoweb3%2Fhacklist-mcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "hacklist": {
      "type": "http",
      "url": "https://hacklist-mcp.samuelsuccess234.workers.dev/mcp"
    }
  }
}

README

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 listWhat 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 creditsSeparates cash from credits clause by clause; headline shows the cash
₹, USDC, USDT, € prizes you can't compareConverts to an approximate USD figure (original text always kept)
Events you can't actually enterFlags 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 deadlineKept 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).

Tools

ToolWhat it does
best_opportunitiesRanks open opportunities for a builder (skills, interests, country, student, can travel, cash only). Down-ranks generic briefs, removes ineligible ones, explains each pick.
search_opportunitiesKeyword search with filters: type, AI/Web3, online/in-person/hybrid, min prize, cash only, closes within N days, updated within N days, include closed.
get_opportunityFull 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.
whats_newListings posted or updated in the last N days.
closing_soonOpen listings ending within N days, soonest first.
hacklist_overviewCounts, cash prize total, biggest prizes, duplicate groups, data coverage. refresh: true re-fetches.
search / fetchThe 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/mcp

claude.ai (also syncs to the Claude desktop and mobile apps)

  1. Open Settings → Connectors and click Add custom connector.
  2. Name: HackList. Remote MCP server URL: the URL above. Click Add.
  3. In a chat, open the tools menu next to the message box and make sure HackList is turned on.
  4. Ask: "What hackathons are open right now?" or "What should I enter this month? I write Solidity and I'm in Nigeria."

ChatGPT

  1. Open Settings → Apps & Connectors → Advanced settings and turn on Developer mode.
  2. Back in Apps & Connectors, click Create.
  3. Name: HackList. MCP server URL: the URL above. Authentication: No authentication. Tick the box saying you trust this application, then click Create.
  4. 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:

json
{  "mcpServers": {    "hacklist": {      "command": "npx",      "args": ["-y", "hacklist-mcp"]    }  }}

Claude Code

bash
claude mcp add --transport http hacklist https://hacklist-mcp.samuelsuccess234.workers.dev/mcp# or run it locally:claude mcp add hacklist -- npx -y hacklist-mcp

Cursor, 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

bash
npm install && npm run buildPORT=3000 npm run start:http          # serves POST /mcp and GET /healthz

Stateless Streamable HTTP, so it scales horizontally and works behind any load balancer. One HackList snapshot is shared across requests.

Deploy anywhere that runs Docker:

bash
docker build -t hacklist-mcp .docker run -p 3000:3000 hacklist-mcp

Works 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:

bash
npx wrangler loginnpm run dev:worker                    # local, http://localhost:8787/mcpnpm run deploy:worker                 # https://hacklist-mcp.<your-subdomain>.workers.dev/mcpnpx wrangler secret put HACKLIST_MCP_TOKEN   # optional, same bearer-token behaviour

The 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

bash
npm run check

Prints 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 varDefaultPurpose
PORT3000HTTP mode port
HACKLIST_MCP_TOKENunsetRequire a bearer token in HTTP mode
HACKLIST_LIST_TTL_MS1200000 (20 min)How long a snapshot stays fresh
HACKLIST_MAX_DETAIL_FETCHES260Cap on detail pages fetched per refresh
HACKLIST_CACHE_DIR~/.cache/hacklist-mcpDisk cache for detail pages (restarts are instant)
HACKLIST_BASE_URLhttps://hacklist.ioOverride for testing or a mirror
HACKLIST_FEED_URL/api/opportunitiesFeed path or full URL

How it gets the data

  1. 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 real created_at posting date.
  2. 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.
  3. 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

bash
npm installnpm test        # 19 tests: feed + page parsers, fallback, prize/eligibility/duplicate logic, full MCP round-tripsnpm run dev     # stdio server via tsx

Limits

  • 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: true turns the penalty off.

MIT licensed.

來源:README.md,提交 4fa6e14

工具

8

search_opportunities

Search HackList

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.

輸入參數kindsortlimitqueryformatcategorycash_onlyfree_onlymin_prize_usdinclude_closedcloses_within_dayscollapse_duplicates另有 1 個

get_opportunity

Get HackList listing

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.

輸入參數ref必填

best_opportunities

Rank the best non-generic opportunities

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.

輸入參數kindlimitskillscountrycash_onlyinterestscan_travelis_studentmax_days_leftmin_days_leftinclude_generic

whats_new

New on HackList

Listings posted or updated on HackList in the last N days, newest first. Useful for 'what got added this week'. Uses HackList's own posted date when the site exposes it, otherwise its sitemap last-modified time.

輸入參數dayslimitopen_only

closing_soon

Closing soon on HackList

Open listings whose deadline is within N days, soonest first, with the prize and whether it's worth a sprint.

輸入參數dayslimitmin_prize_usd

hacklist_overview

HackList overview

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.

輸入參數refresh

fetch

Fetch HackList listing (connector)

Fetch the full HackList listing for an id returned by search. (Compatibility tool for ChatGPT connectors and deep research.)

輸入參數id必填

版本歷史

1
  1. v0.2.0最新Oct 21, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分