Skip to main content
Glama
Cyreslab-AI

CIRCL CVE SEARCH MCP Server

CIRCL CVE SEARCH MCP Server

A Model Context Protocol (MCP) server for accessing CIRCL's Vulnerability-Lookup platform, providing comprehensive, cross-source vulnerability and security information.

This server previously used the legacy cve.circl.lu cve-search API. CIRCL has superseded that service with Vulnerability-Lookup, so this server now talks to https://vulnerability.circl.lu/api.

Features

This MCP server provides reliable tools to access:

  • CVE Information: Get detailed information about specific Common Vulnerabilities and Exposures

  • Vendor Browsing: Browse known products for a vendor to discover security issues in specific vendors' products

  • CWE Information: Get Common Weakness Enumeration information for understanding vulnerability types

  • CAPEC Information: Get Common Attack Pattern Enumeration and Classification data for understanding attack methods

  • Recent Vulnerabilities: Get the most recently published/updated vulnerabilities, correlated across all sources tracked by the platform

Related MCP server: mcp-nvd

Key Improvements

  • Retry Logic: Automatic retry with exponential backoff for reliable API calls

  • Enhanced Formatting: Structured, readable response formatting with key information highlighted

  • Better Error Handling: Clear, actionable error messages with troubleshooting guidance

  • Input Validation: Comprehensive validation and sanitization of all inputs

Installation

npm install @cyreslab/circl-cve-search-mcp-server

Usage

Add this server to your MCP client configuration:

{
  "mcpServers": {
    "circl-cve-search": {
      "command": "npx",
      "args": ["@cyreslab/circl-cve-search-mcp-server"]
    }
  }
}

Available Tools

get_cve

Get detailed information about a specific CVE by its ID.

Parameters:

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

Example:

{
  "name": "get_cve",
  "arguments": {
    "cve_id": "CVE-2021-44228"
  }
}

Response Format:

  • Structured CVE data with key information highlighted

  • Summary, publication dates, CVSS scores

  • Associated weakness types (CWE) and reference counts

  • Full raw data for detailed analysis

browse_vendor

Browse known products for a vendor, sorted by most recent vulnerability activity.

Parameters:

  • vendor (required): Vendor name (e.g., "apache", "microsoft", "google")

  • limit (optional): Number of results to return (default: 10, max: 50)

Example:

{
  "name": "browse_vendor",
  "arguments": {
    "vendor": "apache",
    "limit": 15
  }
}

Response Format:

  • List of known products for the specified vendor, each with a last-change timestamp

  • Total count and displayed count

  • Vendor name normalization

get_cwe

Get Common Weakness Enumeration (CWE) information by ID.

Parameters:

  • cwe_id (required): CWE identifier (e.g., "CWE-79", "CWE-89")

Example:

{
  "name": "get_cwe",
  "arguments": {
    "cwe_id": "CWE-79"
  }
}

Response Format:

  • CWE name and detailed description

  • Extended descriptions and weakness ordinalities

  • Likelihood of exploit information

  • Full raw data for comprehensive analysis

get_capec

Get Common Attack Pattern Enumeration and Classification (CAPEC) information by ID.

Parameters:

  • capec_id (required): CAPEC identifier (e.g., "CAPEC-66", "CAPEC-89")

Example:

{
  "name": "get_capec",
  "arguments": {
    "capec_id": "CAPEC-66"
  }
}

Response Format:

  • Attack pattern name and description

  • Typical severity and likelihood of attack

  • Prerequisites and related weaknesses

  • Complete raw data for in-depth analysis

get_recent_vulnerabilities

Get the most recently published/updated vulnerabilities, correlated across all sources tracked by the platform (e.g. NVD, GitHub, PySec, GSD, CSAF advisories from various vendors).

Parameters:

  • limit (optional): Number of results to return (default: 10, max: 50)

Example:

{
  "name": "get_recent_vulnerabilities",
  "arguments": {
    "limit": 10
  }
}

Response Format:

  • List of recently changed vulnerabilities, normalized across the platform's different native record formats (OSV-style records, CVE 5.x records, and CSAF advisories)

  • Identifier(s), publication/modification dates, a truncated summary, severity, and reference count for each

Data Source

This server uses CIRCL's Vulnerability-Lookup platform, which superseded the legacy cve-search service formerly hosted at cve.circl.lu. It provides:

  • Cross-source correlated vulnerability data (NVD, GitHub, PySec, GSD, CSAF advisories from various vendors, and more)

  • Common Platform Enumeration (CPE) information

  • Common Weakness Enumeration (CWE) data

  • Common Attack Pattern Enumeration and Classification (CAPEC) data

  • Continuous updates with the latest vulnerability information

Rate Limiting

