
Servidor MCP de grado de producción que otorga a Claude 27 herramientas de inteligencia de seguridad en 21 APIs: consulta de CVE, puntuación EPSS, CISA KEV, MITRE ATT&CK, Shodan, VirusTotal y más.

Inteligencia de seguridad impulsada por IA a tu alcance: 28 herramientas + un orquestador triage_cve de una sola llamada, 24 fuentes de datos, un protocolo.
Un servidor Model Context Protocol (MCP) de nivel de producción que convierte a Claude en un analista de seguridad de espectro completo. En lugar de alternar entre más de 15 pestañas del navegador en NVD, EPSS, CISA KEV, Shodan, VirusTotal y GreyNoise, haz una pregunta a Claude y obtén inteligencia correlacionada en segundos. Construido con Python, FastMCP, httpx, aiosqlite, Pydantic v2 y defusedxml.
El problema: Clasificar un solo CVE implica consultar NVD para obtener puntuaciones CVSS, EPSS para la probabilidad de explotación, CISA KEV para el estado de explotación activa, GitHub para los parches y VirusTotal para las asociaciones con malware; luego hay que correlacionar todo mentalmente. Para 50 CVEs, eso es un día entero perdido.
La solución: CVE MCP Server le da a Claude acceso directo a 28 herramientas de seguridad de 24 APIs, con el orquestador de una sola llamada triage_cve como interfaz. Pregunta "¿Deberíamos aplicar el parche para CVE-2024-3400?" y Claude se despliega en paralelo hacia todas las fuentes relevantes, calcula una puntuación de riesgo compuesta (con una anulación estricta de CISA KEV) y entrega una recomendación priorizada con evidencia.
Estoy llevando a cabo un estudio académico global que mide qué tan preparados están realmente los profesionales de seguridad, los desarrolladores y los equipos empresariales para la IA agéntica: servidores MCP, llamadas a herramientas, gobernanza y flujos de trabajo con supervisión humana.
Si usas este repositorio, tu respuesta sería un punto de datos genuinamente valioso.
📋 Realiza la encuesta (10 min): Encuesta
┌─────────────────────────────────────────────────────────────────────┐ │ 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 │ └──────────────┘ └──────────────┘ └──────────────┘
Todo el tráfico es **solo HTTPS saliente** — no se abren puertos de entrada. Las claves de API se cargan desde variables de entorno y nunca se registran. Las direcciones IP privadas/internas están bloqueadas en todas las herramientas de búsqueda.
---
## 🔍 Catálogo de herramientas (28 herramientas)
### ⭐ Orquestación (v0.2.0) — empieza aquí
| Tool | Description | API Key Required | Example Usage |
|------|-------------|-----------------|---------------|
| `triage_cve` | Triaje de una sola llamada que despliega NVD + EPSS + CISA KEV (+ PoC público para `depth != "quick"`) de forma concurrente, calcula la puntuación de riesgo compuesta con una anulación dura de KEV, recurre a VulnCheck NVD++ cuando NIST NVD está limitado y, con `depth="deep"`, emite la decisión condicionada de SSVC v2 | Gratis / Sin clave (se recomienda clave) | `triage_cve("CVE-2021-44228", depth="deep")` |
> **También se expone a través de primitivas MCP** — Recursos: `kev://catalog`, `epss://scores/{cve_id}`, `manifest://tool-hash` (SHA-256 sobre la superficie de herramientas registrada, para la detección de manipulación). Prompts: `patch_decision`, `compare_and_prioritize`, `dependency_triage`.
### Inteligencia principal de vulnerabilidades (8 herramientas)
| Tool | Description | API Key Required | Example Usage |
|------|-------------|-----------------|---------------|
| `lookup_cve` | Obtener el registro detallado de CVE de NVD, incluyendo puntuaciones CVSS, CWEs, productos afectados, referencias y cronología | Gratis / Sin clave (se recomienda clave) | `lookup_cve("CVE-2024-3400")` |
| `search_cves` | Buscar CVEs en NVD por palabra clave, nombre de producto, severidad o rango de fechas | Gratis / Sin clave (se recomienda clave) | `search_cves(keyword="Apache Log4j", severity="CRITICAL")` |
| `get_epss_score` | Obtener la probabilidad de explotación EPSS (0–1) y el percentil para una o más CVEs | Gratis / Sin clave | `get_epss_score("CVE-2024-3400")` |
| `check_kev_status` | Comprobar si una CVE aparece en el catálogo de Vulnerabilidades Explotadas Conocidas de CISA | Gratis / Sin clave | `check_kev_status("CVE-2021-44228")` |
| `get_cvss_details` | Interpretar y explicar una cadena de vector CVSS v3.1 con desglose por métrica | Gratis / Sin clave | `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` | Consultar los detalles de Common Weakness Enumeration por ID de CWE en la base de datos integrada | Gratis / Sin clave | `get_cwe_info("CWE-79")` |
| `get_cve_references` | Extraer y categorizar todos los enlaces de referencia de una CVE (parches, avisos, exploits) | Gratis / Sin clave (se recomienda clave) | `get_cve_references("CVE-2023-44487")` |
| `bulk_cve_lookup` | Recuperar en lote los detalles de hasta 20 CVEs en una sola llamada con enriquecimiento paralelo | Gratis / Sin clave (se recomienda clave) | `bulk_cve_lookup(["CVE-2024-3400", "CVE-2023-44487"])` |
### Inteligencia de exploits y ataques (4 herramientas)
| Tool | Description | API Key Required | Example Usage |
|------|-------------|-----------------|---------------|
| `search_exploits` | Buscar en GitHub exploits de prueba de concepto públicos y repositorios de código de exploits | `GITHUB_TOKEN` (opcional) | `search_exploits("CVE-2024-3400")` |
| `get_mitre_techniques` | Mapear una CVE o CWE a las técnicas, tácticas y mitigaciones relevantes de MITRE ATT&CK | Gratis / Sin clave | `get_mitre_techniques("CVE-2021-44228")` |
| `check_poc_availability` | Determinar si existe código de prueba de concepto conocido para una CVE en múltiples fuentes | `GITHUB_TOKEN` (opcional) | `check_poc_availability("CVE-2024-3400")` |
| `get_attack_patterns` | Obtener los detalles de patrones de ataque CAPEC asociados con una CWE o CVE | Gratis / Sin clave | `get_attack_patterns("CWE-89")` |
### Fase 3: Riesgo avanzado e informes (4 herramientas)
| Tool | Description | API Key Required | Example Usage |
|------|-------------|-----------------|---------------|
| `calculate_risk_score` | Calcular una puntuación de riesgo compuesta de 0 a 100 usando CVSS, EPSS, estado de KEV y disponibilidad de PoC | Gratis / Sin clave (se recomienda clave) | `calculate_risk_score("CVE-2024-3400")` |
| `generate_risk_report` | Generar un informe de seguridad ejecutivo formateado para una o más CVEs con recomendaciones | Gratis / Sin clave (se recomienda clave) | `generate_risk_report(["CVE-2024-3400", "CVE-2023-44487"])` |
| `prioritize_cves` | Clasificar una lista de CVEs por puntuación de riesgo compuesta para la priorización del triaje | Gratis / Sin clave (se recomienda clave) | `prioritize_cves(["CVE-2024-3400", "CVE-2023-4966", "CVE-2023-44487"])` |
| `get_trending_cves` | Obtener CVEs en tendencia basándose en puntuaciones EPSS altas y adiciones recientes a KEV | Gratis / Sin clave | `get_trending_cves(days=7, min_epss=0.5)` |
### Inteligencia de red (4 herramientas)
| Tool | Description | API Key Required | Example Usage |
|------|-------------|-----------------|---------------|
| `lookup_ip_reputation` | Consultar el historial de abuso de una dirección IP y la puntuación de confianza a través de AbuseIPDB | `ABUSEIPDB_API_KEY` | `lookup_ip_reputation("185.220.101.34")` |
| `check_ip_noise` | Consultar GreyNoise para actividad de escaneo/ataque de IP, clasificación y CVEs asociadas | `GREYNOISE_API_KEY` | `check_ip_noise("185.220.101.34")` |
| `shodan_host_lookup` | Obtener puertos abiertos, servicios, banners y vulnerabilidades de una IP a través de Shodan | `SHODAN_API_KEY` | `shodan_host_lookup("8.8.8.8")` |
| `passive_dns_lookup` | Obtener los datos históricos de resolución DNS de un dominio desde CIRCL Passive DNS | `CIRCL_PDNS_USER` + `CIRCL_PDNS_PASSWORD` | `passive_dns_lookup("example.com")` |
### Inteligencia de amenazas (4 herramientas)
| Tool | Description | API Key Required | Example Usage |
|------|-------------|-----------------|---------------|
| `virustotal_lookup` | Analizar hashes de archivos, URLs, dominios o IPs contra más de 70 motores antivirus | `VIRUSTOTAL_API_KEY` | `virustotal_lookup(hash="44d88612fea8a8f36de82e1278abb02f")` |
| `search_malware` | Buscar muestras de malware en MalwareBazaar por hash, etiqueta o firma | `ABUSECH_AUTH_KEY` (opcional) | `search_malware(tag="Emotet")` |
| `search_iocs` | Consultar ThreatFox para obtener Indicadores de Compromiso vinculados a familias de malware | `ABUSECH_AUTH_KEY` (opcional) | `search_iocs(malware="CobaltStrike")` |
| `check_ransomware` | Consultar direcciones de pago de ransomware y datos de transacciones desde Ransomwhere | Gratis / Sin clave | `check_ransomware(address="bc1q...")` |
### DevSecOps (3 herramientas)
| Tool | Description | API Key Required | Example Usage |
|------|-------------|-----------------|---------------|
| `scan_dependencies` | Escanear nombres y versiones de paquetes contra OSV.dev para detectar vulnerabilidades conocidas | Gratis / Sin clave | `scan_dependencies(ecosystem="PyPI", packages={"requests": "2.28.0"})` |
| `scan_github_advisories` | Buscar avisos de seguridad de GitHub por ecosistema, paquete o severidad | `GITHUB_TOKEN` (opcional) | `scan_github_advisories(ecosystem="pip", package="django")` |
| `urlscan_check` | Enviar una URL para escaneo u obtener resultados de escaneo anteriores de URLScan.io | `URLSCAN_API_KEY` | `urlscan_check("https://suspicious-site.com")` |
---
## 📦 Instalación
### Requisitos previos
- **Python 3.10+** (se recomienda 3.11 o 3.12)
- **pip** o **uv** como gestor de paquetes
- **Git** para clonar el repositorio
- Un terminal con acceso a las variables de entorno
### Configuración paso a paso```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
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
### Con dependencias de prueba```bash
pip install -e ".[test]"
Las claves API están organizadas por prioridad — obtén primero las claves del Nivel 1 para una cobertura máxima con herramientas gratuitas, y luego agrega progresivamente el Nivel 2 y el Nivel 3 según sea necesario.
⚡ Inicio sin claves: Ocho herramientas funcionan sin ninguna clave API — EPSS, CISA KEV, OSV.dev, MITRE ATT&CK, consultas CWE, análisis CVSS, Ransomwhere y NVD (a una tasa reducida). Puedes empezar a usar el servidor de inmediato e ir añadiendo claves progresivamente.
NVD_API_KEY=
GITHUB_TOKEN=
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_API_KEY= # https://viz.greynoise.io/signup
CIRCL_PDNS_USER= CIRCL_PDNS_PASS=
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
### Configuración de Claude Desktop
**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"
}
}
}
}
⚠️ Importante: Utiliza siempre rutas absolutas. Sal por completo de Claude Desktop (Cmd+Q / Alt+F4) después de cambiar la configuración — recargar no es suficiente.
claude mcp add cve-mcp -- python -m cve_mcp.server
claude mcp add cve-mcp -e NVD_API_KEY=your_key -e VULNCHECK_TOKEN=your_token -- python -m cve_mcp.server
claude mcp list
---
## 🚀 Inicio rápido
### Paso 1: Instalar (2 minutos)```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 .
No se necesita archivo .env. Añade el servidor a Claude Desktop o Claude Code y prueba:
"¿Qué es CVE-2021-44228? ¿Se explota activamente?"
Claude usará lookup_cve (NVD), get_epss_score (EPSS) y check_kev (CISA KEV), todos gratuitos y sin necesidad de claves.
"Analiza estos paquetes de Python en busca de vulnerabilidades: requests 2.28.0, flask 2.2.0, django 3.2.0"
echo 'NVD_API_KEY=your-key-here' > .env
Solicita una clave NVD gratuita en [nvd.nist.gov](https://nvd.nist.gov/developers/request-an-api-key) — instantánea por correo electrónico, aumenta el límite de frecuencia de **5 a 50 solicitudes por 30 segundos**.
### Paso 4: Modo de máxima potencia
Una vez que hayas añadido las claves de Nivel 1 y Nivel 2:
> **"Calcula la puntuación de riesgo para CVE-2024-3400 y dime si deberíamos aplicar el parche de inmediato."**
---
## 💬 Ejemplos de uso
### Escenario 1: "¿Deberíamos parchear Log4Shell de inmediato?"
> **Tú:** Analiza si CVE-2021-44228 (Log4Shell) necesita un parche inmediato. Dame la puntuación de riesgo y tu recomendación.
Claude orquesta múltiples herramientas entre bastidores:```
→ 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
Respuesta de Claude: "CVE-2021-44228 obtiene 97/100 (CRÍTICO). Ejecución remota de código en Apache Log4j, CVSS 10.0, probabilidad EPSS del 97.5%, explotación activa confirmada en CISA KEV, incluidas campañas de ransomware, más de 300 exploits públicos. Parchea inmediatamente."
Tú: Escanea estas dependencias: requests==2.28.0, flask==2.2.0, django==3.2.0, pillow==9.0.0, cryptography==37.0.0``` → scan_dependencies(ecosystem="PyPI", packages={...}) Found 12 vulnerabilities across 4 packages
**La respuesta de Claude:** "Encontré **12 vulnerabilidades** en tus paquetes. **Acción inmediata:** Django 3.2.0 (3 CVEs críticos, incluyendo inyección SQL), Pillow 9.0.0 (desbordamiento de montón), cryptography 37.0.0 (cadena OpenSSL). Actualiza a: django>=4.2.16, pillow>=10.3.0, cryptography>=42.0.0."
### Escenario 3: "Investigar una IP sospechosa"
> **Tú:** Investiga la IP sospechosa 185.220.101.34 — ¿es maliciosa?```
→ 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
Respuesta de Claude: "185.220.101.34 es un nodo de salida Tor conocido clasificado como 100% malicioso por AbuseIPDB con 4,832 informes de abuso. GreyNoise confirma escaneo activo de CVE-2024-3400 (Palo Alto) y CVE-2023-46805 (Ivanti). Recomendación: bloquear en el cortafuegos."
Tú: Genera un informe de seguridad ejecutivo para: CVE-2024-3400, CVE-2023-44487, CVE-2023-4966, CVE-2024-21887``` → compare_cves([...]) Compiles: NVD, EPSS, KEV, PoC availability, MITRE ATT&CK mapping Generates: Ranked risk table, remediation timeline, executive summary
---
## 📊 Explicación de la puntuación de riesgo
La herramienta `calculate_risk_score` produce una **puntuación de riesgo compuesta de 0 a 100** al ponderar cuatro señales independientes.
### La fórmula```
Risk Score = (CVSS × 0.20) + (EPSS × 0.35) + (KEV × 0.30) + (PoC × 0.15)
La puntuación se limita a un máximo de 100.
El puntuador numérico es scoring_version 1.0 (expuesto en triage_cve, calculate_risk_score y health_check). La suma ponderada lineal anterior es el valor predeterminado de v1 para la puntuación numérica, con una anulación estricta:
Act / Attend / Track* / Track) está disponible mediante triage_cve(depth="deep") como alternativa cualitativa y explicable al número de 0–100.EPSS recibe el mayor peso (35 %) porque es el mejor predictor individual de la explotación real — mucho mejor que CVSS por sí solo. Un CVSS 10.0 con EPSS 0.01 es teóricamente peligroso, pero prácticamente improbable. KEV con 30 % es la verdad de referencia: explotación confirmada, no una predicción. CVSS con 20 % captura el contexto de gravedad para CVEs nuevos con datos de EPSS insuficientes. PoC con 15 % refleja que los exploits públicos aceleran drásticamente los ataques en el mundo real.
triage_cve — una única llamada de herramienta que lanza en paralelo NVD + EPSS + CISA KEV (+ descubrimiento público de PoC para depth != "quick"), calcula la puntuación de riesgo compuesta y devuelve un informe claro. depth puede ser quick / standard (predeterminado) / deep; deep además emite la decisión con compuertas SSVC v2.triage_cve usa automáticamente cuando el NVD de NIST es inaccesible o está limitado), CIRCL hashlookup y la API de rangos de HIBP Pwned Passwords.scoring_version — los CVE incluidos en KEV son siempre CRITICAL (puntuación ≥ 76); la versión de puntuación se informa en triage_cve y health_check.pytest tests/ -v
pytest tests/test_validators.py tests/test_risk_scorer.py -v
pytest tests/ -v --cov=src/cve_mcp --cov-report=term-missing
### Prueba con el MCP Inspector```bash
npx @modelcontextprotocol/inspector python -m cve_mcp.server
Se abre en http://localhost:6274 — prueba interactivamente cada herramienta, consulta los esquemas de entrada e inspecciona los formatos de respuesta.
src/cve_mcp/ ├── server.py # FastMCP server — all 27 @mcp.tool() definitions ├── config.py # Environment config and API base URLs ├── models.py # Pydantic models (CVERecord, KEVEntry, EPSSScore, ...) ├── audit.py # Rotating audit log (50MB, 5 backups) ├── api/ │ ├── nvd_client.py # NVD REST API v2.0 │ ├── osv_client.py # OSV.dev package vulnerability API │ ├── epss_client.py # FIRST EPSS API │ ├── kev_client.py # CISA KEV catalog │ ├── ip_intel.py # AbuseIPDB + GreyNoise │ ├── domain_intel.py # crt.sh + CIRCL passive DNS │ ├── shodan_client.py # Shodan host intelligence │ ├── hash_intel.py # MalwareBazaar + VirusTotal │ ├── url_safety.py # URLScan.io │ ├── malware_intel.py # ThreatFox IOC lookup │ ├── ransomware_intel.py# Ransomwhere Bitcoin address lookup │ ├── exploit_intel.py # GitHub PoC/exploit search │ ├── vendor_advisory.py # MSRC + Red Hat + Ubuntu advisories │ ├── attack_mapping.py # MITRE ATT&CK STIX mapping │ ├── cve_timeline.py # CVE event timeline builder │ ├── dependency_scan.py # OSV-based dependency scanning │ ├── poc_checker.py # GitHub + Exploit-DB + Nuclei PoC search │ ├── report_generator.py# Vuln report + CVE comparison matrix │ └── rate_limiter.py # Token bucket rate limiter for NVD ├── cache/ │ └── sqlite_cache.py # Async SQLite cache with per-key TTL └── utils/ ├── validators.py # CVE ID normalization, IP/hash validation └── risk_scorer.py # Composite risk score computation
### Estrategia de caché
| Recurso | TTL |
|----------|-----|
| Registros CVE (NVD) | 1 hora |
| Puntuaciones EPSS | 6 horas |
| Catálogo KEV | 1 hora |
| Inteligencia de IP / dominio | 1 hora |
| CSV de Exploit-DB | 24 horas |
| Datos STIX de ATT&CK | 24 horas |
| Inteligencia de ransomware | 24 horas |
### Registro de auditoría
Cada invocación de la herramienta se registra en `~/.cve-mcp/audit.log`:
``````json
{
"timestamp": "2026-04-14T10:23:45.123Z",
"tool": "lookup_cve",
"parameters": {"cve_id": "CVE-2024-3400"},
"duration_ms": 342,
"cache_hit": false,
"status": "ok"
}
Las claves de API y los payloads de respuesta nunca se escriben en los registros de auditoría.
Todas las herramientas de inteligencia de red bloquean los rangos de IP privados y reservados antes de cualquier llamada a una API externa:
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 (RFC 1918)127.0.0.0/8 (loopback), 169.254.0.0/16 (enlace local)::1, fc00::/7 (IPv6 privada).env está en gitignoredefusedxml se utiliza para todo el análisis XML para prevenir ataques de bomba XML (billion laughs, inyección XXE).
pip install -e . python --version # must be 3.10+
**Claude Desktop no muestra el icono de martillo (🔨)**
- Comprueba si hay errores de sintaxis JSON (sin comas finales) en tu configuración
- Usa **rutas absolutas** — las rutas relativas fallan silenciosamente
- Cierra por completo Claude Desktop (Cmd+Q / Alt+F4) y reinícialo
### NVD limitado por tasa```bash
# Add your free NVD API key to .env
NVD_API_KEY=your-key-here
# https://nvd.nist.gov/developers/request-an-api-key
El servidor encola automáticamente las solicitudes en exceso, pero con una clave obtienes 10× más de rendimiento.
curl -H "key: YOUR_KEY" https://api.greynoise.io/v3/ip/8.8.8.8
### Problemas de codificación de Windows```powershell
$env:PYTHONUTF8 = "1"
$env:PYTHONIOENCODING = "utf-8"
Las contribuciones son bienvenidas.
Añade la función de la herramienta en server.py con el decorador @mcp.tool()
Añade la validación de entrada en utils/validators.py
Implementa el cliente de API en api/
Añade pruebas en tests/
Actualiza este README```python @mcp.tool() async def my_new_tool(param: str, ctx: Context = None) -> str: """ One-line description for Claude to know when to use this tool.
Args: param: Description of the parameter """ app = _get_app(ctx)
### Requisitos de prueba
- Todas las herramientas nuevas deben tener al menos una prueba offline con respuestas simuladas
- Los cambios en la puntuación de riesgo deben incluir casos de prueba de verificación de fórmulas
- Las herramientas de red deben incluir una prueba que verifique el bloqueo de IP privadas
- Todas las pruebas deben pasar: `pytest tests/ -v`
---
## 📄 Licencia
Licencia MIT — consulte [LICENSE](https://github.com/mukul975/cve-mcp-server/blob/HEAD/LICENSE) para obtener detalles.```
Copyright (c) 2025-2026 Mahipal Jangra (mukul975)
Construido con 🔐 por Mahipal Jangra · Berlín, Alemania
Convirtiendo la inteligencia de seguridad en conversación.
| Variable de entorno | Habilita | Cómo obtenerla | Límites del plan gratuito | ¿Requerida? |
|---|
NVD_API_KEY | Búsquedas NVD 10× más rápidas (50 solicitudes/30 s frente a 5) | Solicítala en nvd.nist.gov | 50 solicitudes por 30 segundos | Opcional pero muy recomendable |
GITHUB_TOKEN | Búsqueda en GitHub Advisory + búsqueda de PoC de exploits | Crea un PAT en github.com/settings/tokens | 5.000 solicitudes/hora | Opcional (60/h sin ella) |
| Variable de entorno | Habilita | Cómo obtenerla | Límites del plan gratuito | ¿Requerida? |
|---|
ABUSEIPDB_KEY | Consultas de reputación de IP | Regístrate en abuseipdb.com | 1.000 comprobaciones/día | Requerida para herramientas de IP |
VIRUSTOTAL_KEY | Escaneo de malware en archivos/URLs/dominios/IPs | Regístrate en virustotal.com | 500 consultas/día, 4/min | Requerida para herramientas VT |
GREYNOISE_API_KEY | Inteligencia sobre actividad de ruido/escaneo de IPs | Regístrate en viz.greynoise.io | 50 consultas/semana (comunidad) | Requerida para herramientas GreyNoise |
SHODAN_KEY | Reconocimiento de hosts/puertos/servicios | Regístrate en account.shodan.io | Consultas básicas de hosts (plan gratuito) | Requerida para herramientas Shodan |
| Variable de entorno | Habilita | Cómo obtenerla | Límites del plan gratuito | ¿Requerida? |
|---|
URLSCAN_KEY | Escaneo de URL y análisis de sitios web | Regístrate en urlscan.io | 5.000 escaneos públicos/día | Opcional |
CIRCL_PDNS_USER | Consultas de DNS pasivo de CIRCL | Solicita acceso en circl.lu | Solo acceso para socios | Opcional |
CIRCL_PDNS_PASS | Autenticación de DNS pasivo de CIRCL | Se proporciona con el registro en CIRCL | Solo acceso para socios | Opcional |
| Componente | Peso | Qué captura |
|---|
| Puntuación base CVSS v3.1 | 20% | Gravedad teórica en el peor de los casos |
| Probabilidad EPSS | 35% | Probabilidad estadística de explotación en los próximos 30 días |
| Estado CISA KEV | 30% | Explotación activa confirmada en la naturaleza |
| Disponibilidad de PoC | 15% | El código de explotación público reduce la barrera para los atacantes |
| Puntuación | Etiqueta | Acción recomendada |
|---|
| 0 – 25 | LOW | Programar para la próxima ventana de mantenimiento |
| 26 – 50 | MEDIUM | Aplicar parche en 30 días según SLA |
| 51 – 75 | HIGH | Aplicar parche en 7 días; escalar al líder del equipo |
| 76 – 100 | CRITICAL | Aplicar parche en 24–48 horas. Ventana de cambio de emergencia. |
MCP_TRANSPORT=httpHOST:PORT0.0.0.0:8000Dockerfilekev://catalog, epss://scores/{cve_id} y manifest://tool-hash (SHA-256 sobre la superficie de herramientas registrada); prompts patch_decision, compare_and_prioritize y dependency_triage.sampling/createMessage (vector de ataque de muestreo MCP de Unit 42); las nuevas rutas salientes están en la lista blanca de esquema/host.| # | Fuente | Datos proporcionados | Autenticación | Límite de tasa (gratuito) |
|---|
| 1 | NVD | Detalles de CVE, CVSS, CWEs, CPEs | cabecera apiKey (opcional) | 5 req/30s (50 con clave) |
| 2 | EPSS | Probabilidad de explotación y percentiles | Ninguna | 1,000 req/min |
| 3 | CISA KEV | Catálogo de CVE explotados activamente | Ninguna | Archivo estático |
| 4 | OSV.dev | Vulnerabilidades de paquetes de código abierto | Ninguna | Sin límite publicado |
| 5 | GitHub Advisories | Avisos GHSA, parches, versiones afectadas | token Bearer | 60/hr (5,000 con PAT) |
| 6 | MITRE ATT&CK | TTP, técnicas, mitigaciones | Ninguna | Sin límite publicado |
| 7 | AbuseIPDB | Confianza de abuso de IP, informes, ISP, geo | cabecera Key | 1,000 comprobaciones/día |
| 8 | GreyNoise | Ruido de IP / actividad de escaneo, clasificación | cabecera key | 50 consultas/semana |
| 9 | Shodan | Puertos abiertos, servicios, banners, CVE | parámetro de consulta key | Consultas básicas |
| 10 | VirusTotal | Resultados de escaneo de múltiples antivirus, reputación | cabecera x-apikey | 500/día, 4/min |
| 11 | MalwareBazaar | Muestras de malware, hashes, firmas | cabecera Auth-Key | Uso justo |
| 12 | ThreatFox | IOC vinculados a familias de malware | cabecera Auth-Key | Uso justo |
| 13 | Ransomwhere | Direcciones BTC de ransomware y transacciones | Ninguna | Sin límite publicado |
| 14 | URLScan.io | Escaneo de URL, capturas de pantalla, DOM | cabecera API-Key | 5,000 escaneos públicos/día |
| 15 | CIRCL PDNS | Registros DNS pasivos históricos | HTTP Basic Auth | Acceso para socios |
| 16 | GitHub Code Search | Búsqueda de repositorios de PoC de exploits | token Bearer | Comparte límites con GHSA |
| 17 | Exploit-DB | CSV de la base de datos pública de exploits | Ninguna | Sin límite publicado |
| 18 | Nuclei Templates | Plantillas de detección de la comunidad | Ninguna | Sin límite publicado |
| 19 | MSRC | Avisos de seguridad de Microsoft | Ninguna | Sin límite publicado |
| 20 | Red Hat Security | Avisos de CVE de Red Hat | Ninguna | Sin límite publicado |
| 21 | Ubuntu Security | Rastreador de CVE de Ubuntu | Ninguna | Sin límite publicado |
| 22 | VulnCheck NVD++ | Registros de CVE con esquema NVD (respaldo transparente de NVD) | token Bearer (Comunidad gratuita) | Según el nivel de la Comunidad VulnCheck |
| 23 | CIRCL hashlookup | Metadatos de archivos conocidos como seguros (NSRL + otros), hashlookup:trust | Ninguna | Mejor esfuerzo |
| 24 | HIBP Pwned Passwords | Recuentos de contraseñas filtradas mediante la API de rangos con k-anonimato | Ninguna | Sin límite estricto |