Metadata-Version: 2.5
Name: hn-hiring-trends-mcp
Version: 0.1.0
Summary: MCP server: which skills are in demand on Hacker News "Who is hiring?" threads, month by month. No API keys.
Project-URL: Homepage, https://github.com/alialtunar/hn-hiring-trends-mcp
Project-URL: Repository, https://github.com/alialtunar/hn-hiring-trends-mcp
Project-URL: Issues, https://github.com/alialtunar/hn-hiring-trends-mcp/issues
Author: Ali Altunar
License: MIT
License-File: LICENSE
Keywords: claude,hacker-news,hiring,jobs,mcp,model-context-protocol,skills,trends
Requires-Python: >=3.10
Requires-Dist: httpx>=0.27
Requires-Dist: mcp<3,>=2.2
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Description-Content-Type: text/markdown

# hn-hiring-trends-mcp

<!-- mcp-name: io.github.alialtunar/hn-hiring-trends-mcp -->

**Which skills are tech companies hiring for, and which are rising?** An MCP server that reads every Hacker News ["Ask HN: Who is hiring?"](https://news.ycombinator.com/submitted?id=whoishiring) thread (one per month, 250–500 job posts each) and turns them into skill demand trends, remote and salary stats, and searchable job posts.

No API keys. One line to install.

```
You:    Which skills gained the most demand on HN hiring threads this year?
Claude: [rising_skills(months=12)]
        • "AI agents" went from 11.3% to 14.7% of job posts (+3.4 pts); in
          September 2026 alone it was in 17.4% of posts.
        • Python +2.5 pts, LLM +2.1 pts.
        • Frontend fell 4.3 pts and React 2.7 pts.
```
<sub>Summarized from real tool output: Oct 2025–Sep 2026, 3,788 job posts.</sub>

![Rising and falling skills on HN Who is hiring, by hn-hiring-trends](docs/demo.gif)

## Why

| You want to know | Without it | With hn-hiring-trends |
|---|---|---|
| Is Rust (or Go, or Elixir) worth learning? | Gut feeling, hype on X | `skill_demand` shows its share of job posts, month by month |
| What's rising in tech hiring | Read 400 posts a month | `rising_skills` ranks ~70 skills by change |
| Who's hiring remote Rust devs with visa sponsorship | Ctrl-F across threads | `search_jobs(["Rust"], remote_only=True, visa_only=True)` |
| What a senior engineer earns | Scattered posts | `hiring_snapshot` gives median and middle-half salary from stated ranges |

## How it works

```mermaid
flowchart LR
    C[Claude / MCP client] -->|tool call| S[hn-hiring-trends-mcp]
    S --> A[HN Algolia API: monthly threads + all top-level job posts]
    A --> P[Parse: company, remote/hybrid/onsite, visa, salary range]
    P --> K[Skill matching: ~70 tuned patterns, or any phrase you pass]
    K -->|shares, trends, matching posts| C
```

A post "mentions" a skill once no matter how often it repeats it, so shares are "% of job posts asking for X". Ambiguous words get tuned rules: `Go` doesn't match "go-to-market", `C` doesn't match "Series C", `Java` doesn't match "JavaScript". Past months never change and are cached on disk (`~/.cache/hn-hiring-trends`).

## Install

Requires [uv](https://docs.astral.sh/uv/).

**Claude Code**
```bash
claude mcp add hn-hiring-trends -- uvx hn-hiring-trends-mcp
```

**Claude Desktop / Cursor** (`claude_desktop_config.json` / `.cursor/mcp.json`)
```json
{
  "mcpServers": {
    "hn-hiring-trends": {
      "command": "uvx",
      "args": ["hn-hiring-trends-mcp"]
    }
  }
}
```

## Tools

| Tool | What it does |
|---|---|
| `hiring_snapshot` | One month: post count, remote/hybrid/onsite and visa shares, salary medians, top skills |
| `skill_demand` | % of posts mentioning each of 1–10 skills, month by month, with the change |
| `rising_skills` | Biggest gainers and losers among ~70 skills (recent half vs earlier half of the period) |
| `search_jobs` | Posts mentioning all your terms; filter remote-only or visa; returns company, header, salary, link |
| `hiring_threads` | The monthly threads available |

**Prompts:** `monthly_hiring_report` (a shareable monthly summary), `skill_outlook` ("should I learn X, Y or Z?").

## Try these

- "Should I learn Rust, Go or Elixir? Use 18 months of HN hiring data."
- "Write this month's HN hiring report."
- "Find remote Python jobs that mention LLMs and sponsor visas."
- "What's the median salary in posts that mention Kubernetes?"

## Limits

- One slice of the market: HN skews toward startups, remote work and US/EU tech.
- Skill matching is keyword-based; context like "nice to have" is not separated from "required".
- Salaries are parsed from stated yearly ranges only (about a quarter of posts state one).

## Development

```bash
uv sync --extra dev
uv run pytest                          # offline tests with a mocked Algolia API
uv run python scripts/smoke_live.py    # live check against hn.algolia.com
uv run --with rich python scripts/demo.py 12   # terminal demo (vhs docs/demo.tape records the GIF)
npx @modelcontextprotocol/inspector uv run hn-hiring-trends-mcp   # click-through UI
```

MIT © Ali Altunar
