MicroShift Test Analyzer

Analiza fallos de pruebas de MicroShift desde Google Sheets para correlacionarlos con versiones específicas de MicroShift.

Documentación

Servidor MCP MicroShift Test Analyzer

Un servidor MCP (Model Context Protocol) basado en Python que analiza fallos de pruebas de MicroShift desde Google Sheets, proporcionando herramientas especializadas para correlacionar fallos de pruebas con versiones de MicroShift.

Características

  • Pipelines fallidos por versión: Obtén pipelines de pruebas fallidos agrupados por versión de MicroShift
  • Resumen de fallos: Obtén estadísticas agregadas de fallos de pruebas en todas las versiones
  • Tendencias de fallos en pipelines: Analiza tendencias de fallos para pipelines de pruebas específicos a lo largo del tiempo
  • Buscar razones de fallos: Busca razones de fallos específicas en todas las pruebas
  • Comparación de versiones: Compara resultados de pruebas entre diferentes versiones de MicroShift
  • Datos en tiempo real: Obtiene datos directamente de Google Sheets

Configuración

1. Instalar dependencias

pip install -r requirements.txt

2. Configuración de la API de Google Sheets

Opción A: Cuenta de servicio (recomendada)

  1. Ve a Google Cloud Console
  2. Crea un nuevo proyecto o selecciona uno existente
  3. Habilita la API de Google Sheets
  4. Crea una cuenta de servicio:
    • Ve a IAM y administración > Cuentas de servicio
    • Haz clic en "Crear cuenta de servicio"
    • Completa los detalles y haz clic en "Crear"
    • Omite la asignación de roles por ahora
    • Haz clic en "Listo"
  5. Genera una clave para la cuenta de servicio:
    • Haz clic en la cuenta de servicio creada
    • Ve a la pestaña "Claves"
    • Haz clic en "Agregar clave" > "Crear nueva clave"
    • Elige formato JSON
    • Descarga el archivo y guárdalo de forma segura
  6. Comparte tu Google Sheet con el correo de la cuenta de servicio:
    • Abre tu Google Sheet
    • Haz clic en "Compartir"
    • Agrega el correo de la cuenta de servicio (que se encuentra en el archivo JSON como client_email)
    • Otórgale permisos de "Visor"

3. Configurar variables de entorno

Copia el archivo de entorno de ejemplo:

cp env.example .env

Edita .env y configura tus credenciales de Google usando los valores de tu archivo JSON de cuenta de servicio:

GOOGLE_CLIENT_EMAIL=your-service-account@your-project.iam.gserviceaccount.com
GOOGLE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nYour private key content\n-----END PRIVATE KEY-----\n"

Nota: Copia los valores de client_email y private_key directamente desde tu archivo JSON descargado. Asegúrate de incluir las comillas alrededor de la clave privada y conserva los caracteres \n.

4. Actualizar la configuración de la hoja de cálculo

El servidor está configurado actualmente para leer desde el ID de hoja de cálculo en la URL que proporcionaste. Si necesitas cambiarlo:

  1. Abre server.py
  2. Encuentra la constante SPREADSHEET_ID cerca de la parte superior del archivo
  3. Reemplázala con tu ID de hoja de cálculo

También puede que necesites ajustar el nombre de la hoja y el rango en la función get_sheets_data() (actualmente configurado en '2025_06!A:ZZ').

Uso

Ejecutar el servidor

python server.py

El servidor se iniciará y escuchará conexiones MCP a través de stdio.

Modo de desarrollo

python server.py

Herramientas disponibles

El servidor MCP proporciona las siguientes herramientas especializadas para el análisis de pruebas de MicroShift:

1. get_failed_pipelines_by_version

Obtén pipelines de pruebas fallidos agrupados por versión de MicroShift.

Parámetros:

  • version (opcional): Versión específica de MicroShift para filtrar
  • limit (opcional): Número máximo de resultados a devolver (predeterminado: 50)

2. get_failure_summary

Obtén un resumen de fallos de pruebas en todas las versiones de MicroShift.

Parámetros:

  • group_by (opcional): Agrupa fallos por "version", "pipeline" o "reason" (predeterminado: "version")

3. get_pipeline_failure_trends

Analiza tendencias de fallos para pipelines de pruebas específicos a lo largo del tiempo.

