Atlas / MCP servers / cyanheads / hn-mcp-server

hn-mcp-serverBLOCK

mcp/cyanheads/hn-mcp-server

Browse Hacker News feeds, threads, and user profiles with full-text search via MCP. STDIO or Streamable HTTP.

Verdict
BLOCK
Grade
F
Trust score
46 /100
Exposed tools
—
Transport
stdio · streamable-http
License
Apache-2.0
Stars
4
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

@cyanheads/hn-mcp-server Browse Hacker News feeds, threads, and user profiles with full-text search via MCP. STDIO or Streamable HTTP. 4 Tools

[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/hn-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/hn-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)

[](https://github.com/cyanheads/hn-mcp-server/releases/latest/download/hn-mcp-server.mcpb) [](https://cursor.com/en/install-mcp?name=hn-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvaG4tbWNwLXNlcnZlciJdfQ==) [](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22hn-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads%2Fhn-mcp-server%22%5D%7D)

[![Framework](https://img.shields.io/badge/Built%20on-@c

Read from source at commit c61cbf343270OBSERVED · 2026-10-11
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code (npm)
claude mcp add hn-mcp-server -- npx -y @cyanheads/[email protected]
claude-code (npm)
claude mcp add hn-mcp-server -- npx -y @cyanheads/[email protected]
03

Trust audit

BLOCKgrade F · trust 46/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (2 observation(s))
Network
declared (1 observation(s))
Shell
declared (8 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (16)

CRITICALPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
framework-skills/add-tool/SKILL.md:781
**Seed orientation context when the next moves are predictable.** Piggybacking a compact snapshot alongside the primary result — recent activity, tracked state, a few reference items — does two things
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
CRITICALPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
framework-skills/design-mcp-server/SKILL.md:360
- **Mirror a bulk upstream instead of paginating it live.** When the server wraps a large or slow API whose corpus is queried far more than it changes, sync it once into a persistent local index and q
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
scripts/build.ts:129
const tsc = await exec([join(ROOT_DIR, 'node_modules', '.bin', 'tsc'), '-p', project], 'tsc');
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
scripts/build.ts:133
const alias = await exec(
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
scripts/devcheck.ts:158
exec(cmd: string[], options: { cwd: string }): Promise<ShellResult> {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
scripts/devcheck.ts:696
':(glob)**/.netrc',
Why it matters. touches a credential store
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
framework-skills/design-mcp-server/SKILL.md:439
| **Server credential** | The server's own upstream key is missing, or the upstream rejects it (401/403) | `ConfigurationError` — translated in the service, since the automatic status mapping yields `
Why it matters. asks the agent to read credentials
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
framework-skills/release-and-publish/SKILL.md:218
Prereq: a GitHub PAT with `read:org` + `read:user` scopes stored in Keychain under the service name `mcp-publisher-github-pat`:
Why it matters. asks the agent to read credentials
HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
framework-skills/orchestrations/SKILL.md:55
2. **No `git stash`, no `git reset --hard`, no `git restore .`, no `git clean -f`, no `git checkout -- .`.** These bypass safety and risk silent data loss. Read-only git (`status`, `diff`, `log`, `sho
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
LOWInventory / provenance · inv.hidden_file · CWE-1104
.mcpbignore
.mcpbignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/services/hn/hn-service.test.ts:23
import { httpStatus, rejectUnmockedFetch, stubHnApi } from '../../helpers/hn-api-stub.js';
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@cyanheads/mcp-ts-core, pino-pretty, zod, @biomejs/biome, @socketsecurity/bun-security-scanner, @types/node, @vitest/coverage-istanbul, depcheck
Why it matters. 12 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
AGENTS.md:406
- [ ] `.codex-plugin/mcp.json` updated — server name key is the unscoped repo name; every user-supplied variable (API key, contact email, instance URL) is listed in `env_vars` so Codex forwards it fro
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
CLAUDE.md:406
- [ ] `.codex-plugin/mcp.json` updated — server name key is the unscoped repo name; every user-supplied variable (API key, contact email, instance URL) is listed in `env_vars` so Codex forwards it fro
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
changelog/0.5.x/0.5.2.md:9
Maintenance + capability release. Adopts the MCP spec's server-level `instructions` field on `createApp()` so spec-compliant clients forward orientation text (HN item types, ID reuse across tools, cas
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWInventory / provenance · mcp.no_tools_extracted · CWE-1104
server.json
Why it matters. the tool list is enumerated at runtime by tools/list, not declared in source
Fix. the page says so rather than showing an empty table

Gates applied: critical_finding, instruction_override, no_behavioural_pass, undeclared_transfer.

Audited 2026-10-11 · audit v0.4.1 · source sha c61cbf343270full audit observations/trust-audit/mcp-server/cyanheads__hn-mcp-server.json · Report an issue / request a re-scan
04

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-11c61cbf343270BLOCKF46first audit
05

Questions

What is the hn-mcp-server MCP server?

Browse Hacker News feeds, threads, and user profiles with full-text search via MCP. STDIO or Streamable HTTP.

Is hn-mcp-server safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (46/100) and found 9 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does hn-mcp-server need?

No credential environment variables were found in its source, so it appears to need none.

How does hn-mcp-server run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as @cyanheads/hn-mcp-server at 0.5.21.

How current is this page?

The grade is for one exact copy of the source (c61cbf343270), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement