Skip to main content
Glama
imprvhub

mcp-claude-hackernews

MCP Claude Hacker News

Trust Score Smithery

Features

  • Browse latest stories from Hacker News

  • View top and best-rated stories

  • Search stories by keyword, by relevance or most recent (Algolia HN Search API)

  • Get story details

  • Read comments for stories, capped so a busy thread cannot flood the context

  • Clean formatting of Hacker News content for better readability, including HTML entity decoding

Related MCP server: MCP Hacker News

Demo

Requirements

  • Node.js 20 or higher

  • Claude Desktop

  • Internet connection to access Hacker News API

Installation

Installing via Smithery

Install the packaged bundle from the Smithery server page, or from the CLI:

npx -y @smithery/cli@latest mcp add imprvhub/mcp-claude-hackernews --client claude

Installing Manually

  1. Clone or download this repository:

git clone https://github.com/imprvhub/mcp-claude-hackernews
cd mcp-claude-hackernews
  1. Install dependencies:

npm install
  1. Build the project:

npm run build

Running the MCP Server

There are two ways to run the MCP server:

Option 1: Running manually

  1. Open a terminal or command prompt

  2. Navigate to the project directory

  3. Run the server directly:

node build/index.js

Keep this terminal window open while using Claude Desktop. The server will run until you close the terminal.

The Claude Desktop can automatically start the MCP server when needed. To set this up:

Configuration

The Claude Desktop configuration file is located at:

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

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

  • Linux: ~/.config/Claude/claude_desktop_config.json

Edit this file to add the Hacker News MCP configuration. If the file doesn't exist, create it:

{
  "mcpServers": {
    "hackerNews": {
      "command": "node",
      "args": ["ABSOLUTE_PATH_TO_DIRECTORY/mcp-claude-hackernews/build/index.js"]
    }
  }
}

Important: Replace ABSOLUTE_PATH_TO_DIRECTORY with the complete absolute path where you installed the MCP

  • macOS/Linux example: /Users/username/mcp-claude-hackernews

  • Windows example: C:\\Users\\username\\mcp-claude-hackernews

If you already have other MCPs configured, simply add the "hackerNews" section inside the "mcpServers" object. Here's an example of a configuration with multiple MCPs:

{
  "mcpServers": {
    "otherMcp1": {
      "command": "...",
      "args": ["..."]
    },
    "otherMcp2": {
      "command": "...",
      "args": ["..."]
    },
    "hackerNews": {
      "command": "node",
      "args": [
        "ABSOLUTE_PATH_TO_DIRECTORY/mcp-claude-hackernews/build/index.js"
      ]
    }
  }
}

The MCP server will automatically start when Claude Desktop needs it, based on the configuration in your claude_desktop_config.json file.

Usage

  1. Restart Claude Desktop after modifying the configuration

  2. In Claude, use the Hacker News tools to interact with Hacker News

  3. The MCP server runs as a child process managed by Claude Desktop

Available Tools

The Hacker News MCP provides 6 specialized tools for different functions:

Tool

Description

Parameters

Example Usage

hn_latest

Get the most recent stories from Hacker News

limit: Optional number of stories (1-50, default: 10)

Get 20 latest stories

hn_top

Get the top-ranked stories from Hacker News

limit: Optional number of stories (1-50, default: 10)

Get 15 top stories

hn_best

Get the best stories from Hacker News

limit: Optional number of stories (1-50, default: 10)

Get 25 best stories

hn_search

Search stories by keyword

query: Required search terms; limit: 1-50 (default: 10); sort: relevance (default) or date

Search "rust async" sorted by date

hn_story

Get detailed information about a specific story

story_id: Required story ID (number)

Get story details by ID

hn_comments

Get top-level comments for a story

story_id: Story ID (number) OR story_index: Index from last list (1-based); limit: 1-50 (default: 20)

Get comments by story ID or index

Tool Parameters Details

hn_latest, hn_top, hn_best

  • limit (optional): Number of stories to fetch

    • Type: Number

    • Range: 1-50

    • Default: 10

  • query (required): Search terms

    • Type: String

    • Example: "model context protocol"

  • limit (optional): Number of results, 1-50, default 10

  • sort (optional): relevance (default) or date for newest first

