MCP server for Hacker News — feeds, threads, users, and search via Firebase and Algolia APIs
Public Hosted Server: https://hn.caseyjhand.com/mcp
</div>Four read-only tools for accessing Hacker News data:
| Tool Name | Description |
|---|---|
hn_get_stories | Fetch stories from an HN feed (top, new, best, ask, show, jobs) with pagination. |
hn_get_thread | Get an item and its comment tree as a threaded discussion with depth/count controls. |
hn_get_user | Fetch a user profile with karma, about, and optionally their recent submissions. |
hn_search_content | Search stories and comments via Algolia with type, author, date, and score filters. |
hn_get_storiesFetch stories from any HN feed with pagination support.
top, new, best, ask, show, jobshn_get_threadRetrieve an item and its full comment tree via ranked breadth-first traversal.
depth/parentId for tree reconstructionhn_get_userFetch a user profile with optional recent submission resolution.
hn_search_contentFull-text search via the Algolia HN Search API.
story, comment, ask_hn, show_hn, front_pageBuilt on @cyanheads/mcp-ts-core:
HN-specific:
A public instance is available at https://hn.caseyjhand.com/mcp — no installation required. Point any MCP client at it via Streamable HTTP:
{
"mcpServers": {
"hn": {
"type": "streamable-http",
"url": "https://hn.caseyjhand.com/mcp"
}
}
}Add to your MCP client config (e.g., claude_desktop_config.json):
{
"mcpServers": {
"hn-mcp-server": {
"type": "stdio",
"command": "bunx",
"args": ["@cyanheads/hn-mcp-server@latest"]
}
}
}Or with npx:
{
"mcpServers": {
"hn-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@cyanheads/hn-mcp-server"]
}
}
}git clone https://github.com/cyanheads/hn-mcp-server.git
cd hn-mcp-server
bun installAll configuration is via environment variables. No API keys required — HN APIs are public.
| Variable | Description | Default |
|---|---|---|
HN_CONCURRENCY_LIMIT | Max concurrent HTTP requests for batch item fetches (1–50). | 10 |
MCP_TRANSPORT_TYPE | Transport: stdio or http. | stdio |
MCP_HTTP_PORT | HTTP server port. | 3010 |
MCP_HTTP_HOST | HTTP server host. | localhost |
MCP_LOG_LEVEL | Log level: debug, info, notice, warning, error. | info |
bun run dev:stdio # Dev mode (stdio, auto-reload)
bun run dev:http # Dev mode (HTTP, auto-reload)
bun run test # Run test suite
bun run devcheck # Lint + format + typecheck + auditbun run build
bun run start:stdio # or start:httpdocker build -t hn-mcp-server .
docker run -p 3010:3010 hn-mcp-server| Directory | Purpose |
|---|---|
src/index.ts | createApp() entry point. |
src/config/ | Server-specific env var parsing with Zod. |
src/services/hn/ | HN Firebase + Algolia API client and domain types. |
src/mcp-server/tools/definitions/ | Tool definitions (*.tool.ts). |
See CLAUDE.md for development guidelines and architectural rules. The short version:
try/catch in tool logicctx.log for request-scoped loggingIssues and pull requests are welcome. Run checks before submitting:
bun run devcheck
bun run testApache-2.0 — see LICENSE for details.