Skip to main content
Glama
Arnabdaz

CVE Search MCP Server

by Arnabdaz

CVE Search MCP Server

A Model Context Protocol (MCP) server for CVE and vulnerability searching, optimized for PR review scenarios. Helps developers and security teams identify the latest CVEs and vulnerabilities — including those that postdate an LLM's training data.

Features

  • 8 tools covering CVE lookup, bulk scanning, keyword search, product search, recent CVEs, high-severity alerts, database stats, and detailed CVSS breakdowns

  • Multi-source: NVD, GitHub Advisory, OSV, CIRCL — searched concurrently and deduplicated

  • Smart normalization: "Node.js", "Spring Boot", "log4j2" all resolve correctly

  • Optional auth: GITHUB_TOKEN and NVD_API_KEY for higher rate limits

  • 3 transports: stdio (default), SSE, Streamable HTTP

Related MCP server: Security-Use MCP Server

Installation

Prerequisites

  • Python 3.10+

  • uv package manager

Install

cd cve-search
uv sync

Development Setup

uv sync --extra dev
uv run --extra dev pytest
uv run black src/
uv run ruff check src/

Configuration

Env Var

Default

Description

GITHUB_TOKEN

none

GitHub personal access token. Raises GitHub Advisory API rate limit from 60 to 5000 req/hr.

NVD_API_KEY

none

NVD API key. Raises rate limit from 5 to 50 req/30s. Get one at nvd.nist.gov.

CVE_SEARCH_TIMEOUT

20

HTTP request timeout in seconds.

CVE_SEARCH_MAX_RESULTS

100

Maximum results returned per tool call.

Running

# stdio (default — for Claude Desktop/IDE)
uv run python main.py

# SSE
uv run python main.py --transport sse --host 127.0.0.1 --port 8000

# Streamable HTTP (MCP spec 2025-06-18+)
uv run python main.py --transport streamable-http --host 127.0.0.1 --port 8000

Claude Desktop Config

{
  "mcpServers": {
    "cve-search": {
      "command": "uv",
      "args": ["--directory", "/path/to/cve-search", "run", "python", "main.py"],
      "env": {
        "GITHUB_TOKEN": "your-token-here",
        "NVD_API_KEY": "your-key-here"
      }
    }
  }
}

Tools

Tool

Description

Speed

search_cve_by_id

Look up a specific CVE by ID (e.g. CVE-2021-44228)

Fast

bulk_cve_lookup

Look up up to 20 CVE IDs in one call — ideal for scanning PR dependency lists

Fast

search_vulnerabilities_by_product

Search by vendor/product name (e.g. vendor="apache", product="struts")

Slow (10-15s)

get_recent_cves

Get CVEs from the last N days

Fast

check_high_severity_cves

Get CVSS ≥ 7.0 CVEs from the last N days

Fast

search_by_keyword

Smart multi-source keyword search (NVD + GitHub Advisory + OSV)

Fast

get_vulnerability_stats

Database stats: total CVE count, last updated timestamp

Fast

cvss_score_lookup

Detailed CVSS v3/v4 breakdown for a CVE (base score, vector string, per-metric)

Fast

PR Review Workflow

Scan a list of CVE IDs from a dependency audit

bulk_cve_lookup(["CVE-2021-44228", "CVE-2023-44487", "CVE-2024-12345"])

Search for vulnerabilities in a technology being introduced

search_by_keyword("spring boot")

Check high-severity CVEs published this week

check_high_severity_cves(7)

Get detailed CVSS breakdown for a flagged CVE

cvss_score_lookup("CVE-2021-44228")

Project Structure

