Koskamo

CVE Security MCP

Provides CVE intelligence including exploitation status (KEV/EPSS), detection coverage, fixed versions, and CPE configurations. It offers tools to query CVE details, search vulnerabilities, check package updates, retrieve scoreboard metrics, and access BOD 26-04 Table 1 data for forensic triage and remediation planning.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

CVE Security MCP logo, by CVE SecurityVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by CVE Security
MCP endpoint (Streamable HTTP)
https://cve-security.com/api/mcp
Vendor documentation

What its tools do

9 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

9 of 9 have a description · 9 of 9 declare behavior hints · 6 of 8 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to cve-security.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Warning Advertises resources/templates/list but does not implement it
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Retrieve CVE details and scores
  • Search for vulnerabilities by vendor or CWE
  • Check detection coverage and sightings
  • Access BOD 26-04 Table 1 data

Source and maintenance

Vendor evidenceRegistry 1.7.0

Protocol and capabilities

Server
cve-security 1.10.0
MCP protocol negotiated in check
2025-06-18
Tools
9 advertised
Resources
2 advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {},
  "resources": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Read-only CVE intelligence for assistants working with a person. Tools are keyless, with 100 tool calls per caller per UTC day; initialize, tools/list and the other protocol methods are free. A network Cloudflare verifies as an AI assistant shares a pool of 5,000 calls a day. An API key on the HTTP request (Authorization: Bearer cvs_live_…, free via POST /api/signup) is honored for attribution and counts calls against that key's daily limit in place of the budget. Integrations use the REST API: https://cve-security.com/api. Absence semantics apply to every field: null means this dataset holds no record. The source may still hold one.

Tools

9 advertised

get_cve
Advertised by the server during the last successful anonymous check.
Advertised read-only

Full intelligence record for one CVE: per-scorer CVSS, EPSS, CISA KEV/ransomware/SSVC, four remote-detection modalities (the checks that work over the network) plus a host-check tier (self-contained Nuclei templates and Metasploit local modules that run on the system itself) and the Sigma log-detection layer, both kept out of scannable coverage, per-product fixed versions (fixed = first patched build; affected_through = the last vulnerable build, so upgrade past it), news/community coverage, intelligence summary, and bod_26_04: the BOD 26-04 Table 1 read on both exposure branches (CISA's row numbers and timelines from KEV status and CISA's SSVC Automatable and Technical impact) with CISA's KEV due date, forensic triage flag and the KEV entry's action text (kev_required_action, CISA's requiredAction field); the agency's exposure tag decides the row. other_databases lists the CVE's records in ENISA's EUVD, BDU (FSTEC of Russia), CNVD (CNCERT/CC) and JVN iPedia (JPCERT/CC and IPA) with the address of each. products lists the vendor and product pairs the page lists and the CPE entries NVD's configurations name: with cpes_source nvd_configurations, configurations carries them as NVD writes them (each entry's vulnerable flag, AND and OR operators, negate and the version bounds verbatim, up to 100 matches here, configurations_cap for more), and cpes their names; with nvd_cpe_list, cpes holds the first 25 names in sort order our NVD ingest stores, flagged by cpes_may_be_incomplete. No key required over MCP; an API key on the HTTP request (Authorization: Bearer cvs_live_…) is honored for attribution. Absence semantics: a null field means this dataset holds no such record. The source may still hold one.

