trackmcp
Back to directory
mukul975

cve-mcp-server

View on GitHub

Production-grade MCP server giving Claude 27 security intelligence tools across 21 APIs — CVE lookup, EPSS scoring, CISA KEV, MITRE ATT&CK, Shodan, VirusTotal, and more.

1,383 stars PythonOthers Updated Sep 4, 2026
cisa-kevclaude-aicvecybersecuritydevsecopsepssfastmcpmcpmitre-attackmodel-context-protocolnvdosvpythonsecurityshodanthreat-intelligencevirustotalvulnerability-management

Documentation

🛡️ CVE MCP Server

CVE MCP Server

AI-powered security intelligence at your fingertips — 28 tools + a one-call `triage_cve` orchestrator, 24 data sources, one protocol.

GARS-2026 Survey
Python 3.10+
License: MIT
MCP Compatible
Security Tool
FastMCP

A production-grade Model Context Protocol (MCP) server that turns Claude into a full-spectrum security analyst. Instead of juggling 15+ browser tabs across NVD, EPSS, CISA KEV, Shodan, VirusTotal, and GreyNoise, ask Claude one question and get correlated intelligence in seconds. Built with Python, FastMCP, httpx, aiosqlite, Pydantic v2, and defusedxml.

The problem: Triaging a single CVE means querying NVD for CVSS scores, EPSS for exploitation probability, CISA KEV for active exploitation status, GitHub for patches, and VirusTotal for malware associations — then mentally correlating everything. For 50 CVEs, that's an entire day lost.

The solution: CVE MCP Server gives Claude direct access to 28 security tools across 24 APIs — fronted by the `triage_cve` one-call orchestrator. Ask "Should we patch CVE-2024-3400?" and Claude fans out to every relevant source in parallel, calculates a composite risk score (with a CISA KEV hard override), and delivers a prioritized recommendation with evidence.


🌍 GARS-2026 — Global Agentic AI Readiness Survey

I'm running a global academic study measuring how ready security professionals,

developers, and enterprise teams actually are for agentic AI — MCP servers,

tool calling, governance, and human-in-the-loop workflows.

If you use this repo, your response would be a genuinely valuable data point.

📋 Take the survey (10 min):

Survey

  • 60 questions · Anonymous · Supervised by SRH Berlin
  • You get 50 Casky Tokens for early access to casky.ai
  • Results published open access under CC-BY 4.0

📑 Table of contents


🏗️ Architecture

code
┌─────────────────────────────────────────────────────────────────────┐
│                        Claude Desktop / Claude Code                 │
│                         (MCP Client via stdio)                      │
└──────────────────────────────┬──────────────────────────────────────┘
                               │ Model Context Protocol (stdio)
                               ▼
┌─────────────────────────────────────────────────────────────────────┐
│                        CVE MCP Server (Python)                      │
│  ┌─────────────┐  ┌──────────────┐  ┌───────────────┐              │
│  │  27 MCP      │  │  Composite   │  │  SQLite Cache │              │
│  │  Tools       │  │  Risk Engine │  │  + Audit Log  │              │
│  └──────┬──────┘  └──────┬───────┘  └───────┬───────┘              │
│         │                │                   │                      │
│  ┌──────┴────────────────┴───────────────────┴──────┐               │
│  │              Async HTTP Client (httpx)            │               │
│  │         Rate Limiter · Response Cache             │               │
│  └──────────────────────┬───────────────────────────┘               │
└─────────────────────────┼───────────────────────────────────────────┘
                          │ HTTPS (outbound only)
          ┌───────────────┼───────────────────────────┐
          ▼               ▼                           ▼
┌──────────────┐ ┌──────────────┐            ┌──────────────┐
│ VULNERABILITY│ │   NETWORK    │            │   THREAT     │
│ INTELLIGENCE │ │ INTELLIGENCE │            │ INTELLIGENCE │
├──────────────┤ ├──────────────┤            ├──────────────┤
│ NVD API 2.0  │ │ AbuseIPDB    │            │ VirusTotal   │
│ EPSS / FIRST │ │ GreyNoise v3 │            │ MalwareBazaar│
│ CISA KEV     │ │ Shodan       │            │ ThreatFox    │
│ OSV.dev      │ │ CIRCL PDNS   │            │ Ransomwhere  │
│ GitHub GHSA  │ │              │            │ AlienVault   │
│ MITRE ATT&CK │ │              │            │ URLScan.io   │
└──────────────┘ └──────────────┘            └──────────────┘

All traffic is outbound HTTPS only — no inbound ports are opened. API keys are loaded from environment variables and never logged. Private/internal IP addresses are blocked from all lookup tools.


🔍 Tool catalog (28 tools)

⭐ Orchestration (v0.2.0) — start here

ToolDescriptionAPI Key RequiredExample Usage
`triage_cve`One-call triage that fans out NVD + EPSS + CISA KEV (+ public PoC for `depth != "quick"`) concurrently, computes the composite risk score with a KEV hard override, falls back to VulnCheck NVD++ when NIST NVD is throttled, and on `depth="deep"` emits the SSVC v2 gated decisionFree / No key (key recommended)`triage_cve("CVE-2021-44228", depth="deep")`

> Also exposed via MCP primitives — Resources: `kev://catalog`, `epss://scores/{cve_id}`, `manifest://tool-hash` (SHA-256 over the registered tool surface, for tamper detection). Prompts: `patch_decision`, `compare_and_prioritize`, `dependency_triage`.

Core Vulnerability Intelligence (8 tools)

ToolDescriptionAPI Key RequiredExample Usage
`lookup_cve`Fetch detailed CVE record from NVD including CVSS scores, CWEs, affected products, references, and timelineFree / No key (key recommended)`lookup_cve("CVE-2024-3400")`
`search_cves`Search NVD for CVEs by keyword, product name, severity, or date rangeFree / No key (key recommended)`search_cves(keyword="Apache Log4j", severity="CRITICAL")`
`get_epss_score`Get EPSS exploitation probability (0–1) and percentile for one or more CVEsFree / No key`get_epss_score("CVE-2024-3400")`
`check_kev_status`Check whether a CVE appears in CISA's Known Exploited Vulnerabilities catalogFree / No key`check_kev_status("CVE-2021-44228")`
`get_cvss_details`Parse and explain a CVSS v3.1 vector string with per-metric breakdownFree / No key`get_cvss_details("CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H")`
`get_cwe_info`Look up Common Weakness Enumeration details by CWE ID from embedded databaseFree / No key`get_cwe_info("CWE-79")`
`get_cve_references`Extract and categorize all reference links for a CVE (patches, advisories, exploits)Free / No key (key recommended)`get_cve_references("CVE-2023-44487")`
`bulk_cve_lookup`Batch-fetch details for up to 20 CVEs in a single call with parallel enrichmentFree / No key (key recommended)`bulk_cve_lookup(["CVE-2024-3400", "CVE-2023-44487"])`

Exploit & Attack Intelligence (4 tools)

ToolDescriptionAPI Key RequiredExample Usage
`search_exploits`Search GitHub for public proof-of-concept exploits and exploit code repositories`GITHUB_TOKEN` (optional)`search_exploits("CVE-2024-3400")`
`get_mitre_techniques`Map a CVE or CWE to relevant MITRE ATT&CK techniques, tactics, and mitigationsFree / No key`get_mitre_techniques("CVE-2021-44228")`
`check_poc_availability`Determine if known proof-of-concept code exists for a CVE across multiple sources`GITHUB_TOKEN` (optional)`check_poc_availability("CVE-2024-3400")`
`get_attack_patterns`Retrieve CAPEC attack pattern details associated with a CWE or CVEFree / No key`get_attack_patterns("CWE-89")`

Phase 3: Advanced Risk & Reporting (4 tools)

ToolDescriptionAPI Key RequiredExample Usage
`calculate_risk_score`Compute composite 0–100 risk score using CVSS, EPSS, KEV status, and PoC availabilityFree / No key (key recommended)`calculate_risk_score("CVE-2024-3400")`
`generate_risk_report`Generate a formatted executive security report for one or more CVEs with recommendationsFree / No key (key recommended)`generate_risk_report(["CVE-2024-3400", "CVE-2023-44487"])`
`prioritize_cves`Rank a list of CVEs by composite risk score for triage prioritizationFree / No key (key recommended)`prioritize_cves(["CVE-2024-3400", "CVE-2023-4966", "CVE-2023-44487"])`
`get_trending_cves`Retrieve trending CVEs based on high EPSS scores and recent KEV additionsFree / No key`get_trending_cves(days=7, min_epss=0.5)`

Network Intelligence (4 tools)

ToolDescriptionAPI Key RequiredExample Usage
`lookup_ip_reputation`Check IP address abuse history and confidence score via AbuseIPDB`ABUSEIPDB_API_KEY``lookup_ip_reputation("185.220.101.34")`
`check_ip_noise`Query GreyNoise for IP scan/attack activity, classification, and associated CVEs`GREYNOISE_API_KEY``check_ip_noise("185.220.101.34")`
`shodan_host_lookup`Get open ports, services, banners, and vulnerabilities for an IP via Shodan`SHODAN_API_KEY``shodan_host_lookup("8.8.8.8")`
`passive_dns_lookup`Retrieve historical DNS resolution data for a domain from CIRCL Passive DNS`CIRCL_PDNS_USER` + `CIRCL_PDNS_PASSWORD``passive_dns_lookup("example.com")`

Threat Intelligence (4 tools)

ToolDescriptionAPI Key RequiredExample Usage
`virustotal_lookup`Analyze file hashes, URLs, domains, or IPs against 70+ antivirus engines`VIRUSTOTAL_API_KEY``virustotal_lookup(hash="44d88612fea8a8f36de82e1278abb02f")`
`search_malware`Search MalwareBazaar for malware samples by hash, tag, or signature`ABUSECH_AUTH_KEY` (optional)`search_malware(tag="Emotet")`
`search_iocs`Query ThreatFox for Indicators of Compromise linked to malware families`ABUSECH_AUTH_KEY` (optional)`search_iocs(malware="CobaltStrike")`
`check_ransomware`Look up ransomware payment addresses and transaction data from RansomwhereFree / No key`check_ransomware(address="bc1q...")`

DevSecOps (3 tools)

ToolDescriptionAPI Key RequiredExample Usage
`scan_dependencies`Scan package names and versions against OSV.dev for known vulnerabilitiesFree / No key`scan_dependencies(ecosystem="PyPI", packages={"requests": "2.28.0"})`
`scan_github_advisories`Search GitHub Security Advisories by ecosystem, package, or severity`GITHUB_TOKEN` (optional)`scan_github_advisories(ecosystem="pip", package="django")`
`urlscan_check`Submit a URL for scanning or retrieve previous scan results from URLScan.io`URLSCAN_API_KEY``urlscan_check("https://suspicious-site.com")`

📦 Installation

Prerequisites

  • Python 3.10+ (3.11 or 3.12 recommended)
  • pip or uv package manager
  • Git for cloning the repository
  • A terminal with access to environment variables

Step-by-step setup

bash
# 1. Clone the repository
git clone https://github.com/mukul975/cve-mcp-server.git
cd cve-mcp-server

# 2. Create and activate a virtual environment
python -m venv venv

# macOS / Linux:
source venv/bin/activate

# Windows (PowerShell):
.\venv\Scripts\Activate.ps1

# Windows (CMD):
venv\Scripts\activate.bat

# 3. Install dependencies
pip install -e .

# 4. Copy and configure environment variables
cp .env.example .env
# Edit .env with your API keys (see API Keys Setup section below)

# 5. Verify the server starts
python -m cve_mcp.server

Using uv (faster alternative)

bash
git clone https://github.com/mukul975/cve-mcp-server.git
cd cve-mcp-server
uv venv
source .venv/bin/activate  # or .venv\Scripts\activate on Windows
uv pip install -e .
cp .env.example .env

With test dependencies

bash
pip install -e ".[test]"

🔑 API keys setup

API keys are organized by priority — get the Tier 1 keys first for maximum coverage with free tools, then progressively add Tier 2 and Tier 3 as needed.

Tier 1: High priority (free, instant access, maximum coverage)

ENV VariableEnablesHow to GetFree Tier LimitsRequired?
`NVD_API_KEY`10× faster NVD lookups (50 req/30s vs 5)Request at nvd.nist.gov50 requests per 30 secondsOptional but strongly recommended
`GITHUB_TOKEN`GitHub Advisory search + exploit PoC searchCreate PAT at github.com/settings/tokens5,000 requests/hourOptional (60/hr without)
ENV VariableEnablesHow to GetFree Tier LimitsRequired?
`ABUSEIPDB_KEY`IP reputation lookupsRegister at abuseipdb.com1,000 checks/dayRequired for IP tools
`VIRUSTOTAL_KEY`File/URL/domain/IP malware scanningSign up at virustotal.com500 lookups/day, 4/minRequired for VT tools
`GREYNOISE_API_KEY`IP noise/scan activity intelligenceSign up at viz.greynoise.io50 queries/week (community)Required for GreyNoise tools
`SHODAN_KEY`Host/port/service reconnaissanceRegister at account.shodan.ioBasic host lookups (free tier)Required for Shodan tools

Tier 3: Optional (extended intelligence)

ENV VariableEnablesHow to GetFree Tier LimitsRequired?
`URLSCAN_KEY`URL scanning and website analysisSign up at urlscan.io5,000 public scans/dayOptional
`CIRCL_PDNS_USER`CIRCL Passive DNS lookupsRequest access at circl.luPartner access onlyOptional
`CIRCL_PDNS_PASS`CIRCL Passive DNS authenticationProvided with CIRCL registrationPartner access onlyOptional

