Atlas / MCP servers / cyanheads / cisa-cybersecurity-mcp-server

cisa-cybersecurity-mcp-serverBLOCK

mcp/cyanheads/cisa-cybersecurity-mcp-server

CISA Known Exploited Vulnerabilities with BOD 26-04 deadlines, SSVC prioritization, and the full ICS advisory corpus (CSAF) via MCP. Keyless. STDIO or Streamable HTTP.

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

Overview

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

@cyanheads/cisa-cybersecurity-mcp-server CISA Known Exploited Vulnerabilities with BOD 26-04 deadlines, SSVC prioritization, and the full ICS advisory corpus (CSAF) via MCP. Keyless. STDIO or Streamable HTTP. 7 Tools • 2 Resources

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

[](https://github.com/cyanheads/cisa-cybersecurity-mcp-server/releases/latest/download/cisa-cybersecurity-mcp-server.mcpb) [](https://cursor.com/en/install-mcp?name=cisa-cybersecurity-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvY2lzYS1jeWJlcnNlY3VyaXR5LW1jcC1zZXJ2ZXIiXX0=) [](https://vscode.dev/redirect?url=vsco

Read from source at commit 5056b2583c36OBSERVED · 2026-10-12
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 cisa-cybersecurity-mcp-server -- npx -y @cyanheads/[email protected]
claude-code (npm)
claude mcp add cisa-cybersecurity-mcp-server -- npx -y @cyanheads/[email protected]
03

Trust audit

BLOCKgrade F · trust 43/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 (2 observation(s))
Shell
declared (8 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (22)

CRITICALPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
framework-skills/add-tool/SKILL.md:789
**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:361
- **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:440
| **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/mcp-server/resources/definitions/ics-advisory.resource.test.ts:26
} from '../../../fixtures/csaf-documents.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/mcp-server/resources/definitions/ics-advisory.resource.test.ts:27
import { buildTarGzResponse } from '../../../fixtures/tar.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/mcp-server/resources/definitions/kev-entry.resource.test.ts:18
import { buildKevFeedBody } from '../../../fixtures/kev-feed.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/mcp-server/schemas/advisory.test.ts:28
import { FULL_ADVISORY, SPARSE_ADVISORY } from '../../fixtures/csaf-documents.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/mcp-server/schemas/kev-record.test.ts:18
import { DRIFTING_CATALOG_COUNT } from '../../helpers/catalog-counts.js';
LOWObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
tests/mcp-server/tools/definitions/get-advisory.tool.test.ts:584
`
${canonical}`,
LOWObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
tests/mcp-server/tools/definitions/get-advisory.tool.test.ts:630
const whitespace = fc.constantFrom(' ', '\t', '\n', '\r', '\v', '\f', ' ', '
', ' ', '');
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@cyanheads/mcp-ts-core, better-sqlite3, fast-xml-parser, node-cron, pino-pretty, zod, @socketsecurity/bun-security-scanner, depcheck
Why it matters. 13 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
AGENTS.md:543
- [ ] `.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:543
- [ ] `.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
README.md:302
On every transport, the server refreshes the index once at startup and then on `CISA_CSAF_REFRESH_CRON`, and polls KEV on `CISA_KEV_REFRESH_CRON`. Server processes that share one index — every stdio s
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-12 · audit v0.4.1 · source sha 5056b2583c36full audit observations/trust-audit/mcp-server/cyanheads__cisa-cybersecurity-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-125056b2583c36BLOCKF43first audit
05

Questions

What is the cisa-cybersecurity-mcp-server MCP server?

CISA Known Exploited Vulnerabilities with BOD 26-04 deadlines, SSVC prioritization, and the full ICS advisory corpus (CSAF) via MCP. Keyless. STDIO or Streamable HTTP.

Is cisa-cybersecurity-mcp-server safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (43/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 cisa-cybersecurity-mcp-server need?

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

How does cisa-cybersecurity-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/cisa-cybersecurity-mcp-server at 0.3.1.

How current is this page?

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

Advertisement