get_cve input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "CVE id, such as CVE-2024-3400"
    },
    "configurations_cap": {
      "type": "integer",
      "maximum": 500,
      "minimum": 0,
      "description": "How many of NVD's configuration matches products.configurations carries (default 100; 0 to 500). GET /api/cve/{id} carries up to 500."
    }
  }
}
get_cve annotations
{
  "title": "Get CVE record",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
search_cves
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search the catalog. Free text (q) and/or structured filters: vendor (slug), cwe (CWE-nnn), technique (ATT&CK id, such as T1190), year ("2024,2025"), sev ("critical,high"), kev (0|1), kev_from / kev_to (ISO days, half-open CISA listing window; imply kev=1), kev_vendor (the CISA vendorProject string verbatim, such as "Microsoft"), ransomware (0|1), detect (0|1, a detection signal we track), fix (0|1; fix=0 means the fix status was computed and this dataset holds no actionable vendor fix), automatable (0|1, CISA SSVC Automatable; 1=yes, 0=CISA assessed no, unassessed CVEs match neither), sighted (7|30: a named sensor network recorded the CVE in the last 7 or 30 days, a field sighting; presence per day, apart from the exploitation claims), malware (0|1: a published source ties a named malware family, tool, campaign or ransomware group to the CVE), watch (0|1: on KEV Watch at tier 1 or 2, reported exploited by trackers other than CISA and outside CISA KEV), epss_gte (0..1), ti (total|partial: CISA SSVC Technical impact, for CVEs with a CISA assessment held), triage_flag (0|1: CISA's forensic triage flag on the KEV entry), ssvc (0|1; ssvc=0 selects rows with no CISA SSVC assessment held), bod (3df|3d|14d|60d|fsu: the BOD 26-04 Table 1 read at the stated exposure, with exposed 0|1, default 1; a mapping at that exposure, and an agency's timeline still needs its own enumeration date), eco (OSS ecosystem, such as npm or PyPI), pkg (pkg_key, such as npm/lodash; for ranges use query_package), page (1..5), limit (1..50). Filter-only queries return the /browse slice ordered KEV-first then EPSS.

search_cves input schema
{
  "type": "object",
  "properties": {
    "q": {
      "type": "string"
    },
    "ti": {
      "enum": [
        "total",
        "partial"
      ],
      "type": "string",
      "description": "CISA SSVC Technical impact, for CVEs with a CISA assessment held"
    },
    "bod": {
      "enum": [
        "3df",
        "3d",
        "14d",
        "60d",
        "fsu"
      ],
      "type": "string",
      "description": "BOD 26-04 Table 1 read at the stated exposure: a mapping of KEV status and CISA SSVC values to a timeline key at that exposure"
    },
    "cwe": {
      "type": "string"
    },
    "eco": {
      "type": "string"
    },
    "fix": {
      "enum": [
        "0",
        "1"
      ],
      "type": "string"
    },
    "kev": {
      "enum": [
        "0",
        "1"
      ],
      "type": "string"
    },
    "pkg": {
      "type": "string"
    },
    "sev": {
      "type": "string"
    },
    "page": {
      "type": "integer"
    },
    "ssvc": {
      "enum": [
        "0",
        "1"
      ],
      "type": "string",
      "description": "Whether this dataset holds a CISA SSVC assessment for the CVE"
    },
    "year": {
      "type": "string"
    },
    "limit": {
      "type": "integer"
    },
    "watch": {
      "enum": [
        "0",
        "1"
      ],
      "type": "string",
      "description": "On KEV Watch at tier 1 or 2: reported as exploited by trackers other than CISA, outside CISA KEV"
    },
    "detect": {
      "enum": [
        "0",
        "1"
      ],
      "type": "string"
    },
    "kev_to": {
      "type": "string",
      "description": "ISO day, exclusive upper bound on the CISA listing date"
    },
    "vendor": {
      "type": "string"
    },
    "chained": {
      "enum": [
        "0",
        "1"
      ],
      "type": "string",
      "description": "In a known exploit chain: a cited source reports the CVE was used together with another CVE in one exploit chain"
    },
    "exposed": {
      "enum": [
        "0",
        "1"
      ],
      "type": "string",
      "description": "The exposure branch for bod: 1 publicly exposed (default), 0 internal"
    },
    "malware": {
      "enum": [
        "0",
        "1"
      ],
      "type": "string",
      "description": "A published source ties a named malware family, tool, campaign or ransomware group to the CVE"
    },
    "sighted": {
      "enum": [
        "7",
        "30"
      ],
      "type": "string",
      "description": "Field sighting window in days: a named sensor network recorded the CVE within the last 7 or 30 days"
    },
    "epss_gte": {
      "type": "number"
    },
    "kev_from": {
      "type": "string",
      "description": "ISO day, inclusive lower bound on the CISA listing date"
    },
    "technique": {
      "type": "string",
      "description": "ATT&CK technique id, such as T1190 or T1059.001"
    },
    "kev_vendor": {
      "type": "string",
      "description": "CISA's vendorProject, verbatim (for example 'Palo Alto Networks')"
    },
    "ransomware": {
      "enum": [
        "0",
        "1"
      ],
      "type": "string"
    },
    "automatable": {
      "enum": [
        "0",
        "1"
      ],
      "type": "string"
    },
    "triage_flag": {
      "enum": [
        "0",
        "1"
      ],
      "type": "string",
      "description": "CISA's forensic triage flag on the KEV entry (BOD 26-04)"
    },
    "chainability": {
      "enum": [
        "0",
        "1"
      ],
      "type": "string",
      "description": "On KCV Watch™: the CVE carries at least one chain candidate at tier A or B, a pair whose extracted exploit capabilities connect or whose records tie the two CVEs together; a candidate is not a confirmed chain"
    }
  }
}
search_cves annotations
{
  "title": "Search CVEs",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
query_package
Advertised by the server during the last successful anonymous check.
Advertised read-only

CVEs affecting one open-source package, by purl (pkg:npm/lodash) or ecosystem + name (Maven names are group:artifact). Returns the CVE list KEV-first with each OSV version range VERBATIM: `events` plus one render-safe projection: `fixed` (the upgrade targets) or `affected_through` (the last VULNERABLE version, so upgrade past it). This tool does not evaluate version membership; compare versions on your side with your ecosystem’s own semantics. Covers CVE-linked, GitHub-reviewed OSS advisories via OSV.dev; absence is not evidence of safety.

query_package input schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Package name, verbatim (for example @babel/core or org.jenkins-ci.main:jenkins-core)"
    },
    "purl": {
      "type": "string",
      "description": "Package URL, such as pkg:npm/lodash or pkg:maven/org.apache.logging.log4j/log4j-core"
    },
    "ecosystem": {
      "type": "string",
      "description": "OSV ecosystem (npm, PyPI, Maven, Go, crates.io, Packagist, RubyGems, NuGet, …) or purl type (pypi, cargo, composer, gem, golang, …)"
    }
  }
}
query_package annotations
{
  "title": "Query package",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
get_updates
Advertised by the server during the last successful anonymous check.
Advertised read-only

The publication change stream: what this site published, stamped with OUR publish time (first_published, kev_added, detection_added, remediation_added, first_sighted, chain_added, and the BOD 26-04 Table 1 input changes ssvc_changed, kev_due_changed, kev_triage_flag_changed, kev_notes_changed, which fire on value changes between snapshots; a timestamp refresh alone fires none). Pass since (YYYY-MM-DD, strictly-after) on the first call, then the returned next_cursor to continue. Over MCP the stream covers the last 30 days, up to 50 events per call: since defaults to 30 days ago, and an earlier since or cursor returns an error. Optional cve scopes the stream to one CVE's change history, with no 30-day cutoff; follow next_cursor past the first 50 events. Events for withdrawn CVE ids are omitted. The keyed GET /api/updates walks the full history.

get_updates input schema
{
  "type": "object",
  "properties": {
    "cve": {
      "type": "string",
      "description": "Scope to one CVE's change history, such as CVE-2024-3400"
    },
    "type": {
      "enum": [
        "first_published",
        "kev_added",
        "detection_added",
        "remediation_added",
        "first_sighted",
        "chain_added",
        "ssvc_changed",
        "kev_due_changed",
        "kev_triage_flag_changed",
        "kev_notes_changed"
      ],
      "type": "string"
    },
    "limit": {
      "type": "integer",
      "description": "1..50 (default 50)"
    },
    "since": {
      "type": "string"
    },
    "cursor": {
      "type": "string"
    }
  }
}
get_updates annotations
{
  "title": "Get update stream",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": false
}
get_scoreboard
Advertised by the server during the last successful anonymous check.
Advertised read-only

The Defender Scoreboard report (CC BY 4.0): exploited vs detectable vs patchable, every figure with its method, caveat and denominator, plus the corpus block and any method-change notes. Cite as "CVE Security Defender Scoreboard, cve-security.com/scoreboard".

get_scoreboard input schema
{
  "type": "object",
  "properties": {}
}
get_scoreboard annotations
{
  "title": "Get Defender Scoreboard",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
get_sightings
Advertised by the server during the last successful anonymous check.
Advertised read-only

Field sightings: CVEs a named sensor network recorded in the last 7 or 30 days, most sighting days first. A field sighting is a day on which Shadowserver honeypots (cited by VulnCheck KEV and published as daily lists by CIRCL Vulnerability-Lookup) or VulnCheck canary sensors recorded traffic aimed at the CVE. Each row carries first and last sighting day, days sighted in the last 7 and 30, the sensors, and per-sensor detail including a 30-day presence strip. Presence per day, without volume; a sighting stays apart from the exploitation claims and from CISA KEV. Filters: window (7|30, default 7), kev (0|1), limit (1..50).

get_sightings input schema
{
  "type": "object",
  "properties": {
    "kev": {
      "enum": [
        "0",
        "1"
      ],
      "type": "string",
      "description": "Restrict to CVEs outside (0) or inside (1) CISA KEV"
    },
    "limit": {
      "type": "integer",
      "description": "1..50 (default 50)"
    },
    "window": {
      "enum": [
        "7",
        "30"
      ],
      "type": "string",
      "description": "Sighting window in days (default 7)"
    }
  }
}
get_sightings annotations
{
  "title": "Get field sightings",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
get_chains
Advertised by the server during the last successful anonymous check.
Advertised read-only

Known Chained Vulnerabilities™: pairs of CVEs that a cited source reports were used together in one exploit chain (VulnCheck KEV entry text, Metasploit modules, SigmaHQ rules, press, research or academic sentences, community text judged by a local model). Each row carries both CVEs with their CISA KEV status, the claim kind (observed: the source reports attacks; potential: the source reports they can be chained), the quoted evidence with its source, URL and date, and community discussion counts, which show discussion and are not chain claims. The per-CVE record carries chains.known and chains.candidates (KCV Watch: possible chains for teams to research, pairs whose extracted exploit capabilities connect or whose records tie them together, derived and never confirmed, each with its tier, lane, reasons, basis, product, bridge, grade, a caption and the entry step where one is extracted); search_cves accepts chained=1 and chainability=1. Filters: source (vulncheck_kev, metasploit, sigma, press, research, community), since (YYYY-MM-DD, first seen), claim (observed|potential), limit (1..50).

get_chains input schema
{
  "type": "object",
  "properties": {
    "claim": {
      "enum": [
        "observed",
        "potential"
      ],
      "type": "string",
      "description": "observed: the source reports attacks that chained them; potential: the source reports they can be chained"
    },
    "limit": {
      "type": "integer",
      "description": "1..50 (default 50)"
    },
    "since": {
      "type": "string",
      "description": "Pairs first seen on or after this day (YYYY-MM-DD)"
    },
    "source": {
      "type": "string",
      "description": "Evidence lane: vulncheck_kev, metasploit, sigma, press, research, academic, community, github_poc, exploitdb or exploit_code"
    }
  }
}
get_chains annotations
{
  "title": "Get known chains",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
get_epss_movers
Advertised by the server during the last successful anonymous check.
Advertised read-only

CVEs whose EPSS exploitation probability rose the most recently. window is "7d" (default) or "30d". Each rise is measured between same-EPSS-model-version scores, so a model release (which shifts the whole distribution) never appears as a mover. A rise raises the priority of a CVE; observed exploitation is recorded through CISA KEV. Returns cve_id, current score, the delta, KEV status and url, largest rise first.

get_epss_movers input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "description": "1..100 (default 25)"
    },
    "window": {
      "enum": [
        "7d",
        "30d"
      ],
      "type": "string",
      "description": "Rise window (default 7d)"
    }
  }
}
get_epss_movers annotations
{
  "title": "Get EPSS movers",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
table1_read
Advertised by the server during the last successful anonymous check.
Advertised read-only

BOD 26-04 Table 1 read for up to 50 CVEs at a stated asset exposure. Per CVE this dataset supplies CISA KEV status and due date, CISA's SSVC Automatable and Technical impact (Vulnrichment) and CISA's forensic triage flag on the KEV entry; you supply exposure for the asset (yes, no, or unknown, which returns both branches). Each item carries the Table 1 row and timeline for the stated exposure, both branches, kev_feed (which branch reproduces CISA's due date and flag pair, if any) and the fix and detection state held, lanes listed separately. A row is a mapping; an agency's timeline for an asset also needs the agency's own enumeration date, so no date is returned beyond CISA's KEV due date. basis says where the values came from: cisa_ssvc, cisa_interim (a CVE outside KEV with no CISA assessment held takes CISA's interim values) or kev_unassessed (a KEV entry with no values held gets no rows).

table1_read input schema
{
  "type": "object",
  "required": [
    "ids"
  ],
  "properties": {
    "ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 50,
      "minItems": 1,
      "description": "CVE ids, such as CVE-2024-3400 (1 to 50)"
    },
    "exposure": {
      "enum": [
        "yes",
        "no",
        "unknown"
      ],
      "type": "string",
      "description": "Whether the asset is publicly exposed, the agency's own per-asset value; unknown returns both branches"
    }
  }
}
table1_read annotations
{
  "title": "BOD 26-04 Table 1 read",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

2 advertised

llms.txt — llms.txt

Advertised by the server during the last successful anonymous check.

Machine-oriented guide to the dataset, the reuse surfaces (MCP, REST, bulk exports, Markdown twins, feeds, scoreboard CSVs) and licensing.

llms.txt URI
https://cve-security.com/llms.txt

MIME type: text/plain

openapi — OpenAPI description

Advertised by the server during the last successful anonymous check.

OpenAPI 3.1 description of the keyed REST API (see the CveRecord schema for the /api/cve response shape).

openapi URI
https://cve-security.com/openapi.json

MIME type: application/json

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
471 ms
95th percentile latency
471 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 471 ms · metadata changed · 9 tool(s), 2 resource(s); warnings: Advertises resources/templates/list but does not implement it

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http cve-security-mcp https://cve-security.com/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add cve-security-mcp --url https://cve-security.com/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable cve-security-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "cve-security-mcp": {
      "url": "https://cve-security.com/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "cve-security-mcp": {
      "type": "streamableHttp",
      "url": "https://cve-security.com/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start cve-security-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "cve-security-mcp": {
      "type": "http",
      "url": "https://cve-security.com/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http cve-security-mcp https://cve-security.com/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://cve-security.com/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "cve-security-mcp": {
      "serverUrl": "https://cve-security.com/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like CVE Security MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run CVE Security MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing