SonarQube代码分析管理

MCP SonarQube Manager是一个通过Model Context Protocol(MCP)集成SonarQube的服务器,为AI助手提供实时代码质量分析、漏洞管理和问题解决功能。

  • by AlexAlonsoMontero
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 AlexAlonsoMontero/mcp-sonarqube-manager

使用说明

🎉 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 <url-del-repositorio>
cd mcp-py-sonarqube

2. Crear entorno virtual

python -m venv venv
source venv/bin/activate       # Linux/Mac
# venv\Scripts\activate         # Windows

3. 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 .env

Edita .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_xxx

Nota: 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 .env está en .gitignore para 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

Primeros Pasos

  1. Instalación: Sigue los pasos de Instalación arriba
  2. Primer análisis: Consulta Workflows: Daily Summary
  3. Duda sobre un tool: Busca en API Reference
  4. Problema: Mira Troubleshooting

🤝 Contribución

Las contribuciones son bienvenidas. Por favor:

  1. Abre un issue primero para discutir cambios importantes.
  2. Mantén la estructura y convenciones de código existentes.
  3. 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