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)
- Ve a Google Cloud Console
- Crea un nuevo proyecto o selecciona uno existente
- Habilita la API de Google Sheets
- 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"
- 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
- 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:
- Abre
server.py - Encuentra la constante
SPREADSHEET_IDcerca de la parte superior del archivo - 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 filtrarlimit(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 analizardays(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 fallosversion(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 compararversion2(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_EMAILyGOOGLE_PRIVATE_KEYesté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