Skip to main content
Glama
wallaceluis

hackernews-mcp-server

by wallaceluis

hackernews-mcp-server

A Model Context Protocol server that lets AI assistants read Hacker News.

Plug it into Cursor, Claude Desktop or Claude Code and ask things like:

  • "What is on the front page of Hacker News right now?"

  • "Summarize the top 5 Show HN posts."

  • "Are there any Ask HN threads about Rust today?"

It uses the official Hacker News API. No API key or account is needed.

Tool

fetch_hacker_news

Fetches current stories with title, link, score, author and comment count.

Parameter

Type

Default

Description

category

string

top

top, new, best, ask, show or job

limit

integer

10

Number of stories, from 1 to 30

The result comes in two forms: a compact text list for the model to read, and structured content for clients that support it.

{
  "category": "top",
  "stories": [
    {
      "id": 12345678,
      "title": "Show HN: An example project",
      "url": "https://example.com/project",
      "discussionUrl": "https://news.ycombinator.com/item?id=12345678",
      "score": 347,
      "author": "someuser",
      "comments": 72,
      "postedAt": "2026-01-15T12:00:00.000Z"
    }
  ]
}

Ask HN and similar posts also carry a text field with the body in plain text, truncated to 500 characters.

Related MCP server: HackerNews MCP Server

Setup guide

1. Build the server

Requires Node.js 18 or newer.

git clone https://github.com/wallaceluis/hackernews-mcp-server.git
cd hackernews-mcp-server
npm install
npm run build

Take note of the absolute path to dist/index.js; every client below needs it. Examples:

  • macOS / Linux: /Users/you/hackernews-mcp-server/dist/index.js

  • Windows: C:\\Users\\you\\hackernews-mcp-server\\dist\\index.js (backslashes doubled inside JSON)

2. Connect your client

Cursor

Create .cursor/mcp.json in your project (or ~/.cursor/mcp.json to enable it everywhere):

{
  "mcpServers": {
    "hackernews": {
      "command": "node",
      "args": ["/absolute/path/to/hackernews-mcp-server/dist/index.js"]
    }
  }
}

Then open Cursor Settings > MCP and check that hackernews is listed and enabled. The tool is available to the agent in chat.

Claude Desktop

Open Settings > Developer > Edit Config, which opens claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Add the server:

{
  "mcpServers": {
    "hackernews": {
      "command": "node",
      "args": ["/absolute/path/to/hackernews-mcp-server/dist/index.js"]
    }
  }
}

Quit and reopen Claude Desktop. The fetch_hacker_news tool shows up in the tools menu of the chat input.

Claude Code

claude mcp add hackernews -- node /absolute/path/to/hackernews-mcp-server/dist/index.js

Run /mcp inside Claude Code to confirm the server is connected.

3. Try it

Ask your assistant: "Use Hacker News to tell me what developers are talking about today."

Troubleshooting

Problem

Fix

Server does not show up or fails to start

Check that the path is absolute and that dist/index.js exists (run npm run build)

node not found

The client may not share your shell's PATH. Use the full path to node as command

"The Hacker News API is unreachable"

The machine needs outbound HTTPS access to hacker-news.firebaseio.com

Changes to the code have no effect

Rebuild with npm run build and restart the client

To test the server on its own, use the MCP Inspector:

npm run inspect

Development

npm run dev        # compile in watch mode
npm run typecheck
npm run inspect    # open the MCP Inspector against the built server

File

Responsibility

src/index.ts

Entrypoint: connects the server to the stdio transport

src/server.ts

MCP server and the fetch_hacker_news tool definition

src/hackernews.ts

Hacker News API client and result formatting

The server talks to the client over stdio, so stdout is reserved for the protocol. Log with console.error, never console.log.

How it works

The Hacker News API exposes a ranked list of ids per category and one endpoint per item. The server reads the list, loads the first limit items in parallel (10 second timeout each), drops deleted and dead posts, and converts HTML bodies to plain text. A story that fails to load is skipped instead of failing the whole call. Errors are returned as tool errors so the model can see what went wrong.

License

MIT

Available Tools

1 tool
fetch_hacker_newsFetch Hacker NewsA
Read-onlyIdempotent

Fetch current stories from Hacker News (news.ycombinator.com) with title, link, score, author and comment count. Use it for questions about tech news, what is trending among developers, or recent Ask HN / Show HN posts.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many stories to return, from 1 to 30.
categoryNoWhich list to read: top (front page), new (latest), best (highest voted recently), ask (Ask HN), show (Show HN) or job (job postings).top

Output Schema

ParametersJSON Schema
NameRequiredDescription
storiesYes
categoryYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint and idempotentHint, so the safety and external-dependency profile is covered. The description adds only that it hits news.ycombinator.com and what fields come back, which is largely restated by the output schema; no rate limits, caching, or ordering behavior is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the capability front-loaded and usage context second. Every clause carries information, though the field enumeration is slightly redundant given the output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With rich annotations, a 100%-covered schema and an existing output schema, the description covers source and scope adequately for an agent to invoke it correctly. Minor gaps (story ordering, freshness of 'current') are not critical for the call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both the 'limit' range and the 'category' enum semantics are fully documented in the schema. The description contributes no additional parameter meaning, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (fetch) and resource (current stories from Hacker News) and enumerates the returned fields (title, link, score, author, comment count). An agent immediately knows exactly what this tool produces and from which source.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear triggering contexts — tech news questions, developer trending topics, recent Ask HN / Show HN posts. It does not name exclusions or alternatives, but with no sibling tools there is nothing to route away from, so the guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev1.0.0
    • First observedfetch_hacker_news

TDQS

A3.7/5.0

Scored across 1 tool

Disambiguation5/5

There is only one tool, so there is no possibility of confusion or misselection between tools. Its purpose (fetching Hacker News stories) is unambiguous.

Naming Consistency4/5

The single name 'fetch_hacker_news' follows a clear verb_noun convention with snake_case. With only one tool there is no pattern to validate against, so it cannot demonstrate full consistency across a set.

Tool Count2/5

A single tool is too thin for a Hacker News domain server, which naturally spans stories, comments, users, jobs, and search. One generic fetch tool under-serves the apparent scope.

Completeness2/5

The surface covers only fetching current stories; there is no way to retrieve comments, look up users, search, or filter by category (top/new/best/ask/show). Agents asking about discussion threads or specific posts will hit dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to read and search Hacker News for top stories, comments, user profiles, and job listings using the Firebase and Algolia APIs. It facilitates natural language research into community discussions and technological trends across the HN platform.
    8
    -
  • A
    license
    A
    quality
    C
    maintenance
    Provides AI agents with access to Hacker News data including top stories, story details, comment threads, and full-text search for content research and trend monitoring.
    5
    MIT