hn_story

  • story_id (required): The ID of the story to fetch

    • Type: Number

    • Example: 12345678

hn_comments

  • story_id (optional): The ID of the story to get comments for

    • Type: Number

    • Example: 12345678

  • story_index (optional): The index of the story from the last fetched list

    • Type: Number (1-based)

    • Example: 3 (for the 3rd story in the last list)

  • limit (optional): Maximum number of top-level comments to return

    • Type: Number

    • Range: 1-50

    • Default: 20

Note: For hn_comments, you must provide either story_id OR story_index. Only top-level comments are fetched; the reply count is reported per comment. The response states how many of the thread's top-level comments were returned.

Example Usage

Here are various examples of how to use the Hacker News MCP with Claude:

Direct Tool Usage:

"Use hn_latest to get 20 recent stories"
"Use hn_top with limit 15 to get top stories"
"Use hn_best to get 25 best stories"
"Use hn_search with query 'model context protocol' to find related stories"
"Use hn_search with query 'rust' and sort date to see the newest posts"
"Use hn_story with story_id 29384756 to get story details"
"Use hn_comments with story_index 3 to get comments for the 3rd story"
"Use hn_comments with story_id 12345678 to get comments for that story"

Natural Language Queries:

You can also interact with the MCP using natural language. Claude will interpret these requests and use the appropriate tools:

  • "Show me the top 30 stories on Hacker News today"

  • "What are the 40 latest posts on Hacker News?"

  • "I'd like to see the 20 best articles from Hacker News"

  • "Can you fetch me 30 recent tech news stories from Hacker News?"

  • "Tell me what's the top 50 trending topics on Hacker News"

  • "Search Hacker News for stories about machine learning"

  • "Get me the 40 most recent Hacker News headlines"

  • "What are the 30 most active discussions on Hacker News right now?"

  • "I'm interested in reading the 40 most popular Hacker News articles this week"

  • "Show me a list of 20 best programming articles from Hacker News"

  • "Get the comments for story number 5 from the last list"

  • "Show me the details of story ID 12345678"

Language Translation Requests:

You can request Hacker News content to be translated into different languages:

  • "Show me the top 30 stories on Hacker News today in Spanish"

  • "Get the 20 latest Hacker News posts and translate them to French"

  • "I'd like to see the 40 best articles from Hacker News in German"

  • "Show me 30 recent Hacker News stories translated to Japanese"

  • "Get the top 20 Hacker News articles and present them in Portuguese"

Troubleshooting

"Server disconnected" error

If you see the error "MCP Hacker News: Server disconnected" in Claude Desktop:

  1. Verify the server is running:

    • Open a terminal and manually run node build/index.js from the project directory

    • If the server starts successfully, use Claude while keeping this terminal open

  2. Check your configuration:

    • Ensure the absolute path in claude_desktop_config.json is correct for your system

    • Double-check that you've used double backslashes (\\) for Windows paths

    • Verify you're using the complete path from the root of your filesystem

  3. Try the auto-start option:

    • Set up the auto-start script for your operating system as described in the "Setting up auto-start scripts" section

    • This ensures the server is always running when you need it

Tools not appearing in Claude

If the Hacker News tools don't appear in Claude:

  • Make sure you've restarted Claude Desktop after configuration

  • Check the Claude Desktop logs for any MCP communication errors

  • Ensure the MCP server process is running (run it manually to confirm)

  • Verify that the MCP server is correctly registered in the Claude Desktop MCP registry

Checking if the server is running

To check if the server is running:

  • Windows: Open Task Manager, go to the "Details" tab, and look for "node.exe"

  • macOS/Linux: Open Terminal and run ps aux | grep node

If you don't see the server running, start it manually or use the auto-start method.

Development

Run the test suite (no network required):

npm install
npm run build
npm test

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the Mozilla Public License 2.0 - see the LICENSE file for details.

Available Tools

6 tools
hn_bestC

