SonarQube

oficial

Proporciona una integración fluida con SonarQube Server o Cloud, y permite el análisis de fragmentos de código directamente dentro del contexto del agente.

¿Qué puedes hacer con SonarQube MCP?

  • Analizar fragmentos de código — Pídele a tu asistente que ejecute un análisis de código local en un fragmento o archivo mediante analyze_code_snippet, con montaje opcional del espacio de trabajo para evitar la saturación del contexto.
  • Buscar y gestionar incidencias — Haz que el asistente encuentre, revise y actualice incidencias de SonarQube, incluido el cambio de su estado cuando no esté en modo de solo lectura.
  • Comprobar puertas de calidad y medidas — Solicita el estado de las puertas de calidad, métricas de proyectos, cobertura y riesgos de dependencias en tus proyectos de SonarQube.
  • Revisar puntos calientes de seguridad — Deja que el asistente busque y recorra los puntos calientes de seguridad marcados en tu base de código.
  • Explorar proyectos y reglas — Usa al asistente para explorar proyectos, listar lenguajes compatibles y consultar reglas de codificación directamente desde SonarQube.

Documentación

Servidor MCP de SonarQube

Build Quality Gate Status

El Servidor MCP de SonarQube es un servidor del Protocolo de Contexto de Modelos (MCP) que permite una integración fluida con SonarQube Server o Cloud para la calidad y seguridad del código. También admite el análisis de fragmentos de código directamente en el contexto del agente.

Configuración rápida

Mejores prácticas de seguridad

🔒 Importante: Tu token de SonarQube es una credencial sensible. Sigue estas prácticas de seguridad:

Al usar comandos CLI:

  • Evita codificar tokens en los argumentos de línea de comandos: se guardan en el historial del shell
  • Usa variables de entorno: configura los tokens en variables de entorno antes de ejecutar comandos

Al usar archivos de configuración:

  • Nunca subas tokens al control de versiones
  • Usa sustitución de variables de entorno en los archivos de configuración cuando sea posible

🚀 Genera tu configuración

La forma más rápida de comenzar es el Generador de Configuración del Servidor MCP de SonarQube – una herramienta interactiva que produce una configuración lista para usar para tu cliente de agente de IA preferido.

Configuración manual

Si prefieres configurar las cosas tú mismo, el método más sencillo es usar nuestra imagen de contenedor en sonarsource/sonarqube-mcp. Usa sonarsource/sonarqube-mcp para actualizaciones automáticas (con --pull=always), o fija una etiqueta de versión (por ejemplo, sonarsource/sonarqube-mcp:1.19.0.2785) para implementaciones reproducibles. Lee a continuación si quieres compilarlo localmente.

Nota: Aunque los ejemplos a continuación usan docker, cualquier runtime de contenedor compatible con OCI funciona (por ejemplo, Podman, nerdctl). Simplemente reemplaza docker con tu herramienta preferida.

Antigravity

El Servidor MCP de SonarQube está disponible en la Tienda MCP de Antigravity. Sigue estas instrucciones:

  1. Abre el Panel Lateral del Agente
  2. Haz clic en los tres puntos (...) en la esquina superior derecha y selecciona Servidores MCP
  3. Busca SonarQube y selecciona Instalar
  4. Proporciona el token de usuario de SonarQube requerido. También puedes proporcionar tu clave de organización para SonarQube Cloud o la URL de SonarQube si te conectas a SonarQube Server.

Para SonarQube Cloud US, establece la URL en https://sonarqube.us.

Alternativamente, puedes configurar manualmente el servidor mediante mcp_config.json:

  • Para conectarte con SonarQube Cloud:

En el Panel Lateral del Agente, haz clic en los tres puntos (...) -> Tienda MCP -> Gestionar Servidores MCP -> Ver configuración sin procesar, y agrega lo siguiente:

{
  "mcpServers": {
    "sonarqube": {
      "command": "docker",
      "args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"],
      "env": {
        "SONARQUBE_TOKEN": "<YOUR_TOKEN>",
        "SONARQUBE_ORG": "<YOUR_ORG>"
      }
    }
  }
}

Para SonarQube Cloud US, agrega manualmente "SONARQUBE_URL": "https://sonarqube.us" a la sección env y "-e", "SONARQUBE_URL" al array args.

  • Para conectarte con SonarQube Server:
{
  "mcpServers": {
    "sonarqube": {
      "command": "docker",
      "args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_URL", "sonarsource/sonarqube-mcp"],
      "env": {
        "SONARQUBE_TOKEN": "<YOUR_USER_TOKEN>",
        "SONARQUBE_URL": "<YOUR_SERVER_URL>"
      }
    }
  }
}
Claude Code
  • Para conectarte con SonarQube Cloud:
claude mcp add sonarqube \
  --env SONARQUBE_TOKEN=$SONAR_TOKEN \
  --env SONARQUBE_ORG=$SONAR_ORG \
  -- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG sonarsource/sonarqube-mcp

Para SonarQube Cloud US, agrega --env SONARQUBE_URL=https://sonarqube.us al comando.

  • Para conectarte con SonarQube Server:
claude mcp add sonarqube \
  --env SONARQUBE_TOKEN=$SONAR_USER_TOKEN \
  --env SONARQUBE_URL=$SONAR_URL \
  -- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_URL sonarsource/sonarqube-mcp
CLI de Codex

Edita manualmente el archivo de configuración en ~/.codex/config.toml y agrega la siguiente configuración:

  • Para conectarte con SonarQube Cloud:
[mcp_servers.sonarqube]
command = "docker"
args = ["run", "--init", "--pull=always", "--rm", "-i", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"]
env = { "SONARQUBE_TOKEN" = "<YOUR_USER_TOKEN>", "SONARQUBE_ORG" = "<YOUR_ORG>" }

Para SonarQube Cloud US, agrega "SONARQUBE_URL" = "https://sonarqube.us" a la sección env y "-e", "SONARQUBE_URL" al array args.

  • Para conectarte con SonarQube Server:
[mcp_servers.sonarqube]
command = "docker"
args = ["run", "--init", "--pull=always", "--rm", "-i", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_URL", "sonarsource/sonarqube-mcp"]
env = { "SONARQUBE_TOKEN" = "<YOUR_TOKEN>", "SONARQUBE_URL" = "<YOUR_SERVER_URL>" }
Cursor
  • Para conectarte con SonarQube Cloud:

Install for SonarQube Cloud

Para SonarQube Cloud US, agrega manualmente "SONARQUBE_URL": "https://sonarqube.us" a la sección env en tu configuración MCP después de la instalación.

  • Para conectarte con SonarQube Server:

Install for SonarQube Server

CLI de Gemini

Nota: La extensión CLI de Gemini se ha movido al repositorio sonarqube-agent-plugins. Por favor, instálala desde allí en adelante.

Puedes instalar nuestra extensión de servidor MCP usando el siguiente comando:

gemini extensions install https://github.com/SonarSource/sonarqube-agent-plugins

Deberás configurar las variables de entorno requeridas antes de iniciar Gemini:

Variables de entorno requeridas:

  • Para SonarQube Cloud:

    • SONARQUBE_TOKEN - Tu token de SonarQube Cloud
    • SONARQUBE_ORG - Tu clave de organización
    • SONARQUBE_URL - (Opcional) Configúralo en https://sonarqube.us para SonarQube Cloud US
  • Para SonarQube Server:

    • SONARQUBE_TOKEN - Tu token de USUARIO de SonarQube Server
    • SONARQUBE_URL - Tu URL de SonarQube Server

Una vez instalada, la extensión se instalará en <home>/.gemini/extensions/sonarqube/gemini-extension.json.

CLI de GitHub Copilot

Después de iniciar Copilot CLI, ejecuta el siguiente comando para agregar el servidor MCP de SonarQube:

/mcp add

Tendrás que proporcionar diferente información sobre el servidor MCP; puedes usar la tecla Tab para navegar entre los campos.

  • Para conectarte con SonarQube Cloud:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_ORG, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_TOKEN>,SONARQUBE_ORG=<YOUR_ORG>
Tools: *

Para SonarQube Cloud US, agrega -e, SONARQUBE_URL a Argumentos y SONARQUBE_URL=https://sonarqube.us a Variables de Entorno.

  • Para conectarte con SonarQube Server:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_URL, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_USER_TOKEN>,SONARQUBE_URL=<YOUR_SERVER_URL>
Tools: *

El archivo de configuración se encuentra en ~/.copilot/mcp-config.json.

Agente de codificación de GitHub Copilot

El agente de codificación de GitHub Copilot puede aprovechar el servidor MCP de SonarQube directamente en tu CI/CD.

Para agregar los secretos a tu entorno de Copilot, sigue la documentación de Copilot. Solo los secretos con nombres con prefijo COPILOT_MCP_ estarán disponibles para tu configuración MCP.

En tu repositorio de GitHub, navega a Configuración -> Copilot -> Agente de codificación y agrega la siguiente configuración en la sección de configuración MCP:

  • Para conectarte con SonarQube Cloud:
{
  "mcpServers": {
    "sonarqube": {
      "type": "local",
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "--rm",
        "-i",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_TOKEN": "COPILOT_MCP_SONARQUBE_TOKEN",
        "SONARQUBE_ORG": "COPILOT_MCP_SONARQUBE_ORG"
      },
      "tools": ["*"]
    }
  }
}

Para SonarQube Cloud US, agrega "-e", "SONARQUBE_URL" al array args y "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL" a la sección env, luego configura el secreto COPILOT_MCP_SONARQUBE_URL=https://sonarqube.us.

  • Para conectarte con SonarQube Server:
{
  "mcpServers": {
    "sonarqube": {
      "type": "local",
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "--rm",
        "-i",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_URL",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_TOKEN": "COPILOT_MCP_SONARQUBE_USER_TOKEN",
        "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL"
      },
      "tools": ["*"]
    }
  }
}
Kiro

Crea un archivo .kiro/settings/mcp.json en tu directorio de trabajo (o edítalo si ya existe), agrega la siguiente configuración:

  • Para conectarte con SonarQube Cloud:
{
  "mcpServers": {
    "sonarqube": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e", 
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_TOKEN": "<YOUR_TOKEN>",
        "SONARQUBE_ORG": "<YOUR_ORG>"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

Para SonarQube Cloud US, agrega "-e", "SONARQUBE_URL" al array args y "SONARQUBE_URL": "https://sonarqube.us" a la sección env.

  • Para conectarte con SonarQube Server:
{
  "mcpServers": {
    "sonarqube": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e", 
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_URL",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_TOKEN": "<YOUR_USER_TOKEN>",
        "SONARQUBE_URL": "<YOUR_SERVER_URL>"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}
VS Code

Puedes usar los siguientes botones para simplificar el proceso de instalación dentro de VS Code.

Install for SonarQube Cloud

Para SonarQube Cloud US, agrega manualmente "SONARQUBE_URL": "https://sonarqube.us" a la sección env en tu configuración MCP después de la instalación.

Install for SonarQube Server

Windsurf

El Servidor MCP de SonarQube está disponible como un plugin de Windsurf. Sigue estas instrucciones:

  1. Abre Configuración de Windsurf > Cascade > Servidores MCP y selecciona Abrir Marketplace de MCP
  2. Busca sonarqube en el Marketplace de MCP de Cascade
  3. Elige el Servidor MCP de SonarQube y selecciona Instalar
  4. Agrega el token de usuario de SonarQube requerido. Luego agrega la clave de organización si quieres conectarte con SonarQube Cloud, o la URL de SonarQube si quieres conectarte a SonarQube Server o Community Build.

Para SonarQube Cloud US, establece la URL en https://sonarqube.us.

Zed

Navega a la vista de Extensiones en Zed y busca Servidor MCP de SonarQube. Al instalar la extensión, se te pedirá proporcionar las variables de entorno necesarias:

  • Al usar SonarQube Cloud:
{
  "sonarqube_token": "YOUR_SONARQUBE_TOKEN",
  "sonarqube_org": "SONARQUBE_ORGANIZATION_KEY",
  "docker_path": "DOCKER_PATH"
}

Para SonarQube Cloud US, agrega "sonarqube_url": "https://sonarqube.us" a la configuración.

  • Al usar SonarQube Server:
{
  "sonarqube_token": "YOUR_SONARQUBE_USER_TOKEN",
  "sonarqube_url": "YOUR_SONARQUBE_SERVER_URL",
  "docker_path": "DOCKER_PATH"
}

El docker_path es la ruta a un ejecutable de docker. Ejemplos:

Linux/macOS: /usr/bin/docker o /usr/local/bin/docker

Windows: C:\Program Files\Docker\Docker\resources\bin\docker.exe

💡 Consejo: Recomendamos extraer la imagen más reciente regularmente o antes de informar problemas para asegurarte de tener las características y correcciones más actualizadas.

Instalación manual

Puedes instalar manualmente el servidor MCP de SonarQube copiando el siguiente fragmento en el archivo de configuración de servidores MCP:

  • Para conectarte con SonarQube Cloud:
{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run",
      "--init",
      "--pull=always",
      "-i",
      "--rm",
      "-e",
      "SONARQUBE_TOKEN",
      "-e",
      "SONARQUBE_ORG",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_ORG": "<org>"
    }
  }
}
  • Para conectarte con SonarQube Server:
{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run",
      "--init",
      "--pull=always",
      "-i",
      "--rm",
      "-e",
      "SONARQUBE_TOKEN",
      "-e",
      "SONARQUBE_URL",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_URL": "<url>"
    }
  }
}

Integración con SonarQube para IDE

El Servidor MCP de SonarQube puede integrarse con SonarQube para IDE para mejorar aún más tu flujo de trabajo de desarrollo, proporcionando un mejor análisis de código e información directamente dentro de tu IDE.

Configuración

Al usar SonarQube para IDE, la variable de entorno SONARQUBE_IDE_PORT debe configurarse con el número de puerto correcto. SonarQube para VS Code incluye un botón de Instalación Rápida, que configura automáticamente la configuración de puerto correcta.

Por ejemplo, con SonarQube Cloud:

{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run",
      "--init",
      "--pull=always",
      "-i",
      "--rm",
      "-e",
      "SONARQUBE_TOKEN",
      "-e",
      "SONARQUBE_ORG",
      "-e",
      "SONARQUBE_IDE_PORT",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_ORG": "<org>",
      "SONARQUBE_IDE_PORT": "<64120-64130>"
    }
  }
}

Al ejecutar el servidor MCP en un contenedor en Linux, el contenedor no puede acceder al servidor integrado de SonarQube para IDE que se ejecuta en localhost. Para permitir que el contenedor se conecte al servidor de SonarQube para IDE, agrega la opción --network=host a tu comando de ejecución del contenedor.

Configuración

Dependiendo de tu entorno, debes proporcionar variables de entorno específicas.

Base

Debes agregar la siguiente variable al ejecutar el Servidor MCP:

Variable de entornoDescripción
STORAGE_PATHRuta absoluta obligatoria a un directorio escribible donde el Servidor MCP de SonarQube almacenará sus archivos (por ejemplo, para creación, actualizaciones y persistencia); se proporciona automáticamente al usar la imagen de contenedor
SONARQUBE_PROJECT_KEYClave de proyecto predeterminada opcional. Cuando se configura, todas las herramientas que requieren una clave de proyecto usarán este valor automáticamente: el parámetro projectKey se elimina por completo de su esquema. Útil cuando se trabaja en un solo proyecto.
SONARQUBE_IDE_PORTNúmero de puerto opcional entre 64120 y 64130 utilizado para conectar el Servidor MCP de SonarQube con SonarQube para IDE.
SONARQUBE_DEBUG_ENABLEDCuando se configura en true, habilita el registro de depuración. Los registros de depuración se escriben tanto en el archivo de registro como en STDERR. Útil para solucionar problemas de conectividad o configuración. Predeterminado: false.
SONARQUBE_LOG_TO_FILE_DISABLEDCuando se configura en true, deshabilita por completo la escritura de registros en disco. No se crearán archivos de registro en STORAGE_PATH/logs/. Útil en entornos contenedorizados o efímeros donde el registro de archivos no es deseable. Predeterminado: false.

Montaje del Espacio de Trabajo (Reducción de la Sobrecarga de Contexto)

Por defecto, la herramienta de análisis analyze_code_snippet requiere que el agente pase el contenido completo del archivo como argumento fileContent. Para archivos grandes o al analizar muchos archivos en una sesión, esto aumenta significativamente el uso de la ventana de contexto y el costo. Solución: monta tu directorio de proyecto dentro del contenedor en /app/mcp-workspace. Cuando se detecta este montaje, el servidor lee los archivos directamente desde el disco usando el argumento filePath relativo al proyecto — el contenido de los archivos nunca pasa por el contexto del agente.

{
  "args": [
    "run", "-i", "--rm", "--init", "--pull=always",
    "-e", "SONARQUBE_TOKEN",
    "-e", "SONARQUBE_ORG",
    "-v", "/path/to/your/project:/app/mcp-workspace",
    "sonarsource/sonarqube-mcp"
  ]
}

Cuando el montaje está activo:

  • run_advanced_code_analysis está disponible si tu organización tiene derecho a ello
  • analyze_code_snippet: filePath es obligatorio y fileContent no se utiliza — el servidor resuelve el archivo de la misma manera

Habilitación selectiva de herramientas

Por defecto, solo los conjuntos de herramientas importantes están habilitados para reducir la sobrecarga de contexto. Puedes habilitar conjuntos de herramientas adicionales según sea necesario.

