# io.github.wei/hn-mcp-server (npm · hn-mcp-server)

Model Context Protocol server for HackerNews API access.

- Trust score: 60/100 (medium)
- Change this week: +24
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `hn-mcp-server`: 60/100 (this document), [markdown](https://verifymcp.io/servers/wei-hn-mcp-server/hn-mcp-server.md), [page](https://verifymcp.io/servers/wei-hn-mcp-server/hn-mcp-server)

## Channel facts

- Registry: `npm`
- Package: `hn-mcp-server`
- Version: `1.1.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 18/100
  - Repository check failed: no source repository is declared.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 293 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 61/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1374 tokens (~274/item across 5 items; 5 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add wei-hn-mcp-server -- npx -y hn-mcp-server
```

### Codex

```bash
codex mcp add wei-hn-mcp-server -- npx -y hn-mcp-server
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "wei-hn-mcp-server": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "hn-mcp-server"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add wei-hn-mcp-server --command npx --arg -y --arg hn-mcp-server
```

### Hermes

```yaml
mcp_servers:
  wei-hn-mcp-server:
    command: "npx"
    args: ["-y", "hn-mcp-server"]
```

### Other

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

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 60, +60)

- [security regression] Provenance: unverified → fail
- [security improvement] Malware scan: unverified → pass
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional regression] Security disclosure: unverified → fail
- [functional improvement] Stability: unverified → 0.20
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional] Licence: MIT

### 2026-07-31 (score 0, −36)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-27 (score 36)

First indexed and scored.

## MCP tools (5)

### `search-posts` (~570 tokens)

Search HackerNews for stories, comments, and other content by keyword.

Supports:
\- Keyword search across titles, text, and authors
\- Tag filtering (story, comment, poll, show_hn, ask_hn, front_page, author_USERNAME)
\- Numeric filters for points, comments, and dates
\- Pagination with customizable results per page
\- Advanced filtering with OR logic and multiple conditions

Basic Examples:
\- Search for AI stories: { "query": "AI", "tags": ["story"] }
\- Find popular posts: { "query": "Python", "numericFilters": ["points>=100"] }
\- Filter by author: { "query": "startup", "tags": ["author_pg"] }
\- Date range: { "query": "startup", "numericFilters": ["created_at_i>1640000000"] }

Advanced Filtering Examples:
\- High engagement posts: { "query": "programming", "numericFilters": ["points>=100", "num_comments>=50"] }
\- OR logic for tags: { "query": "web", "tags": ["(story,poll)"] } - returns stories OR polls
\- Author with filters: { "query": "", "tags": ["author_pg", "story"], "numericFilters": ["points>=50"] }
\- Multiple conditions: { "query": "AI", "tags": ["story"], "numericFilters": ["points>=200", "num_comments>=100"] }

Numeric Filter Operators: < (less than), <= (less than or equal), = (equal), >= (greater than or equal), > (greater than)
Numeric Filter Fields: points, num_comments, created_at_i (Unix timestamp)

Tag Syntax:
\- Single tag: ["story"] - only stories
\- Multiple tags (AND): ["story", "show_hn"] - stories that are also show_hn
\- OR logic: ["(story,poll)"] - stories OR polls
\- Author filter: ["author_USERNAME"] - posts by specific author

Returns paginated results with hits, total count, and page information.

Input parameters:

- `hitsPerPage` (number): Results per page (1-1000, default: 20)
- `numericFilters` (array): Optional numeric filters (e.g., ['points>=100'], ['num_comments>=50'], ['created_at_i>1640000000']). Multiple filters use AND logic.
- `page` (number): Page number (0-indexed, default: 0)
- `query` (string, required): Search query text (minimum 1 character)
- `tags` (array): Optional filter tags (e.g., ['story'], ['comment'], ['(story,poll)'] for OR logic, ['author_pg'] for author filter)

### `get-front-page` (~166 tokens)

Retrieve posts currently on the HackerNews front page.