Parámetros:

  • pipeline_name (opcional): Nombre del pipeline de pruebas a analizar
  • days (opcional): Número de días hacia atrás a considerar (predeterminado: 30)

4. search_failure_reasons

Busca razones de fallos específicas en todas las pruebas.

Parámetros:

  • search_term (obligatorio): Término de búsqueda para encontrar en las razones de fallos
  • version (opcional): Filtra por versión específica de MicroShift

5. get_version_comparison

Compara resultados de pruebas entre diferentes versiones de MicroShift.

Parámetros:

  • version1 (obligatorio): Primera versión de MicroShift a comparar
  • version2 (obligatorio): Segunda versión de MicroShift a comparar

Formato de la hoja de cálculo

El servidor espera que tu Google Sheet tenga la siguiente estructura de columnas:

  • Columna A: Fecha (ej., "21/06/2025_04:52:27")
  • Columna B: ID (ej., "1233")
  • Columna C: MICROSHIFT_TARGET (ej., "4.18.0~0.nightly")
  • Columna D: BREW_VERSION (ej., "microshift-4.18.0~0.nightly_2025_06_20_030312...")
  • Columna E: Versión de MicroShift (ej., "4.18.0~0.nightly")
  • Columnas F+: Imágenes de compilación y pipelines de pruebas con formato multilínea que contiene:
    • Arquitectura (x86_64, aarch64, x86)
    • Tipo de prueba (install, upgrade, etc.)
    • Framework (RobotFramework, Ginkgo)
    • Estado (SUCCESS, FAILURE)
    • Razón del fallo (si el estado es FAILURE)

Integración con clientes MCP

Este servidor sigue el patrón oficial del MCP Python SDK usando FastMCP. Puede usarse con cualquier cliente compatible con MCP como Claude for Desktop.

Configuración de Claude for Desktop

Agrega esto a tu archivo de configuración de Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json en macOS):

{
  "mcpServers": {
    "microshift-test-analyzer": {
      "command": "python",
      "args": ["/absolute/path/to/mcp-test-scenarios-server/server.py"],
      "cwd": "/absolute/path/to/mcp-test-scenarios-server"
    }
  }
}

Ejemplo de uso

Una vez conectado a Claude for Desktop, puedes hacer preguntas como:

  • "¿Qué pipelines de pruebas fallaron para la versión 4.18.0 de MicroShift?"
  • "Muéstrame todos los fallos relacionados con 'ssh connection failed'"
  • "Compara los resultados de pruebas entre las versiones 4.18.0 y 4.17.0"
  • "¿Cuáles son las tendencias de fallos para el pipeline de actualización rpm?"
  • "Dame un resumen de todos los fallos de pruebas agrupados por razón"

Solución de problemas

Problemas de autenticación

  • Asegúrate de que tus variables de entorno GOOGLE_CLIENT_EMAIL y GOOGLE_PRIVATE_KEY estén configuradas correctamente
  • Verifica que la cuenta de servicio tenga acceso al Google Sheet
  • Comprueba que la API de Google Sheets esté habilitada en tu proyecto de Google Cloud
  • Asegúrate de que el formato de la clave privada sea correcto (incluyendo los caracteres \n)

Problemas de análisis de datos

  • Verifica que tu hoja de cálculo siga la estructura de columnas esperada
  • Asegúrate de que los datos del pipeline estén formateados con saltos de línea adecuados que separen los diferentes componentes
  • Comprueba que los valores de estado sean uno de: SUCCESS, FAILURE, FAILED, PASS, PASSED

Problemas de conexión del servidor

  • Asegúrate de que la ruta del script del servidor en tu configuración MCP sea correcta
  • Verifica que todas las dependencias de Python requeridas estén instaladas
  • Comprueba que el ID de Google Sheets en el código del servidor coincida con tu hoja de cálculo real

Mensajes de error comunes

  • "No data available": La hoja de cálculo está vacía o el análisis falló
  • "Invalid credentials": Falló la autenticación de la cuenta de servicio
  • "Permission denied": La cuenta de servicio no tiene acceso a la hoja de cálculo
  • "Column index out of range": La estructura de la hoja de cálculo no coincide con el formato esperado

Ejemplos de API

Usando curl para probar el servidor directamente