CVE Search MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CVE Search MCP Serversearch for spring boot vulnerabilities"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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_TOKENandNVD_API_KEYfor higher rate limits3 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 syncDevelopment Setup
uv sync --extra dev
uv run --extra dev pytest
uv run black src/
uv run ruff check src/Configuration
Env Var | Default | Description |
| none | GitHub personal access token. Raises GitHub Advisory API rate limit from 60 to 5000 req/hr. |
| none | NVD API key. Raises rate limit from 5 to 50 req/30s. Get one at nvd.nist.gov. |
|
| HTTP request timeout in seconds. |
|
| 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 8000Claude 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 |
| Look up a specific CVE by ID (e.g. CVE-2021-44228) | Fast |
| Look up up to 20 CVE IDs in one call — ideal for scanning PR dependency lists | Fast |
| Search by vendor/product name (e.g. vendor="apache", product="struts") | Slow (10-15s) |
| Get CVEs from the last N days | Fast |
| Get CVSS ≥ 7.0 CVEs from the last N days | Fast |
| Smart multi-source keyword search (NVD + GitHub Advisory + OSV) | Fast |
| Database stats: total CVE count, last updated timestamp | Fast |
| 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.tomlData 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 toolsbulk_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.
| Name | Required | Description | Default |
|---|---|---|---|
| cve_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cve_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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").
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| keyword | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cve_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| vendor | Yes | ||
| product | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
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.
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.
8 tools is well-scoped for a CVE search server, covering various lookup methods and utility functions without being excessive.
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
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
Deep security scans of repos you own from your editor: dependency CVEs, SAST, git-history secrets.
Threat intel + your scans/findings/Shield posture. CVE, EPSS, KEV, package vuln lookup, DAST.
Generate SBOMs, scan vulnerabilities, and analyze dependencies from local projects or Git repos.
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables 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.192MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to scan project dependencies and Infrastructure as Code files for security vulnerabilities and misconfigurations. It also provides automated fixing capabilities to remediate identified security issues.183MIT

Git-Fabric CVEofficial
AlicenseNot gradedqualityNot gradedmaintenanceProvides 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.- AlicenseNot gradedqualityDmaintenanceProvides security vulnerability scanning for code snippets, codebases, and code changes through integration with the Asterisk security API.33Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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