Loading...
Loading...
Production-grade MCP server providing Claude with 27 security intelligence tools across 21 APIs for vulnerability research, CVE analysis, threat intelligence, and risk scoring
npx skill4agent add aradotso/mcp-skills cve-mcp-server-security-intelligenceSkill by ara.so — MCP Skills collection
# Using pipx (isolated environment)
pipx install cve-mcp-server
# Using pip
pip install cve-mcp-server
# Using uv (faster)
uv pip install cve-mcp-servergit clone https://github.com/mukul975/cve-mcp-server.git
cd cve-mcp-server
pip install -e .~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json{
"mcpServers": {
"cve-security": {
"command": "python",
"args": ["-m", "cve_mcp_server"],
"env": {
"NVD_API_KEY": "your-nvd-key-here",
"VIRUSTOTAL_API_KEY": "your-vt-key-here",
"SHODAN_API_KEY": "your-shodan-key-here",
"GREYNOISE_API_KEY": "your-greynoise-key-here",
"ABUSEIPDB_API_KEY": "your-abuseipdb-key-here",
"GITHUB_TOKEN": "your-github-token-here"
}
}
}
}NVD_API_KEYVIRUSTOTAL_API_KEYSHODAN_API_KEYGREYNOISE_API_KEYABUSEIPDB_API_KEYGITHUB_TOKENABUSECH_AUTH_KEYCIRCL_PDNS_USERCIRCL_PDNS_PASSWORDALIENVAULT_OTX_KEYpublic_repo# Claude will call this as:
# lookup_cve(cve_id="CVE-2024-3400")
# Returns:
{
"id": "CVE-2024-3400",
"description": "Command injection vulnerability in...",
"cvss_v3_score": 10.0,
"cvss_v3_severity": "CRITICAL",
"cvss_v3_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H",
"published": "2024-04-12T00:00:00",
"last_modified": "2024-04-15T12:34:56",
"cwe_ids": ["CWE-77"],
"references": [...],
"affected_products": [...]
}# search_cves(keyword="Apache Log4j", severity="CRITICAL", last_n_days=30)
# search_cves(product="palo alto networks", max_results=10)# get_epss_score(cve_id="CVE-2024-3400")
# Returns:
{
"cve": "CVE-2024-3400",
"epss": 0.89234,
"percentile": 0.99123,
"date": "2024-05-16"
}# check_kev_status(cve_id="CVE-2021-44228")
# Returns:
{
"in_kev": true,
"date_added": "2021-12-10",
"due_date": "2021-12-24",
"required_action": "Apply updates per vendor instructions",
"known_ransomware": true
}# bulk_cve_lookup(cve_ids=["CVE-2024-3400", "CVE-2023-44487", "CVE-2021-44228"])# search_exploits(cve_id="CVE-2024-3400")
# Returns:
{
"cve": "CVE-2024-3400",
"exploit_count": 12,
"exploits": [
{
"title": "CVE-2024-3400 PoC",
"url": "https://github.com/...",
"stars": 45,
"language": "Python",
"created_at": "2024-04-13"
}
]
}# get_mitre_techniques(cve_id="CVE-2021-44228")
# Returns:
{
"cve": "CVE-2021-44228",
"techniques": [
{
"id": "T1190",
"name": "Exploit Public-Facing Application",
"tactic": "Initial Access",
"description": "...",
"mitigations": [...]
}
]
}# check_poc_availability(cve_id="CVE-2024-3400")
# Returns:
{
"poc_available": true,
"sources": ["GitHub", "Exploit-DB"],
"confidence": "HIGH"
}# calculate_risk_score(cve_id="CVE-2024-3400")
# Returns:
{
"cve": "CVE-2024-3400",
"risk_score": 98.5,
"risk_level": "CRITICAL",
"components": {
"cvss_score": 10.0,
"epss_score": 0.89234,
"in_kev": true,
"poc_available": true,
"exploit_maturity": "FUNCTIONAL"
},
"recommendation": "Patch immediately - active exploitation confirmed"
}Base = CVSS * 10 (0-100)
+ EPSS * 30 (0-30)
+ KEV bonus: +20
+ PoC bonus: +10
+ Capped at 100# prioritize_cves(cve_ids=["CVE-2024-3400", "CVE-2023-4966", "CVE-2023-44487"])
# Returns sorted list with risk scores:
[
{"cve": "CVE-2024-3400", "risk_score": 98.5, "priority": 1},
{"cve": "CVE-2023-44487", "risk_score": 87.3, "priority": 2},
{"cve": "CVE-2023-4966", "risk_score": 76.2, "priority": 3}
]# generate_risk_report(cve_ids=["CVE-2024-3400"], include_mitigations=True)
# Returns formatted markdown report with:
# - Executive summary
# - CVE details with CVSS/EPSS
# - KEV status and exploit availability
# - MITRE ATT&CK mapping
# - Prioritized remediation steps# lookup_ip_reputation(ip_address="185.220.101.34")
# Returns:
{
"ip": "185.220.101.34",
"abuse_confidence": 100,
"total_reports": 1234,
"is_public": true,
"is_whitelisted": false,
"country": "US",
"isp": "Example ISP",
"usage_type": "Data Center/Web Hosting/Transit"
}# check_ip_noise(ip_address="185.220.101.34")
# Returns:
{
"ip": "185.220.101.34",
"classification": "malicious",
"last_seen": "2024-05-16",
"tags": ["SSH Bruteforce", "Web Scanner"],
"cves": ["CVE-2024-1234"],
"actor": "Unknown"
}# shodan_host_lookup(ip_address="8.8.8.8")
# Returns:
{
"ip": "8.8.8.8",
"ports": [53, 443],
"vulns": [],
"services": [
{"port": 53, "protocol": "dns", "product": "Google DNS"}
],
"os": null,
"hostnames": ["dns.google"]
}# virustotal_lookup(resource_type="hash", resource="44d88612fea8a8f36de82e1278abb02f")
# virustotal_lookup(resource_type="url", resource="https://malicious.example.com")
# virustotal_lookup(resource_type="domain", resource="malicious.example.com")
# virustotal_lookup(resource_type="ip", resource="192.0.2.1")
# Returns:
{
"resource": "44d88612fea8a8f36de82e1278abb02f",
"positives": 56,
"total": 70,
"scan_date": "2024-05-16 12:34:56",
"permalink": "https://virustotal.com/...",
"detections": {
"Kaspersky": "HEUR:Trojan.Win32.Generic",
"Microsoft": "Trojan:Win32/Meterpreter"
}
}# search_malware(query_type="tag", query="Emotet", limit=10)
# search_malware(query_type="hash", query="44d88612fea8a8f36de82e1278abb02f")
# Returns:
{
"query_status": "ok",
"data": [
{
"sha256_hash": "abc123...",
"file_type": "exe",
"file_size": 123456,
"signature": "Emotet",
"first_seen": "2024-05-01",
"tags": ["Emotet", "trojan"]
}
]
}# search_iocs(query_type="malware", query="CobaltStrike")
# search_iocs(query_type="ioc", query="192.0.2.1")
# Returns:
{
"query_status": "ok",
"data": [
{
"ioc": "192.0.2.1",
"ioc_type": "ip:port",
"malware": "CobaltStrike",
"confidence_level": 100,
"first_seen": "2024-05-10",
"tags": ["c2"]
}
]
}# Step 1: Get CVE details
cve_data = lookup_cve("CVE-2024-3400")
# Step 2: Calculate risk score (combines CVSS + EPSS + KEV + PoC)
risk = calculate_risk_score("CVE-2024-3400")
# Step 3: Check for public exploits
exploits = search_exploits("CVE-2024-3400")
# Step 4: Map to ATT&CK for context
attack = get_mitre_techniques("CVE-2024-3400")
# Step 5: Present unified recommendation
# Risk score 98.5/100 → Patch immediately
# KEV status: YES → Federal mandate to patch
# EPSS: 89% → High exploitation probability
# PoC available: YES → Exploitation barriers low# User: "Prioritize these CVEs: CVE-2024-3400, CVE-2023-4966, CVE-2023-44487"
# Single call to get ranked list
prioritized = prioritize_cves([
"CVE-2024-3400",
"CVE-2023-4966",
"CVE-2023-44487"
])
# Returns:
# 1. CVE-2024-3400 (98.5) - CRITICAL - Patch this week
# 2. CVE-2023-44487 (87.3) - HIGH - Patch this month
# 3. CVE-2023-4966 (76.2) - HIGH - Patch next quarter# User: "Is 185.220.101.34 malicious?"
# Check reputation
abuse = lookup_ip_reputation("185.220.101.34")
# Check active scanning behavior
noise = check_ip_noise("185.220.101.34")
# Get infrastructure details
host = shodan_host_lookup("185.220.101.34")
# Cross-reference with VirusTotal
vt = virustotal_lookup("ip", "185.220.101.34")
# Synthesize verdict:
# AbuseIPDB: 100% confidence malicious
# GreyNoise: Active SSH bruteforce + web scanning
# Shodan: Exposed SSH, MySQL, RDP
# VT: Flagged by 12/90 vendors
# → Block immediately# User: "Analyze hash 44d88612fea8a8f36de82e1278abb02f"
# Check VirusTotal
vt = virustotal_lookup("hash", "44d88612fea8a8f36de82e1278abb02f")
# Search MalwareBazaar
mb = search_malware("hash", "44d88612fea8a8f36de82e1278abb02f")
# Find related IOCs in ThreatFox
if mb["data"]:
family = mb["data"][0]["signature"]
iocs = search_iocs("malware", family)
# Present:
# Detection: 56/70 engines (Meterpreter)
# Family: Generic backdoor
# Related IOCs: 12 C2 IPs, 5 domains# User: "Generate security report for CVEs found in our scan"
report = generate_risk_report(
cve_ids=["CVE-2024-3400", "CVE-2023-44487"],
include_mitigations=True
)
# Returns formatted markdown with:
# - Executive summary (risk level, count)
# - Per-CVE analysis (CVSS, EPSS, KEV)
# - Exploit landscape (PoC availability)
# - ATT&CK techniques mapped
# - Prioritized remediation timeline
# - Mitigation strategies per CVE{
"mcpServers": {
"cve-security": {
"env": {
"NVD_API_KEY": "your-actual-key-here"
}
}
}
}NVD_API_KEYbulk_cve_lookuplookup_cvesearch_cvescommandwhich python # macOS/Linux
where python # Windows~/Library/Logs/Claude/mcp*.log%APPDATA%\Claude\logs\mcp*.log# Test basic CVE lookup
python -m cve_mcp_server --test lookup_cve CVE-2021-44228
# Test risk calculation
python -m cve_mcp_server --test calculate_risk_score CVE-2024-3400
# Test with API key
NVD_API_KEY=your-key python -m cve_mcp_server --test search_cves "Apache""Can you look up CVE-2021-44228 and tell me its risk score?"
"Search for recent critical CVEs in Apache Log4j"
"Check if 185.220.101.34 is malicious"
"Analyze hash 44d88612fea8a8f36de82e1278abb02f"{
"env": {
"CVE_MCP_CACHE_DIR": "/path/to/cache"
}
}~/Library/Caches/cve-mcp-server/~/.cache/cve-mcp-server/%LOCALAPPDATA%\cve-mcp-server\cache\{
"env": {
"CVE_MCP_DISABLE_CACHE": "true"
}
}{
"env": {
"NVD_RATE_LIMIT": "10",
"VIRUSTOTAL_RATE_LIMIT": "4"
}
}bulk_cve_lookupcalculate_risk_scoreNVD_API_KEYGITHUB_TOKENVIRUSTOTAL_API_KEYABUSEIPDB_API_KEYSHODAN_API_KEYGREYNOISE_API_KEYABUSECH_AUTH_KEYCIRCL_PDNS_USER/PASSWORDALIENVAULT_OTX_KEY