_ registry / mcp http-sse · checked 1h ago

nist-nvd-mcp-server

https://nist-nvd.caseyjhand.com

Registry code: 78dbd3eb2497956b

api record

This server provides read-only access to the NIST National Vulnerability Database (NVD).

- Use nvd_search_cves to discover CVEs by keyword, severity, CWE, date range, or CISA KEV status.

endpoint
https://nist-nvd.caseyjhand.com/mcp
protocol
http-sse ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is nist-nvd-mcp-server live?
Yes — it answered the hub's last check (checked 1h ago). It answered 99% of checks over the last 30 days.
Is nist-nvd-mcp-server free to use?
Yes — the hub reached it with no key and no payment.
What tools does nist-nvd-mcp-server have?
5 tools: nvd_audit_cpe, nvd_search_cpes, nvd_get_cve, nvd_get_cve_history, nvd_search_cves.
Is nist-nvd-mcp-server safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
99.3%

90 days 99.1%· all time 99.2%

latency
671ms

last good check

priced tools
0

of 5 tools

_ answered our checks, 90 days 527 checks · signed record
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
  • live → degraded· HTTP 530
  • degraded → live
_ what it is for
used for
  • search cves
  • get cvss details for a cve
  • find cves affecting a product version
  • look up a cpe name
  • get a cve's change history
