Search / io.github.cyanheads/hn-mcp-server
hn-mcp-server
R0· no sign-inBrowse Hacker News feeds, threads, and user profiles with full-text search.
v0.5.22 · active · repository · descriptor JSON · versions
Search / io.github.cyanheads/hn-mcp-server
R0· no sign-inBrowse Hacker News feeds, threads, and user profiles with full-text search.
v0.5.22 · active · repository · descriptor JSON · versions
{
"mcpServers": {
"hn-mcp-server": {
"type": "http",
"url": "https://hn.caseyjhand.com/mcp"
}
}
}claude mcp add --transport http hn-mcp-server https://hn.caseyjhand.com/mcp[mcp_servers.hn-mcp-server]
url = "https://hn.caseyjhand.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"hn-mcp-server": {
"type": "remote",
"url": "https://hn.caseyjhand.com/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"hn-mcp-server": {
"type": "http",
"url": "https://hn.caseyjhand.com/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=hn-mcp-server&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vaG4uY2FzZXlqaGFuZC5jb20vbWNwIn0%3D"
}{
"servers": {
"hn-mcp-server": {
"type": "http",
"url": "https://hn.caseyjhand.com/mcp"
}
}
}{
"mcpServers": {
"hn-mcp-server": {
"httpUrl": "https://hn.caseyjhand.com/mcp"
}
}
}extensions:
"hn-mcp-server":
enabled: true
name: "hn-mcp-server"
type: streamable_http
uri: "https://hn.caseyjhand.com/mcp"
timeout: 300
protocol.modernsupports 2026-07-28 (server/discover)protocol.statelessanswers without a sessionprotocol.transportstreamable HTTPprotocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every useauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_lengthdescriptions are concisetools.schemasevery tool has an object input schematools.annotations4 of 4 tools declare readOnlyHint or destructiveHinttools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: hn_get_thread (destructiveHint, idempotentHint, openWorldHint); hn_get_user (destructiveHint, idempotentHint, openWorldHint); hn_search_content (destructiveHint, idempotentHint, openWorldHint); …tools.token_costabout 2,267 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes9 tool changes in 30 daysstability.rug_pullno tool changed its meaning under the same namedeps.known_vulns, deps.mcp_sdk_version, deps.resolvabledeps.dev does not know @cyanheads/[email protected], @cyanheads/[email protected]hn_search_contentchangedinput schema, output schemahn_get_userchangedinput schema, output schemahn_get_threadchangedinput schema, output schemahn_get_storieschangedinput schema, output schemahn_search_contentchangedoutput schemahn_search_contentchangeddescription, input schema, output schemaSearch Hacker News stories and comments via Algolia. Filterable by content type, author, date range, and minimum points.
Search Hacker News stories, comments, polls, and jobs via Algolia — by keyword, by filters alone, or both. Filterable by content type, author, parent story, date range, and minimum points.
hn_get_userchangedoutput schemahn_get_threadchangeddescription, input schema, output schemaGet an item and its comment tree as a threaded discussion, with child comments resolved recursively. Use depth 0 for an item-only lookup.
Get an item and its comment tree as a threaded discussion, with child comments resolved recursively. Use depth 0 for an item-only lookup. A long thread comes back in pages: pass the returned nextCursor as cursor to continue.
hn_get_storieschangedoutput schemaFull history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo +reachable +uptime-100% +updated-2d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
@cyanheads/[email protected] npmthis version is not known to the dependency resolver
@cyanheads/[email protected] npmthis version is not known to the dependency resolver
Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://hn.caseyjhand.com/mcp streamable-http | none | yes | 100% | 171 ms | 2026-07-28 | 2026-10-20 |
| package | registry | version | runtime | secrets |
|---|---|---|---|---|
@cyanheads/hn-mcp-server | npm | 0.5.22 | npx | |
@cyanheads/hn-mcp-server | npm | 0.5.22 | npx |
hn_get_storiesread-only | Fetch stories from an HN feed (top, new, best, ask, show, jobs), with title, URL, score, author, and comment count for each story. |
hn_get_threadread-only | Get an item and its comment tree as a threaded discussion, with child comments resolved recursively. Use depth 0 for an item-only lookup. A long thread comes back in pages: pass the returned nextCursor as cursor to continue. |
hn_get_userread-only | Get an HN user profile with karma, about, and optionally their most recent submissions resolved into full items. |
hn_search_contentread-only | Search Hacker News stories, comments, polls, and jobs via Algolia — by keyword, by filters alone, or both. Filterable by content type, author, parent story, date range, and minimum points. |
Schemas: list_tools.
And 140 more from this publisher.
{
"name": "io.github.cyanheads/hn-mcp-server",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://hn.caseyjhand.com/mcp",
"type": "streamable-http"
}
],
"version": "0.5.22",
"packages": [
{
"version": "0.5.22",
"transport": {
"type": "stdio"
},
"identifier": "@cyanheads/hn-mcp-server",
"runtimeHint": "npx",
"registryType": "npm",
"registryBaseUrl": "https://registry.npmjs.org",
"environmentVariables": [
{
"name": "HN_CONCURRENCY_LIMIT",
"format": "string",
"default": "10",
"description": "Max concurrent HTTP requests for batch item fetches (integer, 1–50)."
},
{
"name": "MCP_LOG_LEVEL",
"format": "string",
"default": "info",
"description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warning')."
}
]
},
{
"version": "0.5.22",
"transport": {
"url": "http://localhost:3010/mcp",
"type": "streamable-http"
},
"identifier": "@cyanheads/hn-mcp-server",
"runtimeHint": "npx",
"registryType": "npm",
"registryBaseUrl": "https://registry.npmjs.org",
"environmentVariables": [
{
"name": "MCP_TRANSPORT_TYPE",
"value": "http",
"format": "string",
"description": "Selects the HTTP transport."
},
{
"name": "HN_CONCURRENCY_LIMIT",
"format": "string",
"default": "10",
"description": "Max concurrent HTTP requests for batch item fetches (integer, 1–50)."
},
{
"name": "MCP_HTTP_HOST",
"format": "string",
"default": "127.0.0.1",
"description": "The hostname for the HTTP server."
},
{
"name": "MCP_HTTP_PORT",
"format": "string",
"default": "3010",
"description": "The port to run the HTTP server on."
},
{
"name": "MCP_HTTP_ENDPOINT_PATH",
"format": "string",
"default": "/mcp",
"description": "The endpoint path for the MCP server."
},
{
"name": "MCP_AUTH_MODE",
"format": "string",
"default": "none",
"description": "Authentication mode to use: 'none', 'jwt', or 'oauth'."
},
{
"name": "MCP_LOG_LEVEL",
"format": "string",
"default": "info",
"description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warning')."
}
]
}
],
"repository": {
"url": "https://github.com/cyanheads/hn-mcp-server",
"source": "github"
},
"description": "Browse Hacker News feeds, threads, and user profiles with full-text search."
}