> ⚡ Zero-key start: Eight tools work without any API key — EPSS, CISA KEV, OSV.dev, MITRE ATT&CK, CWE lookups, CVSS parsing, Ransomwhere, and NVD (at reduced rate). You can start using the server immediately and add keys progressively.


⚙️ Configuration

Environment variables (.env.example)

env
# NVD API key — free at https://nvd.nist.gov/developers/request-an-api-key
# Without key: 5 req/30s  |  With key: 50 req/30s
NVD_API_KEY=

# GitHub token — increases rate limit from 60/hr to 5000/hr (no scopes needed)
GITHUB_TOKEN=

# Threat intelligence keys (all optional — tools degrade gracefully without them)
ABUSEIPDB_KEY=       # https://www.abuseipdb.com/account/api
VIRUSTOTAL_KEY=      # https://www.virustotal.com/gui/join-us
URLSCAN_KEY=         # https://urlscan.io/user/signup
SHODAN_KEY=          # https://account.shodan.io/register

# GreyNoise — uses /v3/ip/{ip} endpoint (NOT the deprecated /v3/community)
GREYNOISE_API_KEY=   # https://viz.greynoise.io/signup

# CIRCL Passive DNS — requires partner registration
CIRCL_PDNS_USER=
CIRCL_PDNS_PASS=

# Optional overrides
CACHE_DB_PATH=       # defaults to ~/.cve-mcp/cache.db
AUDIT_LOG_PATH=      # defaults to ~/.cve-mcp/audit.log
REQUEST_TIMEOUT=30   # HTTP timeout in seconds
MAX_RETRIES=3        # retries on transient errors

Claude Desktop configuration

macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`

Windows: `%APPDATA%\Claude\claude_desktop_config.json`

json
{
  "mcpServers": {
    "cve-mcp": {
      "command": "python",
      "args": ["-m", "cve_mcp.server"],
      "cwd": "/absolute/path/to/cve-mcp-server",
      "env": {
        "NVD_API_KEY": "your-key-here",
        "GITHUB_TOKEN": "ghp_xxxxxxxxxxxxxxxxxxxx",
        "ABUSEIPDB_KEY": "your-abuseipdb-key",
        "GREYNOISE_API_KEY": "your-greynoise-key",
        "SHODAN_KEY": "your-shodan-key"
      }
    }
  }
}

> ⚠️ Important: Always use absolute paths. Fully quit Claude Desktop (Cmd+Q / Alt+F4) after changing the config — reloading is not enough.

Claude Code configuration

bash
# Basic setup
claude mcp add cve-mcp -- python -m cve_mcp.server

# With environment variables (repeat -e for each key)
claude mcp add cve-mcp -e NVD_API_KEY=your_key -e VULNCHECK_TOKEN=your_token -- python -m cve_mcp.server
# Or just run from the project directory — python-dotenv auto-loads .env on startup

# Verify it's connected
claude mcp list

🚀 Quick start

Step 1: Install (2 minutes)

bash
git clone https://github.com/mukul975/cve-mcp-server.git
cd cve-mcp-server
python -m venv venv && source venv/bin/activate
pip install -e .

Step 2: Test with free tools first

No `.env` file needed. Add the server to Claude Desktop or Claude Code and try:

> "What is CVE-2021-44228? Is it actively exploited?"

Claude will use `lookup_cve` (NVD), `get_epss_score` (EPSS), and `check_kev` (CISA KEV) — all free, no keys required.

> "Scan these Python packages for vulnerabilities: requests 2.28.0, flask 2.2.0, django 3.2.0"

Step 3: Add your first key for 10× performance

bash
echo 'NVD_API_KEY=your-key-here' > .env

Request a free NVD key at nvd.nist.gov — instant via email, increases rate limit from 5 to 50 requests per 30 seconds.

Step 4: Full power mode

Once you've added Tier 1 and Tier 2 keys:

> "Calculate the risk score for CVE-2024-3400 and tell me if we should patch immediately."


💬 Usage examples

Scenario 1: "Should we patch Log4Shell immediately?"

> You: Analyze if CVE-2021-44228 (Log4Shell) needs immediate patching. Give me the risk score and your recommendation.

Claude orchestrates multiple tools behind the scenes:

code
→ lookup_cve("CVE-2021-44228")
  CVSS 3.1: 10.0 (CRITICAL) | AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

→ get_epss_score("CVE-2021-44228")
  EPSS: 0.97531 (97.5%) | Percentile: 99.99%

→ check_kev("CVE-2021-44228")
  ✅ IN CISA KEV — Added 2021-12-10 | Known ransomware use: Yes

→ check_poc_exists("CVE-2021-44228")
  ✅ WEAPONIZED — 300+ public PoC repositories found

→ calculate_risk_score("CVE-2021-44228")
  Risk Score: 97/100 (CRITICAL) | Urgency: PATCH IMMEDIATELY

Claude's response: "CVE-2021-44228 scores 97/100 (CRITICAL). Remote code execution in Apache Log4j, CVSS 10.0, 97.5% EPSS probability, confirmed active exploitation in CISA KEV including ransomware campaigns, 300+ public exploits. Patch immediately."

Scenario 2: "Scan my Python requirements.txt"

> You: Scan these dependencies: requests==2.28.0, flask==2.2.0, django==3.2.0, pillow==9.0.0, cryptography==37.0.0

code
→ scan_dependencies(ecosystem="PyPI", packages={...})
  Found 12 vulnerabilities across 4 packages

Claude's response: "Found 12 vulnerabilities across your packages. Immediate action: Django 3.2.0 (3 critical CVEs including SQL injection), Pillow 9.0.0 (heap overflow), cryptography 37.0.0 (OpenSSL chain). Upgrade to: django>=4.2.16, pillow>=10.3.0, cryptography>=42.0.0."

Scenario 3: "Investigate a suspicious IP"

> You: Investigate suspicious IP 185.220.101.34 — is it malicious?

code
→ check_ip_reputation("185.220.101.34")
  AbuseIPDB Confidence: 100% | Reports: 4,832 | ISP: Tor Exit Node

→ check_ip_noise("185.220.101.34")
  GreyNoise: MALICIOUS | Tags: [Tor Exit Node, Web Scanner]
  CVEs targeted: CVE-2024-3400, CVE-2023-46805

→ shodan_host_lookup("185.220.101.34")
  Open ports: 22, 80, 443, 9001 | OS: Linux

Claude's response: "185.220.101.34 is a known Tor exit node rated 100% malicious by AbuseIPDB with 4,832 abuse reports. GreyNoise confirms active scanning for CVE-2024-3400 (Palo Alto) and CVE-2023-46805 (Ivanti). Recommendation: Block at firewall."

Scenario 4: "Generate an executive security report"

> You: Generate an executive security report for: CVE-2024-3400, CVE-2023-44487, CVE-2023-4966, CVE-2024-21887

code
→ compare_cves([...])
  Compiles: NVD, EPSS, KEV, PoC availability, MITRE ATT&CK mapping
  Generates: Ranked risk table, remediation timeline, executive summary

📊 Risk score explained

The `calculate_risk_score` tool produces a composite risk score from 0 to 100 by weighting four independent signals.

The formula

code
Risk Score = (CVSS × 0.20) + (EPSS × 0.35) + (KEV × 0.30) + (PoC × 0.15)
ComponentWeightWhat It Captures
CVSS v3.1 Base Score20%Theoretical worst-case severity
EPSS Probability35%Statistical likelihood of exploitation in the next 30 days
CISA KEV Status30%Confirmed active exploitation in the wild
PoC Availability15%Public exploit code lowers the barrier for attackers

Boost multipliers

  • KEV + active PoC → ×1.15
  • CVSS ≥ 9.0 + EPSS > 0.7 → ×1.10
  • **Published str:

"""

One-line description for Claude to know when to use this tool.

Args:

param: Description of the parameter

"""

app = _get_app(ctx)

# validate → cache check → API call → cache write → audit → return

code
### Testing requirements

- All new tools must have at least one offline test with mocked responses
- Risk score changes must include formula verification test cases
- Network tools must include a test verifying private IP blocking
- All tests must pass: `pytest tests/ -v`

---

## 📄 License

MIT License — see [LICENSE](LICENSE) for details.

Copyright (c) 2025-2026 Mahipal Jangra (mukul975)

code
---

  Built with 🔐 by  · Berlin, Germany
  Turning security intelligence into conversation.

Frequently asked questions

What is cve-mcp-server?

cve-mcp-server is Production-grade MCP server giving Claude 27 security intelligence tools across 21 APIs — CVE lookup, EPSS scoring, CISA KEV, MITRE ATT&CK, Shodan, VirusTotal, and more.

How do I install cve-mcp-server?

Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

Is cve-mcp-server open source?

Yes — it is hosted on GitHub at https://github.com/mukul975/cve-mcp-server and has 1,383 stars.

Related MCP tools

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP