HN Who is hiring

io.github.Crayz129由 GitHub 账号 Crayz129 发布v0.1.0更新于 Oct 24, 2026

Search, read and compare Hacker News "Who is hiring?" job posts as typed data. Read-only.

概览

AI 生成的概览

一个本地 MCP 服务器,把 Hacker News 每月“Who is hiring?”招聘帖转换为可搜索的结构化职位数据,供助手使用。

可以做什么
列出最近各月招聘帖及其编号和评论数,并按自由文本、地点、工作模式、技术、是否标注薪资或是否提供签证担保搜索某个月的帖子,支持排序和分页,返回精简摘要。按编号获取单条帖子的全文和解析字段。按月对比各技术的提及占比以及远程、混合、现场岗位数量。
适用场景
适合把 Hacker News 招聘帖当作结构化数据来浏览或比较,例如查找某技术方向且标注薪资的远程岗位,或查看某项技能需求在近几个月的变化。
运行要求
通过 npx 以 stdio 在本地运行,需要 Node.js 22 或更高版本。无需账号或 API 密钥。会调用公开的 HN Algolia API,因此需要网络访问。可选环境变量 HN_HIRING_MCP_CACHE_DIR 用于指定缓存目录或关闭磁盘缓存。
安装前请注意
只读,不会代替任何人投递。字段是从自由文本中尽力解析的,应核对标题和原帖链接。邮箱地址会被遮蔽,发帖人用户名不会返回,但帖子内容来自第三方公开 API。响应默认会缓存到磁盘。

安装

在 SourceWeft 中

  1. 打开 控制台中的 HN Who is hiring,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

hn-hiring-mcp

[CI] [npm]

An MCP server that turns the monthly Hacker News "Ask HN: Who is hiring?" threads into a typed, searchable job API.

Every month hundreds of companies post jobs there as free-form comments. HN's own API can only return items by id, so there is no way to ask "remote Python roles in Europe that state a salary" or "is Rust demand growing?". This server parses each post into structured fields (company, roles, location, remote/hybrid/onsite, salary, visa, technologies) and exposes four read-only tools to any MCP client.

Tools

ToolWhat it does
list_hiring_threadsLatest monthly threads with ids and comment counts.
search_jobsSearch one month: free text, location, work_mode, technologies, has_salary, visa_sponsorship, sort, limit/offset. Returns compact summaries.
get_jobFull text and parsed fields of one post by id.
hiring_trendsPer month: share of posts mentioning each technology, and remote/hybrid/onsite counts.

All tools declare JSON Schemas for input and output (structuredContent), are annotated readOnlyHint, and fail with a clear, model-readable error:

INVALID_INPUT: Unknown technology "cobol". Known technologies: Python, TypeScript, … For anything else use the free-text "query".NOT_FOUND: HN item 49922569 is not a top-level job post in a "Who is hiring?" thread.UPSTREAM_ERROR: HN API answered 503 while loading thread list. Try again later.

Install

Requires Node.js 22+.

Claude Code

bash
claude mcp add hn-hiring -- npx -y hn-hiring-mcp

Claude Desktop: add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):

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

Any other MCP client: run npx -y hn-hiring-mcp as a stdio server.

Example

An abridged session in Claude Desktop (October 2026 data):

You: Find remote Python jobs from this month's Who is hiring that state a salary.

Claude calls search_jobs({ "technologies": ["Python"], "work_mode": "remote", "has_salary": true })

Claude: The October 2026 thread has 37 remote posts mentioning Python; 22 of them state a salary:

  1. NeuralFrame: Senior Backend Engineer, Medical Data Pipeline (Python + Rust). REMOTE (US only, no visa sponsorship), $170k–$210k + equity. HN post
  2. …

You: Has demand for MCP experience changed this year?

Claude calls hiring_trends({ "technologies": ["MCP", "Python", "TypeScript"], "months": 6 })

Claude: Yes. Posts mentioning MCP went from 2.5% in May to 4.5% in October (1.3% at the June low), while Python (22–27%) and TypeScript (20–24%) stayed flat.

How it works

  • Data source: the public HN Algolia API. One request returns a whole thread (~250 job posts), instead of ~400 item requests to the Firebase API.
  • Politeness: requests are serialised with at least 1 s between them, send an identifying User-Agent, and retry once on 429/5xx.
  • Cache: responses are cached in memory and on disk (~/.cache/hn-hiring-mcp, override with HN_HIRING_MCP_CACHE_DIR, or off). Threads older than 45 days never change and are kept; the current month is refreshed hourly. Replies to job posts are dropped before caching.
  • Parsing (src/parse.ts) follows the thread's own convention, Company | Role | Location | REMOTE | Salary, and also handles — separators, the location in parentheses and salary ranges written with -. Technology detection (src/technologies.ts) leans conservative: "Go ahead and apply" is not Go. Posts are free text, so the fields are best-effort; headline and hn_url are always there to check.

Privacy and scope

  • Read-only. No accounts, no logins, no applying on anyone's behalf.
  • E-mail addresses in posts (including name [at] company [dot] com and puzzle-style ones) are replaced with [email on HN]; the user follows hn_url to the original post to apply.
  • HN usernames of posters are not returned.

Development

bash
npm installnpm test            # vitest, against recorded fixtures only; no networknpm run typechecknpm run buildnode scripts/smoke.ts search_jobs '{"query":"rust","limit":3}'   # live call through a real MCP clientnode scripts/record-fixtures.ts                                   # refresh fixtures (anonymised, trimmed)

The server tests connect a real MCP Client to the server over an in-memory transport, so they exercise schemas, validation and error mapping the way Claude does.

License

MIT

来源:README.md,提交 2b3e280

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.0最新Oct 15, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分