/ Directorio / Playground / SonarQube MCP
● Oficial SonarSource 🔑 Requiere tu clave

SonarQube MCP

por SonarSource · SonarSource/sonarqube-mcp-server

Los hallazgos de análisis estático de Sonar en manos de Claude — corrige incidencias por archivo y regla, no escaneando un dashboard.

sonarqube-mcp-server es el MCP oficial para SonarQube y SonarCloud. Expone incidencias, hotspots de seguridad, quality gates, métricas e historial de calidad del código como herramientas MCP. Claude lee la incidencia, consulta la regla y escribe una corrección basada en la recomendación oficial — no una suposición genérica.

Por qué usarlo

Características clave

Demo en vivo

Cómo se ve en la práctica

sonarqube-mcp.replay ▶ listo
0/0

Instalar

Elige tu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

Abre Claude Desktop → Settings → Developer → Edit Config. Reinicia después de guardar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

Cursor usa el mismo esquema mcpServers que Claude Desktop. La configuración del proyecto prevalece sobre la global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

Haz clic en el icono MCP Servers de la barra lateral de Cline y luego en "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

Mismo formato que Claude Desktop. Reinicia Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "sonarqube-mcp",
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  ]
}

Continue usa un array de objetos de servidor en lugar de un mapa.

~/.config/zed/settings.json
{
  "context_servers": {
    "sonarqube-mcp": {
      "command": {
        "path": "docker",
        "args": [
          "run",
          "--init",
          "--pull=always",
          "-i",
          "--rm",
          "-e",
          "SONARQUBE_TOKEN",
          "-e",
          "SONARQUBE_ORG",
          "mcp/sonarqube"
        ]
      }
    }
  }
}

Añádelo a context_servers. Zed recarga en caliente al guardar.

claude mcp add sonarqube-mcp -- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG mcp/sonarqube

Un solo comando. Verifica con claude mcp list. Quita con claude mcp remove.

Casos de uso

Usos del mundo real: SonarQube MCP

Corregir en lote todas las incidencias de una sola regla en todo el código

👤 Desarrolladores pagando deuda técnica ⏱ ~45 min intermediate

Cuándo usarlo: Sonar marcó 47 instancias de la misma regla y prefieres corregirlas todas en un solo PR.

Requisitos previos
  • Token de Sonar — Usuario → Seguridad → Generar token (acotado a proyecto si es posible)
  • Docker disponible — Configuración estándar de Docker; la imagen se descarga en el primer uso
Flujo
  1. Identificar la regla
    Use sonarqube-mcp. Top 5 rules by open-issue count in project 'foo'.✓ Copiado
    → Clave de regla + conteo + severidad
  2. Obtener todas las instancias de una
    List every open issue for rule java:S2293 (Use Diamond Operator) — file, line, snippet.✓ Copiado
    → 47 incidencias con archivo:línea y código circundante
  3. Aplicar la corrección
    For each, apply the rule's recommended fix. Keep changes minimal; don't reformat.✓ Copiado
    → 47 ediciones pequeñas en ~20 archivos
  4. Volver a escanear para verificar
    After my CI runs the next analysis, recheck the issue count for that rule.✓ Copiado
    → Conteo baja a 0

Resultado: Un PR enfocado que cierra una regla completa, en lugar de 47 commits de corrección dispersos.

Errores comunes
  • La corrección automática de reglas rompe código generado — Filtra por directorio; omite rutas generadas/test o audítalas manualmente
Combinar con: github · filesystem

Depurar por qué el quality gate de un PR está fallando

👤 Desarrolladores cuyo PR fue bloqueado ⏱ ~30 min intermediate

Cuándo usarlo: Sonar falla tu PR y el dashboard es abrumador.

Flujo
  1. Obtener el estado del gate
    Use sonarqube-mcp. Show quality gate status for PR 1234 — which conditions failed?✓ Copiado
    → Desglose del gate: ej. 'New Coverage 67% < 80% threshold'
  2. Profundizar en la condición que falla
    For 'New Coverage' below threshold — list new lines added in this PR with no test coverage.✓ Copiado
    → Lista de nuevas líneas sin cobertura por archivo
  3. Generar pruebas
    Write tests covering those uncovered lines.✓ Copiado
    → Nuevos archivos de prueba añadidos; revisión mental de los casos

Resultado: PR desbloqueado con pruebas precisas, no una cobertura masiva sin sentido.

Errores comunes
  • Pruebas escritas para cobertura, no para comportamiento — Pide a Claude que también declare qué afirma cada prueba; rechaza las que no tienen aserciones reales
