Unicode Security MCP
Local checks for Unicode confusables, mixed scripts, invisible controls, and suspicious identifiers.
Description from the maker (original English)
CISA KEV with BOD 26-04 deadlines, SSVC prioritization, and the ICS advisory corpus (CSAF). Keyless.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
CISA_CLAMP_OVERSIZED_INPUTS, MCP_LOG_LEVEL, CISA_KEV_REFRESH_CRON, CISA_CSAF_MIRROR_PATH, CISA_CSAF_MIRROR_AUTO_INIT, CISA_CSAF_REFRESH_CRON, CISA_VULNRICHMENT_CACHE_TTL_SECONDS, CISA_FEED_CACHE_TTL_SECONDS, CISA_HTTP_TIMEOUT_MSYou need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Works in Claude on the web, desktop and mobile:
https://cisa-cybersecurity.caseyjhand.com/mcpOpen Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"cisa-cybersecurity": {
"command": "npx",
"args": [
"-y",
"@cyanheads/cisa-cybersecurity-mcp-server"
],
"env": {
"CISA_CLAMP_OVERSIZED_INPUTS": "your-value",
"MCP_LOG_LEVEL": "your-value",
"CISA_KEV_REFRESH_CRON": "your-value",
"CISA_CSAF_MIRROR_PATH": "your-value",
"CISA_CSAF_MIRROR_AUTO_INIT": "your-value",
"CISA_CSAF_REFRESH_CRON": "your-value",
"CISA_VULNRICHMENT_CACHE_TTL_SECONDS": "your-value",
"CISA_FEED_CACHE_TTL_SECONDS": "your-value",
"CISA_HTTP_TIMEOUT_MS": "your-value"
}
}
}
}Run this in your terminal
claude mcp add --transport http cisa-cybersecurity https://cisa-cybersecurity.caseyjhand.com/mcpclaude mcp add cisa-cybersecurity --env CISA_CLAMP_OVERSIZED_INPUTS=your-value --env MCP_LOG_LEVEL=your-value --env CISA_KEV_REFRESH_CRON=your-value --env CISA_CSAF_MIRROR_PATH=your-value --env CISA_CSAF_MIRROR_AUTO_INIT=your-value --env CISA_CSAF_REFRESH_CRON=your-value --env CISA_VULNRICHMENT_CACHE_TTL_SECONDS=your-value --env CISA_FEED_CACHE_TTL_SECONDS=your-value --env CISA_HTTP_TIMEOUT_MS=your-value -- npx -y @cyanheads/cisa-cybersecurity-mcp-serverFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"cisa-cybersecurity": {
"url": "https://cisa-cybersecurity.caseyjhand.com/mcp"
}
}
}Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"cisa-cybersecurity": {
"command": "npx",
"args": [
"-y",
"@cyanheads/cisa-cybersecurity-mcp-server"
],
"env": {
"CISA_CLAMP_OVERSIZED_INPUTS": "your-value",
"MCP_LOG_LEVEL": "your-value",
"CISA_KEV_REFRESH_CRON": "your-value",
"CISA_CSAF_MIRROR_PATH": "your-value",
"CISA_CSAF_MIRROR_AUTO_INIT": "your-value",
"CISA_CSAF_REFRESH_CRON": "your-value",
"CISA_VULNRICHMENT_CACHE_TTL_SECONDS": "your-value",
"CISA_FEED_CACHE_TTL_SECONDS": "your-value",
"CISA_HTTP_TIMEOUT_MS": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"cisa-cybersecurity": {
"type": "http",
"url": "https://cisa-cybersecurity.caseyjhand.com/mcp"
}
}
}Paste into .vscode/mcp.json in your project
{
"servers": {
"cisa-cybersecurity": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cyanheads/cisa-cybersecurity-mcp-server"
],
"env": {
"CISA_CLAMP_OVERSIZED_INPUTS": "your-value",
"MCP_LOG_LEVEL": "your-value",
"CISA_KEV_REFRESH_CRON": "your-value",
"CISA_CSAF_MIRROR_PATH": "your-value",
"CISA_CSAF_MIRROR_AUTO_INIT": "your-value",
"CISA_CSAF_REFRESH_CRON": "your-value",
"CISA_VULNRICHMENT_CACHE_TTL_SECONDS": "your-value",
"CISA_FEED_CACHE_TTL_SECONDS": "your-value",
"CISA_HTTP_TIMEOUT_MS": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
ChatGPT connects only to servers on the internet:
https://cisa-cybersecurity.caseyjhand.com/mcpMenu names can differ slightly by plan and over time.
Your choice stays on this device in a cookie; no account needed.
CISA_CLAMP_OVERSIZED_INPUTS envMCP_LOG_LEVEL envCISA_KEV_REFRESH_CRON envCISA_CSAF_MIRROR_PATH envCISA_CSAF_MIRROR_AUTO_INIT envCISA_CSAF_REFRESH_CRON envCISA_VULNRICHMENT_CACHE_TTL_SECONDS envCISA_FEED_CACHE_TTL_SECONDS envCISA_HTTP_TIMEOUT_MS envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Tool names and descriptions exactly as the server reported them on Nov 6, 2026. The maker wrote them, not us; we show them as plain text.
cisa_list_referenceDecode the vocabulary the other CISA tools take as input. Topics cover the BOD 26-04 remediation timeline table and what each tier means, the KEV record fields and their value domains, the SSVC decision points CISA publishes, the critical-infrastructure sector names as the adviso
cisa_check_cve_statusCheck CVE IDs against the CISA Known Exploited Vulnerabilities catalog — up to 200 per call, served from a cached catalog snapshot at no upstream cost. Returns, per CVE, whether it is in KEV and if so the date added, the federal remediation due date, days remaining or days overdu
cisa_search_kevSearch the CISA Known Exploited Vulnerabilities catalog across every entry in the cached snapshot. Filter by vendor or product using CISA's own labels, by name substring, by CWE, by the date an entry was added, by due date, by overdue status, by ransomware linkage, by the three-d
cisa_get_ssvcFetch the SSVC decision points CISA publishes per CVE as a CVE Authorized Data Publisher — Exploitation, Automatable, and Technical Impact — along with the CVSS score and CWE CISA contributes where present, and compute the BOD 26-04 remediation timeline those values imply for the
cisa_search_ics_advisoriesSearch the CISA industrial control system advisory corpus — every CSAF 2.0 advisory covering PLC, HMI, SCADA, building-automation, and medical-device products from 2010 onward. Filter by vendor, product, CVE, CWE, CVSS range, severity band, critical-infrastructure sector, advisor
cisa_get_advisoryRead one CISA industrial control system advisory: product definitions and relationship component references; per-CVE CVSS score, vector, and CWE; vendor remediations, flags, and threats; sectors; and revision history. Large advisories return a section outline with byte sizes and
cisa_get_alertsList what CISA has published recently — its combined advisory feed, its alerts feed, or its ICS advisory feed. Cursors continue within the current 30-item rolling window; upstream provides no pagination, history, or date-range query. The window's coverage varies from about a week
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026
The registry name was verified with the GitHub account cyanheads, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Responded in 122 ms (HTTP 200)
No sign-in needed
Read 7 tool descriptions and found no hidden instructions to the AI
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
Either way works: install it on your computer or connect to the cloud version.
The GitHub repo last changed –, and the latest version (0.4.0) reached the registry 7 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Unicode Security MCP, Osv MCP, Epss MCP
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Local checks for Unicode confusables, mixed scripts, invisible controls, and suspicious identifiers.
MCP server for OSV open source vulnerability data and package security checks.
Exploit Prediction Scoring System scores: how likely a CVE will be exploited in the next 30 days.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
@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 Data Resources • 1 Skill
Public Hosted Server: https://cisa-cybersecurity.caseyjhand.com/mcp
CISA's vulnerability data in one place: the Known Exploited Vulnerabilities catalog with its remediation deadlines, per-CVE SSVC decision points, ICS advisories back to 2010, and CISA's latest alerts. Check a scan's worth of CVEs against KEV in one call, find what's overdue for a vendor, and work out BOD 26-04 timelines. No API key required.
| Tool | Description |
|---|---|
cisa_list_reference | Decode the input vocabulary (BOD 26-04 timelines, KEV fields, SSVC values, sectors, ID formats, severity bands) and report what data the server holds |
cisa_check_cve_status | Check up to 200 CVE IDs against KEV in one call: deadlines, overdue status, ransomware and forensic-triage flags, cited directive |
cisa_search_kev | Search KEV by vendor, product, CWE, date added, due date, overdue status, ransomware linkage, forensic-triage tier, or directive |
cisa_get_ssvc | Fetch CISA's published SSVC decision points per CVE and compute the BOD 26-04 timeline for a stated asset exposure |
cisa_search_ics_advisories | Search ICS advisories by vendor, product, CVE, CWE, KEV membership, CVSS, severity, sector, series, dates, or free text |
cisa_get_advisory | Read one ICS advisory: affected product versions, per-CVE CVSS and CWE, remediations, sectors, revision history |
cisa_get_alerts | List CISA's latest items from its advisory, alert, or ICS advisory feed |
| Resource | Description |
|---|---|
cisa://kev/{cveId} | One KEV catalog entry by CVE ID |
cisa://advisory/{advisoryId} | One ICS advisory, flattened from CSAF 2.0 |
Both data resources are fully covered by the tools above. The CISA cybersecurity guide covers evidence gates, CVE-to-product investigation, and incomplete coverage. It ships with plugin, npm, Docker, and MCPB installs and is served at skill://cisa-cybersecurity-guide/SKILL.md through MCP skill discovery.
cisa_list_reference tooltopic: directives, kev_fields, ssvc_values, sectors, advisory_id_formats, severity_bands, or sources; reads in-process state only, so it answers while other tools are failingdirectives adds timelineTable (all 16 rows of BOD 26-04 Table 1, with remediationTimelineDays and forensicTriageRequired), definitions, and supersedes; sources reports the KEV catalogVersion, the advisory index's ready / documentCount / syncStatus, the SSVC cache TTL, and the cached feed windowscisa_check_cve_status toolcveIds per call from the cached KEV snapshot with no upstream request; inputs up to 1,000 IDs return normalized unprocessedIds for a follow-up call. A CVE outside KEV comes back inKev: false, not as an errordateAdded, dueDate, daysUntilDue, overdue, requiredAction, knownRansomwareCampaignUse, forensicTriage, cwes[], every URL in the entry's notes as references[] typed by kind, and a three-state directive (BOD 26-04, BOD 22-01, or null); the response echoes the catalog snapshot and the asOf date the deadlines were computed againstdetail: "summary" trims each in-KEV record to the triage fields (dates, deadline status, directive, vendor and product labels, ransomware and forensic-triage flags), which keeps a full 200-CVE batch compact; full is the defaultcisa_search_kev toolvendorProject and product (CISA's own labels, not CPE names), nameContains, cwe, cveIdPrefix, dateAddedFrom / dateAddedTo, dueBefore / dueAfter, overdue, ransomware, forensicTriage, directive (BOD 26-04 / BOD 22-01 / none); up to 100 per page (default 25) with an opaque cursor; sorts by dateAdded (default) or dueDatetotalCount and appliedFilters; each continued page uses the current call's limit. A zero-hit result names the filter responsible and what dropping it restores. nameContains searches a-z and 0-9 after folding case and accents, and the notice names any other characters it droppedcatalog_unavailable (retryable), invalid_date_range, empty_search_textcisa_get_ssvc toolcveIds per call through the Vulnrichment cache, fetching uncached records; inputs up to 1,000 IDs return normalized unprocessedIds for a follow-up call. assetExposure: publicly_exposed, not_publicly_exposed, or unknown (default, returns both arms)found, exploitation, automatable, technicalImpact, cvss and cwes where CISA published them, and bod2604.timelines[] (tableRow, remediationTimelineDays, forensicTriageRequired); a KEV entry adds kevAssigned, plus assignmentAgrees when an exposure was statedoutcome: ssvc, not_found, no_cisa_container, no_ssvc_metric, or fetch_failed. foundCount, notFoundCount, and failedCount separate published SSVC, confirmed misses, and unavailable lookups; enrichment_source_unavailable (retryable) fires when every processed lookup failscisa_search_ics_advisories toolq over titles, vendor names, and product names, plus vendor, product (case-insensitive substrings), cve, cwe, inKev, cvssMin / cvssMax, severity, sector, series (ICSA / ICSMA), publisher (coordinator / other), publishedFrom / publishedTo, revisedFrom / revisedTo; sorts by revised (default), published, maxCvss, or relevance (needs q); up to 50 per page (default 20) with an opaque cursoradvisoryId, up to 20 cves with cveCount, kevCves, maxCvss with severityDerived, sectors, url, csafUrl, and attribution, plus totalCount and appliedFilters; a zero-hit result names the filter responsible. If the KEV snapshot isn't loaded, kevCves is left out and says somirror_not_ready, mirror_busy, and catalog_unavailable (retryable), mirror_unavailable, invalid_cvss_range, invalid_date_range, relevance_sort_without_query, empty_search_textcisa_get_advisory tooladvisoryId (optional revision suffix), optional sections (advisory, summary, products, vulnerabilities, revisionHistory, references, acknowledgments), cves to pick vulnerability entries, and productIds to pick exact, case-sensitive product definitions; cves and productIds imply their sectionskind: "full", or kind: "outline" (per-section byte sizes plus the CVE IDs) when a read without sections exceeds 24,000 bytes; re-call with sections. Both arms retain advisory identity, source links, and attributionflags and threats; remediations, flags, and threats resolve referenced product groups into productIds and keep groupIds. Undefined groups remain visible without invented product definitionsfound: false with guidance, indexCheckpoint, and indexLastSyncedAt; the guidance notes when the advisory may be newer than the indexmirror_not_ready and mirror_busy (retryable), mirror_unavailable, unknown_section, unknown_cve, cves_need_vulnerabilities_section, unknown_product_id, product_ids_need_products_sectioncisa_get_alerts toolfeed: advisories (default), alerts, or ics; default limit 30, the upstream window size; since (YYYY-MM-DD) filters within that window and cannot reach past it. hasMore and an opaque cursor continue after the last returned item within the same feed; an unavailable anchor returns an empty page with restart guidancetitle, link, pubDate, summary (HTML stripped, capped at 1,200 characters, flagged by summaryTruncated), and on ICS items an advisoryId for cisa_get_advisory; window reports itemCount, oldest, newest, and upstreamWindowSizefetchedAt and stale; if a refresh fails, the last window is returned as stale with retry guidance, and a stale empty result doesn't prove nothing was published. With no cached window, feed_unavailable (retryable)cisa://kev/{cveId} resourceapplication/json, the same shape as a cisa_check_cve_status result under the default detail: "full"; a CVE not in KEV is a not-found errorcveId completes from the snapshot, up to 100 suggestionscisa://advisory/{advisoryId} resourceapplication/json, with the same 24,000-byte outline-on-overflow as cisa_get_advisory; the template takes no sections, cves, or productIds, so follow an outline up with the tooladvisoryId completes from the index, up to 100 suggestionsBuilt on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.
CISA-specific:
Only the beginning is shown; read the rest in the repo