Skip to main content
Glama
Aashish-32

cve-lookup-mcp

by Aashish-32

cve-lookup-mcp

An MCP server that gives AI assistants live access to CVE data from the National Vulnerability Database (NVD) and FIRST EPSS — no API key required.

Built for use with Claude Code and any other Model Context Protocol compatible client.


Tools

Tool

Description

lookup_cve

Full details for a CVE — CVSS score, description, affected products, EPSS exploitation probability, references

search_cves

Search NVD by keyword with optional severity and year filters

check_product_cves

Find all HIGH/CRITICAL CVEs for a vendor/product (useful during version fingerprinting)

Example prompts

Look up CVE-2022-41352
Search for critical Zimbra RCE vulnerabilities from 2022
Check CVEs for apache struts

Related MCP server: CVE Intelligence MCP Server

Installation

pipx install cve-lookup-mcp

Option 2 — pip

pip install cve-lookup-mcp

Option 3 — run from source

git clone https://github.com/Aashish-32/cve-lookup-mcp
cd cve-lookup-mcp
pip install -e .

Configuration

Add to your ~/.claude.json (Claude Code) or equivalent MCP client config:

{
  "mcpServers": {
    "cve-lookup": {
      "command": "cve-lookup-mcp",
      "args": []
    }
  }
}

If installed from source, point directly at the script:

{
  "mcpServers": {
    "cve-lookup": {
      "command": "python3",
      "args": ["/path/to/cve-lookup-mcp/src/cve_lookup_mcp/server.py"]
    }
  }
}

Restart your MCP client after adding the config.


Data sources

Source

What it provides

Rate limit

NVD API v2

CVE details, CVSS scores, affected products

~5 req/30s (no key), 50 req/30s (with key)

FIRST EPSS API

Exploitation probability score

None

NVD API key (optional)

Without a key, NVD allows roughly 5 requests per 30 seconds. For heavier use, request a free API key from NVD and set it as an environment variable:

{
  "mcpServers": {
    "cve-lookup": {
      "command": "cve-lookup-mcp",
      "env": {
        "NVD_API_KEY": "your-key-here"
      }
    }
  }
}

Development

git clone https://github.com/Aashish-32/cve-lookup-mcp
cd cve-lookup-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

Run the server manually (stdio mode):

cve-lookup-mcp

Test with a raw JSON-RPC call:

echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1"}}}' \
  | cve-lookup-mcp

License

MIT

Available Tools

3 tools
check_product_cvesA

Find HIGH and CRITICAL CVEs for a specific vendor/product. Ideal for assessing a detected software version during a security review or penetration test.

ParametersJSON Schema
NameRequiredDescriptionDefault
vendorYesVendor or project name, e.g. 'zimbra', 'apache', 'wordpress'
productNoProduct name, e.g. 'collaboration', 'struts', 'woocommerce' (optional)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full responsibility. It transparently discloses that the tool filters by severity (HIGH and CRITICAL), which is a key behavioral trait. No contradictions or misleading information are present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loads the action, and contains no unnecessary words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with two parameters and no output schema. The description adequately explains purpose and usage context. It could briefly mention the expected return format, but the current level is sufficient for a straightforward search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% description coverage with examples for vendor and product. The description adds no new parameter-level information beyond restating 'vendor/product', so it meets the baseline and does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool finds HIGH and CRITICAL CVEs for a specific vendor/product, using a specific verb ('Find') and resource. It distinguishes from sibling tools like lookup_cve and search_cves by targeting only severe CVEs and requiring vendor identification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by stating it is ideal for security reviews and penetration tests. However, it does not explicitly exclude use cases or mention alternatives, leaving some ambiguity for an AI agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_cveA

Look up a specific CVE by ID. Returns CVSS score, severity, description, affected products, EPSS exploitation probability, and references. Data sourced live from NVD and FIRST EPSS.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE identifier, e.g. CVE-2022-41352 or 2022-41352

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must cover behavioral traits. It mentions live data sourcing but omits error behavior (e.g., if CVE not found), rate limits, or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with purpose and followed by return data. No redundant words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter lookup, the description covers input, output data, and data source. However, it lacks error handling details and usage differentiation from siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes the cve_id parameter with formatting examples, achieving 100% coverage. The description adds no further semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool looks up a specific CVE by ID and lists the returned data. It distinguishes itself from siblings (check_product_cves, search_cves) by focusing on a single CVE lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when you have a specific CVE ID but does not explicitly state when to use it vs. alternatives like search_cves or check_product_cves.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_cvesA

Search NVD for CVEs matching a keyword. Useful for finding vulnerabilities in a specific product or technology. Results are sorted by CVSS score descending.

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYesSearch term, e.g. 'zimbra rce', 'laravel', 'apache log4j'
severityNoFilter by minimum CVSS v3 severity (optional)
yearNoRestrict results to a specific publication year, e.g. 2023 (optional)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that results are sorted by CVSS score descending, but lacks details on rate limits, result limits, or data freshness typical for external API calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-load the purpose and add a key behavior (sorting). No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and absence of output schema or annotations, the description adequately covers purpose, usage, and sorting behavior. It lacks mention of result limits or pagination, which are minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description does not add new parameter semantics beyond the schema, meeting the baseline expectation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (search), resource (NVD for CVEs), and purpose (finding vulnerabilities in a product/technology). It distinguishes from siblings like lookup_cve and check_product_cves by focusing on keyword-based search across NVD.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context by stating it's useful for finding vulnerabilities in a specific product or technology. However, it does not explicitly mention when not to use it or compare with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.1.0
    • First observedcheck_product_cves
    • First observedlookup_cve
    • First observedsearch_cves

TDQS

A4.1/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: check_product_cves for product-specific high/critical CVEs, lookup_cve for a specific ID, and search_cves for keyword searches. No overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (check_product_cves, lookup_cve, search_cves), making it easy to predict their purpose.

Tool Count5/5

With 3 tools, the set is well-scoped for a CVE lookup server. Each tool serves a distinct and essential function without unnecessary redundancy.

Completeness4/5

Covers the core use cases: keyword search, ID lookup, and product-based filtering. Missing a time-based or trending CVE lookup, but the essential workflows are complete for most security assessments.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to search and analyze vulnerabilities and exploits from multiple intelligence sources, including NVD, CISA KEV, ExploitDB, Metasploit, and more, with tools for CVE research, exploit analysis, and report generation.
    17
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides EPSS scores, percentiles, and time series for CVEs, along with vulnerability details from the NVD API, enabling risk assessment through natural language.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides CVE lookup, search, and exploit intelligence from public vulnerability sources (NVD, CISA KEV, EPSS) for AI agents to produce remediation guidance without consuming LLM tokens for data fetching.
    1
    MIT