Variable de entornoDescripción
SONARQUBE_TOOLSETSLista separada por comas de conjuntos de herramientas a habilitar. Cuando se establece, solo estos conjuntos de herramientas estarán disponibles. Si no se establece, los conjuntos de herramientas importantes predeterminados están habilitados (analysis, ide, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag). Nota: El conjunto de herramientas projects siempre está habilitado, ya que es necesario para encontrar las claves de proyecto para otras operaciones. Las herramientas de contexto Vortex (nombre obsoleto: Context Augmentation/CAG) y las herramientas de análisis Vortex (nombre obsoleto: Advanced Analysis/A3S) solo están disponibles en modo stdio y comparten un único derecho de organización combinado: una organización debe tener derecho a ambos para usar cualquiera de ellos. En SonarQube Server, stdio lista el contexto Vortex y run_advanced_code_analysis cuando ambos hubs CAG y A3S tienen derecho. Prefiere la clave unificada del conjunto de herramientas vortex. Las claves obsoletas cag y analysis aún funcionan; se emite una advertencia de inicio y una nota de obsolescencia en las instrucciones del servidor cuando se usan sin vortex. En modo Streamable HTTP, los clientes pueden enviar un encabezado HTTP SONARQUBE_TOOLSETS para reducir esto aún más por solicitud, pero no pueden habilitar conjuntos de herramientas más allá de los que el servidor fue iniciado (ver Streamable HTTP transport abajo).
SONARQUBE_READ_ONLYCuando se establece en true, habilita el modo de solo lectura que desactiva todas las operaciones de escritura (por ejemplo, cambiar el estado de un problema). Este filtro es acumulativo con SONARQUBE_TOOLSETS si ambos están establecidos. Predeterminado: false. En modo Streamable HTTP, los clientes pueden enviar un encabezado HTTP SONARQUBE_READ_ONLY para restringir aún más las solicitudes individuales a solo lectura, pero no pueden levantar una restricción de solo lectura a nivel de servidor (ver Streamable HTTP transport abajo).
Conjuntos de herramientas disponibles
Conjunto de herramientasClaveDescripción
AnálisisanalysisHerramientas de análisis de código (análisis local mediante analyze_code_snippet, obsoleto en favor de analyze_file_list/análisis Vortex)
IDEideHerramientas de puente SonarQube para IDE (análisis de archivos, alternancia de análisis automático) — actualmente también incluidas en analysis
ProblemasissuesBuscar y gestionar problemas de SonarQube
Puntos calientes de seguridadsecurity-hotspotsBuscar y revisar puntos calientes de seguridad
ProyectosprojectsExplorar y buscar proyectos de SonarQube
Puertas de calidadquality-gatesAcceder a puertas de calidad y su estado
ReglasrulesExplorar y buscar reglas de SonarQube
FuentessourcesAcceder al código fuente e información SCM
DuplicacionesduplicationsEncontrar duplicaciones de código entre proyectos
MedidasmeasuresRecuperar métricas y medidas (incluye tanto herramientas de medidas como de métricas)
LenguajeslanguagesListar lenguajes de programación compatibles
PortafoliosportfoliosGestionar portafolios y empresas (Cloud y Server)
SistemasystemHerramientas de administración del sistema (solo Server)
WebhookswebhooksGestionar webhooks
Riesgos de dependenciasdependency-risksAnalizar riesgos de dependencias y problemas de seguridad (SCA)
CoberturacoverageHerramientas de análisis y mejora de cobertura de pruebas
Contexto VortexcagHerramientas de contexto Vortex — solo stdio. Obsoleto en favor de vortex (nombre antiguo: Context Augmentation/CAG)
VortexvortexConjunto de herramientas unificado, recomendado que muestra tanto las herramientas de contexto Vortex como las de análisis Vortex bajo un solo nombre (solo stdio; Cloud necesita derecho de organización combinado; Server necesita ambos hubs con derecho)
Preparación agénticaagentic-readinessHerramientas de evaluación de preparación agéntica (SonarQube Cloud, requiere derecho de organización)

Ejemplos

Habilitar conjuntos de herramientas de análisis, problemas y puertas de calidad (usando Docker con SonarQube Cloud):

docker run --init --pull=always -i --rm \
  -e SONARQUBE_TOKEN="<token>" \
  -e SONARQUBE_ORG="<org>" \
  -e SONARQUBE_TOOLSETS="analysis,issues,quality-gates" \
  sonarsource/sonarqube-mcp

Nota: El conjunto de herramientas projects siempre está habilitado automáticamente, por lo que no necesitas incluirlo en SONARQUBE_TOOLSETS.

Habilitar modo de solo lectura (usando Docker con SonarQube Cloud):

docker run --init --pull=always -i --rm \
  -e SONARQUBE_TOKEN="<token>" \
  -e SONARQUBE_ORG="<org>" \
  -e SONARQUBE_READ_ONLY="true" \
  sonarsource/sonarqube-mcp

SonarQube Cloud

Para habilitar la funcionalidad completa, las siguientes variables de entorno deben establecerse antes de iniciar el servidor:

Variable de entornoDescripciónObligatoria
SONARQUBE_TOKENTu token de SonarQube CloudSí
SONARQUBE_ORGTu clave de organización de SonarQube CloudSí
SONARQUBE_URLURL personalizada de SonarQube Cloud (predeterminada a https://sonarcloud.io). Úsala para SonarQube Cloud US: https://sonarqube.usNo

Ejemplos:

  • SonarQube Cloud: Solo se necesitan SONARQUBE_TOKEN y SONARQUBE_ORG
  • SonarQube Cloud US: Establece SONARQUBE_TOKEN, SONARQUBE_ORG y SONARQUBE_URL=https://sonarqube.us

SonarQube Server

Variable de entornoDescripciónObligatoria
SONARQUBE_TOKENTu token de USUARIO de SonarQube ServerSí
SONARQUBE_URLLa URL de tu SonarQube ServerSí

Requisito de versión: Se requiere SonarQube Server 2025.1 (SQS) o 25.1 (SonarQube Community Build) o posterior. Al iniciar, el servidor MCP lee la versión de la instancia conectada y sale con un error si es demasiado antigua (por ejemplo, las versiones heredadas 9.x/10.x de Server y Community Build 24.x no son compatibles). SonarQube Cloud no está sujeto a esta verificación.

⚠️ La conexión a SonarQube Server requiere un token de tipo USUARIO y no funcionará correctamente si se utilizan tokens de proyecto o tokens globales.

💡 Consejo de configuración (modo stdio): La presencia de SONARQUBE_ORG determina si te estás conectando a SonarQube Cloud o Server. Si SONARQUBE_ORG está configurado, se utiliza SonarQube Cloud; de lo contrario, se utiliza SonarQube Server.

Modos de transporte

La especificación MCP define dos mecanismos de transporte: Stdio y HTTP Streamable. El servidor MCP de SonarQube admite ambos:

Transporte MCPModo de servidorUso típico
StdioPredeterminado (sin SONARQUBE_TRANSPORT)Clientes MCP locales que inician el servidor como subproceso (Cursor, Claude Code, VS Code, etc.)
HTTP StreamableSONARQUBE_TRANSPORT=http o httpsImplementaciones remotas o multiusuario; los clientes se conectan a /mcp a través de HTTP(S) (p. ej., Windsurf con una URL de servidor autohospedada)

Nota: HTTP Streamable es el transporte de red MCP actual. El transporte HTTP solo-SSE anterior de versiones MCP más antiguas está obsoleto y no es compatible.

1. Stdio (Predeterminado - Recomendado para desarrollo local)

El modo recomendado para desarrollo local y configuraciones de un solo usuario, utilizado por la mayoría de los clientes MCP.

Ejemplo - Docker con SonarQube Cloud:

{
  "mcpServers": {
    "sonarqube": {
      "command": "docker",
      "args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"],
      "env": {
        "SONARQUBE_TOKEN": "<your-token>",
        "SONARQUBE_ORG": "<your-org>"
      }
    }
  }
}

2. HTTP (HTTP Streamable)

Transporte HTTP Streamable sin cifrar. Utilice HTTPS en su lugar para implementaciones multiusuario.

⚠️ No recomendado: Use Stdio para desarrollo local o HTTPS (HTTP Streamable) para implementaciones de producción multiusuario.

