> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corgea.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Model Context Protocol (MCP)

> Connecter les assistants IA à Corgea en utilisant le Model Context Protocol

Corgea prend en charge le [Model Context Protocol (MCP)](https://modelcontextprotocol.io/), qui permet aux assistants IA tels que Claude d’interagir directement avec vos scans de sécurité, vos problèmes et vos politiques. Grâce à MCP, les modèles d’IA comprennent votre contexte de sécurité et fournissent une assistance plus pertinente.

## Qu’est-ce que MCP ?

Le Model Context Protocol est un standard ouvert qui permet aux modèles d’IA de se connecter de manière sécurisée à des sources de données et à des outils externes. Avec l’intégration MCP de Corgea, les assistants IA peuvent :

* Interroger les résultats de vos scans de sécurité
* Récupérer les détails des vulnérabilités
* Répertorier et filtrer les problèmes de sécurité
* Répertorier et filtrer les problèmes de qualité du code
* Accéder aux données SCA, IaC et d’inventaire des dépendances
* Consulter les règles de blocage et les politiques

## Bien démarrer

### Prérequis

* Un token d’API Corgea, disponible dans les paramètres de votre compte
* Un client compatible avec MCP, par exemple Claude Desktop ou Continue

### Détails de la connexion

**URL du serveur MCP :**

```
https://www.corgea.app/mcp
```

Ou pour les déploiements monolocataire :

```
https://<your-instance>.corgea.app/mcp
```

**Authentification :**
Toutes les requêtes MCP doivent être authentifiées au moyen de votre token d’API Corgea transmis dans l’en-tête `CORGEA-TOKEN`.

<Note>
  Corgea prend en charge les requêtes MCP stateless envoyées par POST avec des réponses JSON. Les flux SSE (Server-Sent Events) autonomes ne sont pas pris en charge.
</Note>

## Outils disponibles

Le serveur MCP de Corgea fournit les outils suivants aux assistants IA :

### get\_scan\_info

Renvoie des informations détaillées sur un scan SAST donné.

**Paramètres :**

* `scan_id` (chaîne, requise) : L’identifiant unique du scan

**Valeur renvoyée :**
Informations détaillées sur le scan, y compris l’état, le nombre de résultats, la date de scan et les informations sur le dépôt.

**Exemple :**

```json theme={null}
{
  "scan_id": "abc123",
  "status": "completed",
  "created_at": "2024-11-01T10:30:00Z",
  "findings_count": 15,
  "project": "my-project",
  "repository": "https://github.com/myorg/myrepo"
}
```

***

### get\_issue\_info

Renvoie des informations détaillées sur un problème de sécurité donné.

**Paramètres :**

* `issue_id` (chaîne, requise) : L’identifiant unique du problème
* `include_reachability` (booléen, facultatif) : inclut les détails d’accessibilité des endpoints pour le problème

**Valeur renvoyée :**
Détails complets du problème, notamment le type de vulnérabilité, la sévérité, l’emplacement, les recommandations de correctif, le statut de remédiation et, sur demande, les détails d’accessibilité des endpoints.

**Exemple :**

```json theme={null}
{
  "issue_id": "issue-456",
  "title": "SQL Injection",
  "severity": "high",
  "file": "src/database.py",
  "line": 42,
  "description": "User input not properly sanitized",
  "fix_available": true
}
```

***

### get\_sca\_issue\_info

Renvoie des informations détaillées sur un problème SCA (Software Composition Analysis) donné.

**Paramètres :**

* `issue_id` (chaîne, requise) : identifiant unique du problème SCA

**Valeur renvoyée :**
Détails du problème SCA, notamment le paquet, la sévérité, la CVE, la version corrigée, l’emplacement du fichier et l’analyse d’accessibilité de la dépendance.

**Exemple :**

```json theme={null}
{
  "status": "ok",
  "issue": {
    "id": "sca-789",
    "package": {
      "name": "lodash",
      "version": "4.17.15",
      "ecosystem": "npm",
      "fix_version": "4.17.21"
    },
    "cve": "CVE-2021-23337",
    "severity": "high",
    "reachability": {
      "status": "vulnerable_usage_reachable",
      "description": "Vulnerable function is reachable from application code",
      "usages": []
    }
  }
}
```

***

### list\_security\_issues

Répertorie les problèmes de sécurité avec des filtres facultatifs.

**Paramètres :**

* `scan_id` (chaîne, facultatif) : filtre les problèmes par identifiant de scan
* `project` (chaîne, facultatif) : filtre les problèmes par nom de projet
* `repo` (chaîne, facultatif) : filtre les problèmes par URL de dépôt
* `include_reachability` (booléen, facultatif) : inclut un résumé de l’accessibilité des endpoints pour chaque problème

**Valeur renvoyée :**
Liste des problèmes de sécurité correspondant aux filtres spécifiés.

**Exemple :**

```json theme={null}
{
  "status": "ok",
  "count": 25,
  "issues": [
    {
      "id": "issue-123",
      "title": "Cross-Site Scripting (XSS)",
      "severity": "medium",
      "status": "open"
    }
  ]
}
```

***

### list\_code\_quality\_issues

Répertorie les problèmes de qualité du code séparément des problèmes de sécurité, avec des filtres facultatifs.

**Paramètres :**

* `scan_id` (chaîne, facultatif) : filtre les problèmes par identifiant de scan
* `project` (chaîne, facultatif) : filtre les problèmes par nom de projet
* `repo` (chaîne, facultatif) : filtre les problèmes par URL de dépôt
* `filters` (objet, facultatif) : filtre par `urgency`, `status`, `confidence`, `language`, `file_path`, `classification`, `sla_status`, `branch`, `show_false_positives` ou `sort_by`
* `page` (entier, facultatif) : numéro de page
* `page_size` (entier, facultatif) : nombre de résultats par page, jusqu’à 50

Le champ `classification` contient le libellé de qualité du code, tel que `Maintainability`, et non une CWE. Les faux positifs sont exclus par défaut.

**Valeur renvoyée :**
Problèmes de qualité du code correspondant au périmètre et aux filtres spécifiés.

***

### list\_sca\_security\_issues

Répertorie les problèmes de sécurité SCA avec des filtres facultatifs.

**Paramètres :**

* `scan_id` (chaîne, facultatif) : filtre les problèmes par identifiant de scan
* `project` (chaîne, facultatif) : filtre les problèmes par nom de projet
* `repo` (chaîne, facultatif) : filtre les problèmes par URL de dépôt
* `filters` (objet, facultatif) : filtre par des champs tels que `severity`, `package`, `ecosystem`, `cve`, `path`, `has_fix`, `branch`, `reachability` ou `sort_by`
* `include_reachability` (booléen, facultatif) : inclut le statut et la description de l’accessibilité de chaque dépendance concernée

Les valeurs acceptées par le filtre `reachability` sont `not_direct_dependency`, `pending`, `vulnerable_usage_reachable`, `vulnerable_usage_unreachable` et `dead_dependency`.

**Valeur renvoyée :**
Liste des problèmes SCA avec les dépendances vulnérables, les CVE et les informations de version.

**Exemple :**

```json theme={null}
{
  "status": "ok",
  "count": 12,
  "sca_issues": [
    {
      "id": "sca-789",
      "package": "lodash",
      "current_version": "4.17.15",
      "fixed_version": "4.17.21",
      "cve": "CVE-2021-23337",
      "severity": "high"
    }
  ]
}
```

***

### list\_iac\_security\_issues

Répertorie les problèmes de sécurité Infrastructure as Code (IaC) avec des filtres facultatifs.

**Paramètres :**

* `scan_id` (chaîne, facultatif) : filtre les problèmes par identifiant de scan
* `project` (chaîne, facultatif) : filtre les problèmes par nom de projet
* `repo` (chaîne, facultatif) : filtre les problèmes par URL de dépôt
* `filters` (objet, facultatif) : filtre par `severity`, `provider`, `service`, `iac_type`, `rule_id`, `avd_id`, `path`, `search`, `sort_by` ou `branch`
* `page` (entier, facultatif) : numéro de page
* `page_size` (entier, facultatif) : nombre de résultats par page, jusqu’à 50

**Valeur renvoyée :**
Liste des problèmes IaC avec leur sévérité, le service concerné, les identifiants de règles, l’emplacement du fichier et le contexte du scan.

**Exemple :**

```json theme={null}
{
  "status": "ok",
  "page": 1,
  "total_pages": 1,
  "total_issues": 1,
  "issues": [
    {
      "id": "11111111-1111-1111-1111-111111111111",
      "title": "Public S3 bucket",
      "severity": "HIGH",
      "provider": "aws",
      "service": "s3",
      "iac_type": "terraform",
      "location": {
        "path": "infra/main.tf",
        "start_line": 10
      }
    }
  ]
}
```

***

### list\_dependencies

Répertorie les dépendances logicielles détectées lors d’un scan avec des filtres facultatifs.

**Paramètres :**

* `scan_id` (chaîne, facultatif) : filtre les dépendances par identifiant de scan
* `project` (chaîne, facultatif) : filtre les dépendances par nom de projet
* `repo` (chaîne, facultatif) : filtre les dépendances par URL de dépôt
* `filters` (objet, facultatif) : filtre par `name`, `version`, `type`, `path`, `purl`, `license`, `dep_type`, `search`, `sort_by` ou `branch`
* `page` (entier, facultatif) : numéro de page
* `page_size` (entier, facultatif) : nombre de résultats par page, jusqu’à 50

**Valeur renvoyée :**
Liste des dépendances avec le nom et la version du paquet, son URL, les données de licence, la relation de dépendance et le contexte du scan.

**Exemple :**

```json theme={null}
{
  "status": "ok",
  "page": 1,
  "total_pages": 1,
  "total_dependencies": 1,
  "dependencies": [
    {
      "id": "22222222-2222-2222-2222-222222222222",
      "name": "django",
      "version": "4.2.0",
      "type": "pypi",
      "purl": "pkg:pypi/django@4.2.0",
      "path": "requirements.txt",
      "licenses": ["BSD-3-Clause"],
      "is_direct": true
    }
  ]
}
```

***

### list\_scans

Répertorie tous les scans SAST avec des filtres facultatifs.

**Paramètres :**

* `project` (chaîne, facultatif) : filtre les scans par nom de projet
* `repo` (chaîne, facultatif) : filtre les scans par sous-chaîne de l’URL du dépôt
* `branch` (chaîne, facultatif) : filtre les scans par nom exact de branche
* `pull_request_id` (chaîne, facultatif) : filtre les scans par identifiant exact de pull request ou de merge request

**Valeur renvoyée :**
Liste des scans avec des informations de base incluant l’identifiant, la date, le statut et le nombre de résultats.

**Exemple :**

```json theme={null}
{
  "status": "ok",
  "count": 50,
  "scans": [
    {
      "id": "scan-001",
      "project": "web-app",
      "created_at": "2024-11-01T09:00:00Z",
      "status": "completed",
      "findings": 8
    }
  ]
}
```

***

### get\_blocking\_rules

Obtient toutes les règles de blocage configurées pour votre organisation.

**Paramètres :**
Aucun

**Valeur renvoyée :**
Liste des règles qui bloquent les déploiements selon les politiques de sécurité.

**Exemple :**

```json theme={null}
{
  "status": "ok",
  "rules": [
    {
      "id": "rule-1",
      "name": "Block Critical Vulnerabilities",
      "condition": "severity >= critical",
      "action": "block",
      "enabled": true
    }
  ]
}
```

## Configurer les clients MCP

### Claude Desktop

Ajoutez Corgea à votre configuration de Claude Desktop :

1. Ouvrez les paramètres de Claude Desktop
2. Accédez à la section « Developer »
3. Modifiez votre fichier de configuration MCP
4. Ajoutez le serveur MCP Corgea :

```json theme={null}
{
  "mcpServers": {
    "corgea": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://www.corgea.app/mcp",
        "--header",
        "CORGEA-TOKEN: ${CORGEA_TOKEN}"
      ],
      "env": {
        "CORGEA_TOKEN": "your_api_token_here"
      }
    }
  }
}
```

5. Redémarrez Claude Desktop pour que les changements prennent effet

### IDE Cursor

Ajoutez Corgea à votre configuration MCP de Cursor :

1. Ouvrez les paramètres de Cursor (Cmd/Ctrl + Shift + J)

2. Accédez à « Cursor Settings » → « Models » → « MCP »

3. Vous pouvez également modifier directement le fichier de paramètres MCP :
   * **macOS/Linux** : `~/.cursor/mcp.json`
   * **Windows** : `%APPDATA%\Cursor\User\mcp.json`

4. Ajoutez le serveur MCP Corgea :

```json theme={null}
{
  "mcpServers": {
    "corgea": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://www.corgea.app/mcp",
        "--header",
        "CORGEA-TOKEN: ${CORGEA_TOKEN}"
      ],
      "env": {
        "CORGEA_TOKEN": "your_api_token_here"
      }
    }
  }
}
```

**Autre configuration possible (HTTP direct) :**

Si vous utilisez un client MCP personnalisé prenant en charge les connexions HTTP directes :

```json theme={null}
{
  "mcpServers": {
    "corgea": {
      "url": "https://www.corgea.app/mcp",
      "headers": {
        "CORGEA-TOKEN": "your_api_token_here"
      }
    }
  }
}
```

### Extension IDE Continue

Ajoutez Corgea à votre configuration Continue :

```json theme={null}
{
  "contextProviders": [
    {
      "name": "corgea",
      "params": {
        "serverUrl": "https://www.corgea.app/mcp",
        "headers": {
          "CORGEA-TOKEN": "your_api_token_here"
        }
      }
    }
  ]
}
```

## Cas d’utilisation

### Revue de code tenant compte de la sécurité

Connectez votre assistant IA à Corgea et posez des questions telles que :

* « Quels sont les problèmes de sécurité critiques dans mon dernier scan ? »
* « Montre-moi toutes les vulnérabilités d’injection SQL dans le module d’authentification »
* « Mes dépendances contiennent-elles des problèmes SCA de sévérité élevée ? »

### Analyse des vulnérabilités

Laissez l’IA vous aider à comprendre et à prioriser les vulnérabilités :

* « Explique le problème de sécurité issue-456 et propose un correctif »
* « Quelles vulnérabilités dois-je corriger en premier selon leur gravité et leur exploitabilité ? »
* « Quelles sont les règles de blocage qui empêcheraient ce déploiement ? »

### Planification automatisée de la remédiation

Utilisez l’IA pour planifier les correctifs de sécurité :

* « Crée un plan de remédiation pour tous les problèmes de sévérité élevée du scan-123 »
* « Quelles dépendances faut-il mettre à jour pour corriger les problèmes SCA ? »
* « Génère un rapport de tous les problèmes de sécurité ouverts, regroupés par fichier »

## Bonnes pratiques

<AccordionGroup>
  <Accordion title="Sécuriser votre token d’API">
    * Ne commitez jamais votre token d’API dans le système de gestion de versions
    * Renouvelez régulièrement les tokens
    * Utilisez des variables d’environnement ou un gestionnaire de secrets sécurisé
    * Révoquez immédiatement tout token compromis
  </Accordion>

  <Accordion title="Filtrer efficacement">
    * Utilisez les filtres de projet, de dépôt, de branche et de pull request pour affiner les résultats
    * Commencez par des scans précis lors du débogage
    * Filtrez par sévérité pour hiérarchiser le travail
  </Accordion>

  <Accordion title="Optimiser les performances">
    * Demandez uniquement les données dont vous avez besoin
    * Utilisez des identifiants de problème ou de scan précis lorsque c’est possible
    * Mettez les résultats en cache lorsque cela est pertinent
    * Respectez les limites de débit
  </Accordion>
</AccordionGroup>

## Authentification

Tous les appels d’outils MCP nécessitent un token d’API Corgea valide transmis dans l’en-tête `CORGEA-TOKEN`.

**Obtenir votre token :**

1. Connectez-vous à votre compte Corgea
2. Accédez à Paramètres → Clés d’API
3. Générez un token d’API
4. Copiez le token et ajoutez-le à la configuration de votre client MCP

<Warning>
  Conservez votre token d’API en lieu sûr. Toute personne qui y a accès peut interroger vos données de sécurité via l’interface MCP.
</Warning>

## Format de réponse

Toutes les réponses des outils MCP suivent le format de réponse standard de l’API Corgea :

**Réponse en cas de succès :**

```json theme={null}
{
  "status": "ok",
  "data": { }
}
```

**Réponse en cas d’erreur :**

```json theme={null}
{
  "status": "error",
  "message": "Description of the error",
  "error": "Detailed error information"
}
```

## Limites de débit

Les requêtes MCP sont soumises aux mêmes limites de débit que les requêtes API standard :

* 100 requêtes par minute et par token
* 1 000 requêtes par heure et par token

Si vous dépassez ces limites, vous recevez une réponse `429 Too Many Requests`.

## Dépannage

### Problèmes de connexion

**Problème :** impossible de se connecter au serveur MCP

**Solutions :**

* Vérifiez la validité de votre token d’API avec l’endpoint `/verify`
* Vérifiez que l’en-tête `CORGEA-TOKEN` est correctement configuré
* Assurez-vous que votre réseau autorise les connexions HTTPS à corgea.app

### Erreurs d’authentification

**Problème :** réception de réponses 401 Unauthorized

**Solutions :**

* Vérifiez que votre token d’API n’a pas expiré
* Vérifiez que le token est transmis dans l’en-tête `CORGEA-TOKEN` et non dans `Authorization`
* Assurez-vous que votre token dispose des autorisations nécessaires

### Résultats vides

**Problème :** les requêtes ne renvoient aucune donnée

**Solutions :**

* Vérifiez que les données existent dans votre compte Corgea
* Vérifiez les paramètres de filtre (`scan_id`, `project`, `repo`, `branch`, `pull_request_id`)
* Assurez-vous d’interroger le bon environnement (multilocataire ou monolocataire)

## Assistance

<CardGroup cols={2}>
  <Card title="Documentation de l’API" icon="book" href="/fr/api-reference/introduction">
    En savoir plus sur l’API Corgea
  </Card>

  <Card title="Rejoignez notre communauté" icon="slack" href="https://corgea-community.slack.com/join/shared_invite/zt-2cjmxat2f-Znvd06nP2gn9RYOSWrZI2A#">
    Obtenez de l’aide auprès de la communauté Corgea
  </Card>

  <Card title="Guide d’authentification" icon="key" href="/fr/api-reference/authentication">
    Découvrez l’authentification de l’API
  </Card>

  <Card title="Spécification MCP" icon="link" href="https://modelcontextprotocol.io/">
    Consultez la documentation officielle de MCP
  </Card>
</CardGroup>

## Prochaines étapes

1. **Récupérez votre token d’API** depuis les paramètres de votre compte Corgea
2. **Configurez votre client MCP** avec l’URL du serveur Corgea et le token
3. **Testez la connexion** en demandant à votre assistant IA vos scans
4. **Explorez les cas d’usage** comme l’analyse de sécurité et la correction des vulnérabilités

Intégrez dès aujourd’hui les informations de sécurité de Corgea à votre workflow de développement assisté par l’IA.
