Skip to main content
Glama
K4PXD

cve-mcp-server

by K4PXD

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORTNoHTTP port when TRANSPORT=http (default 3000, bound to 127.0.0.1).3000
TRANSPORTNoTransport mode: 'stdio' (default) or 'http'.stdio
NVD_API_KEYNoNVD API key to raise rate limits (request one at https://nvd.nist.gov/developers/request-an-api-key).
GITHUB_TOKENNoGitHub personal access token to raise GitHub API limits for advisories and PoC fetching.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
cve_get_detailsA

Retrieve complete, authoritative details for a single CVE from the NIST NVD, enriched with real-time exploitation signals.

Combines: NVD description, CVSS v2/v3.1/v4 base scores + vectors, CWE weakness types, affected-product CPE strings, and reference URLs — plus (by default) CISA KEV actively-exploited status and the EPSS exploitation-probability score.

Args:

  • cve_id (string): CVE identifier, e.g. "CVE-2021-44228".

  • include_kev (boolean): Add CISA KEV status (default: true).

  • include_epss (boolean): Add EPSS score (default: true).

  • response_format ('markdown' | 'json'): Output format (default: 'markdown').

Returns (json): { id, published, lastModified, vulnStatus, descriptions, cvss[], cwes[], references[], cpe[], kev, epss }.

Examples:

  • "Tell me everything about Log4Shell" -> cve_id="CVE-2021-44228".

  • "Is CVE-2023-23397 being exploited?" -> include_kev=true, include_epss=true.

Errors:

  • "Invalid CVE ID ..." if the ID is malformed.

  • "No NVD record found for " if the CVE does not exist in NVD.

cve_searchA

Search the NIST NVD for CVEs by keyword, affected product (CPE), severity, KEV status, and publication date range.

Args:

  • keyword (string): Terms matched against CVE descriptions.

  • cpe_name (string): CPE 2.3 string to match affected products.

  • severity ('LOW'|'MEDIUM'|'HIGH'|'CRITICAL'): CVSS v3 severity filter.

  • kev_only (boolean): Restrict to CISA KEV entries (default: false).

  • published_after / published_before (ISO-8601): Publication date window (max 120-day span).

  • limit (1-50, default 20), offset (default 0): Pagination.

  • response_format ('markdown'|'json', default 'markdown').

Returns (json): { total, count, offset, has_more, next_offset, results[] } where each result is a full CVE detail object.

Examples:

  • "Critical Apache Struts RCEs" -> keyword="apache struts", severity="CRITICAL".

  • "Known-exploited Fortinet bugs" -> keyword="fortinet", kev_only=true.

Errors:

  • "NVD rejected the request (400)" if a date span exceeds 120 days or a filter is invalid.

cve_recentA

List CVEs published within a recent look-back window — for real-time monitoring of newly disclosed vulnerabilities.

Args:

  • days (1-120, default 7): How far back to look (NVD caps ranges at 120 days).

  • severity ('LOW'|'MEDIUM'|'HIGH'|'CRITICAL'): Optional severity filter.

  • kev_only (boolean, default false): Only CVEs in the CISA KEV catalog.

  • limit (1-50, default 20), offset (default 0): Pagination.

  • response_format ('markdown'|'json', default 'markdown').

Returns (json): { total, count, offset, has_more, next_offset, results[] }, newest first by publish date.

Examples:

  • "What critical CVEs dropped this week?" -> days=7, severity="CRITICAL".

  • "New known-exploited vulns in the last month" -> days=30, kev_only=true.

cve_get_pocsA

Discover public proof-of-concept (PoC) and exploit references for a CVE.

Aggregates the nomi-sec "PoC-in-GitHub" index (public GitHub repos tagged to the CVE, ranked by stars) and, by default, Exploit-DB / exploit-tagged references from the NVD record. Returns links and metadata only — use cve_fetch_poc_code to retrieve a specific repo's contents.

Intended for authorized defensive testing, detection engineering, and vulnerability triage.

Args:

  • cve_id (string): CVE identifier, e.g. "CVE-2021-44228".

  • include_nvd_exploits (boolean): Include NVD exploit references (default: true).

  • max_results (1-100, default 30): Cap on references returned.

  • response_format ('markdown'|'json', default 'markdown').

Returns (json): { cve_id, count, pocs: [ { source, name, url, description, stars, createdAt, updatedAt } ] }.

Examples:

  • "Find PoCs for Log4Shell" -> cve_id="CVE-2021-44228".

  • "Any exploits for CVE-2024-3400?" -> include_nvd_exploits=true.

Notes:

  • Returns an empty list (not an error) when no public PoCs are indexed.

cve_fetch_poc_codeA

Fetch the actual proof-of-concept material from a GitHub repository: its top-level file listing plus the decoded README (bounded in size).

Use after cve_get_pocs to inspect a specific PoC. Intended for authorized security research and defensive validation. Set GITHUB_TOKEN to raise rate limits and access more repos.

Args:

  • repo (string): 'owner/repo' or a full github.com URL.

  • response_format ('markdown'|'json', default 'markdown').

Returns (json): { fullName, htmlUrl, files[], readme, readmeTruncated }.

Examples:

Errors:

  • "GitHub rate limit exceeded (429)" — set GITHUB_TOKEN.

  • "GitHub has no record for that identifier (404)" — repo not found or private.

cve_get_exploit_toolingA

Find packaged, ready-to-run exploit and scan tooling for a CVE: Metasploit Framework modules (Rapid7) and Nuclei templates (ProjectDiscovery).

This is distinct from cve_get_pocs (raw proof-of-concept repos). For an operator, packaged tooling is usually more actionable: a Metasploit exploit module is point-and-shoot (use <module>), and a Nuclei template gives repeatable, at-scale detection (nuclei -id <cve> -u <target>). Each module/template comes with its reliability/severity, disclosure date, msfconsole/nuclei run string, and GitHub source link.

Intended for authorized penetration testing, detection engineering, and vulnerability triage.

Args:

  • cve_id (string): CVE identifier, e.g. "CVE-2021-44228".

  • response_format ('markdown'|'json', default 'markdown').

Returns (json): { cveId, metasploit: [ { fullname, name, type, rank, rankLabel, disclosureDate, hasCheck, sourceUrl } ], nuclei: [ { id, name, severity, cvssScore, filePath, sourceUrl } ] }.

Metasploit rank: 0 Manual, 100 Low, 200 Average, 300 Normal, 400 Good, 500 Great, 600 Excellent. Type "exploit" is weaponized; "auxiliary" is typically a scanner/check.

Examples:

  • "Is there a Metasploit module for Log4Shell?" -> cve_id="CVE-2021-44228".

  • "Can I scan for CVE-2024-3400 with Nuclei?" -> cve_id="CVE-2024-3400".

Notes:

  • Returns empty lists (not an error) when no packaged tooling references the CVE.

cve_get_kevA

Query the CISA Known Exploited Vulnerabilities (KEV) catalog — the authoritative list of CVEs confirmed to be actively exploited in the wild.

Two modes:

  • Single lookup: pass cve_id to check whether a specific CVE is KEV-listed (with remediation due date and ransomware-use flag).

  • Catalog list: omit cve_id to browse the catalog, newest additions first, with optional vendor / ransomware filters.

Args:

  • cve_id (string, optional): Single-CVE lookup.

  • vendor (string, optional): Vendor/product substring filter (list mode).

  • ransomware_only (boolean, default false): Only known-ransomware entries (list mode).

  • limit (1-100, default 25), offset (default 0): Pagination (list mode).

  • response_format ('markdown'|'json', default 'markdown').

Returns (single): a KEV entry object, or a "not listed" message. Returns (list, json): { catalogVersion, dateReleased, total, count, startIndex, entries[] }.

Examples:

  • "Is CVE-2024-3400 known-exploited?" -> cve_id="CVE-2024-3400".

  • "Recent ransomware-linked KEV entries" -> ransomware_only=true.

cve_get_epssA

Retrieve EPSS (Exploit Prediction Scoring System, by FIRST.org) scores for one or more CVEs.

EPSS estimates the probability (0-100%) that a CVE will be exploited in the wild within the next 30 days, plus a percentile ranking across all scored CVEs. Useful for prioritizing patching beyond raw CVSS severity.

Args:

  • cve_ids (string[]): 1-100 CVE identifiers.

  • response_format ('markdown'|'json', default 'markdown').

Returns (json): { count, scores: [ { cve, epss, percentile, date } ] } (epss/percentile as fractions 0-1).

Examples:

  • "EPSS for CVE-2021-44228" -> cve_ids=["CVE-2021-44228"].

  • "Rank these three by exploitation likelihood" -> cve_ids=[...].

cve_get_advisoriesA

Retrieve GitHub Security Advisories (GHSA) that reference a CVE — the best source for package-level impact (ecosystem, affected version ranges, first patched version).

Args:

  • cve_id (string): CVE identifier, e.g. "CVE-2021-44228".

  • response_format ('markdown'|'json', default 'markdown').

Returns (json): array of { ghsaId, summary, severity, cveId, htmlUrl, publishedAt, vulnerabilities: [ { ecosystem, packageName, vulnerableVersionRange, firstPatchedVersion } ] }.

Examples:

  • "Which npm/Maven packages does CVE-2021-44228 affect and when was it fixed?" -> cve_id="CVE-2021-44228".

Notes:

  • Returns an empty list when no advisory references the CVE. Set GITHUB_TOKEN to raise rate limits.

cve_triageA

Produce a single prioritization verdict for a CVE by fusing every exploitation signal: CVSS severity, EPSS 30-day exploitation probability, CISA KEV (confirmed in-the-wild use / ransomware), and public proof-of-concept availability.

Answers "should I drop everything for this, or can it wait?" — the judgment call an analyst otherwise makes by hand across four tools.

Priority levels: ACT NOW (KEV / score ≥85) > HIGH (≥70) > ELEVATED (≥50) > MODERATE (≥30) > LOW. KEV membership always pins to ACT NOW. Score (0-100): CVSS up to 50, EPSS up to 40, and exploit availability up to 15 (weaponized Metasploit exploit module 15 > other packaged tooling 12 > public PoC 10).

Args:

  • cve_id (string): CVE identifier, e.g. "CVE-2021-44228".

  • check_pocs (boolean): Include PoC availability (default: true; one extra lookup).

  • check_tooling (boolean): Include Metasploit/Nuclei tooling (default: true; one extra lookup).

  • response_format ('markdown'|'json', default 'markdown').

Returns (json): { cve_id, priority, score, rationale[], signals{ cvssScore, cvssSeverity, epss, epssPercentile, kevListed, kevRansomware, kevDueDate, pocCount, msfModuleCount, nucleiTemplateCount, weaponized }, tooling{ metasploit, nuclei }, description }.

Examples:

  • "Should we patch CVE-2024-3400 this weekend?" -> cve_id="CVE-2024-3400".

  • "Triage this from the scan, skip the PoC check" -> check_pocs=false.

Errors:

  • "No NVD record found for " if the CVE is unknown/unpublished.

cve_batch_triageA

Triage a list of CVEs in a single call and get them back ranked by priority — turn a scan or findings list into an ordered "fix this first" queue without one tool call per CVE.

Each CVE is scored exactly as cve_triage does (CVSS + EPSS + CISA KEV + optional PoC/tooling), then results are sorted highest-priority first. EPSS is fetched for the whole batch in one request; unknown IDs are reported separately rather than failing the call.

Args:

  • cve_ids (string[]): 1-25 CVE identifiers.

  • check_pocs (boolean, default false): Add public-PoC availability (one extra lookup per CVE).

  • check_tooling (boolean, default true): Add Metasploit/Nuclei tooling (cached feeds; cheap across a batch).

  • response_format ('markdown'|'json', default 'markdown').

Returns (json): { requested, triaged, not_found[], results[] } where each result is { cve_id, priority, score, signals, description } sorted by score descending.

Examples:

  • "Rank these scan findings by what to patch first" -> cve_ids=[...].

  • "Triage this list but skip the PoC lookups" -> check_pocs=false.

Errors:

  • Malformed IDs are rejected up front; unresolvable-but-valid IDs come back in not_found[].

cve_watchlistA

Monitor a vendor or product for new and known-exploited vulnerabilities in one call — a digest that fuses NVD recent-publications with the CISA KEV catalog.

Answers "what's new and what's on fire for right now?" without running cve_recent, cve_search, and cve_get_kev separately and cross-referencing by hand.

Args:

  • vendor (string): Vendor/product to watch, e.g. "fortinet", "apache struts". Matched against NVD descriptions and KEV vendor/product fields.

  • days (1-120, default 30): Look-back window for newly published CVEs.

  • severity ('LOW'|'MEDIUM'|'HIGH'|'CRITICAL'): Optional minimum severity for the recent list.

  • include_kev (boolean, default true): Also list this vendor's KEV entries (newest first; items added within the window are flagged 🆕).

  • limit (1-50, default 25): Max recently-published CVEs.

  • response_format ('markdown'|'json', default 'markdown').

Returns (json): { vendor, window_days, since, recent: { total, count, results[] }, kev: { total, entries[] }, kev_in_window }. Each recent result carries a kev_listed flag.

Examples:

  • "What's new for Fortinet this month, and what's actively exploited?" -> vendor="fortinet".

  • "Critical Ivanti CVEs in the last two weeks" -> vendor="ivanti", days=14, severity="CRITICAL".

Errors:

  • "NVD rejected the request (400)" if filters are invalid.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.4/5.0

Scored across 12 tools

Disambiguation5/5

Each tool has a clear, distinct purpose: details, search, recent, PoCs, exploit tooling, KEV, EPSS, advisories, triage, batch triage, and vendor watchlist are all separated by explicit intent. Even potentially overlapping tools like cve_get_pocs vs cve_get_exploit_tooling are carefully delineated.

Naming Consistency4/5

All tools share the cve_ prefix and mostly follow a verb_noun pattern. Minor deviations exist: cve_recent and cve_watchlist are noun/adjective-style rather than verb-led, and cve_batch_triage modifies cve_triage rather than using a uniform verb. Overall still highly predictable.

Tool Count5/5

12 tools is well-scoped for a CVE intelligence server. Each tool covers a distinct aspect of vulnerability lookup, enrichment, and prioritization without redundancy, and the count feels appropriate for the domain.

Completeness5/5

The surface covers the full CVE workflow: discovery (search, recent, watchlist), detail retrieval (get_details, advisories), enrichment (KEV, EPSS, PoCs, tooling), and action (triage, batch triage). No significant gap in the stated purpose of providing comprehensive CVE intelligence and prioritization.

Maintenance

ActivityMaintained
ResponsivenessNo issues