Browse Hacker News from chat: top stories, search, read comment threads, and post or upvote when yo…
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Fetch best-ranked Hacker News stories. Use when the user asks for best posts or all-time greats on the best feed.
Max stories (default 30)
Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http mcp-hacker_news https://nova.civai.co/mcp/agents/mcp-hacker_news
Fetch best-ranked Hacker News stories. Use when the user asks for best posts or all-time greats on the best feed.
| Argument | Type | Description |
|---|---|---|
| story_limit | string | Max stories (default 30) |
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"required": [],
"properties": {
"story_limit": {
"type": "string",
"description": "Max stories (default 30)"
},
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Browse an HTML feed on news.ycombinator.com: news, newest, ask, show, jobs, newcomments, front, or best.
| Argument | Type | Description |
|---|---|---|
| feed_name* | string | One of: news, newest, ask, show, jobs, newcomments, front, best |
| story_limit | string | Max rows to parse (default 30) |
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"required": [
"feed_name"
],
"properties": {
"feed_name": {
"type": "string",
"description": "One of: news, newest, ask, show, jobs, newcomments, front, best"
},
"story_limit": {
"type": "string",
"description": "Max rows to parse (default 30)"
},
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Get one Hacker News item (story or comment thread) by numeric id, including top-level comments when available.
| Argument | Type | Description |
|---|---|---|
| item_id* | string | Numeric HN item id (from URL item?id=...) |
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"required": [
"item_id"
],
"properties": {
"item_id": {
"type": "string",
"description": "Numeric HN item id (from URL item?id=...)"
},
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Look up a Hacker News user profile (karma, about, created date) by username.
| Argument | Type | Description |
|---|---|---|
| user_id* | string | HN username (from user?id=...) |
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"required": [
"user_id"
],
"properties": {
"user_id": {
"type": "string",
"description": "HN username (from user?id=...)"
},
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Sign in to Hacker News with username and password. Stores session cookie in hn_session_cookie for upvote, comment, and submit.
| Argument | Type | Description |
|---|---|---|
| hn_pw* | string | HN password |
| hn_acct* | string | HN username |
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"required": [
"hn_acct",
"hn_pw"
],
"properties": {
"hn_pw": {
"type": "string",
"description": "HN password"
},
"hn_acct": {
"type": "string",
"description": "HN username"
},
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Fetch newest Hacker News story submissions. Use when the user asks for new or latest posts.
| Argument | Type | Description |
|---|---|---|
| story_limit | string | Max stories (default 30) |
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"required": [],
"properties": {
"story_limit": {
"type": "string",
"description": "Max stories (default 30)"
},
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Post a comment on a story or reply thread. parent_id is the story or comment id. Requires login session.
| Argument | Type | Description |
|---|---|---|
| parent_id* | string | Story or comment id to reply under |
| comment_text* | string | Comment body |
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"required": [
"parent_id",
"comment_text"
],
"properties": {
"parent_id": {
"type": "string",
"description": "Story or comment id to reply under"
},
"comment_text": {
"type": "string",
"description": "Comment body"
},
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Search Hacker News stories via the public Algolia API (same backend as hn.algolia.com).
| Argument | Type | Description |
|---|---|---|
| story_limit | string | Max hits (default 20) |
| search_query* | string | Search keywords |
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"required": [
"search_query"
],
"properties": {
"story_limit": {
"type": "string",
"description": "Max hits (default 20)"
},
"search_query": {
"type": "string",
"description": "Search keywords"
},
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Check whether hn_session_cookie is present and still logged in on Hacker News.
| Argument | Type | Description |
|---|---|---|
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"required": [],
"properties": {
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Submit a new story link or Ask HN text post. Requires login. Provide story_url for link posts or story_text for text posts.
| Argument | Type | Description |
|---|---|---|
| story_url | string | Optional URL for link posts |
| story_text | string | Optional text for Ask/show posts |
| story_title* | string | Title |
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"required": [
"story_title"
],
"properties": {
"story_url": {
"type": "string",
"description": "Optional URL for link posts"
},
"story_text": {
"type": "string",
"description": "Optional text for Ask/show posts"
},
"story_title": {
"type": "string",
"description": "Title"
},
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Fetch the current Hacker News front page (top stories) via the official Firebase API. Use when the user asks for top, front, or trending stories.
| Argument | Type | Description |
|---|---|---|
| story_limit | string | Max stories to return (default 30) |
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"required": [],
"properties": {
"story_limit": {
"type": "string",
"description": "Max stories to return (default 30)"
},
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Upvote a story or comment by item id. Requires a valid hn_session_cookie from login.
| Argument | Type | Description |
|---|---|---|
| item_id* | string | HN item id to upvote |
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"required": [
"item_id"
],
"properties": {
"item_id": {
"type": "string",
"description": "HN item id to upvote"
},
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 2, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.