🎉 MCP SonarQube Manager
✅ Versión estable: Integración completa con SonarQube mediante Model Context Protocol. 31 herramientas: Análisis de código, gestión de issues, métricas de calidad y seguridad. Listo para producción: Completamente probado y funcional.
📋 Descripción
MCP SonarQube Manager es un servidor que implementa el Model Context Protocol (MCP) para integrar SonarQube con asistentes de IA como GitHub Copilot o Claude Desktop.
Permite a tu asistente de IA acceder, analizar y gestionar la calidad de tu código en tiempo real: consultar métricas, revisar vulnerabilidades, gestionar issues de seguridad y entender por qué se violan las reglas de codificación, todo sin salir de tu editor.
✨ Características Principales
- 📊 Análisis Completo: Métricas de calidad, cobertura, bugs, vulnerabilidades y deuda técnica.
- 🛡️ Seguridad: Gestión de Security Hotspots y vulnerabilidades confirmadas.
- 🐛 Gestión de Issues: Listar, filtrar, asignar y resolver incidencias.
- 📏 Reglas Inteligentes: Explicaciones detalladas de qué es un problema y cómo solucionarlo.
- 🌿 Multi-rama: Análisis y comparación entre diferentes ramas del proyecto.
🛠️ 31 Herramientas Disponibles
📊 Proyectos (11 herramientas)
| Herramienta | Descripción |
|---|---|
list_sonarqube_projects | Lista todos los proyectos disponibles. |
update_projects_cache | Fuerza actualización del caché local de proyectos. |
search_projects_by_name | Busca proyectos por nombre parcial. |
get_project_quality_metrics | Métricas clave: bugs, coverage, code smells, deuda técnica. |
get_project_quality_gate_status | Verifica si el proyecto pasa los criterios de calidad (Quality Gate). |
get_project_details | Información detallada del proyecto e histórico de análisis. |
get_project_analysis_history | Historial de análisis previos y eventos asociados. |
get_project_duplication_metrics | Analiza código duplicado: % densidad, líneas y bloques. |
get_project_complexity_metrics | Complejidad ciclomática y cognitiva. |
get_project_summary_report | Reporte ejecutivo completo del estado del proyecto. |
compare_project_metrics_with_previous | Compara métricas actuales con análisis anterior (tendencias). |
🛡️ Seguridad (2 herramientas)
| Herramienta | Descripción |
|---|---|
get_project_security_hotspots | Puntos críticos de seguridad que requieren revisión manual. |
get_project_security_issues | Vulnerabilidades confirmadas que requieren acción inmediata. |
🐛 Issues (9 herramientas)
| Herramienta | Descripción |
|---|---|
list_sonarqube_issues_by_severity | Filtra por severidad (BLOCKER, CRITICAL, MAJOR, MINOR, INFO). |
list_sonarqube_issues_by_type | Filtra por tipo (BUG, VULNERABILITY, CODE_SMELL). |
search_issues_by_file | Encuentra issues en un archivo específico. |
get_sonarqube_issue_details | Detalles completos de una incidencia específica. |
get_sonarqube_issues_statistics | Resumen estadístico de issues por tipo y severidad. |
add_comment_to_issue | Añade un comentario a una incidencia. |
assign_issue_to_user | Asigna una incidencia a un usuario de SonarQube. |
change_sonarqube_issue_status | Cambia el estado (OPEN → RESOLVED, FALSE POSITIVE, etc.). |
bulk_resolve_issues | Resuelve múltiples incidencias simultáneamente. |
🌿 Ramas (3 herramientas)
| Herramienta | Descripción |
|---|---|
list_project_branches | Lista todas las ramas analizadas de un proyecto. |
get_branch_metrics | Obtiene métricas específicas de una rama. |
compare_branches | Compara métricas entre dos ramas (ej. feature vs main). |
📏 Reglas y Sistema (6 herramientas)
| Herramienta | Descripción |
|---|---|
get_rule_details | Explicación detallada de una regla, con ejemplos correcto/incorrecto. |
list_active_rules | Lista reglas activas en el perfil de calidad. |
search_rules_by_language | Busca reglas por lenguaje (Python, TypeScript, Java, etc.). |
list_sonarqube_plugins | Lista plugins instalados en el servidor. |
get_sonarqube_health_status | Verifica el estado de salud del servidor SonarQube. |
get_sonarqube_version | Obtiene la versión del servidor. |
📦 Instalación
Requisitos
- Python 3.10+
- Acceso a servidor SonarQube con token de autenticación
1. Clonar el repositorio
git clone
cd mcp-py-sonarqube2. Crear entorno virtual
python -m venv venv
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows3. Instalar dependencias
pip install -r requirements.txt⚙️ Configuración
Variables de Entorno
El servidor leerá automáticamente las variables desde un archivo .env en la raíz del proyecto. Esto facilita la configuración sin exponer credenciales en archivos JSON.
Crea .env basándote en .env.example:
cp .env.example .envEdita .env con tus datos:
# URL del servidor SonarQube
SONARQUBE_SERVER_URL=http://localhost:9000
# Token de autenticación
# Genéralo en: SonarQube > My Account > Security > Tokens
SONARQUBE_TOKEN=squ_tu_token_aqui_xxxNota: Las variables del .env se cargan automáticamente. No es necesario exponerlas en la configuración del cliente MCP.🔌 Integración con Clientes MCP
Una vez configurado el .env, la configuración del cliente es muy simple: solo necesita apuntar al ejecutable de Python y al script main.py.
VS Code (GitHub Copilot)
Edita el archivo de configuración de MCP:
- Linux/Mac:
~/.config/Code/User/globalStorage/github.copilot-chat/config/mcp.json - Windows:
%APPDATA%\Code\User\globalStorage\github.copilot-chat\config\mcp.json
{
"mcpServers": {
"sonarqube": {
"command": "/ruta/absoluta/a/mcp-py-sonarqube/venv/bin/python",
"args": ["/ruta/absoluta/a/mcp-py-sonarqube/src/main.py"]
}
}
}Ejemplo en Linux:
{
"mcpServers": {
"sonarqube": {
"command": "/home/usuario/proyectos/mcp-py-sonarqube/venv/bin/python",
"args": ["/home/usuario/proyectos/mcp-py-sonarqube/src/main.py"]
}
}
}Ejemplo en Windows:
{
"mcpServers": {
"sonarqube": {
"command": "C:/Users/usuario/proyectos/mcp-py-sonarqube/venv/Scripts/python.exe",
"args": ["C:/Users/usuario/proyectos/mcp-py-sonarqube/src/main.py"]
}
}
}Importante: Usa siempre rutas absolutas. El ejecutable de Python debe estar dentro del venv para que cargue correctamente el .env.Claude Desktop
Edita: ~/Library/Application Support/Claude/claude_desktop_config.json (Mac) o %APPDATA%\Claude\claude_desktop_config.json (Windows)
{
"mcpServers": {
"sonarqube": {
"command": "/ruta/absoluta/a/mcp-py-sonarqube/venv/bin/python",
"args": ["/ruta/absoluta/a/mcp-py-sonarqube/src/main.py"]
}
}
}🚀 Ejemplos de Uso
Una vez configurado, pregunta a tu asistente:
- *"¿Cuál es el estado de calidad del proyecto 'backend-api'?"*
- *"Lista los security hotspots del proyecto 'frontend' que necesitan revisión."*
- *"¿Hay alguna vulnerabilidad crítica en el archivo
auth.service.ts?"* - *"Explícame por qué falla la regla 'python:S1192' y dame un ejemplo de cómo corregirla."*
- *"Asigna el issue #ABC123 al usuario 'dev_senior'."*
- *"Compara la cobertura de la rama 'feature/login' con 'main'."*
- *"Genera un reporte completo de la calidad del proyecto 'core-api'."*
🏗️ Estructura del Proyecto
mcp-py-sonarqube/
├── src/
│ ├── main.py # Punto de entrada del servidor MCP
│ ├── config.py # Cliente SonarQube extendido (APIs personalizadas)
│ ├── cache.py # Gestión de caché de proyectos
│ └── tools/ # Módulos de herramientas MCP
│ ├── projects.py # 11 herramientas para análisis de proyectos
│ ├── issues.py # 9 herramientas para gestión de issues
│ ├── branches.py # 3 herramientas para análisis de ramas
│ ├── rules.py # Herramientas para reglas de calidad
│ └── system.py # Herramientas del sistema
├── .env # Variables de entorno (no commitear)
├── .env.example # Plantilla de configuración
├── requirements.txt # Dependencias Python
└── README.md # Esta documentación🔒 Seguridad
- Nunca compartas tu
.env: Contiene credenciales sensibles. - El
.envestá en.gitignorepara prevenir commits accidentales. - Usa tokens con permisos mínimos necesarios.
- Rota los tokens periódicamente.
🧪 Testing
Para verificar que todo funciona correctamente:
source venv/bin/activate
python3 << 'EOF'
import sys
sys.path.insert(0, 'src')
from main import mcp
print("✅ MCP Server initialized successfully")
EOF📚 Documentación Completa
Consulta nuestras guías completas para sacar el máximo provecho del MCP SonarQube Manager:
Guías Principales
| Documento | Contenido |
|---|---|
| API Reference | Documentación completa de los 31 tools con parámetros, ejemplos y valores de retorno |
| Workflows | 12+ flujos de trabajo comunes: monitoreo, mejora de calidad, gestión de issues, seguridad |
| Testing Guide | Cómo ejecutar y escribir tests, estrategias de testing, cobertura de código |
| Troubleshooting | Soluciones a problemas comunes: conexión, autenticación, proyectos, integración |
Casos de Uso
- Monitoreo Diario: Daily Project Quality Summary
- Mejora de Código: Fix Critical Issues First
- Seguridad: Security Vulnerability Assessment
- Integración CI/CD: CI/CD Integration
- Reportes Automáticos: Daily Quality Report
Primeros Pasos
- Instalación: Sigue los pasos de Instalación arriba
- Primer análisis: Consulta Workflows: Daily Summary
- Duda sobre un tool: Busca en API Reference
- Problema: Mira Troubleshooting
🤝 Contribución
Las contribuciones son bienvenidas. Por favor:
- Abre un issue primero para discutir cambios importantes.
- Mantén la estructura y convenciones de código existentes.
- Incluye pruebas para nuevas funcionalidades.
📝 Licencia
Licencia No Comercial: Este proyecto está disponible para uso personal y educativo.
- ✅ Permitido: Uso personal, educativo, investigación, proyectos open-source sin fines de lucro.
- ❌ Prohibido: Uso comercial, redistribución con fines de lucro, incorporación en productos comerciales.
Para uso comercial, contacta con el autor.
Desarrollado con ❤️ usando FastMCP y Python SonarQube API
