Skip to content

Documentacion de Testing - MCP-SCAN

Este directorio contiene la documentacion completa del sistema de testing de mcp-scan, el analizador estatico de seguridad para servidores MCP.


Indice de Documentos

Documento Descripcion
Estructura de Tests Organizacion de tests unitarios, integracion, benchmarks
Fixtures Fixtures de prueba por clase de vulnerabilidad (A-N)
DVMCP Damn Vulnerable MCP Server - servidor vulnerable de pruebas
Ejecutar Tests Comandos para ejecutar tests y cobertura
Estado Actual Cobertura actual y areas por mejorar

Vision General

El sistema de testing de mcp-scan esta disenado para garantizar:

  1. Deteccion precisa: Validar que cada clase de vulnerabilidad (A-N) se detecta correctamente
  2. Sin falsos positivos: Verificar que codigo benigno no genera alertas
  3. Rendimiento: Benchmarks para asegurar tiempos de analisis aceptables
  4. Regresion: Tests golden para detectar cambios en el comportamiento

Tipos de Tests

Tests Unitarios

Ubicados junto al codigo fuente (*_test.go), validan componentes individuales: - Parser AST (Python, TypeScript, JavaScript, Go) - Motor de taint analysis - Detectores de patrones - Clasificadores ML - Grafo de llamadas

Tests de Integracion

Validan el flujo completo del scanner: - Descubrimiento de archivos - Analisis de superficie MCP - Deteccion de vulnerabilidades - Generacion de reportes

Tests Golden

Comparan salidas contra snapshots esperados: - Formato JSON - Formato SARIF - Evidencias

Benchmarks

Miden rendimiento de componentes criticos: - Parsing AST - Extraccion de features ML - Clasificacion de prompts


Estructura de Directorios

mcp-scan/
├── internal/
│   ├── parser/parser_test.go       # Tests del parser
│   ├── pattern/engine_test.go      # Tests de detectores (1300+ lineas)
│   ├── taint/engine_test.go        # Tests del motor taint
│   ├── callgraph/graph_test.go     # Tests del grafo de llamadas
│   ├── ml/classifier_test.go       # Tests del clasificador ML
│   └── ...
├── pkg/
│   └── scanner/
│       ├── scanner_test.go         # Tests unitarios scanner
│       ├── scanner_integration_test.go  # Tests de integracion
│       └── scanner_bench_test.go   # Benchmarks
└── testdata/
    ├── fixtures/                   # Codigo vulnerable/benigno
    │   ├── class_a/               # RCE
    │   ├── class_g/               # Tool poisoning
    │   └── ...
    ├── golden/                     # Salidas esperadas
    └── damn-vulnerable-MCP-server/ # DVMCP completo

Comandos Rapidos

# Ejecutar todos los tests
make test

# Tests con cobertura
make test-coverage

# Tests golden (snapshots)
make test-golden

# Tests contra DVMCP
make test-detection

# Benchmarks
go test -bench=. ./...

Contribuir Tests

Al agregar nuevas funcionalidades o detectores:

  1. Crear fixtures en testdata/fixtures/class_X/
  2. Agregar tests unitarios en el paquete correspondiente
  3. Actualizar tests de integracion si afecta el flujo completo
  4. Actualizar golden tests si cambia el formato de salida
  5. Documentar en estado-actual.md

Referencias