Skip to main content
Glama
niyepes

checkov-mcp

by niyepes
README.md
# checkov-mcp

MCP Server para analizar resultados de **Checkov** y generar explicaciones ejecutivas de vulnerabilidades en infraestructura Terraform.

## Arquitectura

```
src/checkov_mcp/
├── domain/          → Entidades del negocio (Pydantic models + interfaces)
├── application/     → Casos de uso (servicios)
├── infrastructure/  → Adaptadores externos (runner Checkov, formateador JSON)
└── presentation/    → Capa MCP (FastMCP server + tools)
```

Principios: **Clean Architecture**, **SOLID**, tipado completo con **Pydantic v2**.

## Requisitos

- Python 3.12+
- Checkov (opcional, solo para modo `auto`): `pip install checkov`

## Instalación

```bash
pip install -e .
```

## Uso como MCP Server

### Inicio directo

```bash
python -m checkov_mcp.presentation.server
```

### Integración con cliente MCP

```python
from fastmcp import FastMCP
client = FastMCP("checkov-mcp")
# o usa nuestro create_app()
from checkov_mcp import create_app
server = create_app()
```

## Herramientas MCP

| Tool | Input | Output | Descripción |
|------|-------|--------|-------------|
| `run_checkov` | `path: str`, `mode: str` | `CheckovReport` | Escanea o parsea JSON |
| `summarize_findings` | `report: dict` | `SummaryResult` | Resumen agrupado por severidad |
| `generate_talk_summary` | `report: dict` | `TalkSummary` | Explicación ejecutiva |
| `get_failed_checks` | `report: dict` | `list[CheckovFinding]` | Solo fallos |

## Modos de escaneo

- **auto** (default): ejecuta `checkov --directory <path>` en vivo.
- **offline**: parsea un archivo JSON pre-generado.

## Desarrollo

```bash
pip install -e ".[dev]"
pytest --cov=checkov_mcp tests/
```

## Ejemplo

```python
import asyncio
from checkov_mcp import create_app

server = create_app()
# Usar con cualquier transporte MCP
```

Ver `examples/usage.py` para un ejemplo completo.