<p align="center">
  <a href="README.md">English</a> |
  <a href="README.zh.md">简体中文</a> |
  <a href="README.zh-TW.md">繁體中文</a> |
  <a href="README.ko.md">한국어</a> |
  <a href="README.de.md">Deutsch</a> |
  <a href="README.es.md">Español</a> |
  <strong>Français</strong> |
  <a href="README.it.md">Italiano</a> |
  <a href="README.da.md">Dansk</a> |
  <a href="README.ja.md">日本語</a> |
  <a href="README.pl.md">Polski</a> |
  <a href="README.ru.md">Русский</a> |
  <a href="README.bs.md">Bosanski</a> |
  <a href="README.ar.md">العربية</a> |
  <a href="README.no.md">Norsk</a> |
  <a href="README.pt-BR.md">Português (Brasil)</a> |
  <a href="README.th.md">ไทย</a> |
  <a href="README.tr.md">Türkçe</a> |
  <a href="README.uk.md">Українська</a> |
  <a href="README.bn.md">বাংলা</a> |
  <a href="README.el.md">Ελληνικά</a> |
  <a href="README.vi.md">Tiếng Việt</a> |
  <a href="README.hi.md">हिन्दी</a>
</p>

<p align="center">
  <br>
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/badchars/cve-mcp/main/.github/banner-dark.svg">
    <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/badchars/cve-mcp/main/.github/banner-light.svg">
    <img alt="cve-mcp" src="https://raw.githubusercontent.com/badchars/cve-mcp/main/.github/banner-dark.svg" width="700">
  </picture>
</p>

<h3 align="center">Intelligence CVE et vulnérabilités pour les agents IA.</h3>

<p align="center">
  NVD, EPSS, CISA KEV, GitHub Advisory, OSV, Shodan, VulnCheck, Vulners, Nuclei, Metasploit, CIRCL, AttackerKB et MITRE ATT&amp;CK &mdash; unifiés dans un seul serveur MCP.<br>
  Votre agent IA obtient une <b>intelligence des vulnérabilités à la demande</b>, pas un rapport de 200 pages.
</p>

<br>

<p align="center">
  <a href="#le-problème">Le problème</a> &bull;
  <a href="#en-quoi-cest-différent">En quoi c'est différent</a> &bull;
  <a href="#démarrage-rapide">Démarrage rapide</a> &bull;
  <a href="#ce-que-lia-peut-faire">Ce que l'IA peut faire</a> &bull;
  <a href="#référence-des-outils-41-outils">Outils</a> &bull;
  <a href="#sources-de-données">Sources de données</a> &bull;
  <a href="#architecture">Architecture</a> &bull;
  <a href="CONTRIBUTING.md">Contribuer</a> &bull;
  <a href="CHANGELOG.md">Changelog</a>
</p>

<p align="center">
  <a href="https://www.npmjs.com/package/cve-mcp"><img src="https://img.shields.io/npm/v/cve-mcp.svg" alt="npm"></a>
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License"></a>
  <img src="https://img.shields.io/badge/runtime-Bun-f472b6" alt="Bun">
  <img src="https://img.shields.io/badge/protocol-MCP-8b5cf6" alt="MCP">
  <img src="https://img.shields.io/badge/tools-41-f97316" alt="41 Tools">
  <img src="https://img.shields.io/badge/sources-11-ef4444" alt="11 Sources">
</p>

---

## Le problème

L'intelligence des vulnérabilités est dispersée dans plusieurs bases de données. NVD contient les détails CVE. EPSS indique la probabilité d'exploitation. CISA KEV suit les vulnérabilités activement exploitées. GitHub Advisory couvre les paquets open source. OSV associe les vulnérabilités à des versions spécifiques de paquets. Shodan suit l'exposition sur internet. Nuclei et Metasploit indiquent s'il existe un exploit fonctionnel. Aucun outil unique ne les agrège, et aucun ne fonctionne avec les agents IA.

