Skip to main content
Glama
README.md
# 🚀 Enterprise-Grade QA MCP Server

Una implementación profesional del **Model Context Protocol (MCP)** para **Quality Assurance**, integrando las mejores prácticas de testing, reportería y gestión de defectos.

## 📋 Tabla de Contenidos

1. [Características](#características)
2. [Arquitectura](#arquitectura)
3. [Instalación](#instalación)
4. [Uso](#uso)
5. [API Reference](#api-reference)
6. [Casos de Uso](#casos-de-uso)
7. [Integraciones](#integraciones)

---

## ✨ Características

### 1. **Gestión de Casos de Prueba** 📝
- Crear, actualizar y eliminar test cases
- Organización por prioridad, etiquetas y estado
- Trazabilidad con requisitos
- Estimación de duración de pruebas

### 2. **Ejecución de Tests** 🧪
- Registro detallado de resultados
- Tracking por environment
- Captura de errores y stack traces
- Métricas de tiempo de ejecución
- Estadísticas de pass/fail rate

### 3. **Gestión de Defectos** 🐛
- Reportería integral de bugs
- Clasificación por severidad (critical, high, medium, low)
- Priorización (P0-P3)
- Workflow de estados
- Asignación a desarrolladores
- Trazabilidad con test cases

### 4. **Análisis de Cobertura** 📊
- Reporte de cobertura de código por línea
- Análisis por archivo
- Identificación de áreas no cubiertas
- Histórico de tendencias
- Visualización de gaps

### 5. **Planificación de Tests** 📅
- Creación de test plans
- Definición de objetivos y scope
- Hitos y cronograma
- Gestión de recursos
- Análisis de riesgos

### 6. **Matriz de Trazabilidad (RTM)** 🔗
- Mapeo requisitos → test cases
- Análisis de cobertura de requisitos
- Identificación de requisitos sin pruebas
- Reporte de gaps

### 7. **Reportería Comprehensiva** 📈
- Dashboards en tiempo real
- Reportes ejecutivos
- Métricas de calidad
- Análisis de tendencias
- Exportación multi-formato

---

## 🏗️ Arquitectura

```
┌─────────────────────────────────────────────────────┐
│          Claude AI (via MCP Protocol)               │
└────────────────┬────────────────────────────────────┘
                 │
                 ▼
┌─────────────────────────────────────────────────────┐
│         QA MCP Server (TypeScript/Node.js)          │
├─────────────────────────────────────────────────────┤
│  Test Case Management      │  Defect Management     │
│  Test Execution Tracking   │  Coverage Analysis     │
│  Test Planning             │  RTM & Traceability    │
│  Reporting Engine          │  Statistics & Analytics│
└─────────────────────────────────────────────────────┘
                 │
    ┌────────────┼────────────┐
    ▼            ▼            ▼
[Database]  [File System]  [External Tools]
- Test Cases   - Reports    - Jenkins
- Results      - Logs       - GitHub
- Defects      - Artifacts  - JIRA
```

---

## 🔧 Instalación

### Requisitos
- Node.js 16+
- TypeScript 4.5+
- Claude API Key

### Setup

```bash
# 1. Clonar o descargar el servidor
git clone <repo-url>
cd qa-mcp-server

# 2. Instalar dependencias
npm install

# 3. Compilar TypeScript
npm run build

# 4. Configurar en .claude/settings.json
cat > ~/.claude/settings.json << 'EOF'
{
  "mcpServers": {
    "qa": {
      "command": "node",
      "args": ["qa-mcp-server.js"],
      "env": {
        "API_KEY": "your-key-here"
      }
    }
  }
}
EOF

# 5. Iniciar el servidor
npm start
```

---

## 💡 Uso

### Ejemplo 1: Crear un Test Case

```
User: "Crea un test case para validar el login de usuarios"

Claude:
Voy a crear un test case bien estructurado para validar el login...

Usando: create_test_case
{
  "title": "Validar login de usuario con credenciales correctas",
  "description": "Verifica que un usuario pueda hacer login exitosamente",
  "steps": [
    "1. Navegar a la página de login",
    "2. Ingresar email válido",
    "3. Ingresar contraseña correcta",
    "4. Hacer click en el botón Login",
    "5. Esperar redirección"
  ],
  "expected_result": "Usuario redirigido a dashboard, sesión activa",
  "priority": "critical",
  "tags": ["authentication", "core-feature", "login"]
}

✅ Creado: TC-1718527500 "Validar login de usuario con credenciales correctas"
```

### Ejemplo 2: Registrar Resultado de Test

```
User: "Ejecuté el test TC-1718527500 y falló. El mensaje de error dice que no 
       se puede conectar a la base de datos de usuarios."

Usando: record_test_result
{
  "test_case_id": "TC-1718527500",
  "status": "failed",
  "actual_result": "Error al conectar a base de datos de usuarios",
  "executed_by": "qa_engineer_01",
  "environment": "staging",
  "duration": 12,
  "error_message": "Connection timeout: unable to reach auth_service on port 5432"
}

❌ Registrado: Test TC-1718527500 falló en staging
```

### Ejemplo 3: Reportar Defecto

```
User: "El test falló porque el servicio de autenticación no responde. 
       Este es un bug crítico que encontramos en staging."

Usando: report_defect
{
  "title": "Auth service timeout - database connection issue",
  "description": "El servicio de autenticación no puede conectarse a la BD de usuarios.
                 Timeout después de 30 segundos. Afecta login de todos los usuarios.",
  "severity": "critical",
  "priority": "p0",
  "found_in": "staging",
  "detected_by": "qa_engineer_01",
  "related_test_case_ids": ["TC-1718527500"]
}

🐛 Reportado: DEF-1718527501
   Severidad: CRITICAL
   Prioridad: P0
   Estado: OPEN
```

### Ejemplo 4: Generar Reporte QA

```
User: "Dame un reporte completo del estado actual del testing"

Usando: generate_qa_report

╔════════════════════════════════════════════════════════════════╗
║                  COMPREHENSIVE QA REPORT                      ║
║           Generated: 2026-06-16T10:30:00.000Z                 ║
╚════════════════════════════════════════════════════════════════╝

📊 TEST EXECUTION SUMMARY
────────────────────────────────────────────────────────────────
  Total Tests Executed:     145
  ✅ Passed:                128 (88%)
  ❌ Failed:                12
  🔒 Blocked:               3
  ⏭️  Skipped:               2

🐛 DEFECT SUMMARY
────────────────────────────────────────────────────────────────
  Total Defects:            15
  🟠 Open:                  7
  🟡 In Progress:           5
  ✅ Resolved:              3

  By Priority:
    P0: 2
    P1: 3
    P2: 6
    P3: 4

📋 REQUIREMENTS TRACEABILITY
────────────────────────────────────────────────────────────────
  Total Requirements:       32
  ✅ Fully Traced:          28
  🟡 Partially Traced:      3
  🔴 Untraced:              1
  Coverage:                 87%

📈 CODE COVERAGE
────────────────────────────────────────────────────────────────
  Overall Coverage:         78%
  Lines Covered:            3425/4390
  Uncovered Areas:          965
```

---

## 📚 API Reference

### Test Case Management

#### `create_test_case`
Crea un nuevo caso de prueba.

```typescript
create_test_case({
  title: string,                 // Título descriptivo del test
  description: string,           // Descripción detallada
  steps: string[],              // Pasos a seguir
  expected_result: string,      // Resultado esperado
  priority: "critical" | "high" | "medium" | "low",
  tags?: string[]               // Etiquetas opcionales
})
→ TestCase
```

#### `list_test_cases`
Lista test cases con filtros opcionales.

```typescript
list_test_cases({
  priority?: string,
  tag?: string,
  status?: string
})
→ TestCase[]
```

#### `get_test_case`
Obtiene detalles de un test case específico.

```typescript
get_test_case({
  test_case_id: string
})
→ TestCase | null
```

### Test Execution

#### `record_test_result`
Registra el resultado de una ejecución de test.

```typescript
record_test_result({
  test_case_id: string,
  status: "passed" | "failed" | "blocked" | "skipped",
  actual_result: string,
  executed_by: string,
  environment: string,
  duration: number,              // en segundos
  error_message?: string
})
→ TestResult
```

#### `get_execution_stats`
Obtiene estadísticas de ejecución de tests.

```typescript
get_execution_stats()
→ {
  total: number,
  passed: number,
  failed: number,
  blocked: number,
  skipped: number,
  passRate: number
}
```

### Defect Management

#### `report_defect`
Reporta un nuevo defecto/bug.

```typescript
report_defect({
  title: string,
  description: string,
  severity: "critical" | "high" | "medium" | "low",
  priority: "p0" | "p1" | "p2" | "p3",
  found_in: string,             // environment donde se encontró
  detected_by: string,          // quien lo detectó
  related_test_case_ids?: string[]
})
→ Defect
```

#### `list_defects`
Lista defectos con filtros.

```typescript
list_defects({
  severity?: string,
  status?: string,
  priority?: string
})
→ Defect[]
```

#### `update_defect`
Actualiza estado, asignación o resolución de un defecto.

```typescript
update_defect({
  defect_id: string,
  status?: "open" | "in-progress" | "in-review" | "resolved" | "closed" | "reopened",
  assigned_to?: string,
  resolution?: string
})
→ Defect | null
```

#### `get_defect_stats`
Obtiene estadísticas de defectos.

```typescript
get_defect_stats()
→ {
  total: number,
  open: number,
  inProgress: number,
  resolved: number,
  byPriority: Record<string, number>,
  bySeverity: Record<string, number>
}
```

### Coverage Analysis

#### `get_coverage_report`
Genera o recupera reporte de cobertura.

```typescript
get_coverage_report({
  generate?: boolean,
  total_lines?: number,
  covered_lines?: number,
  by_file?: Record<string, { covered: number, total: number }>
})
→ CoverageReport
```

### Test Planning

#### `create_test_plan`
Crea un nuevo test plan.

```typescript
create_test_plan({
  name: string,
  description: string,
  scope: string,
  objectives: string[],
  test_case_ids?: string[],
  start_date: string,           // ISO 8601
  end_date: string
})
→ TestPlan
```

### Requirements Traceability

#### `add_requirement_to_rtm`
Añade un requisito a la matriz de trazabilidad.

```typescript
add_requirement_to_rtm({
  requirement_id: string,
  description: string,
  test_case_ids?: string[],
  priority: string
})
→ RTMEntry
```

#### `get_rtm_report`
Obtiene reporte de trazabilidad de requisitos.

```typescript
get_rtm_report()
→ {
  total: number,
  fullyTraced: number,
  partiallyTraced: number,
  untraced: number,
  coveragePercentage: number,
  entries: RTMEntry[]
}
```

### Reporting

#### `generate_qa_report`
Genera reporte comprehensivo de QA.

```typescript
generate_qa_report()
→ string (formatted report)
```

---

## 🎯 Casos de Uso

### 1. **Ciclo de Testing Completo**
```
Crear test plan → Crear test cases → Ejecutar tests → 
Registrar resultados → Reportar defectos → 
Actualizar defectos → Generar reportes
```

### 2. **Gestión de Defectos Post-Release**
```
Test ejecutado por usuario
    ↓
Defecto reportado → P0 asignado
    ↓
Desarrollador lo arregla → Status: in-review
    ↓
QA verifica fix → Status: resolved
    ↓
Incluido en retrospectiva
```

### 3. **Análisis de Cobertura de Requisitos**
```
RTM: REQ-123 mapeado a TC-456, TC-789
    ↓
Si todos los tests pasan → Requisito satisfecho
    ↓
Si algún test falla → Defecto vinculado a requisito
    ↓
Reporte de trazabilidad muestra gaps
```

### 4. **Decisiones de Go/No-Go Release**
```
Métricas observadas:
  - Pass Rate: 95% ✅
  - Critical Defects Open: 0 ✅
  - Requirement Coverage: 100% ✅
  - Code Coverage: 85% ✅
    
Decisión: ✅ READY FOR RELEASE
```

---

## 🔌 Integraciones

### Integración con JIRA
```typescript
// Cuando un defecto se reporta:
// 1. Se crea automáticamente en JIRA
// 2. Se sincroniza status bidireccionalmente
// 3. Se vinculan test cases relacionados

report_defect({...})
→ [DEF-123 creado en QA MCP]
→ [JIRA-456 creado automáticamente]
→ [Bidirectional sync habilitado]
```

### Integración con GitHub
```typescript
// Los test results se pueden postear como:
// 1. PR comments
// 2. Status checks
// 3. Commit statuses
// 4. Release notes

record_test_result({...})
→ [GitHub Check created]
→ [PR status actualizado]
```

### Integración con CI/CD (Jenkins, GitHub Actions)
```typescript
// Los tests se ejecutan en pipeline
// Los resultados se sincronizan automáticamente:

pipeline {
  post {
    always {
      // Post test results to QA MCP
      sh '''
        curl -X POST http://qa-mcp:3000/api/results \
          -H "Content-Type: application/json" \
          -d @test-results.json
      '''
    }
  }
}
```

### Integración con Confluence
```typescript
// Genera documentación automática:
// - Test Plans → Confluence pages
// - RTM Reports → Wiki
// - Execution reports → Living documentation

generate_qa_report()
→ [Confluence page creada]
→ [Automáticamente actualizada cada ejecución]
```

---

## 🚀 Mejores Prácticas

### 1. **Test Case Design**
✅ Cada test case debe probar UNA cosa
✅ Usar nombres descriptivos y claros
✅ Incluir precondiciones explícitas
✅ Especificar datos de entrada específicos
✅ Definir claramente el resultado esperado

### 2. **Defect Reporting**
✅ Describir en qué condiciones ocurre el bug
✅ Incluir pasos para reproducir
✅ Adjuntar evidencia (screenshots, logs)
✅ Vincular test cases relacionados
✅ Proporcionar stack traces cuando sea posible

### 3. **Cobertura de Requisitos**
✅ Mapear cada requisito a al menos un test
✅ Rastrear cambios de requisitos
✅ Mantener RTM actualizado
✅ Reportar gaps regularmente
✅ Revisar antes de cada release

### 4. **Métricas Importante**
```
📊 Métricas a Monitorear:
   - Pass Rate (objetivo > 95%)
   - Defect Density (máx 2 por 1000 LOC)
   - Code Coverage (objetivo > 80%)
   - Requirement Traceability (100%)
   - Mean Time to Resolution (MTTR)
   - Test Cycle Time
```

### 5. **Comunicación**
✅ Generar reportes diarios/semanales
✅ Usar dashboards en tiempo real
✅ Escalación automática de P0/Critical
✅ Retrospectivas post-release
✅ Sharing de lecciones aprendidas

---

## 📊 Ejemplo de Flujo Completo

```
Día 1: Planning
├─ create_test_plan
├─ add_requirement_to_rtm (REQ-1 → REQ-50)
└─ create_test_case (TC-1 → TC-200)

Día 2-5: Execution
├─ record_test_result (run batch 1)
├─ record_test_result (run batch 2)
└─ report_defect (encontrados: DEF-1 → DEF-15)

Día 6: Analysis
├─ get_execution_stats → 88% pass rate
├─ list_defects (severity: critical) → 2 defectos P0
├─ get_coverage_report → 78% coverage
└─ get_rtm_report → 95% requirement coverage

Día 7: Report
└─ generate_qa_report → ejecutivos, stakeholders

Decisión: GO/NO-GO basada en métricas

Si NO-GO:
├─ Developers arreglan defectos críticos
├─ Smoke test suite (TC subset)
└─ Re-evaluación

Si GO:
├─ Release pushed
├─ Post-release monitoring
└─ Retrospectiva
```

---

## 🛠️ Troubleshooting

### Error: "Test case not found"
Verifica que el ID del test case sea correcto
```bash
list_test_cases() # para ver todos los IDs
```

### Error: "Connection timeout"
Asegúrate que el MCP server esté corriendo
```bash
npm start
```

### High False Positive Rate
Revisa la especificación del test case
- ¿Está bien definido el expected result?
- ¿Hay flakiness por timing?
- ¿Los datos de test son correctos?

---

## 📞 Soporte y Contribuciones

Para reportar issues o contribuir:
1. Abre un GitHub issue con detalles
2. Incluye logs y pasos para reproducir
3. Proporciona contexto del ambiente
4. Submit PR con fix propuesto

---

**Made with ❤️ for Quality Assurance Engineering**

TDQS

B3/5.0

Scored across 15 tools

Disambiguation5/5

Each tool targets a distinct aspect of QA workflow (handoff, checkpoints, test cases, reporting, recommendations, validations). No two tools appear to do the same thing.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern (e.g., create_test_case, validate_context_health), making it easy to predict functionality.

Tool Count5/5

15 tools is well-scoped for a QA server covering test creation, execution, reporting, defect tracking, and stage management. Each tool serves a clear purpose.

Completeness4/5

Core workflows (create, find, execute, report, validate) are covered. Minor gaps include missing update/delete operations for test cases, but the surface is sufficient for the intended structured process.

Maintenance

ActivityInactive
ResponsivenessNo issues