Variable de entornoDescripciónPredeterminado
SONARQUBE_TRANSPORTEstablézcala en http para habilitar el transporte HTTP StreamableNo configurada (stdio)
SONARQUBE_HTTP_PORTNúmero de puerto (1024-65535)8080
SONARQUBE_HTTP_HOSTHost al que vincularse (por defecto localhost por seguridad)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSOrígenes de navegador separados por comas permitidos para CORS (p. ej., https://my-app.example.com)No configurado
SONARQUBE_MCP_IN_CONTAINEREstablézcala en true cuando se ejecute dentro de un contenedor. La imagen oficial de Docker la configura automáticamente; configúrela usted mismo cuando use otros runtimes OCI (Podman, Kubernetes, Nomad, etc.).false

Nota: En el modo HTTP Streamable (HTTP o HTTPS), el servidor no tiene estado: cada solicitud del cliente debe incluir un encabezado Authorization: Bearer <token> con el token de SonarQube del propio usuario. Para SonarQube Cloud, la organización se resuelve de la siguiente manera:

  • Si SONARQUBE_ORG está configurada al iniciar el servidor, todas las solicitudes se enrutan a esa organización. Los clientes no deben enviar un encabezado SONARQUBE_ORG; hacerlo resultará en un error.
  • Si SONARQUBE_ORG no está configurada al iniciar el servidor, cada cliente debe proporcionar un encabezado SONARQUBE_ORG en cada solicitud. Los clientes también pueden limitar las herramientas visibles por solicitud proporcionando encabezados SONARQUBE_TOOLSETS y/o SONARQUBE_READ_ONLY; estos aplican un filtrado adicional además de la configuración a nivel de servidor: solo pueden reducir el alcance, nunca ampliarlo. No se mantiene estado de sesión entre solicitudes.

Obsoleto: El encabezado de solicitud SONARQUBE_TOKEN todavía se acepta por compatibilidad con versiones anteriores, pero se eliminará en una versión futura. Migre a Authorization: Bearer <token>.

3. HTTPS (HTTP Streamable sobre TLS) (Recomendado para implementaciones de producción multiusuario)

Transporte HTTP Streamable seguro con cifrado TLS. Requiere certificados SSL.

✅ Recomendado para producción: Use HTTPS al implementar el servidor MCP para múltiples usuarios a través de HTTP Streamable. El servidor se vincula a 127.0.0.1 (localhost) por defecto por seguridad.

Variable de entornoDescripciónPredeterminado
SONARQUBE_TRANSPORTEstablézcala en https para habilitar el transporte HTTP Streamable sobre TLSNo configurada (stdio)
SONARQUBE_HTTP_PORTNúmero de puerto (normalmente 8443 para HTTPS)8080
SONARQUBE_HTTP_HOSTHost al que vincularse (por defecto localhost por seguridad)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSOrígenes de navegador separados por comas permitidos para CORS (p. ej., https://my-app.example.com)No configurado
SONARQUBE_MCP_IN_CONTAINEREstablézcala en true cuando se ejecute dentro de un contenedor. La imagen oficial de Docker la configura automáticamente; configúrela usted mismo cuando use otros runtimes OCI (Podman, Kubernetes, Nomad, etc.).false

Configuración de certificados SSL (opcional):

Variable de entornoDescripciónPredeterminado
SONARQUBE_HTTPS_KEYSTORE_PATHRuta al archivo de almacén de claves (.p12 o .jks)/etc/ssl/mcp/keystore.p12
SONARQUBE_HTTPS_KEYSTORE_PASSWORDContraseña del almacén de clavessonarlint
SONARQUBE_HTTPS_KEYSTORE_TYPETipo de almacén de claves (PKCS12 o JKS)PKCS12

Ejemplo - Docker con SonarQube Cloud:

Nota: Cuando se ejecuta en un contenedor, configure SONARQUBE_HTTP_HOST=0.0.0.0 para que el contenedor escuche en todas las interfaces y la asignación de puertos del runtime funcione, y configure SONARQUBE_MCP_IN_CONTAINER=true para indicar al servidor que está dentro de un contenedor. La imagen oficial de Docker configura esta última automáticamente; configúrela usted mismo cuando use otros runtimes OCI (Podman, Kubernetes, Nomad, etc.). El indicador de puerto del lado del host controla quién puede acceder al servidor desde fuera del contenedor. SONARQUBE_HTTP_HOST=0.0.0.0 solo controla dónde escucha el servidor dentro del contenedor: el CORS del navegador aún permite orígenes localhost por defecto.

Para un servidor que se ejecuta localmente en su máquina (accesible solo desde localhost):

docker run --init --pull=always -p 127.0.0.1:8443:8443 \
  -v $(pwd)/keystore.p12:/etc/ssl/mcp/keystore.p12:ro \
  -e SONARQUBE_TRANSPORT=https \
  -e SONARQUBE_HTTP_HOST=0.0.0.0 \
  -e SONARQUBE_HTTP_PORT=8443 \
  -e SONARQUBE_TOKEN="<init-token>" \
  -e SONARQUBE_ORG="<your-org>" \
  sonarsource/sonarqube-mcp

Para un servidor accesible desde la red (implementaciones remotas):

docker run --init --pull=always -p 8443:8443 \
  -v $(pwd)/keystore.p12:/etc/ssl/mcp/keystore.p12:ro \
  -e SONARQUBE_TRANSPORT=https \
  -e SONARQUBE_HTTP_HOST=0.0.0.0 \
  -e SONARQUBE_HTTP_PORT=8443 \
  -e SONARQUBE_TOKEN="<init-token>" \
  -e SONARQUBE_ORG="<your-org>" \
  sonarsource/sonarqube-mcp

Configuración del cliente (SonarQube Cloud):

{
  "mcpServers": {
    "sonarqube-https": {
      "url": "https://your-server:8443/mcp",
      "headers": {
        "Authorization": "Bearer <your-token>",
        "SONARQUBE_ORG": "<your-org>",
        "SONARQUBE_TOOLSETS": "issues,quality-gates",
        "SONARQUBE_READ_ONLY": "true"
      }
    }
  }
}

Configuración del cliente (SonarQube Server):

{
  "mcpServers": {
    "sonarqube-https": {
      "url": "https://your-server:8443/mcp",
      "headers": {
        "Authorization": "Bearer <your-token>",
        "SONARQUBE_TOOLSETS": "issues,quality-gates",
        "SONARQUBE_READ_ONLY": "true"
      }
    }
  }
}

Nota: SONARQUBE_TOOLSETS y SONARQUBE_READ_ONLY son encabezados opcionales por solicitud que limitan el conjunto de herramientas a nivel de servidor para esa solicitud específica. Solo pueden reducir el alcance: no pueden habilitar conjuntos de herramientas ni eliminar restricciones más allá de lo que se configuró al iniciar el servidor.

Nota: Para desarrollo local, use el transporte Stdio en su lugar (el predeterminado). HTTPS HTTP Streamable está destinado a implementaciones de producción multiusuario con certificados SSL adecuados.

Puntos finales de servicio

Cuando se ejecuta en modo HTTP Streamable (http o https), el servidor expone algunos puntos finales de servicio sin autenticación además del punto final MCP en /mcp. Están destinados al uso de servicio a servicio (monitoreo, orquestación, verificaciones de compatibilidad del cliente) y no requieren un encabezado Authorization.

Punto finalMétodoDescripciónRespuesta de ejemplo
/healthGETSonda de actividad. Devuelve 200 OK con un cuerpo vacío una vez que el servidor acepta solicitudes.(cuerpo vacío)
/infoGETDevuelve la versión del servidor MCP como JSON. Útil para verificar la versión del servidor implementado.{"version":"1.16.0"}

Estos puntos finales no están disponibles cuando se ejecuta con el transporte Stdio.

Certificados personalizados

Si su SonarQube Server utiliza un certificado autofirmado o un certificado de una Autoridad de Certificación (CA) privada, puede agregar certificados personalizados al contenedor que se instalarán automáticamente.

Configuración

Uso de montaje de volumen

Monte un directorio que contenga sus certificados al ejecutar el contenedor:

docker run --init --pull=always -i --rm \
  -v /path/to/your/certificates/:/usr/local/share/ca-certificates/:ro \
  -e SONARQUBE_TOKEN="<token>" \
  -e SONARQUBE_URL="<url>" \
  sonarsource/sonarqube-mcp

Formatos de certificado compatibles

El contenedor admite los siguientes formatos de certificado:

  • Archivos .crt (codificados PEM o DER)
  • Archivos .pem (codificados PEM)

Configuración MCP con certificados

Al usar certificados personalizados, puede modificar su configuración MCP para montar los certificados:

{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run",
      "--init",
      "--pull=always",
      "-i",
      "--rm",
      "-v",
      "/path/to/your/certificates/:/usr/local/share/ca-certificates/:ro",
      "-e",
      "SONARQUBE_TOKEN",
      "-e",
      "SONARQUBE_URL",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_URL": "<url>"
    }
  }
}

Nota: ¿Ejecuta el servidor desde un JAR en lugar del contenedor? El montaje de volumen anterior instala certificados en el almacén de confianza del sistema operativo del contenedor, que el servidor también lee. Si no puede usar el almacén de confianza del sistema operativo (especialmente en Windows, donde no se consulta), apunte la JVM a un almacén de confianza de Java que contenga el certificado de la CA: -Djavax.net.ssl.trustStore=/path/to/truststore.p12 -Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.trustStorePassword=<passphrase>. Se agrega además de los certificados de confianza predeterminados.

Proxy

El servidor MCP de SonarQube admite proxies HTTP y SOCKS5 a través de las propiedades estándar del sistema de proxy de Java.

Configuración

Proxy HTTP/HTTPS

Puede configurar los ajustes de proxy utilizando las propiedades del sistema de Java. Estas se pueden establecer como variables de entorno o pasarse como argumentos JVM.

Propiedades de proxy comunes:

PropiedadDescripciónEjemplo
http.proxyHostNombre de host del proxy HTTPproxy.example.com
http.proxyPortPuerto del proxy HTTP8080
https.proxyHostNombre de host del proxy HTTPSproxy.example.com
https.proxyPortPuerto del proxy HTTPS8443
http.nonProxyHostsHosts que omiten el proxy (separados por tubería)localhost|127.0.0.1|*.internal.com

Autenticación de proxy HTTP/HTTPS:

PropiedadDescripciónEjemplo
http.proxyUserNombre de usuario del proxy HTTPmyuser
http.proxyPasswordContraseña del proxy HTTPmypassword
https.proxyUserNombre de usuario del proxy HTTPSmyuser
https.proxyPasswordContraseña del proxy HTTPSmypassword

Proxy SOCKS5

Se admiten proxies SOCKS5.

PropiedadDescripciónPredeterminadoEjemplo
socksProxyHostHostname del proxy SOCKS5—localhost
socksProxyPortPuerto del proxy SOCKS510801080
java.net.socks.usernameNombre de usuario SOCKS5 (si se requiere autenticación)—myuser
java.net.socks.passwordContraseña SOCKS5 (si se requiere autenticación)—mypassword

Certificado de cliente (mTLS)

Si su servidor SonarQube requiere que los clientes presenten un certificado durante el protocolo de enlace TLS (mutual TLS), puede proporcionar un almacén de claves PKCS12 montándolo en el contenedor y pasando su ubicación a través de JAVA_OPTS.

Configuración

Uso de un almacén de claves PKCS12

Monte su archivo .p12 o .pfx en el contenedor y establezca la variable de entorno JAVA_OPTS con las propiedades del almacén de claves:

docker run --init --pull=always -i --rm \
  -v /path/to/client.p12:/etc/ssl/mcp/client.p12:ro \
  -e JAVA_OPTS="-Djavax.net.ssl.keyStore=/etc/ssl/mcp/client.p12 -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=<passphrase>" \
  -e SONARQUBE_TOKEN="<token>" \
  -e SONARQUBE_URL="<url>" \
  sonarsource/sonarqube-mcp