Get the best stories from Hacker News

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of items to fetch (1-50, default: 10)

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It conveys only that this is a read of stories; it says nothing about ordering semantics ('best' by what ranking?), result freshness, or pagination, which matters most given the hn_top sibling.

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?

A single front-loaded sentence with zero waste. It is appropriately sized, though its brevity is part of why key distinctions are missing.

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

Completeness3/5

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

For a simple one-parameter list tool this is minimally adequate, and the schema covers the input. However, with no output schema and no annotation coverage, the unresolved 'best' vs 'top' ambiguity and lack of ordering information leave a meaningful gap.

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% and the single 'limit' parameter is fully documented in the schema (range, default), so the baseline of 3 applies. The description adds no additional meaning about the parameter.

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

Purpose3/5

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

States a clear verb+resource ('Get the best stories from Hacker News'), but the sibling hn_top makes 'best' ambiguous — an agent cannot tell from the description how 'best' differs from 'top' or 'latest'. The purpose is understandable but not differentiated from its siblings.

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

Usage Guidelines2/5

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

No guidance on when to choose this over hn_top, hn_latest, or hn_search. There is no statement of context, prerequisites, or exclusions, leaving selection between four similarly-named story-fetching tools to guesswork.

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

hn_commentsB

Get top-level comments for a story (by story ID or index from the last story list)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of items to fetch (1-50, default: 20)
story_idNoThe ID of the story to get comments for
story_indexNoThe index (1-based) of the story from the last fetched list

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Top-level comments' is a useful behavioral nuance (excludes nested replies), but the description omits return format, pagination, whether the call is safe/read-only, and any rate or auth context for a tool that hits an external API.

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?

A single compact sentence with the resource front-loaded and input modes in a parenthetical. Efficient, though the parenthetical is dense and slightly compressed.

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

Completeness3/5

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

With no output schema and no annotations, the description should explain the return shape and the mutual exclusivity of story_id vs story_index for a 0-required-param tool. It covers purpose adequately but leaves these gaps.

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 the baseline is 3. The description names story ID and index as inputs but does not clarify that these are alternative selectors or which takes precedence when both are omitted (0 required params).

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

Purpose4/5

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

States a specific verb (Get) and resource (top-level comments for a story), which differentiates it from siblings like hn_story and hn_latest. The parenthetical clarifies input modes but the description doesn't explicitly contrast with siblings.

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

Usage Guidelines3/5

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

The parenthetical implies usage context ('index from the last story list'), suggesting it's meant to be called after a list tool, but no explicit when-to-use or alternatives are stated. Usage is inferred rather than directed.

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

hn_latestB

Get the latest/newest stories from Hacker News

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of items to fetch (1-50, default: 10)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get' implies a read-only retrieval, but the description does not mention authentication, rate limits, pagination, return format, or any other operational behavior.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It communicates the core purpose immediately and is appropriately sized for a simple retrieval tool.

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

Completeness3/5

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

For a simple tool with one optional parameter and no output schema, the description is minimally adequate. However, it omits any indication of the return shape and does not help the agent choose between this and similar sibling tools like hn_top or hn_best.

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?

The input schema has 100% description coverage, fully documenting the single 'limit' parameter with its default and range. The description itself adds no additional parameter meaning, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb and resource: getting latest/newest stories from Hacker News. It distinguishes itself somewhat from hn_top and hn_best by emphasizing recency rather than ranking, but it does not explicitly name or differentiate against those sibling tools.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as hn_top, hn_best, or hn_search. The agent can infer that it is for recent stories, but no conditions, exclusions, or alternatives are provided.

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

hn_storyA

Get details for a specific story by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
story_idYesThe ID of the story to fetch

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description is the sole source. It indicates a read operation ('get details'), but does not disclose error behavior, rate limits, or response structure. Basic transparency is achieved.

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

Conciseness5/5

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

The description is a single, well-structured sentence with no extraneous words or filler. It is optimally concise.

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

Completeness3/5

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

For a simple one-parameter tool with no output schema, the description provides minimal but sufficient context. It lacks detail on what 'details' includes, which is acceptable for a simple fetch.

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 coverage is 100% as the only parameter 'story_id' has a description. The description 'by ID' aligns with the parameter, adding no new meaning. Baseline score applies.

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?