Returns stories sorted by HackerNews ranking algorithm. The front page typically contains the most popular and trending stories.

Supports:
\- Pagination to view beyond the first page
\- Customizable results per page (default: 30)
\- All posts are tagged with 'front_page'

Examples:
\- Get first page: { }
\- Get with custom page size: { "hitsPerPage": 50 }
\- Get second page: { "page": 1 }

Returns the same structure as search results with hits, pagination info, and metadata.

Input parameters:

- `hitsPerPage` (number): Results per page (1-1000, default: 30)
- `page` (number): Page number (0-indexed, default: 0)

### `get-latest-posts` (~220 tokens)

Retrieve the most recent HackerNews posts sorted by date.

Returns posts in chronological order (newest first), including all types of content unless filtered.

Supports:
\- Filter by content type using tags (story, comment, poll, show_hn, ask_hn, etc.)
\- Pagination to view older posts
\- Customizable results per page (default: 20)
\- Empty query to get all recent posts

Examples:
\- Get latest stories: { "tags": ["story"] }
\- Get latest comments: { "tags": ["comment"] }
\- Get all recent activity: { }
\- Get with custom page size: { "hitsPerPage": 50 }

Use this to monitor real-time HackerNews activity or find the newest content.

Input parameters:

- `hitsPerPage` (number): Results per page (1-1000, default: 20)
- `page` (number): Page number (0-indexed, default: 0)
- `tags` (array): Optional filter tags (e.g., ['story'], ['comment'])

### `get-item` (~219 tokens)

Retrieve detailed information about a specific HackerNews item by ID.

Returns complete item details including the full nested comment tree. Use this to:
\- View a story with all comments
\- Read a specific comment with its replies
\- Explore discussion threads in depth
\- Get complete metadata for any item

Features:
\- Full nested comment tree (all levels)
\- Complete item metadata (title, url, text, points, author, etc.)
\- Works for stories, comments, polls, and poll options
\- Includes creation time and item type

Examples:
\- Get story with comments: { "itemId": "38456789" }
\- Get specific comment: { "itemId": "38456790" }
\- Get poll: { "itemId": "126809" }

Note: Large comment threads (>500 comments) may take 2-3 seconds to load due to nested fetching.
Returns error if item doesn't exist or has been deleted.

Input parameters:

- `itemId` (string, required): HackerNews item ID (e.g., '38456789')

### `get-user` (~199 tokens)

Retrieve public profile information for a HackerNews user.

Returns user profile including karma, bio, and account creation date. Use this to:
\- Check user reputation (karma score)
\- Read user bio and about information
\- See when account was created
\- Verify user existence before searching their content

Features:
\- Username (case-sensitive)
\- Karma score (total upvotes received)
\- About/bio text (may contain HTML)
\- Account creation date (Unix timestamp)

Examples:
\- Get famous user: { "username": "pg" }
\- Check moderator: { "username": "dang" }
\- Verify author: { "username": "tptacek" }

Username validation:
\- Alphanumeric characters and underscores only
\- Case-sensitive
\- Must exist on HackerNews

Returns error if user doesn't exist or username format is invalid.

Input parameters:

- `username` (string, required): HackerNews username (alphanumeric + underscores, e.g., 'pg')

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/wei-hn-mcp-server/hn-mcp-server#diagnostics

## Score history

- 2026-08-03: 60
- 2026-08-02: 60
- 2026-08-01: 0
- 2026-07-31: 0
- 2026-07-30: 36
- 2026-07-28: 36
- 2026-07-27: 36

## Links

- npm package: https://www.npmjs.com/package/hn-mcp-server
- Socket report: https://socket.dev/npm/package/hn-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/wei-hn-mcp-server/hn-mcp-server/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/wei-hn-mcp-server/hn-mcp-server/changelog.json
- HTML version of this page: https://verifymcp.io/servers/wei-hn-mcp-server/hn-mcp-server