The CIRCL Vulnerability-Lookup API is free to use and doesn't require authentication. However, please use it responsibly and avoid making excessive requests that could impact the service.

Error Handling

The server handles various error conditions:

  • Invalid CVE/CWE/CAPEC ID formats

  • Empty search queries

  • API rate limiting

  • Network errors

  • Invalid parameters

Development

Building

npm run build

Running in Development

npm run dev

License

MIT License - see LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Support

For issues and questions:

Available Tools

5 tools
browse_vendorA
Read-only

Browse known products for a vendor, sorted by most recent vulnerability activity

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of results to return (default: 10, max: 50)
vendorYesVendor name (e.g., "apache", "microsoft", "google")

Output Schema

ParametersJSON Schema
NameRequiredDescription
vendorYes
showingYes
productsYes
total_foundYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description doesn't need to restate safety. It does add the sorting-by-recent-activity behavior, which is useful, but it doesn't clarify whether products without any vulnerability activity are included or what 'vulnerability activity' precisely means. The added value is moderate but not deficient.

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 a single, concise sentence that front-loads the action and resource, then adds the sorting detail. Every word earns its place with no redundancy or filler.

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?

For a simple browse tool, the description covers the purpose, the target resource, and the ordering. An output schema exists to describe return values, and the annotations cover safety and open-world semantics. Nothing critical for calling the tool correctly is missing.

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 coverage is 100% – both 'vendor' and 'limit' are fully described in the input schema, including defaults and constraints. The description adds no parameter-specific meaning beyond the schema, so a baseline score of 3 is appropriate.

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 states a specific verb ('Browse'), a clear resource ('known products for a vendor'), and a sorting criterion ('most recent vulnerability activity'). It clearly distinguishes this from siblings like get_cve or get_recent_vulnerabilities, which operate on vulnerability records rather than vendor product lists.

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 for browsing vendor products, but it does not explicitly state when to use this tool versus the sibling tools (e.g., get_recent_vulnerabilities for global vulnerability feeds). The differentiation is clear from the purpose, but there are no explicit 'use when' or 'instead of' instructions.

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

get_capecA
Read-only

Get Common Attack Pattern Enumeration and Classification (CAPEC) information by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
capec_idYesCAPEC identifier (e.g., "CAPEC-66", "CAPEC-89")

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
detailsNo
capec_idYes
raw_dataNoFull raw CAPEC record as returned by the platform
descriptionYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety and scope. The description adds no additional behavioral traits such as output size, pagination, or authentication needs. It is consistent with annotations but contributes no extra context beyond the minimal purpose.

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?

A single, focused sentence that front-loads the action and resource. There is no fluff or redundancy; every word 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?

The tool is simple with one parameter and an output schema, which covers return value expectations. The description is minimal but sufficient for an agent to invoke it correctly. A tiny bit more context (e.g., typical use case) would push it to 5, but nothing essential is missing.

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%, and the schema fully documents the capec_id parameter with a pattern and example. The description adds no semantic detail beyond what the schema already provides, so the baseline of 3 applies.

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 verb 'Get' and the resource 'CAPEC information by ID'. It is unambiguous and distinct from siblings like get_cwe and get_cve, which target different vulnerability classification systems.

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?

Usage context is implied by the name and description (for retrieving CAPEC details by ID), but there is no explicit guidance on when to choose this over siblings, nor any exclusions or alternative tools mentioned.

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

get_cveA
Read-only

Get detailed information about a specific CVE by its ID with enhanced data analysis

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE identifier (e.g., "CVE-2021-44228")

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
cve_idYes
summaryYes
raw_dataNoFull raw CVE record as returned by the platform
discoveryNo
referencesNo
weaknessesNo
affected_systemsNo
security_detailsNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only 'enhanced data analysis,' which is too vague to meaningfully disclose behavior such as enrichment, external lookups, or response shaping. No contradiction exists, but the description contributes limited additional behavioral context beyond the annotations.

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

Conciseness4/5

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

The description is a single, front-loaded sentence that immediately identifies the resource and operation. It is not bloated, but the trailing 'with enhanced data analysis' is vague and does not earn its place with concrete information, keeping it slightly below a perfect score.

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 single-parameter, read-only lookup tool with full schema documentation, an output schema, and safety annotations, the description is almost sufficient. It lacks explicit sibling differentiation or guidance about what 'enhanced data analysis' includes, but the core invocation context is adequately covered.

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%, with the cve_id parameter fully documented including a pattern and example. The description restates the concept of 'by its ID' but adds no new parameter semantics beyond what the schema already provides. Baseline 3 is appropriate since the schema carries the documentation burden.

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 uses a specific verb and resource: 'Get detailed information about a specific CVE by its ID.' This clearly distinguishes it from sibling tools like get_recent_vulnerabilities (which lists by recency) and get_cwe/get_capec (which query different knowledge bases). The only minor weakness is the vague phrase 'enhanced data analysis,' but it does not obscure the core purpose.

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 phrase 'specific CVE by its ID' provides clear usage context: call this tool when you already have a concrete CVE identifier. It does not explicitly name alternatives or state when not to use it, but the scope is clear enough to route an agent correctly relative to the sibling tools.

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