Combinar con: github

Revisar y resolver hotspots de seguridad

👤 Ingenieros conscientes de la seguridad ⏱ ~40 min advanced

Cuándo usarlo: Los hotspots se han acumulado y necesitan ser clasificados como «revisado y seguro» o «necesita corrección».

Flujo
  1. Listar hotspots no resueltos
    Use sonarqube-mcp. List all unreviewed security hotspots in project 'foo' grouped by category.✓ Copiado
    → Hotspots agrupados por categoría (ej. 'Criptografía débil', 'Auth')
  2. Explicar los riesgos
    For each, summarize the risk in 1 line. Mark which are clearly safe-to-acknowledge vs need-fix.✓ Copiado
    → Lista de clasificación anotada
  3. Corregir o reconocer
    For need-fix ones, apply the rule's safe pattern. For safe ones, give me the comment to leave on the hotspot review.✓ Copiado
    → Correcciones aplicadas + comentarios de revisión redactados

Resultado: Hotspots resueltos con rastro de auditoría, no ignorados silenciosamente.

Errores comunes
  • Marcar cosas como 'seguras' sin pensar — Exige a Claude que cite *por qué* es seguro en el comentario — eso crea un rastro auditable
Combinar con: github

Combinaciones

Combínalo con otros MCPs para multiplicar por 10

sonarqube-mcp + github

Anotar PRs con hallazgos de Sonar o crear incidencias automáticamente para nuevas violaciones

On every PR, comment Sonar's gate result and any new issues it added.✓ Copiado
sonarqube-mcp + filesystem

Aplicar correcciones de reglas localmente y hacer commit

Fix all java:S2293 instances; write the diffs locally for review before commit.✓ Copiado

Herramientas

Lo que expone este MCP

HerramientaEntradasCuándo llamarCoste
search_issues project, rules?, severities?, types?, branch? Filtrar incidencias por regla/severidad/tipo 1 SonarQube API call
get_rule rule_key Leer la guía oficial antes de corregir 1 API call
get_quality_gate project, branch_or_pr Diagnosticar fallos del gate en PR/rama 1 API call
search_hotspots project, status? Revisión de seguridad 1 API call
get_metrics project, metric_keys[] Verificaciones de tendencias/deriva (cobertura, duplicaciones) 1 API call

Coste y límites

Lo que cuesta ejecutarlo

Cuota de API
El límite de la API de Sonar varía según la edición — sé conservador con los bucles masivos
Tokens por llamada
Las incidencias vienen en páginas de 100; cada incidencia ~200 tokens
Monetario
Gratuito para proyectos públicos de SonarCloud; licencia Enterprise para SonarQube
Consejo
Filtra agresivamente en search_issues — paginar por todo es costoso

Seguridad

Permisos, secretos, alcance

Ámbitos mínimos: Browse See Source Code
Almacenamiento de credenciales: Variable de entorno SONARQUBE_TOKEN, acotada a proyecto
Salida de datos: A tu instancia de Sonar (sonarcloud.io o auto-alojada)
No conceder nunca: Permisos de administración a un agente dirigido por chat

Resolución de problemas

Errores comunes y soluciones

401 Unauthorized

Regenera el token; verifica que no sea solo de alcance de usuario cuando se necesita alcance de proyecto

Verificar: curl -u $SONARQUBE_TOKEN: $SONAR_HOST/api/projects/search
Organización incorrecta

La variable de entorno SONARQUBE_ORG debe coincidir exactamente con el slug de tu organización en Sonar (minúsculas)

El contenedor Docker no puede llegar a SonarQube auto-alojado

Usa --network host o expón tu SonarQube en un hostname accesible; define SONAR_HOST_URL dentro del contenedor

Verificar: docker run ... curl $SONAR_HOST_URL/api/system/status
La lista de incidencias parece desactualizada

Sonar refleja el último análisis completado — vuelve a ejecutar el análisis o verifica la fecha del último análisis del proyecto

Alternativas

SonarQube MCP vs otros

AlternativaCuándo usarlaContrapartida
CodeQL via GitHub MCPYa estás en GitHub Advanced Security y quieres los hallazgos en la misma superficieConjunto de reglas diferente; sin concepto de quality gate
Semgrep MCPQuieres escaneo basado en patrones ligero sin infraestructura de SonarMenos cobertura de code smells / métricas de mantenibilidad

Más

Recursos

📖 Lee el README oficial en GitHub

🐙 Ver issues abiertas

🔍 Ver todos los 400+ servidores MCP y Skills