accueil / serveurs / Recherche & Web / io.github.cyanheads/hn-mcp-server
io.github.cyanheads/hn-mcp-server
serveur MCP (Model Context Protocol) · hn-mcp-server 0.5.22
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que io.github.cyanheads/hn-mcp-server est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.cyanheads/hn-mcp-server » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 4 outils
- hn_get_stories≈ 1422 tokens
Fetch stories from an HN feed (top, new, best, ask, show, jobs), with title, URL, score, author, and comment count for each story.
Paramètres, retour & exemple (3)
Paramètresfeed· string · requis · top | new | best | ask | show | jobs
Which HN feed to fetch. "top" includes jobs. "ask" and "show" are Ask HN / Show HN posts.count· integer · optionnel
Number of stories to return, at most 100 per call. A larger value is served at 100, and the notice names the offset for the next page. Larger counts take longer.offset· integer · optionnel
Number of stories to skip from the start of the feed. Use with count for pagination.
Exemple d'appel{"name": "hn_get_stories", "arguments": {"feed": "top"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cap": 1, "feed": "texte", "error": {}, "shown": 1, "total": 1, "notice": "texte", "offset": 1, "hasMore": true, "stories": [], "failedIds": [], "truncated": true}} - hn_get_thread≈ 2753 tokens
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.
Paramètres, retour & exemple (4)
Paramètresdepth· integer · optionnel
How many levels of replies to resolve, at most 10 per call. 0 = just the item, no comments. 1 = direct replies only. A larger value is served at 10. Replies below the depth served are never fetched — to read them, raise depth up to 10, or call again with a comment from the deepest level returned, or one notice names, as itemId to drill into its subtree. Ignored when cursor is set: the depth the cursor was issued with applies.cursor· string · optionnel
nextCursor from a previous call, passed with the same itemId, to continue the traversal at the next unseen comment without repeating or skipping any. Omit to start from the top.itemId· integer · requis
ID of the story, comment, job, poll, or poll option to fetch the thread for.maxComments· integer · optionnel
Maximum comments in one response, across all depth levels, at most 200 per call. A larger value is served at 200, and nextCursor continues from there. Highest-ranked top-level comments resolve first; replies fill in only after the level above is exhausted. A response also stops at a fixed 64,000-byte text budget. When either limit stops the traversal, nextCursor continues it.
Exemple d'appel{"name": "hn_get_thread", "arguments": {"itemId": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cap": 1, "item": {}, "error": {}, "shown": 1, "notice": "texte", "comments": [], "failedIds": [], "truncated": true, "nextCursor": "texte", "totalLoaded": 1, "totalAvailable": 1, "truncationReason": "count"}} - hn_get_user≈ 1672 tokens
Get an HN user profile with karma, about, and optionally their most recent submissions resolved into full items.
Paramètres, retour & exemple (4)
Paramètresusername· string · requis
HN username. Case-sensitive. Trimmed; blank or whitespace-only input is rejected.submissionCount· integer · optionnel
Page size — how many submissions to resolve per call, at most 50 per call. A larger value is served at 50, and the notice names the submissionOffset for the next page. Only used when includeSubmissions is true.submissionOffset· integer · optionnel
How many submissions to skip before resolving, counting back from the most recent. Use with submissionCount to page through a long history: request offset 0, then advance by the page size served, and so on. The enrichment block echoes submissionOffset and, when more remain, the offset to send next. Only used when includeSubmissions is true.includeSubmissions· boolean · optionnel
Resolve the user's most recent submissions into full items. Without this, only the submission count is available.
Exemple d'appel{"name": "hn_get_user", "arguments": {"username": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cap": 1, "user": {}, "error": {}, "shown": 1, "notice": "texte", "failedIds": [], "truncated": true, "submissions": [], "submissionOffset": 1}} - hn_search_content≈ 3615 tokens
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.
Paramètres, retour & exemple (10)
Paramètrespage· integer · optionnel
Page number for pagination (0-indexed), counted in pages of count results.sort· string · optionnel · relevance | date
Sort order. "relevance" for best match, "date" for most recent first.tags· string · optionnel · story | comment | poll | job | ask_hn | show_hn | front_page
Filter results by content type: "story", "comment", "poll", or "job", or the story subsets "ask_hn", "show_hn", and "front_page". "front_page" is the HN front page right now (about 30 stories); no filter selects stories from past front pages. The nearest proxy is "story" with dateRange and minPoints — without a query, the default relevance sort ranks by points. Omit to search all types, which also returns poll options (type "pollopt"): records with only an id, author, vote count, and date — hn_get_thread reads an option's text and poll.view· string · optionnel · full | compact
How much of each hit to return. "full" includes every field. "compact" omits the two body-text fields — `text` and `highlights.text` — which together can repeat a long comment twice per hit; everything else (id, title, url, domain, author, points, comment count, timestamp, parent story, title highlight, matchedWords) is unchanged. Use "compact" to scan many results, then pass a hit id to hn_get_thread to read the body you skipped.count· integer · optionnel
Number of results to return, at most 50 per call. A larger value is served at 50: the search runs at count 50 from the hit where the requested page starts, and the notice names the count and page to pass next. With page above 0, that hit (page × count) must begin a page of 50 hits.query· string · optionnel
Search terms. Supports simple keywords — Algolia handles stemming and relevance, and a hit must contain every term. Trimmed before searching; blank or whitespace-only input is rejected. To find discussions of a page, pass its URL alone: a query with no spaces that starts with http://, https://, or www. is searched without that prefix, so submissions under either scheme, with or without www., all match. Omit for a filter-only search, which needs at least one of tags, author, storyId, minPoints, or a dateRange bound.author· string · optionnel
Filter results to a specific author — useful for finding a user's posts on a topic. Matches the HN username exactly and is case-sensitive, so a re-cased name finds nothing. Trimmed before filtering; omit the field to search all authors rather than passing a blank string.storyId· integer · optionnel
Restrict results to one discussion: the id of a story or poll root, combined with the other filters. Pair with tags "comment" to search within a thread. Take it from hits[].storyId, from a poll hit's own id (poll hits carry no storyId), or from hn_get_thread — the root item's id, or its item.storyId when the root is a comment. A comment id matches nothing.dateRange· object · optionnel
Filter to a creation-time window with a start, an end, or both. An empty object is rejected — omit dateRange instead.minPoints· integer · optionnel
Minimum score. Applies to stories and polls, including the ask_hn, show_hn, and front_page subsets. Comments and jobs carry no points in the search index, so any minPoints excludes them — combining it with tags "comment" or "job" is rejected.
Exemple d'appel{"name": "hn_search_content", "arguments": {"page": 1, "sort": "relevance", "tags": "story", "view": "full", "count": 1, "query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cap": 1, "hits": [], "page": 1, "error": {}, "query": "texte", "shown": 1, "notice": "texte", "criteria": {}, "totalHits": 1, "truncated": true, "totalPages": 1, "reachableHits": 1}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».