hn-tech-signal-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_HOST | No | Bind host for HTTP transport. Non-loopback values require MCP_BEARER_TOKEN. | 127.0.0.1 |
| MCP_PORT | No | Port for HTTP transport. | 8000 |
| GITHUB_TOKEN | No | Optional GitHub personal access token for higher rate limits (5,000 req/h instead of 60 req/h). The token is only sent to api.github.com. | |
| MCP_TRANSPORT | No | Transport mode: stdio or streamable_http. | stdio |
| MCP_BEARER_TOKEN | No | Required when MCP_HOST is not loopback. Shared secret to gate the HTTP endpoint. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| hn_top_storiesA | Fetch stories from any of the six HackerNews front-page feeds. Feeds: 'top' (frontpage), 'best' (highest voted), 'new' (latest), 'ask' (Ask HN — questions to the community), 'show' (Show HN — projects people are shipping), 'job' (YC company job posts). 'show' is the strongest signal for what practitioners are actually building; 'ask' for what they are stuck on. Upstream, 'ask' and 'job' hold only ~30 items, so a large limit may return fewer results. Args: params (HnTopStoriesInput): - feed (str): 'top', 'best', 'new', 'ask', 'show', or 'job' - limit (int): Stories to return (1–30) - min_score (int): Minimum score filter (job posts score 1) Returns: str: JSON with feed, count, stories[]. Each story: id, type, title, url, score, comments, by, posted, hn_link. |
| hn_searchA | Search HackerNews by keyword using the Algolia search API. Covers all historical HN content. Find discussions on specific technologies, papers, companies, or events. Args: params (HnSearchInput): - query (str): Search terms - limit (int): Results (1–20) - days_back (int): Recency window in days - tags (Optional[str]): 'story', 'ask_hn', 'show_hn', or empty Returns: str: JSON with query, total_found, count, hits[]. Each hit: id, title, url, score, comments, author, posted, hn_link, excerpt. |
| hn_discussionA | Read the comment thread under a HackerNews story. Where hn_top_stories and hn_search tell you what is being discussed, this tells you what is actually being argued — the counter-arguments, the practitioner caveats, the "we tried this in production" replies that carry the real signal. Algolia can search comment text but does not return thread structure, so this is the only way to see who replied to whom. Get a story_id from hn_top_stories or hn_search first. Comments are walked breadth-first, so the highest-ranked top-level comments come back first. Deleted and flagged comments are skipped. Popular threads run to several hundred comments and each one costs a request upstream, so both depth and total count are capped — check the 'truncated' flag to see whether the thread was cut short. Args: params (HnDiscussionInput): - story_id (int): HackerNews item ID - max_depth (int): Reply nesting levels (1–4, default 2) - max_comments (int): Total comment budget (1–100, default 25) - text_chars (int): Per-comment text truncation (100–2000) Returns: str: JSON with story{}, total_comments (as reported by HN), fetched_comments, truncated, comments[]. Each comment: id, by, posted, text, reply_count, replies[] (same shape, nested). |
| arxiv_latestA | Fetch the most recently submitted papers from arXiv AI/ML categories. Papers appear hours before press coverage — the fastest signal of what is happening at the AI research frontier. Categories: cs.AI (Artificial Intelligence), cs.LG (Machine Learning), cs.CL (NLP), cs.CV (Computer Vision), cs.NE (Neural Computing), stat.ML. Args: params (ArxivLatestInput): - categories (List[str]): arXiv category codes - limit (int): Papers per category (1–20) Returns: str: JSON with categories, total_papers, by_category dict. Each paper: id, title, abstract (400 chars), authors, published, url, pdf. |
| arxiv_searchA | Search arXiv for papers matching a query, sorted by submission date. Searches title, abstract and author fields. Optionally restrict to a specific AI/ML category. Args: params (ArxivSearchInput): - query (str): Search terms (e.g. 'LLM agents tool use') - category (Optional[str]): arXiv category filter - limit (int): Papers to return (1–20) Returns: str: JSON with query, category, count, papers[]. Each paper: id, title, abstract, authors, published, url, pdf. |
| lobsters_hotA | Fetch the hottest stories from Lobste.rs, a curated tech community. Lobste.rs is smaller and more technically focused than HackerNews. Invitation-only membership ensures higher signal-to-noise ratio. Args: params (LobstersHotInput): - limit (int): Stories to return (1–25) - tag_filter (Optional[str]): Tag substring filter (e.g. 'ai', 'ml') Returns: str: JSON with count, stories[]. Each story: title, url, score, comments, tags, submitter, submitted_at, lobsters_url. |
| github_trending_aiA | Search GitHub for trending repositories by topic. A surge of starred repos on a topic is a strong adoption signal. No auth required (60 req/h). Set GITHUB_TOKEN for 5,000 req/h. Args: params (GithubTrendingAiInput): - topic (str): GitHub topic tag (e.g. 'llm', 'mcp', 'ai-agents') - limit (int): Repos to return (1–15) - min_stars (int): Minimum stars filter - sort (str): 'stars' or 'updated' Returns: str: JSON with topic, total_found, count, repos[]. Each repo: name, description, stars, forks, language, topics, updated_at, url. |
| tech_signal_digestA | Aggregate tech & AI signals from all four sources in one call. The primary tool for a comprehensive daily or weekly tech intelligence briefing. Combines HackerNews, arXiv, Lobste.rs and GitHub into one structured JSON digest. Use 'focus' to filter for a specific topic. Args: params (TechSignalDigestInput): - focus (Optional[str]): Topic filter (e.g. 'MCP', 'agents') - hn_limit (int): HN stories (1–10) - arxiv_limit (int): arXiv papers (1–10) - lobsters_limit (int): Lobste.rs stories (1–10) - github_limit (int): GitHub repos (1–10) Returns: str: JSON digest with generated_at, focus, sources{hn, arxiv, lobsters, github}. Each source has label, count, and its items list. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/malkreide/hn-tech-signal-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server