cve-search/
├── src/mcp_server_cve_search/
│   ├── config.py            # Config from env vars
│   ├── server.py            # FastMCP app + transport dispatch
│   ├── tools/               # One module per tool group
│   │   ├── cve_lookup.py    # search_cve_by_id, bulk_cve_lookup
│   │   ├── product_search.py
│   │   ├── recent_cves.py   # get_recent_cves, check_high_severity_cves
│   │   ├── keyword_search.py
│   │   ├── stats.py         # get_vulnerability_stats
│   │   └── cvss.py          # cvss_score_lookup
│   ├── sources/             # One client per API
│   │   ├── circl.py         # CIRCL CVE Search
│   │   ├── nvd.py           # NVD/NIST (optional API key)
│   │   ├── github.py        # GitHub Advisory (optional token)
│   │   └── osv.py           # OSV (Google)
│   └── utils/
│       ├── severity.py      # CVSS score helpers
│       ├── normalization.py # Keyword normalization + tech mappings
│       └── formatting.py    # Summary/alert formatting
├── tests/
├── examples/
├── main.py
├── test_server.py           # Manual live-API integration test
└── pyproject.toml

Data Sources

Source

URL

Notes

CIRCL CVE Search

cve.circl.lu

Primary source; no auth required

NVD (NIST)

nvd.nist.gov

Richest CVSS data; optional API key

GitHub Advisory

github.com/advisories

Optional token for higher rate limits

OSV (Google)

osv.dev

Open source vulnerability database

License

MIT License

Available Tools

8 tools
bulk_cve_lookupA

Look up multiple CVEs by ID concurrently (max 20 IDs). Useful for scanning dependency lists extracted from pull requests. Returns a dict of {cve_id: result} with severity info for each entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses concurrent execution, max 20 limit, and return format (dict with severity info). Lacks details on error handling or authorization, but provides solid behavioral context.

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?

Three concise sentences, each providing unique information: action, use case, return format. No redundancy or fluff. Front-loaded with the primary verb and resource.

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 tool with 1 parameter and no annotations, the description covers purpose, constraint, use case, and output structure. It lacks details on error handling for invalid IDs, but the output schema likely covers return structure. Adequate for the complexity.

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

Parameters4/5

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

Schema has 0% description coverage, so description must compensate. It explains the parameter's purpose: 'Look up multiple CVEs by ID' and the use case. Adds value beyond the raw schema, though could more explicitly describe the array element format.

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?

Description clearly states the action (look up multiple CVEs), resource (by ID), and constraint (max 20 IDs). It also provides a specific use case (scanning dependency lists from pull requests), distinguishing it from sibling tools like search_cve_by_id.

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?

Description explicitly notes the tool is useful for scanning dependency lists from PRs, implying when to use. It also mentions the max 20 IDs constraint, which guides usage. However, it does not explicitly exclude alternatives or say when not to use.

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

check_high_severity_cvesA

Get high-severity CVEs (CVSS >= 7.0) from the last N days (1-365). Fast. Covers Critical (9.0-10.0) and High (7.0-8.9) severity. Example: check_high_severity_cves(7) — this week's critical threats.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses the severity range and claims speed, but omits authentication, rate limits, or pagination details. Adequate but not comprehensive.

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?

Three sentences, front-loaded with purpose, each sentence adding specific value: purpose, severity detail, and example. No wasted 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?

Given the tool's simplicity and presence of an output schema, the description adequately covers what the tool does, the parameter, and severity range, though could mention output format implicitly.

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

Parameters4/5

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

The single parameter 'days' is not described in the schema (0% coverage), but the description adds range (1-365) and purpose via example, compensating well.

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 it retrieves high-severity CVEs (CVSS >= 7.0) within a time range, distinguishing it from sibling tools like get_recent_cves which lack severity filtering.

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 indicates when to use: for recent high-severity CVEs, with an example. It does not explicitly exclude other cases or mention alternatives, but the context is clear.

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

cvss_score_lookupA

Get a detailed CVSS v3/v4 breakdown for a CVE: base score, vector string, and individual metrics (Attack Vector, Complexity, Privileges Required, User Interaction, Scope, Confidentiality/Integrity/Availability Impact). Uses NVD which carries the richest CVSS data.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It details the return content (base score, vector string, individual metrics) and the data source (NVD), but does not disclose error handling, performance, or what happens if the CVE is not found. It is adequate but not exhaustive.

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 with no wasted words. It front-loads the key action and output, followed by a concise justification of the data source. Every sentence earns its place.

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 (single parameter) and the presence of an output schema covering return values, the description is fairly complete. It lacks only minor context like error scenarios or input format examples.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate. It mentions 'for a CVE' but does not explain the cve_id parameter's format, required pattern, or any constraints. The minimal addition over the schema provides little value.

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 retrieves a detailed CVSS v3/v4 breakdown for a CVE, including base score, vector string, and individual metrics. It uses a specific verb ('Get') and resource ('CVSS breakdown for a CVE'), and the mention of NVD distinguishes its data source from siblings.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus its siblings (e.g., search_cve_by_id, bulk_cve_lookup). It only notes that it uses NVD, which implies richness but does not clarify selection criteria or alternatives.

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

