Hacker News Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Hacker News Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A TypeScript MCP server for Hacker News with a practical founder-research layer on top.
It still gives you the raw Hacker News primitives you expect, but it also helps with the things indie developers actually care about:
Show HN launches in a nicheAsk HN threads for pain pointsThis project uses the official Hacker News API plus Algolia's Hacker News Search API. There are no external AI APIs, no database, and no browser automation.
searchgetStorygetStoryWithCommentsgetStoriesgetCommentgetCommentsgetCommentTreegetUsergetUserSubmissionsfindShowHNfindAskHNsummarizeThreadextractStartupInsightscompareLaunchesfindShowHNSearch Show HN posts by keyword with optional filters.
Inputs:
query: stringpage?: numberhitsPerPage?: numberminPoints?: numberminComments?: numberdateFrom?: stringdateTo?: stringReturns normalized results with:
idtitleurlauthorpointsnumCommentscreatedAthnUrltextPreviewfindAskHNSearch Ask HN posts for pain points and demand signals.
Inputs are the same as findShowHN.
summarizeThreadSummarize a story and comment thread using deterministic heuristics.
Inputs:
storyId: numbermaxDepth?: numbermaxComments?: numberReturns:
extractStartupInsightsExtract founder-relevant signals from either one thread or a query.
Inputs:
storyId?: numberquery?: stringsourceType?: "show" | "ask" | "story" | "comment"maxItems?: numberReturns:
targetUserspainPointsalternativesMentionedobjectionsmonetizationSignalslaunchFeedbackopportunitiesrisksrecommendedFollowupslowConfidenceAreascompareLaunchesCompare multiple Show HN launches.
Inputs:
storyIds: number[]Returns:
43130155 with maxDepth 2 and maxComments 40."43130155."manual invoicing and return pain points plus monetization signals."43130155, 42302015, and 41806551."npm installnpm run buildnpm testnode dist/index.jsBuild the server first:
npm install
npm run buildThen point your MCP client at the compiled entrypoint:
/absolute/path/to/hacker-news-mcp/dist/index.jsReplace /absolute/path/to/... with the real path on your machine.
If your Codex setup supports local stdio MCP servers, add an entry that runs:
{
"mcpServers": {
"hacker-news-mcp": {
"command": "node",
"args": ["/absolute/path/to/hacker-news-mcp/dist/index.js"]
}
}
}This is the same pattern used by other local MCP clients: Codex launches the server process for you, so you do not need to manually keep node dist/index.js running in another terminal.
If you use Antigravity as an MCP client, configure hacker-news-mcp as a local stdio server with the same command:
{
"mcpServers": {
"hacker-news-mcp": {
"command": "node",
"args": ["/absolute/path/to/hacker-news-mcp/dist/index.js"]
}
}
}If Antigravity expects an explicit transport type, use:
{
"mcpServers": {
"hacker-news-mcp": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/hacker-news-mcp/dist/index.js"]
}
}
}Add this to your MCP config:
{
"mcpServers": {
"hacker-news-mcp": {
"command": "node",
"args": ["/absolute/path/to/hacker-news-mcp/dist/index.js"]
}
}
}type: "stdio"{
"mcpServers": {
"hacker-news-mcp": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/hacker-news-mcp/dist/index.js"]
}
}
}npxIf you publish the package later, the config can become:
{
"mcpServers": {
"hacker-news-mcp": {
"command": "npx",
"args": ["-y", "@devabdultech/hacker-news-mcp"]
}
}
}stdio MCP clientsThis server is intentionally simple:
stdionodedist/index.jsIf a client supports local MCP servers, you usually only need:
command: "node"args: ["/absolute/path/to/hacker-news-mcp/dist/index.js"]After changing the config:
findShowHNYou only need to rebuild the server when the code changes. You do not need to manually run the server in the background for normal client usage.
If you have never published a project before, this is the straightforward path.
Run:
npm run build
npm testOn GitHub:
New repositoryhacker-news-mcp.gitignore, or license thereIf this repo is not initialized yet:
git init -b main
git add .
git commit -m "Initial commit"Replace YOUR_USERNAME below:
git remote add origin https://github.com/YOUR_USERNAME/hacker-news-mcp.git
git push -u origin mainIf GitHub asks for authentication, use GitHub Desktop, the GitHub CLI, or a personal access token in your normal setup.
GitHub is free and easy.
npm publishing is separate.
Before publishing to npm, make sure:
npm account can publish the chosen scopeCurrent package name:
@devabdultech/hacker-news-mcpIf that scope is not the one you want long-term, change it before publishing to npm.
If you delete .git and reinitialize, you lose:
That is fine if you want a fresh public repo, but it is not reversible unless you backed up the old .git directory first.
Before publishing, check that you are not committing:
.env filesThis repo currently ignores common env files and .omx/, which is good.
If your MCP clients still point at the old folder path, they will fail.
Use:
/absolute/path/to/hacker-news-mcp/dist/index.jsGitHub repo names and npm package names do not have to match, but confusion there is a classic self-own.
If you publish to npm later, keep the README install command aligned with the real package name.
src/
api/ Hacker News and Algolia API clients
analysis/ Normalization, heuristics, and founder-research logic
models/ Lightweight domain models
schemas/ Zod request schemas
services/ Thin orchestration layer for higher-level tools
index.ts MCP server registration and tool handlers
tests/ Basic analysis tests
dist/ Compiled outputMIT. See LICENSE.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.