Nota: El archivo de certificado debe ser legible por el proceso del contenedor. Verifique y corrija los permisos si es necesario:

ls -la /path/to/client.p12       # busque -rw-r--r-- (644) o más amplio
chmod 644 /path/to/client.p12    # otorgue acceso de lectura al usuario del contenedor

Omita -Djavax.net.ssl.keyStorePassword si el almacén de claves no tiene frase de contraseña. Tenga en cuenta que la frase de contraseña utilizada aquí sería visible a través de docker inspect o la lista de procesos.

Configuración de MCP con un certificado de cliente

{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run", "--init", "--pull=always", "-i", "--rm",
      "-v", "/path/to/client.p12:/etc/ssl/mcp/client.p12:ro",
      "-e", "JAVA_OPTS",
      "-e", "SONARQUBE_TOKEN",
      "-e", "SONARQUBE_URL",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "JAVA_OPTS": "-Djavax.net.ssl.keyStore=/etc/ssl/mcp/client.p12 -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=<passphrase>",
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_URL": "<url>"
    }
  }
}

Uso de un almacén de claves PKCS12 con un JAR independiente

Al ejecutar el servidor desde un JAR, pase las propiedades del almacén de claves como argumentos JVM antes de -jar:

java \
  -Djavax.net.ssl.keyStore=/path/to/client.p12 \
  -Djavax.net.ssl.keyStoreType=PKCS12 \
  -Djavax.net.ssl.keyStorePassword=<passphrase> \
  -jar <path_to_sonarqube_mcp_server_jar>

Omita -Djavax.net.ssl.keyStorePassword si el almacén de claves no tiene frase de contraseña.

Configuración de MCP con un certificado de cliente (JAR)

{
  "sonarqube": {
    "command": "java",
    "args": [
      "-Djavax.net.ssl.keyStore=/path/to/client.p12",
      "-Djavax.net.ssl.keyStoreType=PKCS12",
      "-Djavax.net.ssl.keyStorePassword=<passphrase>",
      "-jar",
      "<path_to_sonarqube_mcp_server_jar>"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_URL": "<url>"
    }
  }
}

Nota: Los archivos de certificado y clave PEM (archivos .crt/.key separados) deben convertirse primero al formato PKCS12. Use openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 para convertirlos.

Herramientas

Análisis

  • analyze_code_snippet - Analice el contenido del archivo con los analizadores de SonarQube para identificar problemas de calidad y seguridad del código. Siempre analiza el contenido completo del archivo para mayor precisión. Opcionalmente, filtre los resultados a un fragmento de código específico.

    Obsoleto: analyze_code_snippet se eliminará en una versión futura. Conecte SonarQube for IDE para usar analyze_file_list, o habilite el análisis Vortex para su organización para usar run_advanced_code_analysis (ver más abajo).

    Uso:

    • Con espacio de trabajo montado (recomendado): pase filePath (relativo al proyecto) — el servidor lee el archivo directamente, manteniendo el contenido del archivo fuera de la ventana de contexto del agente
    • Sin montaje del espacio de trabajo: pase el fileContent completo para el análisis completo del archivo (informa todos los problemas)
    • Agregue el codeSnippet opcional para filtrar resultados: solo se informarán los problemas dentro del fragmento (la ubicación del fragmento se detecta automáticamente)

    Parámetros:

    • projectKey - La clave del proyecto SonarQube - Cadena requerida (Se ignora cuando SONARQUBE_PROJECT_KEY está definido)
    • filePath - Ruta relativa al proyecto del archivo a analizar (p. ej., src/main/java/MyClass.java). Se usa cuando el espacio de trabajo está montado en /app/mcp-workspace - Cadena
    • fileContent - Contenido completo del archivo como cadena. Requerido cuando el espacio de trabajo no está montado - Cadena
    • codeSnippet - Fragmento de código para filtrar problemas (debe coincidir con el contenido en fileContent) - Cadena
    • language - Idioma del código (p. ej., 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - Cadena
    • scope - Alcance del archivo: MAIN o TEST (predeterminado: MAIN) - Cadena

    Idiomas admitidos: Java, Kotlin, Python, Ruby, Go, JavaScript (js, jsx), TypeScript (ts, tsx), JSP, PHP, XML, HTML, CSS, CloudFormation, Kubernetes, Terraform, Azure Resource Manager, Ansible, Docker, Detección de secretos

Cuando la integración con SonarQube for IDE está habilitada: (estas dos herramientas están etiquetadas tanto en el conjunto de herramientas analysis como en ide)

  • analyze_file_list - Analice archivos en el directorio de trabajo actual usando SonarQube for IDE. Esta herramienta se conecta a una instancia en ejecución de SonarQube for IDE para realizar análisis de calidad de código en una lista de archivos.

    • file_absolute_paths - Lista de rutas de archivo absolutas para analizar - Cadena[] requerida
  • toggle_automatic_analysis - Habilite o deshabilite el análisis automático de SonarQube for IDE. Cuando está habilitado, SonarQube for IDE analizará automáticamente los archivos a medida que se modifican en el directorio de trabajo. Cuando está deshabilitado, el análisis automático está desactivado.

    • enabled - Habilite o deshabilite el análisis automático - Booleano requerido

En SonarQube Server, stdio enumera las herramientas de contexto de Vortex y run_advanced_code_analysis cuando ambos hubs CAG y A3S tienen derecho.

Cuando el análisis Vortex está habilitado:

Requiere tener el espacio de trabajo montado en /app/mcp-workspace

  • run_advanced_code_analysis - Ejecute el análisis Vortex en un solo archivo. La organización se infiere de la configuración de MCP (SonarQube Server usa el marcador de posición UUID nil).
    • projectKey - La clave del proyecto - Cadena requerida (Se ignora cuando SONARQUBE_PROJECT_KEY está definido)
    • branch - Nombre de la rama utilizado para recuperar el contexto de análisis más reciente - Cadena requerida
    • filePath - Ruta relativa al proyecto del archivo a analizar (p. ej., src/main/java/MyClass.java). - Cadena requerida
    • fileScope - Define en qué alcance se origina el archivo: 'MAIN' o 'TEST' (predeterminado: MAIN) - Cadena

Cobertura

  • search_files_by_coverage - Busque archivos en un proyecto ordenados por cobertura (ascendente: peor cobertura primero). Esta herramienta ayuda a identificar archivos que necesitan mejoras de cobertura de pruebas.

    • projectKey - La clave del proyecto para buscar - Cadena requerida (Se ignora cuando SONARQUBE_PROJECT_KEY está definido)
    • branch - Nombre de rama opcional para análisis basado en ramas. Use list_branches para descubrir nombres válidos - Cadena
    • pullRequest - Clave/ID de solicitud de extracción opcional. Use list_pull_requests para descubrir claves válidas - Cadena
    • maxCoverage - Umbral máximo de cobertura (0-100). Solo devuelve archivos con cobertura <= este valor - Número
    • pageIndex - Índice de página (basado en 1, predeterminado: 1) - Número
    • pageSize - Tamaño de página (predeterminado: 100, máximo: 500) - Número
  • get_file_coverage_details - Obtenga información de cobertura línea por línea para un archivo específico, incluyendo qué líneas exactas no están cubiertas y cuáles tienen ramas parcialmente cubiertas. Esta herramienta ayuda a identificar precisamente dónde agregar cobertura de pruebas. Use después de identificar archivos con baja cobertura mediante search_files_by_coverage.

    • key - Clave de archivo (p. ej., my_project:src/foo/Bar.java) - Cadena requerida
    • branch - Nombre de rama opcional para análisis basado en ramas. Use list_branches para descubrir nombres válidos - Cadena
    • pullRequest - Clave/ID de solicitud de extracción opcional. Use list_pull_requests para descubrir claves válidas - Cadena
    • from - Primera línea para analizar (basada en 1, predeterminado: 1) - Número
    • to - Última línea para analizar (inclusive). Si no se especifica, se devuelven todas las líneas - Número

Riesgos de dependencias

Nota: Los riesgos de dependencias solo están disponibles al conectarse a SonarQube Server 2025.4 Enterprise o superior con SonarQube Advanced Security habilitado.

  • search_dependency_risks - Busque problemas de análisis de composición de software (riesgos de dependencias) de un proyecto SonarQube, junto con versiones que aparecen en el proyecto, aplicación o portafolio analizado.
    • projectKey - Clave del proyecto - Cadena requerida (Se ignora cuando SONARQUBE_PROJECT_KEY está definido)
    • branch - Nombre de rama opcional para análisis basado en ramas. Use list_branches para descubrir nombres válidos - Cadena
    • pullRequest - Clave/ID de solicitud de extracción opcional. Use list_pull_requests para descubrir claves válidas - Cadena
    • pageIndex - Índice de página opcional (basado en 1, predeterminado: 1) - Entero
    • pageSize - Tamaño de página opcional. Debe ser mayor que 0 y menor o igual a 500 (predeterminado: 100) - Entero

Empresas

Nota: Las empresas solo están disponibles al conectarse a SonarQube Cloud.

  • list_enterprises - Enumere las empresas disponibles en SonarQube Cloud a las que tiene acceso. Use esta herramienta para descubrir IDs de empresa que se pueden usar con otras herramientas.
    • enterpriseKey - Clave de empresa opcional para filtrar resultados - Cadena

Problemas

  • change_sonar_issue_status - Cambie el estado de un problema de SonarQube a "accept", "falsepositive" o para "reopen" un problema.

    • key - Clave del problema - Cadena requerida
    • status - Nuevo estado del problema - Enumeración requerida {"accept", "falsepositive", "reopen"}
    • comment - Comentario opcional que explica el cambio de estado - Cadena
  • search_sonar_issues_in_projects - Busque problemas de SonarQube en los proyectos de mi organización.

    • projectKeys - Lista opcional de claves de proyecto de SonarQube - Cadena[]
    • branch - Nombre de rama opcional para análisis basado en ramas. Use list_branches para descubrir nombres válidos - Cadena
    • pullRequest - Clave/ID de solicitud de extracción opcional. Use list_pull_requests para descubrir claves válidas - Cadena
    • severities - Lista opcional de severidades para filtrar. Valores posibles: INFO, LOW, MEDIUM, HIGH, BLOCKER - Cadena[]
    • impactSoftwareQualities - Lista opcional de calidades de software para filtrar. Valores posibles: MAINTAINABILITY, RELIABILITY, SECURITY - Cadena[]
    • issueStatuses - Lista opcional de estados de problemas para filtrar. Valores posibles: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - Cadena[]
    • tags - Lista opcional de etiquetas de problemas para filtrar. Las etiquetas están en minúsculas - Cadena[]
    • inNewCodePeriod - Solo devuelve problemas en el período de código nuevo. Requiere exactamente una entrada entre projectKeys y files - Booleano
    • issueKey - Clave de problema opcional para obtener un problema específico - Cadena
    • pageIndex - Índice de página opcional basado en 1 (predeterminado: 1) - Entero
    • pageSize - Tamaño de página opcional. Debe ser mayor que 0 y menor o igual a 500 (predeterminado: 100) - Entero

Puntos de acceso de seguridad

  • search_security_hotspots - Busque puntos de acceso de seguridad en un proyecto SonarQube.

    • projectKey - Clave de proyecto o aplicación - Cadena requerida (Se ignora cuando SONARQUBE_PROJECT_KEY está definido)
    • hotspotKeys - Lista separada por comas de claves específicas de puntos de acceso de seguridad para recuperar - Cadena[]
    • branch - Nombre de rama opcional para análisis basado en ramas. Use list_branches para descubrir nombres válidos - Cadena
    • pullRequest - Clave/ID de solicitud de extracción opcional. Use list_pull_requests para descubrir claves válidas - Cadena
    • files - Lista opcional de rutas de archivo para filtrar - Cadena[]
    • status - Filtro de estado opcional: TO_REVIEW, REVIEWED - Cadena
    • resolution - Filtro de resolución opcional: FIXED, SAFE, ACKNOWLEDGED - Cadena
    • sinceLeakPeriod - Filtrar puntos de acceso creados desde el período de fuga (código nuevo) - Booleano
    • onlyMine - Mostrar solo puntos de acceso asignados a mí - Booleano
    • pageIndex - Índice de página opcional basado en 1 (predeterminado: 1) - Entero
    • pageSize - Tamaño de página opcional. Debe ser mayor que 0 y menor o igual a 500 (predeterminado: 100) - Entero
  • show_security_hotspot - Obtenga información detallada sobre un punto de acceso de seguridad específico, incluidos detalles de reglas, contexto de código, flujos y comentarios.

    • hotspotKey - Clave del punto de acceso de seguridad - Cadena requerida
  • change_security_hotspot_status - Revisar un Security Hotspot cambiando su estado. Al marcarlo como REVIEWED, debes especificar una resolución (FIXED, SAFE o ACKNOWLEDGED).

    • hotspotKey - Clave del Security Hotspot - String obligatorio
    • status - Nuevo estado - Enum obligatorio {"TO_REVIEW", "REVIEWED"}
    • resolution - Resolución cuando el estado es REVIEWED - Enum {"FIXED", "SAFE", "ACKNOWLEDGED"}
    • comment - Comentario de revisión opcional - String

Idiomas

  • list_languages - Lista todos los lenguajes de programación compatibles en esta instancia de SonarQube.
    • q - Patrón opcional para comparar con claves/nombres de idiomas - String

Medidas

  • get_component_measures - Obtiene las medidas de SonarQube para un componente (proyecto, directorio, archivo).
    • projectKey - La clave del proyecto - String obligatorio cuando SONARQUBE_PROJECT_KEY no está configurado
    • branch - Nombre de rama opcional para análisis basado en ramas. Usa list_branches para descubrir nombres válidos - String
    • metricKeys - Claves de métricas opcionales a recuperar (p. ej., ncloc, complexity, violations, coverage) - String[]
    • pullRequest - Clave/ID de pull request opcional. Usa list_pull_requests para descubrir claves válidas - String

Métricas

  • search_metrics - Busca métricas de SonarQube.
    • pageIndex - Índice de página opcional basado en 1 (predeterminado: 1) - Entero
    • pageSize - Tamaño de página opcional. Debe ser mayor que 0 y menor o igual a 500 (predeterminado: 100) - Entero

Portafolios

  • list_portfolios - Lista los portafolios empresariales disponibles en SonarQube con opciones de filtrado y paginación.

    Para SonarQube Server:

    • q - Consulta de búsqueda opcional para filtrar portafolios por nombre o clave - String
    • favorite - Si es true, solo devuelve portafolios favoritos - Booleano
    • pageIndex - Número de página opcional basado en 1 (predeterminado: 1) - Entero
    • pageSize - Tamaño de página opcional, máximo 500 (predeterminado: 100) - Entero

    Para SonarQube Cloud:

    • enterpriseId - UUID empresarial. Solo se puede omitir si el parámetro 'favorite' se proporciona con valor true - String
    • q - Consulta de búsqueda opcional para filtrar portafolios por nombre - String
    • favorite - Debe ser true si el parámetro 'enterpriseId' se omite. Si es true, solo devuelve portafolios marcados como favoritos por el usuario conectado. No puede ser true cuando 'draft' es true - Booleano
    • draft - Si es true, solo devuelve borradores creados por el usuario conectado. No puede ser true cuando 'favorite' es true - Booleano
    • pageIndex - Índice opcional de la página a obtener (predeterminado: 1) - Entero
    • pageSize - Tamaño opcional de la página a obtener (predeterminado: 50) - Entero

Proyectos

  • search_my_sonarqube_projects - Encuentra proyectos de SonarQube. La respuesta está paginada.

    • pageIndex - Índice de página opcional basado en 1 (predeterminado: 1) - Entero
    • pageSize - Tamaño de página opcional. Debe ser mayor que 0 y menor o igual a 500 (predeterminado: 500) - Entero
    • q - Consulta de búsqueda opcional para filtrar proyectos por nombre (coincidencia parcial) o clave (coincidencia exacta) - String
  • list_branches - Lista las ramas analizadas de un proyecto.

    • SonarQube Cloud: devuelve ramas de larga duración (LONG) y de corta duración (SHORT) con los campos type y mergeBranch. Filtro opcional branchTypes: ALL (predeterminado), LONG o SHORT.
    • SonarQube Server: devuelve todas las ramas analizadas (nombre, quality gate, fecha de análisis). Sin filtro type, mergeBranch o branchTypes.
    • Usa los nombres de rama devueltos como parámetro branch en otras herramientas. Para análisis de pull requests, usa list_pull_requests en su lugar.
    • projectKey - Clave del proyecto (p. ej., my_project) - String obligatorio (Se ignora cuando SONARQUBE_PROJECT_KEY está definido)
    • branchTypes - (Solo SonarQube Cloud) Filtro opcional: ALL (predeterminado), LONG o SHORT - Enum {"ALL", "LONG", "SHORT"}
  • list_pull_requests - Lista todos los pull requests de un proyecto. Usa esta herramienta para descubrir pull requests para análisis decorado con PR (cobertura, problemas, quality gate). Devuelve la clave/ID del pull request que se puede usar con otras herramientas. Para análisis basado en ramas sin pull requests, usa list_branches en su lugar.

    • projectKey - Clave del proyecto (p. ej., my_project) - String obligatorio (Se ignora cuando SONARQUBE_PROJECT_KEY está definido)

Quality Gates

  • get_project_quality_gate_status - Obtiene el estado del Quality Gate para el proyecto de SonarQube.

    • analysisId - ID de análisis opcional - String
    • branch - Nombre de rama opcional para análisis basado en ramas. Usa list_branches para descubrir nombres válidos - String
    • projectId - ID de proyecto opcional - String
    • projectKey - Clave de proyecto opcional - String
    • pullRequest - Clave/ID de pull request opcional. Usa list_pull_requests para descubrir claves válidas - String
  • list_quality_gates - Lista todos los quality gates en mi SonarQube.

Reglas

  • show_rule - Muestra información detallada sobre una regla de SonarQube.
    • key - Clave de la regla - String obligatorio

Duplicaciones

  • search_duplicated_files - Busca archivos con duplicaciones de código en un proyecto de SonarQube. De forma predeterminada, obtiene automáticamente todos los archivos duplicados en todas las páginas (hasta 10,000 archivos como máximo). Devuelve solo archivos con duplicaciones.

    • projectKey - Clave del proyecto - String obligatorio (Se ignora cuando SONARQUBE_PROJECT_KEY está definido)
    • branch - Nombre de rama opcional para análisis basado en ramas. Usa list_branches para descubrir nombres válidos - String
    • pullRequest - Clave/ID de pull request opcional. Usa list_pull_requests para descubrir claves válidas - String
    • pageSize - Número opcional de resultados por página para paginación manual (máximo: 500). Si no se especifica, obtiene automáticamente todos los archivos duplicados - Entero
    • pageIndex - Número de página opcional para paginación manual (comienza en 1). Si no se especifica, obtiene automáticamente todos los archivos duplicados - Entero
  • get_duplications - Obtiene duplicaciones de un archivo. Requiere permiso de Exploración (Browse) en el proyecto del archivo.

    • key - Clave del archivo - String obligatorio
    • branch - Nombre de rama opcional para análisis basado en ramas. Usa list_branches para descubrir nombres válidos - String
    • pullRequest - Clave/ID de pull request opcional. Usa list_pull_requests para descubrir claves válidas - String

Fuentes

  • get_raw_source - Obtiene el código fuente como texto sin formato desde SonarQube. Requiere permiso 'Ver código fuente' en el archivo.

    • key - Clave del archivo - String obligatorio
    • branch - Nombre de rama opcional para análisis basado en ramas. Usa list_branches para descubrir nombres válidos - String
    • pullRequest - Clave/ID de pull request opcional. Usa list_pull_requests para descubrir claves válidas - String
  • get_scm_info - Obtiene información SCM de archivos fuente de SonarQube. Requiere permiso de Ver código fuente en el proyecto del archivo.

    • key - Clave del archivo - String obligatorio
    • commits_by_line - Agrupa líneas por commit SCM si el valor es false; de lo contrario, muestra commits para cada línea - String
    • from - Primera línea a devolver. Comienza en 1 - Número
    • to - Última línea a devolver (inclusive) - Número

Sistema

Nota: Las herramientas del sistema solo están disponibles al conectarse a SonarQube Server.

  • get_system_health - Obtiene el estado de salud de la instancia de SonarQube Server. Devuelve GREEN (totalmente operativo), YELLOW (utilizable pero necesita atención) o RED (no operativo).

  • get_system_info - Obtiene información detallada sobre la configuración del sistema de SonarQube Server, incluido el estado de JVM, base de datos, índices de búsqueda y configuraciones. Requiere permisos de 'Administración'.

  • get_system_logs - Obtiene los registros del sistema de SonarQube Server en formato de texto sin formato. Requiere permiso de administración del sistema.

    • name - Nombre opcional de los registros a obtener. Valores posibles: access, app, ce, deprecation, es, web. Predeterminado: app - String
  • ping_system - Hace ping al sistema de SonarQube Server para verificar si está activo. Devuelve 'pong' como texto sin formato.

  • get_system_status - Obtiene información de estado sobre SonarQube Server. Devuelve estado (STARTING, UP, DOWN, RESTARTING, DB_MIGRATION_NEEDED, DB_MIGRATION_RUNNING), versión e id.

Webhooks

  • create_webhook - Crea un nuevo webhook para la organización o proyecto de SonarQube. Requiere permiso de 'Administración' en el proyecto especificado, o permiso global de 'Administración'.

    • name - Nombre del webhook - String obligatorio
    • url - URL del webhook - String obligatorio
    • projectKey - Clave de proyecto opcional para webhook específico de proyecto - String
    • secret - Secreto del webhook opcional para asegurar el payload del webhook - String
  • list_webhooks - Lista todos los webhooks para la organización o proyecto de SonarQube. Requiere permiso de 'Administración' en el proyecto especificado, o permiso global de 'Administración'.

    • projectKey - Clave de proyecto opcional para listar webhooks específicos de proyecto - String

Aumento de Contexto

Herramientas de Arquitectura
  • search_by_signature_patterns - Encuentra elementos de código (clases, métodos, interfaces, ...) por sus firmas de declaración usando patrones regex.

    • include_code_regex_list - Lista de patrones regex para comparar con firmas - String[] obligatorio
    • exclude_code_regex_list - Lista de patrones regex para excluir de los resultados - String[]
    • include_glob - Patrón glob de filtro de archivos (p. ej., *.java) - String
    • exclude_glob - Patrón glob de exclusión de archivos - String
    • fields - Lista separada por comas de campos a incluir en la respuesta - String
    • limit - Número máximo de resultados a devolver (predeterminado: 10) - Entero
    • regex_lists_operator - Cómo combinar múltiples patrones: OR (predeterminado) o AND - String
  • search_by_body_patterns - Encuentra elementos de código por su cuerpo de implementación usando patrones regex. Útil para localizar dónde se usan realmente APIs o patrones.

    • include_code_regex_list - Lista de patrones regex para comparar en cuerpos de código - String[] obligatorio
    • exclude_code_regex_list - Lista de patrones regex para excluir de los resultados - String[]
    • include_glob - Patrón glob de filtro de archivos - String
    • exclude_glob - Patrón glob de exclusión de archivos - String
    • fields - Lista separada por comas de campos a incluir en la respuesta - String
    • limit - Número máximo de resultados a devolver (predeterminado: 10) - Entero
    • regex_lists_operator - Cómo combinar múltiples patrones: OR (predeterminado) o AND - String
  • get_upstream_call_flow - Rastrea qué funciones llaman a una función dada. Útil para encontrar todos los llamadores y puntos de entrada, y comprender qué se rompe si cambia una firma.

    • fqn - Nombre completamente calificado de la función - String obligatorio
    • depth - Profundidad de la cadena de llamadas (0=solo función, 1=llamadores directos, etc.) - Entero
    • fields - Lista separada por comas de campos a incluir en la respuesta - String
  • get_downstream_call_flow - Rastrea qué funciones llama una función dada. Útil para análisis de impacto y comprensión del flujo de ejecución.

    • fqn - Nombre completamente calificado de la función - String obligatorio
    • depth - Profundidad de la cadena de llamadas (0=solo función, 1=funciones llamadas directamente, etc.) - Entero
    • fields - Lista separada por comas de campos a incluir en la respuesta - String
  • get_source_code - Obtiene el código fuente completo (firma y cuerpo) de un elemento de código por su nombre completamente calificado.

    • fqn - Nombre completamente calificado del elemento - String obligatorio
    • fields - Lista separada por comas de campos a incluir en la respuesta - String
  • get_type_hierarchy - Obtiene la jerarquía completa de herencia para una estructura tipo clase (clase, interfaz, enum, record, excepción, struct). Esencial para comprender árboles de herencia y refactorización.

    • fqn - Nombre completamente calificado de la estructura tipo clase - String requerido
    • fields - Lista separada por comas de campos a incluir en la respuesta - String
  • get_references - Obtiene referencias de código entrantes y salientes directas para una clase o módulo. Devuelve solo referencias directas (no transitivas).

    • fqn - Nombre completamente calificado de la clase o módulo - String requerido
    • fields - Lista separada por comas de campos a incluir en la respuesta - String
  • get_current_architecture - Obtiene un grafo de arquitectura jerárquica filtrado por prefijo de ruta y profundidad. Útil para explorar la estructura de módulos y dependencias de alto nivel.

    • depth - Profundidad de jerarquía (0=solo raíz, 1=raíz + hijos, etc.) - Integer requerido
    • path_prefix - Prefijo de ruta opcional para filtrar nodos (p. ej., com.example.service) - String
    • ecosystem - Ecosistema opcional para filtrar (java, cs, py, js, ts) - String
  • get_intended_architecture - Obtiene restricciones arquitectónicas definidas por el usuario que especifican qué módulos pueden depender de otros.

Herramientas de Directrices
  • get_guidelines - Obtiene directrices de codificación basadas en problemas de proyectos de SonarQube, categorías de catálogo o una combinación de ambos.
    • mode - Modo de recuperación de directrices: project_based, category_based o combined - String requerido
    • categories - Lista de nombres de categorías (requerido para modos category_based y combined) - String[]
    • languages - Lista de lenguajes objetivo en formato de clave de repositorio de SonarQube (requerido cuando se proporciona categories) - String[]
    • file_paths - Lista opcional de rutas de archivo para filtrar directrices - String[]
Herramientas de Dependencias de Terceros
  • check_dependency - Verifica una dependencia de terceros en busca de vulnerabilidades de seguridad, malware en la cadena de suministro y cumplimiento de licencias antes de agregarla o actualizarla.
    • purl - URL del paquete (purl) con versión, según especificación purl. Formato: pkg:<type>/<namespace>/<name>@<version> (p. ej., pkg:npm/lodash@4.17.21, pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1, pkg:pypi/django@3.2.0) - String requerido
Variables de Entorno de Aumento de Contexto
VariableDescripciónRequeridoPredeterminado
SONARQUBE_URLURL de SonarQube CloudSíhttps://sonarcloud.io
SONARQUBE_TOKENToken de autenticaciónSíNinguno
SONARQUBE_ORGClave de organización en SonarQube CloudSíNinguno
SONARQUBE_PROJECT_KEYClave de proyecto en SonarQube CloudSíNinguno
SONAR_SQ_BRANCHAnulación explícita de rama de SonarQube *NoNinguno
SONARQUBE_DEBUG_ENABLEDActivar registro de depuración (para solución de problemas)NoFalso
SONAR_LOG_LEVELVerbosidad de registro (TRACE, DEBUG, INFO, WARNING, ERROR)NoINFO
  • Debe proporcionarse cuando no se usa git, o cuando el nombre de la rama git no coincide con el nombre de la rama en SonarQube.
Configuración Específica del Proyecto (Recomendado)

Primero, exporta la variable de entorno SONARQUBE_TOKEN con un Token de Acceso Personal (PAT) válido para tu proyecto.

# macOS/Linux (Bash/Zsh)
export SONARQUBE_TOKEN="{<YourUserToken>}"

Luego, monta el espacio de trabajo del proyecto para dar al servidor de Aumento de Contexto acceso directo a tus archivos fuente:

{
  "mcpServers": {
    "sonarqube-mcp-server": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm", "--pull=always",
        "-e", "SONARQUBE_URL",
        "-e", "SONARQUBE_TOKEN",
        "-e", "SONARQUBE_ORG",
        "-e", "SONARQUBE_PROJECT_KEY",
        "-e", "SONARQUBE_TOOLSETS",
        "-v", "/ABSOLUTE/PATH/TO/YOUR/PROJECT:/app/mcp-workspace:rw",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_URL": "https://sonarcloud.io",
        "SONARQUBE_ORG": "<YourOrganizationKey>",
        "SONARQUBE_PROJECT_KEY": "<YourProjectKey>",
        "SONARQUBE_TOOLSETS": "cag"
      }
    }
  }
}