takes → gives
text → data
tools
5 reads
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 5 tools
1 open 4 never probed 1 of 5 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • nvd_search_cves reads open 23h ago

    Search CVEs by keyword, severity, CWE, date range, or CISA KEV status. The primary discovery tool for vulnerability surveillance and triage workflows. pubDays and lastModDays are convenience shorthands that expand to date pairs; values over 120 days are clamped to the NVD maximum and reported in the response enrichment. Returns brief summaries — call nvd_get_cve for full detail on specific IDs. At least one filter is recommended; omitting all filters returns CVEs in default NVD index order (oldest first by CVE ID).

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "cweId": {
          "type": "string",
          "description": "Filter by CWE weakness ID (e.g., \"CWE-79\", \"NVD-CWE-Other\")."
        },
        "limit": {
          "type": "integer",
          "default": 20,
          "maximum": 2000,
          "minimum": 1,
          "description": "Maximum number of results to return (default 20, max 2000)."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Zero-based page offset for pagination."
        },
        "kevOnly": {
          "type": "boolean",
          "default": false,
          "description": "When true, filters results to CVEs in the CISA Known Exploited Vulnerabilities catalog."
        },
        "keyword": {
          "type": "string",
          "description": "Full-text search across CVE descriptions (AND-semantics across words)."
        },
        "pubDays": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "CVEs published in the last N days (max 120; values over 120 are clamped). Mutually exclusive with pubStartDate/pubEndDate.",
          "exclusiveMinimum": 0
        },
        "severity": {
          "enum": [
            "LOW",
            "MEDIUM",
            "HIGH",
            "CRITICAL"
          ],
          "type": "string",
          "description": "Filter to CVEs in exactly this CVSS severity band — NVD matches the one band, not a floor. Covering several bands (e.g. HIGH and CRITICAL) takes one call per band."
        },
        "noRejected": {
          "type": "boolean",
          "default": true,
          "description": "When true (default), excludes CVEs with REJECT/Rejected status."
        },
        "pubEndDate": {
          "type": "string",
          "description": "ISO 8601 datetime for publication range end. Both pubStartDate and pubEndDate required together."
        },
        "exactPhrase": {
          "type": "boolean",
          "default": false,
          "description": "When true, keyword matches as an exact phrase rather than ANDing its words independently. Requires keyword."
        },
        "lastModDays": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "CVEs last modified in the last N days (max 120; values over 120 are clamped). Mutually exclusive with lastModStartDate/lastModEndDate.",
          "exclusiveMinimum": 0
        },
        "pubStartDate": {
          "type": "string",
          "description": "ISO 8601 datetime for publication range start. Both pubStartDate and pubEndDate required together. Mutually exclusive with pubDays."
        },
        "lastModEndDate": {
          "type": "string",
          "description": "ISO 8601 datetime for last-modified range end. Both required together."
        },
        "severityVersion": {
          "enum": [
            "v2",
            "v3",
            "v4"
          ],
          "type": "string",
          "default": "v3",
          "description": "CVSS version to use for the severity filter. Default: v3 (maps to cvssV3Severity)."
        },
        "lastModStartDate": {
          "type": "string",
          "description": "ISO 8601 datetime for last-modified range start. Both required together. Mutually exclusive with lastModDays."
        }
      },
      "additionalProperties": false
    }
    arguments 92 lines
  • nvd_audit_cpe reads unknown 23h ago

    Find all CVEs affecting a specific product and version using CPE (Common Platform Enumeration). Requires either an exact CPE name (cpeName) or a partial match string (virtualMatchString) with optional version range bounds. With cpeName, NVD scopes results to configurations where the product is directly vulnerable, not merely referenced as a dependency. Use nvd_search_cpes first to resolve the correct CPE string for a product. Returns full CVE records.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "limit": {
          "type": "integer",
          "default": 20,
          "maximum": 2000,
          "minimum": 1,
          "description": "Maximum number of CVEs to return (default 20, max 2000)."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Zero-based page offset for pagination. Page through totalCount with a modest limit rather than raising limit — this tool returns full CVE records, so a large limit is a large response."
        },
        "cpeName": {
          "type": "string",
          "description": "Full CPEv2.3 name (e.g., \"cpe:2.3:a:apache:http_server:2.4.51:*:*:*:*:*:*:*\"). NVD adds isVulnerable automatically. Mutually exclusive with virtualMatchString."
        },
        "versionEnd": {
          "type": "string",
          "description": "Upper version bound. Requires virtualMatchString."
        },
        "severityMin": {
          "enum": [
            "LOW",
            "MEDIUM",
            "HIGH",
            "CRITICAL"
          ],
          "type": "string",
          "description": "Filter out CVEs below this severity level. Applied after NVD returns the page, so it can only drop CVEs within limit — raise limit to widen what it sees."
        },
        "allLanguages": {
          "type": "boolean",
          "default": false,
          "description": "When true, keeps every localized description NVD supplies on each record. Default keeps English only."
        },
        "versionStart": {
          "type": "string",
          "description": "Lower version bound. Requires virtualMatchString."
        },
        "versionEndType": {
          "enum": [
            "including",
            "excluding"
          ],
          "type": "string",
          "default": "including",
          "description": "Whether the upper version bound is inclusive or exclusive."
        },
        "versionStartType": {
          "enum": [
            "including",
            "excluding"
          ],
          "type": "string",
          "default": "including",
          "description": "Whether the lower version bound is inclusive or exclusive."
        },
        "virtualMatchString": {
          "type": "string",
          "description": "Partial CPE match pattern (e.g., \"cpe:2.3:a:apache:http_server:*\"). Use with versionStart/versionEnd for version range audits. Mutually exclusive with cpeName."
        }
      },
      "additionalProperties": false
    }
    arguments 70 lines
  • nvd_search_cpes reads unknown 23h ago

    Search the NVD CPE (Common Platform Enumeration) dictionary by product keyword or partial match string. Returns CPE names, human-readable titles, and deprecation status. Use before nvd_audit_cpe to resolve the correct CPE name for a product — CPE strings are precise identifiers (e.g., cpe:2.3:a:apache:http_server:2.4.51:*:*:*:*:*:*:*) and must match exactly to audit the right product.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "limit": {
          "type": "integer",
          "default": 20,
          "maximum": 10000,
          "minimum": 1,
          "description": "Maximum number of CPE entries to return (default 20, max 10000)."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Zero-based page offset for pagination. When totalCount exceeds offset + returned, raise offset to reach the rest — a vendor-level keyword has nothing left to narrow toward."
        },
        "keyword": {
          "type": "string",
          "description": "Product name or vendor keyword (e.g., \"apache http server\", \"openssl\", \"nginx\"). At least one of keyword or cpeMatchString is required."
        },
        "cpeMatchString": {
          "type": "string",
          "description": "Partial CPEv2.3 pattern (e.g., \"cpe:2.3:a:apache:http_server\"). At least one of keyword or cpeMatchString is required."
        }
      },
      "additionalProperties": false
    }
    arguments 29 lines
  • nvd_get_cve reads unknown 13h ago

    Fetch one or more CVEs by ID from the NIST National Vulnerability Database. Returns CVSS scores across all available versions (v2.0, v3.0, v3.1, v4.0), CWE weakness classifications, affected CPE configurations, CISA KEV fields, and references. Up to 100 CVE IDs per call. For bulk lookups of more than 10 IDs, use brief: true — full records for 100 CVEs can exceed 1MB and exhaust context budgets.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "cveIds"
      ],
      "properties": {
        "brief": {
          "type": "boolean",
          "default": false,
          "description": "When true, returns trimmed records (ID, status, top CVSS score, KEV name, published date, and a truncated description) instead of full detail. Recommended for batches of more than 10 IDs."
        },
        "cveIds": {
          "anyOf": [
            {
              "type": "string",
              "description": "A single CVE ID (e.g., \"CVE-2021-44228\")."
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              },
              "maxItems": 100,
              "minItems": 1,
              "description": "An array of CVE IDs — at least 1, up to 100 per call."
            }
          ],
          "description": "One CVE ID or an array of up to 100 CVE IDs to fetch."
        },
        "allLanguages": {
          "type": "boolean",
          "default": false,
          "description": "When true, keeps every localized description NVD supplies on each record, and full records render all of them. Default keeps English only, falling back to whatever exists if a record has no English entry. Brief records always carry a single truncated description."
        },
        "includeReferences": {
          "type": "boolean",
          "default": true,
          "description": "When false, omits the references array to reduce response size."
        }
      },
      "additionalProperties": false
    }
    arguments 43 lines
  • nvd_get_cve_history reads unknown 13h ago

    Retrieve the change history for a single CVE — CVSS score revisions, reference additions, status transitions (e.g., "Received" → "Analyzed"), and CPE configuration updates. Use when tracking a CVE's escalation or investigating when a score changed. Events are returned newest-first by default; pass order="oldest" for the CVE's earliest events. For the current record, call nvd_get_cve instead. The NVD history endpoint is significantly slower than other NVD endpoints, especially without an API key — set NVD_API_KEY for reliable operation.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "cveId"
      ],
      "properties": {
        "cveId": {
          "type": "string",
          "description": "CVE identifier to retrieve history for (e.g., \"CVE-2021-44228\")."
        },
        "limit": {
          "type": "integer",
          "default": 20,
          "maximum": 2000,
          "minimum": 1,
          "description": "Maximum number of change events to return (default 20, max 2000)."
        },
        "order": {
          "enum": [
            "oldest",
            "newest"
          ],
          "type": "string",
          "default": "newest",
          "description": "Which end of the history to page from. Default \"newest\" returns the most recent events first, which is what escalation and re-score questions need. \"oldest\" returns NVD's native order (the CVE's first events first) and costs one upstream request, or two when the offset overruns the history; \"newest\" costs up to two on any history longer than limit."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Zero-based offset for paginating through change events, counted from whichever end order anchors to: offset 0 is the newest event under the default order=\"newest\", and the oldest event under order=\"oldest\"."
        }
      },
      "additionalProperties": false
    }
    arguments 37 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 78dbd3eb2497956b.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/78dbd3eb2497956b/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/78dbd3eb2497956b/badge.svg)](https://brick.blue/agent/78dbd3eb2497956b?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
90%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.

_ also on caseyjhand.com 109 entries

Served from the same domain, which is what was measured. Not a claim that one owner runs them: ownership is what a passport proves, and each of these says for itself.

101 more sit on this domain. All of them.