HN Who is hiring

io.github.Crayz129Published by GitHub account Crayz129v0.1.0Updated Oct 24, 2026

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

VerifiedSTDIODesktop onlyWeb Search & ScrapingData & Analytics

Overview

AI-generated overview

A local MCP server that turns Hacker News monthly 'Who is hiring?' threads into a searchable, structured job feed for assistants.

What you can do
List the latest monthly hiring threads with ids and comment counts, and search one month's posts by free text, location, work mode, technologies, salary presence or visa sponsorship, with sorting and paging that return compact summaries. Fetch the full text and parsed fields of a single post by id. Compare months to see the share of posts mentioning each technology and remote, hybrid or onsite counts.
When to use it
Useful when you want to explore or compare Hacker News hiring posts as structured data, for example finding remote roles in a given technology that state a salary, or checking how demand for a skill changes over recent months.
Requirements
Runs locally over stdio via npx, so Node.js 22 or later is needed. No account or API key. It calls the public HN Algolia API, so network access is required. An optional HN_HIRING_MCP_CACHE_DIR environment variable sets the cache directory, or disables the disk cache.
Before you install
Read-only: it does not apply on anyone's behalf. Parsed fields are best-effort from free-form posts, so check the headline and original post link. Email addresses are masked and poster usernames are not returned, but post content is fetched from a third-party public API. Responses are cached on disk by default.

Installation

In SourceWeft

  1. Open HN Who is hiring in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

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

Source: README.md at commit 2b3e280

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.0LatestOct 15, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts