> ## 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)

> Conecta asistentes de IA a Corgea mediante Model Context Protocol

Corgea es compatible con [Model Context Protocol (MCP)](https://modelcontextprotocol.io/), lo que permite que asistentes de IA como Claude interactúen directamente con tus escaneos, hallazgos y políticas de seguridad. MCP permite a los modelos de IA comprender el contexto de seguridad y ofrecer una asistencia más pertinente.

## ¿Qué es MCP?

Model Context Protocol es un estándar abierto que permite a los modelos de IA conectarse de forma segura a herramientas y fuentes de datos externas. Con la integración MCP de Corgea, los asistentes de IA pueden:

* Consultar los resultados de tus escaneos de seguridad
* Recuperar detalles de vulnerabilidades
* Enumerar y filtrar hallazgos de seguridad
* Enumerar y filtrar hallazgos de calidad del código
* Accede a datos de SCA, IaC e inventario de dependencias
* Revisa las normas y políticas de bloqueo

## Primeros pasos

### Requisitos previos

* Un token de la API de Corgea (consíguelo en la configuración de tu cuenta)
* Un cliente compatible con MCP (por ejemplo, Claude Desktop, Continue o cualquier cliente MCP)

### Detalles de la conexión

**URL del servidor MCP:**

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

En despliegues de un único tenant:

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

**Autenticación:**
Todas las solicitudes MCP deben autenticarse mediante el token de API de Corgea incluido en la cabecera `CORGEA-TOKEN`.

<Note>
  Corgea admite solicitudes MCP sin estado mediante POST con respuestas JSON. No admite streams independientes de eventos enviados por el servidor (SSE).
</Note>

## Herramientas disponibles

El servidor MCP de Corgea proporciona las siguientes herramientas para asistentes de IA:

### get\_scan\_info

Obtén información detallada sobre un escaneo SAST concreto.

**Parámetros:**

* `scan_id` (cadena, obligatorio): Identificador único del escaneo

**Devuelve:**
Información detallada del escaneo que incluye el estado, el recuento de hallazgos, la fecha del escaneo y la información del repositorio.

**Ejemplo:**

```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

Obtén información detallada sobre un hallazgo de seguridad concreto.

**Parámetros:**

* `issue_id` (cadena, obligatorio): Identificador único del hallazgo
* `include_reachability` (booleano, opcional): Incluye detalles sobre la alcanzabilidad del endpoint para el hallazgo

**Regresa:**
Detalles completos del hallazgo, incluidos el tipo de vulnerabilidad, la gravedad, la ubicación, las recomendaciones de corrección, el estado de remediación y, opcionalmente, la accesibilidad de los endpoints.

**Ejemplo:**

```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

Obtén información detallada sobre un hallazgo concreto del análisis de composición de software (SCA).

**Parámetros:**

* `issue_id` (cadena, obligatorio): Identificador único del hallazgo de SCA

**Regresa:**
Detalles del hallazgo de SCA, como el paquete, la gravedad, el CVE, la versión corregida, la ubicación del archivo y el análisis de alcanzabilidad de las dependencias.

**Ejemplo:**

```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

Enumera hallazgos de seguridad y permite filtrarlos.

**Parámetros:**

* `scan_id` (cadena, opcional): Filtra los hallazgos por ID de escaneo
* `project` (cadena, opcional): Filtra los hallazgos por nombre de proyecto
* `repo` (cadena, opcional): Filtra los hallazgos por URL del repositorio
* `include_reachability` (booleano, opcional): Incluye un resumen de alcanzabilidad de endpoints para cada hallazgo

**Regresa:**
Lista de hallazgos de seguridad que coinciden con los filtros indicados.

**Ejemplo:**

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

***

### list\_code\_quality\_issues

Enumera los hallazgos de calidad del código por separado de los de seguridad y permite filtrarlos.

**Parámetros:**

* `scan_id` (cadena, opcional): Problemas de filtro por ID de escaneo
* `project` (cadena, opcional): Problemas de filtro por nombre del proyecto
* `repo` (cadena, opcional): Problemas de filtrado por URL del repositorio
* `filters` (objeto, opcional): Filtrar por `urgency`, `status`, `confidence`, `language`, `file_path`, `classification`, `sla_status`, `branch`, `show_false_positives`, o `sort_by`
* `page` (entero, opcional): Número de página
* `page_size` (entero, opcional): Número de resultados por página, hasta 50

El campo `classification` contiene la etiqueta de calidad del código, como `Maintainability`, en lugar de un CWE. Los falsos positivos se excluyen de forma predeterminada.

**Regresa:**
Solo hallazgos de calidad del código que coinciden con el ámbito y los filtros indicados.

***

### list\_sca\_security\_issues

Enumera hallazgos de seguridad de Software Composition Analysis (SCA) y permite filtrarlos.

**Parámetros:**

* `scan_id` (cadena, opcional): Problemas de filtro por ID de escaneo
* `project` (cadena, opcional): Problemas de filtro por nombre del proyecto
* `repo` (cadena, opcional): Problemas de filtrado por URL del repositorio
* `filters` (objeto, opcional): Filtrar por campos como `severity`, `package`, `ecosystem`, `cve`, `path`, `has_fix`, `branch`, `reachability`, o `sort_by`
* `include_reachability` (booleano, opcional): Incluye el estado de alcanzabilidad de la dependencia y la descripción de cada hallazgo de SCA

Los valores admitidos para el filtro `reachability` son `not_direct_dependency`, `pending`, `vulnerable_usage_reachable`, `vulnerable_usage_unreachable` y `dead_dependency`.

**Regresa:**
Lista de hallazgos de SCA, incluidas las dependencias vulnerables, los CVE y la información de versiones.

**Ejemplo:**

```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

Lista los hallazgos de seguridad de infraestructura como código (IaC) con filtros opcionales.

**Parámetros:**

* `scan_id` (cadena, opcional): Problemas de filtro por ID de escaneo
* `project` (cadena, opcional): Problemas de filtro por nombre del proyecto
* `repo` (cadena, opcional): Problemas de filtrado por URL del repositorio
* `filters` (objeto, opcional): Filtrar por `severity`, `provider`, `service`, `iac_type`, `rule_id`, `avd_id`, `path`, `search`, `sort_by`, o `branch`
* `page` (entero, opcional): Número de página
* `page_size` (entero, opcional): Número de resultados por página, hasta 50

**Regresa:**
Lista de hallazgos de IaC con su gravedad, servicio afectado, identificadores de reglas, ubicación del archivo y contexto del escaneo.

**Ejemplo:**

```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

Lista las dependencias de software descubiertas durante un escaneo con filtrado opcional.

**Parámetros:**

* `scan_id` (cadena, opcional): Filtrar dependencias por ID de escaneo
* `project` (cadena, opcional): Filtrar dependencias por nombre del proyecto
* `repo` (cadena, opcional): Filtrar dependencias por URL del repositorio
* `filters` (objeto, opcional): Filtrar por `name`, `version`, `type`, `path`, `purl`, `license`, `dep_type`, `search`, `sort_by`, o `branch`
* `page` (entero, opcional): Número de página
* `page_size` (entero, opcional): Número de resultados por página, hasta 50

**Regresa:**
Lista de dependencias que incluye nombre del paquete, versión, URL del paquete, datos de licencia, relación de dependencia y contexto de escaneo.

**Ejemplo:**

```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

Lista todos los escaneos SAST con filtrado opcional.

**Parámetros:**

* `project` (cadena, opcional): Escanea el filtro por nombre del proyecto
* `repo` (cadena, opcional): Filtrar escaneos por subcadena de URL del repositorio
* `branch` (cadena, opcional): Escanea el filtro por nombre exacto de la rama
* `pull_request_id` (cadena, opcional): Escanea el filtro por identificador exacto de pull request o de fusión

**Regresa:**
Lista de escaneos con información básica que incluye ID, fecha, estado y recuento de resultados.

**Ejemplo:**

```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

Configura todas las reglas de bloqueo para tu organización.

**Parámetros:**
Ninguno

**Regresa:**
Lista de reglas de bloqueo que impiden despliegues basados en políticas de seguridad.

**Ejemplo:**

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

## Configuración de clientes MCP

### Claude Desktop

Añade Corgea a la configuración de Claude Desktop:

1. Abre la configuración de Claude Desktop
2. Navega a la sección "Desarrollador"
3. Edita tu archivo de configuración MCP
4. Añade el servidor MCP de 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. Reinicia Claude Desktop para que los cambios entren en vigor

### Cursor IDE

Añade Corgea a tu configuración de Cursor MCP:

1. Abre la configuración de Cursor (Cmd/Ctrl + Shift + J)

2. Ve a "Configuración de Cursor" → "Modelos" → "MCP"

3. O edita directamente tu archivo de configuración MCP en:
   * **macOS/Linux**: `~/.cursor/mcp.json`
   * **Windows**: `%APPDATA%\Cursor\User\mcp.json`

4. Añade el servidor MCP de 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"
      }
    }
  }
}
```

**Configuración alternativa (HTTP directo):**

Si usas un cliente MCP personalizado que admite conexiones HTTP directas:

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

### Extensión Continue para IDE

Añade Corgea a la configuración de Continue:

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

## Casos de uso

### Revisión de Código Consciente de la Seguridad

Conecta tu asistente de IA con Corgea y haz preguntas como:

* "¿Cuáles son los hallazgos críticos de seguridad de mi último escaneo?"
* "Muéstrame todas las vulnerabilidades de inyección SQL en el módulo de autenticación"
* "¿Hay algún hallazgo de SCA de gravedad alta en mis dependencias?"

### Análisis de vulnerabilidades

Deja que la IA te ayude a entender y priorizar vulnerabilidades:

* "Explica el hallazgo de seguridad issue-456 y sugiere cómo corregirlo"
* "¿Qué vulnerabilidades debería corregir primero según la gravedad y la explotabilidad?"
* "¿Cuáles son las reglas de bloqueo que impedirían este despliegue?"

### Planificación automatizada de remediación

Utiliza IA para planificar soluciones de seguridad:

* "Crea un plan de remediación para todos los hallazgos de gravedad alta del escaneo scan-123"
* "¿Qué dependencias hay que actualizar para corregir los hallazgos de SCA?"
* "Genera un informe de todos los hallazgos de seguridad abiertos agrupados por archivo"

## Mejores prácticas

<AccordionGroup>
  <Accordion title="Asegura tu token de API">
    * Nunca incluyas el token de API en un commit
    * Rota los tokens periódicamente
    * Utiliza variables de entorno o gestores de secretos seguros
    * Revoca los tokens de inmediato si se ven comprometidos
  </Accordion>

  <Accordion title="Filtrar eficazmente">
    * Utiliza filtros de proyecto, repositorio, rama y pull request para limitar los resultados
    * Empieza por escaneos concretos al depurar
    * Filtra por gravedad al priorizar el trabajo
  </Accordion>

  <Accordion title="Optimizar el rendimiento">
    * Solicita solo los datos que necesitas
    * Utiliza ID concretos de hallazgo o escaneo cuando sea posible
    * Almacena los resultados en caché cuando corresponda
    * Respeta los límites de frecuencia
  </Accordion>
</AccordionGroup>

## Autenticación

Todas las llamadas a herramientas MCP requieren un token válido de la API de Corgea en la cabecera `CORGEA-TOKEN`.

**Consiguiendo tu token:**

1. Inicia sesión en tu cuenta de Corgea
2. Navega a Configuración → Claves API
3. Generar un nuevo token de API
4. Copia el token y añádelo a la configuración de tu cliente MCP

<Warning>
  Mantén tu token de API seguro. Cualquier persona con acceso a tu token puede consultar tus datos de seguridad a través de la interfaz MCP.
</Warning>

## Formato de respuesta

Todas las respuestas de la herramienta MCP siguen el formato estándar de respuesta de la API de Corgea:

**Respuesta de éxito:**

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

**Respuesta de error:**

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

## Límites de tasas

Las solicitudes MCP están sujetas a los mismos límites de velocidad que las solicitudes estándar de API:

* 100 solicitudes por minuto por token
* 1000 solicitudes por hora por token

Si superas los límites de tarifa, recibirás un `429 Too Many Requests` respuesta.

## Resolución de problemas

### Problemas de conexión

**Problema:** No se puede conectar al servidor MCP

**Soluciones:**

* Verifica que el token de API sea válido mediante el endpoint `/verify`
* Comprueba que el `CORGEA-TOKEN` el encabezado está correctamente configurado
* Asegúrate de que tu red permita conexiones HTTPS corgea.app

### Errores de autenticación

**Problema:** Recibiendo respuestas no autorizadas 401

**Soluciones:**

* Verifica que tu token de API no haya caducado
* Comprueba que el token se ha pasado en el `CORGEA-TOKEN` encabezado (no Autorización)
* Asegúrate de que tu token tenga los permisos necesarios

### Resultados vacíos

**Problema:** Las consultas no devolven datos

**Soluciones:**

* Verifica que existan datos en tu cuenta de Corgea
* Comprueba que los parámetros del filtro (scan\_id, proyecto, repositorio, rama, pull\_request\_id) sean correctos
* Asegúrate de consultar el entorno correcto (multi-inquilino vs inquilino único)

## Apoyo

<CardGroup cols={2}>
  <Card title="Documentación de API" icon="book" href="/es/api-reference/introduction">
    Descubre más sobre la API de Corgea
  </Card>

  <Card title="Únete a nuestra comunidad" icon="slack" href="https://corgea-community.slack.com/join/shared_invite/zt-2cjmxat2f-Znvd06nP2gn9RYOSWrZI2A#">
    Busca ayuda en la comunidad de Corgea
  </Card>

  <Card title="Guía de autenticación" icon="key" href="/es/api-reference/authentication">
    Aprende sobre la autenticación por API
  </Card>

  <Card title="Especificación MCP" icon="link" href="https://modelcontextprotocol.io/">
    Lee la documentación oficial del MCP
  </Card>
</CardGroup>

## Próximos pasos

1. **Obtén tu token de API** desde la configuración de tu cuenta Corgea
2. **Configura tu cliente MCP** con la URL y el token del servidor Corgea
3. **Prueba la conexión** preguntando a tu asistente de IA sobre tus escaneos
4. **Explora casos de uso** como el análisis de seguridad y la remediación de vulnerabilidades

¡Empieza a integrar la inteligencia de seguridad de Corgea en tu flujo de trabajo de desarrollo impulsado por IA hoy mismo!
