Skip to main content
Glama
lokih1028
by lokih1028

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HN_MCP_DATANoOptional path to store the local DuckDB story index somewhere other than the default ~/.hn-mcp/stories/.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_storiesA

Search archived HN stories by title words (all must match, case-insensitive).

query: space-separated whole words; quote phrases, e.g. 'rust "memory safety"';
  end a word with * for prefix match ('agent*'). Empty query lists top
  stories for the period.
since/until: 'YYYY', 'YYYY-MM' or 'YYYY-MM-DD' (inclusive).
include_text: also match the body of Ask/Show HN posts.
topic_trendB

How often each term appears in story titles over time (whole-word match, trailing * for prefix match).

Returns a per-term summary plus a compact table: one row per period with
the period's story total, then each term's matching-story count and that
count per 1,000 stories (comparable across periods).
Good for "rise and fall" charts, e.g. terms=["rust", "go", "zig"].
domain_reportB

Track record of a website on HN: volume per year, score stats, best stories.

Subdomains are included (e.g. 'github.com' also counts 'gist.github.com').
Useful to judge a source, blog, product or competitor.
on_this_dayB

The top stories posted on this calendar day in every year of HN history.

date: 'MM-DD' (defaults to today, UTC). per_year: how many stories per year.
Handy for "10 years ago today" content.
run_sqlA

Run one read-only DuckDB SELECT over the stories table for custom analysis.

Columns: id UINTEGER, author VARCHAR, time TIMESTAMP (UTC), title VARCHAR,
url VARCHAR, domain VARCHAR (no 'www.'), score INTEGER, comments INTEGER
(total descendants), text VARCHAR (HTML body of Ask/Show HN posts, else NULL).
Comments themselves are not in the index; use get_thread for those.
get_threadA

Fetch a story and its comment tree live from HN, in HN's ranking order.

Each comment has its depth (0 = top level), author, direct reply count and
plain text cut to max_chars. Use it to summarize a discussion or find the
strongest arguments on each side.
search_recentB

Search stories from the last N days live (Algolia HN Search).

Use for anything newer than the local index (see index_status).
index_statusB

What the local index covers: story count, first and last story time, data folder.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.6/5.0

Scored across 8 tools

Disambiguation4/5

Each tool targets a distinct use case: archived search, live search, term trends, domain stats, on-this-day, thread fetching, raw SQL, and index status. The only real overlap is search_stories vs search_recent (clarified by the 'newer than the local index' note) and run_sql, which can replicate almost any other tool's output but is framed as a custom-analysis escape hatch.

Naming Consistency3/5

All names are snake_case, but conventions are mixed: verb_noun (search_stories, run_sql, get_thread) alongside noun_noun or descriptive phrases (topic_trend, domain_report, index_status, on_this_day). Still readable and fairly predictable in intent.

Tool Count5/5

Eight tools is well-scoped for an HN analysis server, with each tool covering a genuinely different query shape (keyword, trend, domain, date, SQL, live thread, live search, index health). No filler tools.

Completeness4/5

The surface covers search, trends, sources, date-based browsing, threads, and raw SQL for custom work. The main gap is an author/user report analogous to domain_report (authors are only reachable via run_sql), plus comments aren't searchable in the index, though get_thread mitigates that.

Maintenance

ActivityMaintained
ResponsivenessNo issues