get_cweA
Read-only

Get Common Weakness Enumeration (CWE) information by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
cwe_idYesCWE identifier (e.g., "CWE-79", "CWE-89")

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
cwe_idYes
detailsNo
raw_dataNoFull raw CWE record as returned by the platform
descriptionYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint, and the description does not contradict them. It adds no extra behavioral detail such as not-found handling or exact-match guarantees, but for a simple lookup with an output schema this is acceptable.

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 one concise, front-loaded sentence that states the action and target resource with no filler or redundancy.

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?

With one fully documented required parameter, an output schema, and read-only annotations, the essential call contract is covered. The only real gap is routing among sibling tools, which is already reflected in the usage_guidelines score.

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 fully documents cwe_id with a pattern and example, so the description need not repeat parameter details. The phrase 'by ID' adds no meaning 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?

Identifies a specific action ('Get'), a precise resource ('Common Weakness Enumeration (CWE) information'), and the lookup key ('by ID'). The resource name clearly differentiates it from CVE or CAPEC lookups at a surface level.

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 gives no guidance on when to use this tool instead of siblings like get_cve or get_capec. The phrase 'by ID' implies exact-ID lookup, but no alternatives or exclusion criteria are mentioned.

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

get_recent_vulnerabilitiesA
Read-only

Get the most recently published/updated vulnerabilities, correlated across all sources tracked by the platform

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of results to return (default: 10, max: 50)

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
vulnerabilitiesYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint. The description adds that results are the most recently published/updated and correlated across sources, providing extra behavioral context. However, it does not clarify what 'correlated' entails (e.g., deduplication) or mention pagination.

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 a single, concise sentence that front-loads the core action and resource, with no redundant words or filler. It efficiently conveys the essential 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?

For a simple list tool with one well-documented parameter and an output schema present, the description adequately conveys what is returned (recent vulnerabilities) and the source scope. The term 'correlated' is slightly ambiguous but not blocking. It could optionally mention sorting, but the output schema likely covers return details.

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 fully documents the single 'limit' parameter with a description, default, and max. The tool description adds no additional parameter-specific meaning, so the baseline of 3 is appropriate given the schema coverage is 100%.

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 uses a specific verb ('Get') with a clear resource ('most recently published/updated vulnerabilities') and adds the distinctive scope 'correlated across all sources tracked by the platform.' This differentiates it from siblings that target specific vendors, CWEs, CAPECs, or CVEs.

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 this is a general feed for recent vulnerabilities, but it does not explicitly state when to use this versus the sibling tools (e.g., 'for a specific CVE use get_cve'). Guidance is only implicit, leaving some ambiguity.

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. 5 tool updatesv2.2.0
    • First observedbrowse_vendor
    • First observedget_capec
    • First observedget_cve
    • First observedget_cwe
    • First observedget_recent_vulnerabilities

TDQS

A4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct resource: browsing by vendor, retrieving CWE/CAPEC by ID, listing recent vulnerabilities, and fetching specific CVE details. No overlap or ambiguity between tool purposes.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case: browse_vendor, get_cwe, get_capec, get_recent_vulnerabilities, get_cve. The verbs (browse, get) and noun targets are uniform, making the API predictable.

Tool Count5/5

Five tools is well-scoped for a read-only CVE search server. Each tool serves a clear purpose without redundancy, and the count falls comfortably within the ideal 3-15 range.

Completeness4/5

The tool surface covers core workflows: fetching individual CVEs, browsing by vendor, accessing CWE/CAPEC reference data, and retrieving recent vulnerabilities. Minor gaps exist, such as the lack of a general keyword search or a way to list CVEs by CWE ID, but these are non-essential for the server's stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server for querying the CVE-Search API. This server provides comprehensive access to CVE-Search, browse vendor and product、get CVE per CVE-ID、get the last updated CVEs.
    6
    107
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server implementation to query the NIST National Vulnerability Database (NVD) via its API.
    2
    14
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that retrieves CVE information from the National Vulnerability Database, allowing AI models to access up-to-date vulnerability data.
    1
    7
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server for querying the NIST National Vulnerability Database (NVD) API, enabling search and retrieval of CVE details, temporal context, and KEV catalog entries.
    14
    MIT