The description clearly states the action ('get details'), the resource ('story'), and the identification method ('by ID'). It distinctly differentiates from sibling tools (lists like hn_best, hn_top) which fetch multiple items.

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?

The description implies usage when a specific story ID is known, but does not explicitly exclude cases like fetching stories in bulk or provide alternatives. Sibling tool names indirectly suggest other use cases.

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

hn_topB

Get the top-ranked stories from Hacker News

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of items to fetch (1-50, default: 10)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing beyond the implied read-only nature of 'Get'. It does not say whether results are live-fetched from the HN API, cached, paginated, or what the return structure looks like for a tool with no output schema.

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

Conciseness5/5

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

A single front-loaded sentence with no filler or redundancy. Every word earns its place, and the core purpose is stated immediately.

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

Completeness3/5

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

For a one-optional-parameter list tool with no output schema and no annotations, the description is minimally adequate: it identifies the resource but not what 'top-ranked' means (score? front page?) or what a returned item contains. Enough to attempt a call, not enough to predict the result.

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% for the single 'limit' parameter, including range and default, so the description need not restate it. The description adds no meaning beyond the schema, which is the expected baseline here.

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

Purpose4/5

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

The description states a specific verb and resource ('Get the top-ranked stories from Hacker News'), which is more informative than the bare name hn_top. However, it offers no differentiation from close siblings like hn_best and hn_latest, leaving 'top-ranked' nearly synonymous with 'best' and forcing the agent to guess which ranking endpoint to use.

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

Usage Guidelines2/5

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

There is no guidance on when to choose this tool over hn_best, hn_latest, or hn_search, and no stated prerequisites or context. The agent must infer selection purely from the tool names.

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. 5 tool updatesv0.2.0
    • Changedhn_best1 field changed
      • changedInput schema / properties / limit / description
        Previous value: -"Number of stories to fetch (1-50, default: 10)"New value: +"Number of items to fetch (1-50, default: 10)"
    • Changedhn_comments1 field changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 20,
        +  "description": "Number of items to fetch (1-50, default: 20)",
        +  "maximum": 50,
        +  "minimum": 1,
        +  "type": "number"
        +}
    • Changedhn_latest1 field changed
      • changedInput schema / properties / limit / description
        Previous value: -"Number of stories to fetch (1-50, default: 10)"New value: +"Number of items to fetch (1-50, default: 10)"
    • Addedhn_search
    • Changedhn_top1 field changed
      • changedInput schema / properties / limit / description
        Previous value: -"Number of stories to fetch (1-50, default: 10)"New value: +"Number of items to fetch (1-50, default: 10)"
  2. 5 tool updatesv1.0.0
    • First observedhn_best
    • First observedhn_comments
    • First observedhn_latest
    • First observedhn_story
    • First observedhn_top

TDQS

A3.5/5.0

Scored across 6 tools

Disambiguation5/5

hn_latest, hn_top, and hn_best target distinct Hacker News ranking feeds, while hn_search, hn_comments, and hn_story have clearly separate roles. There is no meaningful overlap or ambiguity in purpose.

Naming Consistency5/5

All tools use the same hn_ prefix and snake_case convention. The suffixes vary semantically (feeds, search, comments, story) but the naming pattern is predictable and consistent.

Tool Count5/5

Six tools are well-scoped for a read-only Hacker News server covering feeds, search, story details, and comments. Each tool earns its place without unnecessary duplication.

Completeness4/5

The surface covers the core HN read workflows: latest/top/best feeds, search, story details, and top-level comments. Minor gaps exist, such as nested comment retrieval and dedicated Ask/Show/Jobs feeds, but agents can work around them with search or story IDs.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI tools like Claude and Cursor to fetch and interact with live Hacker News data (posts, comments, users) via standardized MCP endpoints.
    11
    109 npm
    34
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to fetch top, new, best, Ask HN, Show HN, and job stories, as well as specific posts, comments, and user information from Hacker News through the Model Context Protocol.
    1
    -