Importante: En una configuración con ámbito de proyecto, no pongas SONARQUBE_TOKEN en el bloque env. Expórtalo como variable de entorno (export SONARQUBE_TOKEN=...). Docker lo reenviará al contenedor mediante -e SONARQUBE_TOKEN.

Preparación para Agentes

Nota: Las herramientas de Preparación para Agentes solo están disponibles en SonarQube Cloud y requieren que la función esté habilitada para tu organización.

  • start_agentic_readiness_assessment - Inicia una evaluación de preparación para agentes para un proyecto. Devuelve inmediatamente con estado PENDING y un assessmentId. Usa get_agentic_readiness_assessment para consultar los resultados.

    • projectKey - La clave del proyecto - String requerido (Ignorado cuando SONARQUBE_PROJECT_KEY está definido)
    • branch - Rama a evaluar. Omítelo para usar la rama predeterminada del proyecto - String
  • get_agentic_readiness_assessment - Recupera el resultado de una evaluación. Vuelve a llamar con el mismo assessmentId hasta que el estado sea COMPLETED, FAILED o INTERRUPTED. Cuando se complete, devuelve el nivel general y un desglose por pilar con acciones recomendadas y evidencia.

    • assessmentId - El ID de evaluación devuelto por start_agentic_readiness_assessment - String requerido
  • list_agentic_readiness_assessments - Lista todas las evaluaciones para un proyecto, de más reciente a más antiguo. Usa get_agentic_readiness_assessment para resultados completos a nivel de pilar.

    • projectKey - La clave del proyecto para listar evaluaciones - String requerido (Ignorado cuando SONARQUBE_PROJECT_KEY está definido)
    • branch - Filtra evaluaciones por nombre de rama. Omítelo para listar evaluaciones de todas las ramas - String
    • pageIndex - Índice de página basado en 1 (predeterminado: 1) - Number
    • pageSize - Número de elementos por página, máximo 100 (predeterminado: 50) - Number

Ejemplos de Prompts

Una vez que hayas configurado el Servidor MCP de SonarQube, aquí tienes algunos ejemplos de prompts para escenarios comunes del mundo real:

Corregir un Quality Gate Fallido
My quality gate is failing for my project. Can you help me understand why and fix the most critical issues?
The quality gate on my feature branch is red. What do I need to fix to get it passing before I can merge to main?
Verificaciones Previas a la Publicación y Fusión
I'm about to merge my pull request <#247> for the <web-app> project. Can you check if there are any quality issues I should address first?
We're deploying to production tomorrow. Can you check the quality gate status and alert me to any critical issues in this branch?
Mejorar la Calidad del Código
I want to reduce technical debt in my project. What are the top issues I should prioritize?
Our code coverage dropped below 70%. Can you identify which files have the lowest coverage and help me improve it?
Comprender y Corregir Problemas
I have 15 new code smells in my latest commit. Can you explain what they are and help me fix them?
SonarQube flagged a critical security vulnerability in <AuthController.java>. What's the issue and how do I fix it?
Gestión de Seguridad y Dependencias
We need to pass a security audit. Can you check all our projects for security vulnerabilities and create a prioritized list of what needs to be fixed?
Are there any known vulnerabilities in our dependencies? Check this project for dependency risks.
Asistencia en Revisión de Código
I just wrote this authentication function. Can you analyze it for security issues and code quality problems before I commit?
Review the changes in <src/database/migrations> for any potential bugs or security issues.
Monitoreo de Salud del Proyecto
Give me a health report for my project: quality gate status, number of bugs, Security Hotspots, and code coverage.
Compare code quality between our main branch and the develop branch. Are we introducing new issues?
Colaboración en Equipo
What are the most common rule violations across all our projects? We might need to update our coding standards.
Show me all the issues that were marked as false positives in the last month. Are we seeing patterns that suggest our rules need adjustment?

Compilación

Prefiere la imagen de contenedor sonarsource/sonarqube-mcp.

Para ejecutar el servidor como un JAR independiente sin Docker, descarga una versión precompilada del repositorio de binarios de SonarSource. Cada versión publicada está disponible allí como sonarqube-mcp-server-<version>.jar (por ejemplo, sonarqube-mcp-server-1.19.0.2785.jar).

Ejecutar desde JAR

Descarga el JAR de la versión que desees del repositorio de binarios y luego configura tu cliente MCP para ejecutarlo con Java 21 o posterior:

  • Para conectarte con SonarQube Cloud:
{
  "sonarqube": {
    "command": "java",
    "args": [
      "-jar",
      "<path_to_sonarqube_mcp_server_jar>"
    ],
    "env": {
      "STORAGE_PATH": "<path_to_your_mcp_storage>",
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_ORG": "<org>"
    }
  }
}
  • Para conectarte con SonarQube Server:
{
  "sonarqube": {
    "command": "java",
    "args": [
      "-jar",
      "<path_to_sonarqube_mcp_server_jar>"
    ],
    "env": {
      "STORAGE_PATH": "<path_to_your_mcp_storage>",
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_URL": "<url>"
    }
  }
}
Compilar desde el código fuente

El Servidor MCP de SonarQube requiere un Kit de Desarrollo de Java (JDK) versión 21 o posterior para compilarse.

Ejecuta el siguiente comando de Gradle para limpiar el proyecto y compilar la aplicación:

./gradlew clean build -x test

El archivo JAR se creará en build/libs/.

Después de agregar o actualizar dependencias, regenera los archivos de bloqueo:

./gradlew :dependencies --write-locks
./gradlew :its:dependencies --write-locks

Usa la configuración Ejecutar desde JAR anterior, apuntando <path_to_sonarqube_mcp_server_jar> al JAR en build/libs/.

Solución de Problemas

Los registros de la aplicación se escriben en el archivo STORAGE_PATH/logs/mcp.log de forma predeterminada. Para deshabilitar completamente el registro en archivos, establece SONARQUBE_LOG_TO_FILE_DISABLED=true.

Problemas Comunes

"La versión del servidor SonarQube no es compatible"

El servidor MCP verifica la versión del Servidor SonarQube conectado durante el inicio. Si la instancia es anterior a 2025.1 (SQS) o 25.1 (SQCB), el inicio falla con:

SonarQube server version is not supported, minimal version is SQS 2025.1 or SQCB 25.1

Solución: Actualiza SonarQube Server a una versión compatible. Esta verificación solo aplica al conectarse a SonarQube Server (SONARQUBE_URL sin SONARQUBE_ORG), no a SonarQube Cloud.

"La función no funciona" o "Faltan herramientas/funcionalidades"

Es posible que estés ejecutando una imagen Docker desactualizada. Docker almacena imágenes en caché localmente, por lo que no recibirás actualizaciones automáticamente.

Solución: Actualiza a la versión más reciente:

docker pull sonarsource/sonarqube-mcp

Después de extraer la imagen más reciente, reinicia tu cliente MCP para usar la versión actualizada.

Opcionalmente, agrega el indicador --pull=always a tu comando docker run para verificar y extraer siempre la versión más reciente:

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

"Quiero fijar una versión específica"

Explora las etiquetas disponibles en sonarsource/sonarqube-mcp y referencia la versión que desees:

docker pull sonarsource/sonarqube-mcp:1.19.0.2785

docker run --init -i --rm \
  -e SONARQUBE_TOKEN -e SONARQUBE_ORG \
  sonarsource/sonarqube-mcp:1.19.0.2785

En la configuración de tu cliente MCP, usa sonarsource/sonarqube-mcp:<version> en lugar de sonarsource/sonarqube-mcp y elimina --pull=always para que Docker no actualice la imagen silenciosamente.

Datos y telemetría

Este servidor recopila datos de uso anónimos y los envía a SonarSource para ayudar a mejorar el producto. No se recopila código fuente ni direcciones IP, y SonarSource no comparte los datos con nadie más. La recopilación de telemetría se puede deshabilitar con la siguiente propiedad del sistema o variable de entorno: TELEMETRY_DISABLED=true. Haz clic aquí para ver una muestra de los datos que se recopilan.

Licencia

Copyright 2025 SonarSource.

Licenciado bajo la Licencia de Código Fuente Disponible de SONAR v1.0. El uso del Servidor MCP de SonarQube de acuerdo con esta documentación es un Propósito No Competitivo y, por lo tanto, está permitido bajo la SSAL.

Tu uso de SonarQube a través de MCP se rige por los Términos de Servicio de SonarQube Cloud o los Términos y Condiciones de SonarQube Server, incluido el uso de los Datos de Resultados únicamente para tus fines internos de desarrollo de software.