```
Flux de travail traditionnel :
  rechercher les détails CVE dans NVD     →  naviguer dans une UI web encombrante
  vérifier le risque d'exploitation EPSS  →  API séparée, format séparé
  consulter le statut CISA KEV            →  télécharger un flux JSON manuellement
  rechercher les avis GitHub              →  encore une autre interface
  interroger l'impact sur les paquets OSV →  API différente, schéma différent
  vérifier Shodan pour l'exposition       →  abonnement séparé
  chercher les exploits Nuclei/MSF        →  recherche manuelle sur GitHub
  mapper aux techniques ATT&CK            →  recherche séparée sur MITRE
  tout corréler                           →  copier-coller dans un tableur
  ──────────────────────────────────
  Total : plus de 30 minutes par CVE, plus long pour le tri en masse
```

**cve-mcp** donne à votre agent IA 41 outils via le [Model Context Protocol](https://modelcontextprotocol.io). L'agent interroge 11 sources en parallèle, corrèle les données, détecte les signaux d'armement, calcule les scores de risque et vous dit exactement ce qui compte.

```
Avec cve-mcp :
  Vous : "Priorise ces 10 CVEs par risque réel d'exploitation"

  Agent : → récupère les scores CVSS depuis NVD
          → obtient la probabilité d'exploitation EPSS pour chacun
          → vérifie CISA KEV pour l'exploitation active
          → croise les avis GitHub pour les correctifs
          → "3 sont critiques : CVE-2024-3400 (EPSS 97%, dans KEV),
             CVE-2023-44487 (HTTP/2 Rapid Reset, EPSS 96%),
             CVE-2021-44228 (Log4Shell, EPSS 97%, dans KEV).
             Voici les correctifs et versions affectées..."
```

---

## En quoi c'est différent

Les outils existants vous donnent des données brutes. cve-mcp donne à votre agent IA la capacité de raisonner sur les vulnérabilités.

<table>
<thead>
<tr>
<th></th>
<th>Outils traditionnels</th>
<th>cve-mcp</th>
</tr>
</thead>
<tbody>
<tr>
<td><b>Interface</b></td>
<td>UI web / CLI / appels API bruts</td>
<td>MCP &mdash; l'agent IA appelle les outils de manière conversationnelle</td>
</tr>
<tr>
<td><b>Sources de données</b></td>
<td>Une base de données à la fois</td>
<td>11 sources en parallèle : NVD, EPSS, KEV, GHSA, OSV, Shodan, VulnCheck, Vulners, Nuclei, Metasploit, CIRCL</td>
</tr>
<tr>
<td><b>Score de risque</b></td>
<td>CVSS uniquement (sévérité, pas exploitabilité)</td>
<td>CVSS &times; EPSS &times; KEV &times; Multiplicateur d'exploit (Nuclei/MSF) = risque réel</td>
</tr>
<tr>
<td><b>Corrélation</b></td>
<td>Copier-coller manuel</td>
<td>L'agent enrichit : "CVSS 9.8, EPSS 97%, KEV, template Nuclei existe, module MSF disponible, mappe vers T1190"</td>
</tr>
<tr>
<td><b>Tri en masse</b></td>
<td>Un CVE à la fois</td>
<td>L'agent priorise 50 CVEs en une seule conversation</td>
</tr>
<tr>
<td><b>Impact sur les paquets</b></td>
<td>Recherche OSV/GHSA séparée</td>
<td>L'agent trouve automatiquement les paquets affectés + versions</td>
</tr>
<tr>
<td><b>Dépendances</b></td>
<td>Outils CLI lourds, environnements Python</td>
<td>2 dépendances d'exécution, s'exécute avec npx</td>
</tr>
</tbody>
</table>

---

## Démarrage rapide

### Option 1 : npx (sans installation)

```bash
npx cve-mcp
```

### Option 2 : Cloner

```bash
git clone https://github.com/badchars/cve-mcp.git
cd cve-mcp
bun install
```

### Variables d'environnement (toutes optionnelles)

```bash
# Augmente la limite de débit NVD de 5 à 50 requêtes par 30 secondes
export NVD_API_KEY=your-nvd-api-key

# Active la recherche GitHub Advisory (60 → 5000 requêtes/heure)
export GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# VulnCheck KEV étendu, recherche CPE, PURL
export VULNCHECK_API_KEY=your-vulncheck-key

# Recherche de vulnérabilités Vulners sur plus de 200 sources
export VULNERS_API_KEY=your-vulners-key

# Évaluations communautaires AttackerKB
export ATTACKERKB_API_KEY=your-attackerkb-key
```

Toutes sont optionnelles. Le serveur fonctionne sans elles — certains outils ont simplement des limites de débit plus basses ou des données réduites.

### Connecter à votre agent IA

<details open>
<summary><b>Claude Code</b></summary>

```bash
# Avec npx
claude mcp add cve-mcp -- npx cve-mcp

# Avec un clone local
claude mcp add cve-mcp -- bun run /path/to/cve-mcp/src/index.ts
```

</details>

<details>
<summary><b>Claude Desktop</b></summary>

Ajouter à `~/Library/Application Support/Claude/claude_desktop_config.json` :

```json
{
  "mcpServers": {
    "cve-mcp": {
      "command": "npx",
      "args": ["cve-mcp"],
      "env": {
        "NVD_API_KEY": "optional-key",
        "GITHUB_TOKEN": "optional-token",
        "VULNCHECK_API_KEY": "optional-key",
        "VULNERS_API_KEY": "optional-key",
        "ATTACKERKB_API_KEY": "optional-key"
      }
    }
  }
}
```

</details>

<details>
<summary><b>Cursor / Windsurf / autres clients MCP</b></summary>

Même format de configuration JSON. Pointez la commande vers `npx cve-mcp` ou votre chemin d'installation.

</details>

### Commencer à interroger

```
Vous : "Que sais-tu sur CVE-2024-3400 ?"
```

C'est tout. L'agent s'occupe du reste.

---

## Ce que l'IA peut faire

### Réponse aux incidents

```
Vous : "On a été touché par CVE-2024-3400. Donne-moi tout."

Agent : → cve_enrich {cveId: "CVE-2024-3400"}
        → NVD : Injection de commande PAN-OS, CVSS 10.0
        → EPSS : 97,2% de probabilité d'exploitation
        → KEV : Ajouté le 2024-04-12, échéance 2024-05-01
        → Shodan : 4 CPEs, exposé sur internet
        → Nuclei : Template de détection existe (critique)
        → Metasploit : Module d'exploit disponible (rang excellent)
        → "Critique. Armé — modules Nuclei et MSF existent.
           PAN-OS GlobalProtect, versions < 10.2.9-h1.
           Corriger immédiatement. Échéance CISA : 1er mai."
```

### Priorisation des vulnérabilités

```
Vous : "Priorise ces CVEs de notre scan : CVE-2021-44228, CVE-2024-3400,
       CVE-2023-44487, CVE-2024-21762, CVE-2023-4966"

Agent : → cve_prioritize {cves: [...]}
        → Classement par CVSS × EPSS × multiplicateur KEV
        → "#1 : CVE-2024-3400 (risque : 19,44, CVSS 10.0, EPSS 97%, KEV)
           #2 : CVE-2021-44228 (risque : 19,40, CVSS 10.0, EPSS 97%, KEV)
           #3 : CVE-2023-4966 (risque : 19,10, CVSS 9.4, EPSS 97%, KEV)
           Les 5 sont dans CISA KEV — corriger tous immédiatement."
```

### Audit des dépendances

```
Vous : "Vérifie si lodash 4.17.20 et django 3.2.0 ont des vulnérabilités connues"

Agent : → osv_batch {queries: [
           {package: "lodash", version: "4.17.20", ecosystem: "npm"},
           {package: "django", version: "3.2.0", ecosystem: "PyPI"}
        ]}
        → "lodash 4.17.20 : 3 vulnérabilités (pollution de prototype)
           django 3.2.0 : 12 vulnérabilités (injection SQL, XSS)
           Mettre à jour lodash vers 4.17.21+, django vers 4.2+"
```

### Surveillance des menaces

```
Vous : "Quels sont les CVEs les plus susceptibles d'être exploités en ce moment ?"

Agent : → cve_trending {limit: 10, minEpss: 0.9}
        → "Top 10 par probabilité d'exploitation :
           1. CVE-2024-3400 — PAN-OS (EPSS 97,2%, CVSS 10.0, KEV)
           2. CVE-2023-44487 — HTTP/2 Rapid Reset (EPSS 96,5%, CVSS 7.5, KEV)
           ..."
```

### Analyse approfondie CVSS (v3.1 et v4.0)

```
Vous : "Décompose ce vecteur CVSS v4.0 : CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N"

Agent : → cvss_parse {vector: "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N"}
        → "CVSS v4.0 — Score : 9.3 (CRITIQUE)
           Attaque réseau, complexité faible, aucune exigence d'attaque.
           Aucun privilège, aucune interaction utilisateur.
           Système vulnérable : impact total C/I/A.
           Systèmes subséquents : aucun impact."
```

### Cartographie ATT&CK

```
Vous : "Mappe CVE-2024-3400 aux techniques MITRE ATT&CK"

Agent : → cve_to_attack {cweIds: ["CWE-77"]}
        → "CWE-77 (Command Injection) mappe vers :
           T1059 — Command and Scripting Interpreter (Execution)
           T1190 — Exploit Public-Facing Application (Initial Access)"
```

---

## Référence des outils (41 outils)

<details>
<summary><b>NVD (4)</b></summary>

| Outil | Description |
|-------|-------------|
| `nvd_search` | Rechercher des CVEs par mot-clé, sévérité, CWE, plage de dates |
| `nvd_get` | Obtenir les détails complets d'un CVE (CVSS, CWE, CPE, références) |
| `nvd_recent` | CVEs récemment publiés/modifiés |
| `cve_by_product` | Rechercher des CVEs par nom de produit (correspondance mot-clé CPE) |

</details>

<details>
<summary><b>EPSS (2)</b></summary>

| Outil | Description |
|-------|-------------|
| `epss_score` | Probabilité d'exploitation EPSS pour un ou plusieurs CVEs |
| `epss_top` | CVEs principaux par probabilité d'exploitation |

</details>

<details>
<summary><b>KEV (3)</b></summary>

| Outil | Description |
|-------|-------------|
| `kev_check` | Vérifier si des CVE(s) sont dans le catalogue CISA des vulnérabilités exploitées connues |
| `kev_search` | Rechercher KEV par fournisseur, produit ou mot-clé |
| `kev_recent` | Entrées KEV récemment ajoutées |

</details>

<details>
<summary><b>GHSA (2)</b></summary>

| Outil | Description |
|-------|-------------|
| `ghsa_search` | Rechercher les avis de sécurité GitHub par mot-clé, écosystème, sévérité |
| `ghsa_get` | Obtenir les détails d'un avis par ID GHSA ou ID CVE |

</details>

<details>
<summary><b>OSV (3)</b></summary>

| Outil | Description |
|-------|-------------|
| `osv_query` | Interroger les vulnérabilités pour une version spécifique de paquet |
| `osv_get` | Obtenir les détails d'une vulnérabilité par ID OSV/GHSA/CVE |
| `osv_batch` | Interroger plusieurs paquets en lot |

</details>

<details>
<summary><b>Exploit (1)</b></summary>

| Outil | Description |
|-------|-------------|
| `exploit_search` | Rechercher des exploits PoC publics (dépôts GitHub) |

</details>

<details>
<summary><b>Shodan (3)</b></summary>

| Outil | Description |
|-------|-------------|
| `shodan_cve` | Recherche CVE via Shodan CVEDB (EPSS, KEV, CPE intégrés, sans authentification) |
| `shodan_product` | Trouver des CVEs par nom de produit/fournisseur via Shodan |
| `shodan_ip_vulns` | Obtenir les vulnérabilités connues pour une adresse IP (InternetDB) |

</details>

<details>
<summary><b>VulnCheck (3)</b></summary>

| Outil | Description |
|-------|-------------|
| `vulncheck_kev` | Catalogue KEV étendu (~80% d'entrées en plus que CISA) |
| `vulncheck_cpe` | Recherche CVE par chaîne CPE |
| `vulncheck_purl` | Recherche CVE par Package URL (purl) |

</details>

<details>
<summary><b>Vulners (2)</b></summary>

| Outil | Description |
|-------|-------------|
| `vulners_lookup` | Détails CVE depuis Vulners (plus de 200 sources, références d'exploits) |
| `vulners_search` | Recherche plein texte dans la base de données Vulners |

</details>

<details>
<summary><b>Nuclei & Metasploit (2)</b></summary>

| Outil | Description |
|-------|-------------|
| `nuclei_check` | Vérifier si un template de détection Nuclei existe pour un CVE |
| `msf_check` | Vérifier si un module d'exploit Metasploit existe pour un CVE |

</details>

<details>
<summary><b>CPE (2)</b></summary>

| Outil | Description |
|-------|-------------|
| `cpe_search` | Rechercher dans le dictionnaire CPE de NVD par mot-clé |
| `cpe_match` | Obtenir les correspondances CPE pour un CVE spécifique |

</details>

<details>
<summary><b>CIRCL (1)</b></summary>

| Outil | Description |
|-------|-------------|
| `circl_cve` | Enrichissement CVE de CIRCL (CAPEC, références alternatives, vecteurs d'impact) |

</details>

<details>
<summary><b>AttackerKB (1)</b></summary>

| Outil | Description |
|-------|-------------|
| `attackerkb_assess` | Évaluations communautaires d'AttackerKB (valeur pour l'attaquant, exploitabilité) |

</details>

<details>
<summary><b>ATT&CK (1)</b></summary>

| Outil | Description |
|-------|-------------|
| `cve_to_attack` | Mapper les IDs CWE d'un CVE aux techniques et tactiques MITRE ATT&CK |

</details>

<details>
<summary><b>CWE (4)</b></summary>

| Outil | Description |
|-------|-------------|
| `cwe_lookup` | Rechercher une faiblesse CWE par ID ou rechercher par mot-clé (BD statique) |
| `cwe_get` | Détails complets CWE depuis l'API MITRE (plus de 1000 CWEs, atténuations, exemples) |
| `cwe_hierarchy` | Hiérarchie parent/enfant CWE depuis l'API MITRE |
| `cwe_top25` | MITRE CWE Top 25 des faiblesses logicielles les plus dangereuses |

</details>

<details>
<summary><b>CVSS (1)</b></summary>

| Outil | Description |
|-------|-------------|
| `cvss_parse` | Analyser et expliquer une chaîne de vecteur CVSS v3.1 ou v4.0 avec calcul du score |

</details>

<details>
<summary><b>Meta (6)</b></summary>

| Outil | Description |
|-------|-------------|
| `cve_enrich` | Enrichissement complet : NVD + EPSS + KEV + GHSA + OSV + Shodan + Nuclei + MSF en parallèle |
| `cve_prioritize` | Classer les CVEs par risque (CVSS &times; EPSS &times; KEV &times; Multiplicateur d'exploit) |
| `cve_trending` | CVEs actuellement en tendance par probabilité d'exploitation |
| `cve_compare` | Comparaison côte à côte de deux CVEs |
| `cve_list_sources` | Lister les 11 sources de données et leur disponibilité |
| `cve_report` | Générer un rapport de vulnérabilités en Markdown |

</details>

---

## Sources de données

| Source | Authentification | Ce qu'elle fournit |
|--------|-----------------|-------------------|
| [NVD](https://nvd.nist.gov/) | Optionnel `NVD_API_KEY` | Détails CVE, scores CVSS, correspondances CWE, produits affectés CPE, références |
| [EPSS](https://www.first.org/epss/) | Aucune | Score de probabilité d'exploitation (0-1) et classement par percentile |
| [CISA KEV](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) | Aucune | Vulnérabilités exploitées connues avec délais de remédiation |
| [GitHub Advisory](https://github.com/advisories) | Optionnel `GITHUB_TOKEN` | Avis de sécurité open source, paquets affectés, sévérité |
| [OSV](https://osv.dev/) | Aucune | Données de vulnérabilités au niveau des paquets sur plus de 16 écosystèmes |
| [Shodan CVEDB](https://cvedb.shodan.io/) | Aucune | Recherche CVE avec EPSS/KEV/CPE intégrés, scan de vulnérabilités par IP |
| [VulnCheck](https://vulncheck.com/) | Optionnel `VULNCHECK_API_KEY` | KEV étendu (~80% d'entrées en plus), recherche de vulnérabilités CPE/PURL |
| [Vulners](https://vulners.com/) | Optionnel `VULNERS_API_KEY` | Recherche de vulnérabilités sur plus de 200 sources, références d'exploits |
| [Nuclei Templates](https://github.com/projectdiscovery/nuclei-templates) | Aucune | Vérification d'existence de templates de détection CVE (sévérité, tags) |
| [Metasploit](https://github.com/rapid7/metasploit-framework) | Aucune | Vérification d'existence de modules d'exploit (type, rang, chemin) |
| [CIRCL](https://cve.circl.lu/) | Aucune | Enrichissement CVE avec cartographie CAPEC, références alternatives, vecteurs d'impact |
| [AttackerKB](https://attackerkb.com/) | Optionnel `ATTACKERKB_API_KEY` | Évaluations communautaires (valeur pour l'attaquant, classements d'exploitabilité) |
| [MITRE ATT&CK](https://attack.mitre.org/) | Aucune | Cartographie CWE-vers-ATT&CK (tactiques, techniques) |
| [MITRE CWE](https://cwe-api.mitre.org/) | Aucune | Base de données CWE complète (plus de 1000 faiblesses, hiérarchie, atténuations) |

### Formule du score de risque

```
Score de risque = Score de base CVSS × Score EPSS × Multiplicateur KEV × Multiplicateur d'Exploit

Où :
  Score de base CVSS        = 0-10 (sévérité depuis NVD)
  Score EPSS                = 0-1 (probabilité d'exploitation depuis FIRST)
  Multiplicateur KEV        = 2 si dans CISA KEV, 1 sinon
  Multiplicateur d'Exploit  = 1.5 si template Nuclei OU module Metasploit existe, 1 sinon
```

Cela fournit un score de risque pratique qui équilibre la sévérité (CVSS) avec la probabilité d'exploitation réelle (EPSS), l'exploitation active connue (KEV) et les signaux d'armement (outils d'exploit publics).

---

## Architecture

```
src/
├── index.ts                    Point d'entrée + MCP stdio
├── types/
│   └── index.ts                ToolDef, ToolContext, ToolResult, types API
├── protocol/
│   ├── tools.ts                41 définitions d'outils (Zod schemas)
│   └── mcp-server.ts           Serveur MCP + transport stdio
├── nvd/
│   ├── index.ts                NVD API v2 — recherche, obtention, récents
│   └── cpe.ts                  Recherche produit/CPE
├── epss/
│   └── index.ts                EPSS — score, top
├── kev/
│   └── index.ts                KEV — vérification, recherche, récents (en cache)
├── ghsa/
│   └── index.ts                GitHub Advisory — recherche, obtention
├── osv/
│   └── index.ts                OSV — requête, obtention, lot
├── exploit/
│   └── index.ts                Recherche de PoC via dépôts GitHub
├── shodan/
│   └── index.ts                Shodan CVEDB + InternetDB (sans authentification)
├── vulncheck/
│   └── index.ts                VulnCheck KEV, CPE, PURL
├── vulners/
│   └── index.ts                Vulners recherche + consultation
├── nuclei/
│   └── index.ts                Vérification d'existence de templates Nuclei
├── metasploit/
│   └── index.ts                Vérification de modules MSF (métadonnées en cache)
├── cpe/
│   └── index.ts                API du dictionnaire CPE NVD
├── circl/
│   └── index.ts                Enrichissement CVE CIRCL
├── attackerkb/
│   └── index.ts                Évaluations AttackerKB
├── attack/
│   └── index.ts                Cartographie CWE → MITRE ATT&CK
├── cwe/
│   └── index.ts                API CWE (MITRE) + repli statique
├── cvss/
│   └── index.ts                Analyseur CVSS v3.1 + v4.0 + calculateur
├── meta/
│   ├── enrich.ts               Enrichissement complet CVE (8 sources en parallèle)
│   ├── prioritize.ts           Classement CVE basé sur le risque
│   ├── trending.ts             CVEs en tendance par EPSS
│   ├── compare.ts              Comparaison CVE côte à côte
│   └── sources.ts              Vérification de l'état des 11 sources
└── utils/
    ├── rate-limiter.ts          Limiteur de débit basé sur une file
    └── cache.ts                 Cache TTL
```

**Décisions de conception :**

- **Intelligence, pas audit** &mdash; Contrairement à [cloud-audit-mcp](https://github.com/badchars/cloud-audit-mcp) et [github-security-mcp](https://github.com/badchars/github-security-mcp), c'est un outil de données. Pas de CheckResult, pas d'accumulation de résultats. Chaque requête est indépendante et sans état.
- **Enrichissement parallèle** &mdash; `cve_enrich` appelle 8 sources via `Promise.allSettled`. Si une source est indisponible, les autres retournent quand même des données.
- **Détection d'armement** &mdash; Vérifie l'existence de templates Nuclei et de modules Metasploit pour identifier les CVEs avec des outils d'exploit publics.
- **Limiteur de débit partagé** &mdash; Tous les modules NVD partagent une seule instance `RateLimiter` (6s entre les requêtes) pour éviter les erreurs 429.
- **Cache KEV + MSF** &mdash; Le catalogue KEV (~1200 entrées) et les métadonnées de modules MSF (~15Mo) sont chargés une fois et mis en cache avec un TTL de 1 heure.
- **CWE double mode** &mdash; API REST MITRE CWE pour le détail complet (plus de 1000 CWEs), avec repli statique de plus de 40 entrées quand l'API est injoignable.
- **CVSS v3.1 + v4.0** &mdash; Détecte automatiquement la version depuis le préfixe du vecteur. V4.0 utilise l'approche de score MacroVector.
- **Cartographie ATT&CK** &mdash; Table statique CWE-vers-technique (33 entrées CWE → techniques ATT&CK). Aucun appel API.
- **2 dépendances** &mdash; `@modelcontextprotocol/sdk` et `zod`. Rien d'autre.

---

## Limitations

- L'API NVD sans `NVD_API_KEY` est limitée à 5 requêtes par 30 secondes. Configurez la clé pour un usage en production
- La recherche GitHub Advisory sans `GITHUB_TOKEN` est limitée à 60 requêtes par heure
- VulnCheck, Vulners et AttackerKB nécessitent des clés API pour une fonctionnalité complète
- La recherche d'exploits utilise la recherche de dépôts GitHub qui a ses propres limites de débit
- Les métadonnées de modules MSF (~15Mo) sont chargées au premier usage — le premier appel `msf_check` est plus lent
- Le score CVSS v4.0 utilise l'approximation MacroVector (la spécification exacte est très complexe)
- La cartographie ATT&CK couvre 33 entrées CWE — les CWEs rares peuvent ne pas être mappées
- macOS / Linux (Windows non testé)

---

## Fait partie de la suite de sécurité MCP

| Projet | Domaine | Outils |
|--------|---------|--------|
| [hackbrowser-mcp](https://github.com/badchars/hackbrowser-mcp) | Tests de sécurité basés sur le navigateur | 39 outils, Firefox, tests d'injection |
| [cloud-audit-mcp](https://github.com/badchars/cloud-audit-mcp) | Sécurité cloud (AWS/Azure/GCP) | 38 outils, plus de 60 vérifications |
| [github-security-mcp](https://github.com/badchars/github-security-mcp) | Posture de sécurité GitHub | 39 outils, 45 vérifications |
| **cve-mcp** | Intelligence des vulnérabilités | 41 outils, 11 sources |

---

<p align="center">
<b>Uniquement pour les tests et évaluations de sécurité autorisés.</b><br>
Assurez-vous toujours d'avoir l'autorisation appropriée avant de tester des systèmes.
</p>

<p align="center">
  <a href="LICENSE">Licence MIT</a> &bull; Construit avec Bun + TypeScript
</p>