get_recent_cvesA

Get CVEs published in the last N days (1-365). Fast. Returns a list with severity analysis and alert level. Example: get_recent_cves(7, 30) — last week's top 30 CVEs.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description carries burden. It mentions 'Fast' (performance) and return content (severity analysis, alert level), but does not disclose potential pitfalls like rate limits, authentication needs, or whether results are real-time or cached.

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?

Extremely concise: purpose, behavior, and example in four lines. Information is front-loaded, with zero wasted 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?

Covers purpose, core behavior, and parameter usage. Given the simple tool (2 params, output schema exists) and lack of annotations, the description is nearly complete. Missing error handling or data freshness details, but overall sufficient.

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?

Input schema has 0% description coverage. The description uses an example to explain that 'days' sets the lookback period and 'limit' caps results, but does not explicitly detail each parameter's meaning, constraints, or default values 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 gets CVEs published in the last N days, with a specific scope (1-365 days). It distinguishes from siblings like search_cve_by_id or bulk_cve_lookup by emphasizing recency and providing an example.

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 usage via an example but does not explicitly state when to use this tool versus alternatives like 'search_by_keyword' or 'check_high_severity_cves'. There is no when-not guidance or mention of alternatives.

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

get_vulnerability_statsA

Get CVE database statistics: total count, last updated timestamp, and source info. Fast. Useful for health checks and confirming database freshness before analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations, the description must fully disclose behavior. It mentions the tool is 'fast' and returns specific stats, but does not detail authorization needs, rate limits, or confirm read-only nature. Adequate but incomplete.

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-loading the purpose and then a concise usage hint. 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.

Completeness5/5

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

Given zero parameters and an existing output schema, the description covers the tool's purpose, usage context, and key output details. It is complete for an AI agent's needs.

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

Parameters4/5

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

The input schema has zero parameters, so schema coverage is complete. The description adds meaning by specifying the returned fields (total count, timestamp, source info), which goes 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 it retrieves CVE database statistics including total count, last updated timestamp, and source info. This verb+resource definition distinguishes it from sibling tools like search_by_keyword or cvss_score_lookup.

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 suggests use for health checks and verifying database freshness before analysis, providing clear context. While it doesn't explicitly state when not to use it, the guidance is strong enough 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.

search_by_keywordA

Smart CVE search by technology/library keyword. Fast. Normalizes common variations ("Node.js", "Spring Boot", "log4j2"). Searches NVD, GitHub Advisory, and OSV concurrently and deduplicates results. Example: search_by_keyword("nodejs"), search_by_keyword("spring boot").

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
keywordYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses key behaviors: normalizes common variations, searches NVD, GitHub Advisory, and OSV concurrently, and deduplicates results. This provides good transparency for an AI agent, though some details like rate limits or result ordering are omitted.

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 concise with four sentences including examples. It front-loads the purpose and adds behavioral details without waste. Every sentence adds value.

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

Completeness3/5

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

The description covers the main search behavior and data sources, which is adequate for a simple tool with an output schema. However, it fails to explain the 'limit' parameter, and could mention return formatting or pagination. It is minimally complete but has clear gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It provides example usage for the keyword parameter, but does not explain the 'limit' parameter (default 30) or its effect. Thus, only partial semantic coverage is achieved.

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 it searches for CVEs by technology/library keyword, with specific verbs and resource. It distinguishes itself from sibling tools like search_cve_by_id (by ID) and search_vulnerabilities_by_product (by product) by focusing on keyword normalization and multi-source search.

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 when to use the tool (for keyword-based CVE search) but does not explicitly state when not to use it or compare with alternatives. The sibling list is provided externally, but the description lacks direct guidance on choosing this tool over others.

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

search_cve_by_idA

Search for a specific CVE by exact ID (e.g., CVE-2021-44228). Use when you have a CVE ID from code, docs, or security reports. Returns complete CVE details with CVSS score and severity analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so the description carries the full burden. It states the tool returns 'complete CVE details with CVSS score and severity analysis', describing output behavior. However, it does not explicitly mention read-only nature, authentication needs, or rate limits. The description adds some transparency but could be more comprehensive.

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 consists of three brief, focused sentences: what the tool does, when to use it, and what it returns. No unnecessary words, and each sentence serves a distinct purpose.

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 (one parameter, no annotations, output schema exists), the description is mostly complete. It covers purpose, usage context, and return value highlights. The only missing element is error handling or edge cases, but for a basic lookup that is acceptable.

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 0%, meaning the description must compensate. The description provides an example format (e.g., CVE-2021-44228) and implies exact ID matching, which adds semantic value beyond the schema. However, it does not specify validation requirements or accepted patterns, leaving gaps.

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 'Search for a specific CVE by exact ID', using a specific verb and resource. It distinguishes from sibling tools like 'bulk_cve_lookup' and 'search_by_keyword' by emphasizing exact ID, making the tool's unique purpose unambiguous.

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?

Provides explicit when-to-use guidance: 'Use when you have a CVE ID from code, docs, or security reports.' It does not explicitly state when not to use or name alternatives, but the context is clear and helpful for an agent.

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

search_vulnerabilities_by_productA

Search vulnerabilities by vendor and product name (e.g., vendor="apache", product="struts"). WARNING: This can be slow (10-15 seconds). Use search_by_keyword for faster results. Returns matched vulnerabilities with severity summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
vendorYes
productYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Discloses the tool can be slow (10-15 seconds) and returns a severity summary. Without annotations, this adds valuable behavioral context for a search tool, though it could mention other traits like idempotency or auth requirements.

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?

Extremely concise: three sentences covering purpose, a warning, and return summary. Information is front-loaded with no extraneous text.

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

Completeness3/5

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

Provides essential purpose and warning, but omits details on pagination, result format, and the 'limit' parameter meaning. Output schema exists but description only vaguely references severity summary. Adequate but with gaps.

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

Parameters2/5

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

Schema coverage is 0%, but description only explains 'vendor' and 'product' via example. The 'limit' parameter is not mentioned, leaving its meaning unclear. Fails to compensate for lack of schema descriptions.

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?

Clearly states it searches vulnerabilities by vendor and product, with an example. Distinguishes from sibling search_by_keyword by noting it is slower, thus setting specific scope.

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

Usage Guidelines5/5

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

Explicitly says when to use (search by vendor/product) and warns about slowness, recommending an alternative (search_by_keyword) for faster results. Provides clear context for selection.

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

TDQS

A4/5.0
Disambiguation4/5

Tools have mostly distinct purposes, but get_recent_cves and check_high_severity_cves both retrieve recent CVEs, differing only by severity filter. Bulk vs single CVE lookup also overlap slightly. Descriptions help disambiguate.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with underscores and are descriptive, e.g., search_by_keyword, get_recent_cves. No mixing of conventions.

Tool Count5/5

8 tools is well-scoped for a CVE search server, covering various lookup methods and utility functions without being excessive.

Completeness4/5

Covers key CVE lookup methods (by ID, keyword, product, date range, severity) and stats. Missing advanced features like subscription or CVE creation, but core search is complete.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables comprehensive security scanning of code repositories to detect secrets, vulnerabilities, dependency issues, and configuration problems. Provides real-time security checks and best practice recommendations to help developers identify and prevent security issues.
    19
    2
    MIT
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides tools for autonomous CVE detection, enrichment, and remediation across managed repositories using GHSA and NVD data. It enables automated triage and pull request creation for dependency fixes based on configurable severity policies.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Arnabdaz/CVE-Search-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server