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 — Pide a tu asistente que ejecute analyze_code_snippet en una muestra de código para obtener hallazgos instantáneos de calidad y seguridad.
  • Gestionar incidencias — Usa el conjunto de herramientas issues para buscar, filtrar y actualizar incidencias de SonarQube por severidad, estado o proyecto.
  • Revisar hotspots de seguridad — Consulta el conjunto de herramientas security-hotspots para listar hotspots que necesitan revisión y comprender su riesgo.
  • Comprobar las compuertas de calidad — Pide el estado de quality-gates de un proyecto para ver si cumple con su barrera de calidad.
  • Obtener métricas del proyecto — Recupera measures como cobertura y duplicaciones, o navega por proyectos mediante el conjunto de herramientas projects.

Documentación

Servidor MCP de SonarQube

Build Quality Gate Status

El Servidor MCP de SonarQube es un servidor de Protocolo de Contexto de Modelo (MCP) que permite una integración perfecta 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 confirmes tokens en el 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 empezar 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 (p. ej., sonarsource/sonarqube-mcp:1.19.0.2785) para despliegues 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 (p. ej., 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
Codex CLI

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

Gemini CLI

Nota: La extensión de Gemini CLI 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

Necesitará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) Establécelo en https://sonarqube.us para SonarQube Cloud US
  • Para SonarQube Server:

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

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

GitHub Copilot CLI

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.

GitHub Copilot coding agent

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 Settings -> Copilot -> Coding agent 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) y 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 Settings > Cascade > MCP Servers en Windsurf y selecciona Open MCP Marketplace
  2. Busca sonarqube en el Cascade MCP Marketplace
  3. Elige el SonarQube MCP Server 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 Extensions en Zed y busca SonarQube MCP Server. Al instalar la extensión, se te pedirá que proporciones 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"
}

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 reportar problemas para asegurarte de tener las funciones 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 for IDE

El Servidor MCP de SonarQube puede integrarse con SonarQube for 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 for IDE, la variable de entorno SONARQUBE_IDE_PORT debe configurarse con el número de puerto correcto. SonarQube for VS Code incluye un botón de Instalación Rápida, que configura automáticamente el puerto correcto.

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 for IDE que se ejecuta en localhost. Para permitir que el contenedor se conecte al servidor de SonarQube for 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 (p. ej., 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 for IDE.
SONARQUBE_DEBUG_ENABLEDCuando se establece 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 establece 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 en 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: monte su directorio de proyecto en el 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 estará disponible si su 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 conjuntos de herramientas

Por defecto, solo se habilitan los conjuntos de herramientas importantes para reducir la sobrecarga de contexto. Puede 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, se habilitan los conjuntos de herramientas importantes por defecto (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. Acceder a ellos mediante las claves de conjunto de herramientas cag o analysis está en desuso en favor de la clave de conjunto de herramientas unificada vortex; las claves antiguas siguen funcionando por compatibilidad hacia atrás, pero se emite una advertencia de inicio y una nota de obsolescencia en las instrucciones del servidor siempre que se usen sin vortex. En modo HTTP Streamable, 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 aquellos con los que se inició el servidor (consulte Transporte HTTP Streamable más 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 issue). Este filtro es acumulativo con SONARQUBE_TOOLSETS si ambos están establecidos. Valor predeterminado: false. En modo HTTP Streamable, 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 (consulte Transporte HTTP Streamable más abajo).
Conjuntos de herramientas disponibles
Conjunto de herramientasClaveDescripción
AnalysisanalysisHerramientas de análisis de código (análisis local mediante analyze_code_snippet, obsoleto en favor de analyze_file_list/análisis Vortex)
IDEideHerramientas puente de SonarQube for IDE (análisis de archivos, alternancia de análisis automático) — actualmente también incluidas en analysis
IssuesissuesBuscar y gestionar issues de SonarQube
Security Hotspotssecurity-hotspotsBuscar y revisar Security Hotspots
ProjectsprojectsExplorar y buscar proyectos de SonarQube
Quality Gatesquality-gatesAcceder a los quality gates y su estado
RulesrulesExplorar y buscar reglas de SonarQube
SourcessourcesAcceder al código fuente e información SCM
DuplicationsduplicationsEncontrar duplicaciones de código entre proyectos
MeasuresmeasuresRecuperar métricas y medidas (incluye tanto las herramientas de medidas como de métricas)
LanguageslanguagesListar lenguajes de programación compatibles
PortfoliosportfoliosGestionar portafolios y empresas (Cloud y Server)
SystemsystemHerramientas de administración del sistema (solo Server)
WebhookswebhooksGestionar webhooks
Dependency Risksdependency-risksAnalizar riesgos de dependencias y problemas de seguridad (SCA)
CoveragecoverageHerramientas de análisis y mejora de cobertura de pruebas
Vortex ContextcagHerramientas de contexto Vortex — solo stdio. Obsoleto en favor de vortex (nombre antiguo: Context Augmentation/CAG)
VortexvortexConjunto de herramientas unificado y recomendado que presenta tanto las herramientas de contexto Vortex como las de análisis Vortex bajo un mismo nombre (solo stdio, requiere el derecho de organización combinado)
Agentic Readinessagentic-readinessHerramientas de evaluación de Agentic Readiness (SonarQube Cloud, requiere derecho de organización)

Ejemplos

Habilitar los conjuntos de herramientas de análisis, issues y quality gates (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 se habilita automáticamente, por lo que no necesita incluirlo en SONARQUBE_TOOLSETS.

Habilitar el 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, se deben establecer las siguientes variables de entorno antes de iniciar el servidor:

Variable de entornoDescripciónRequerido
SONARQUBE_TOKENSu token de SonarQube Cloud
SONARQUBE_ORGLa clave de su organización de SonarQube Cloud
SONARQUBE_URLURL personalizada de SonarQube Cloud (el valor predeterminado es https://sonarcloud.io). Úsela para SonarQube Cloud US: https://sonarqube.usNo

Ejemplos:

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

SonarQube Server

Variable de entornoDescripciónRequerido
SONARQUBE_TOKENSu token de USUARIO de SonarQube Server
SONARQUBE_URLLa URL de su SonarQube Server

⚠️ La conexión a SonarQube Server requiere un token de tipo USER 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 usa SonarQube Cloud; de lo contrario, se usa SonarQube Server.

Modos de transporte

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

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

Nota: Streamable HTTP es el transporte de red MCP actual. El transporte HTTP solo SSE de versiones anteriores de MCP 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 (Streamable HTTP)

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

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

Variable de entornoDescripciónPredeterminado
SONARQUBE_TRANSPORTEstablecer a http para habilitar el transporte Streamable HTTPNo establecido (stdio)
SONARQUBE_HTTP_PORTNúmero de puerto (1024-65535)8080
SONARQUBE_HTTP_HOSTHost al que vincular (por defecto localhost por seguridad)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSOrígenes de navegador separados por comas permitidos para CORS (por ejemplo, https://my-app.example.com)No establecido
SONARQUBE_MCP_IN_CONTAINEREstablecer a true cuando se ejecuta dentro de un contenedor. La imagen oficial de Docker lo establece automáticamente; configúralo tú mismo cuando uses otros runtimes OCI (Podman, Kubernetes, Nomad, etc.).false

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

  • Si SONARQUBE_ORG está configurado 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á configurado 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 filtros adicionales sobre la configuración a nivel de servidor: solo pueden reducir el alcance, nunca expandirlo. 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. Migra a Authorization: Bearer <token>.

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

Transporte Streamable HTTP 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 Streamable HTTP. El servidor se vincula a 127.0.0.1 (localhost) por defecto por seguridad.

Variable de entornoDescripciónPredeterminado
SONARQUBE_TRANSPORTEstablecer a https para habilitar el transporte Streamable HTTP sobre TLSNo establecido (stdio)
SONARQUBE_HTTP_PORTNúmero de puerto (típicamente 8443 para HTTPS)8080
SONARQUBE_HTTP_HOSTHost al que vincular (por defecto localhost por seguridad)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSOrígenes de navegador separados por comas permitidos para CORS (por ejemplo, https://my-app.example.com)No establecido
SONARQUBE_MCP_IN_CONTAINEREstablecer a true cuando se ejecuta dentro de un contenedor. La imagen oficial de Docker lo establece automáticamente; configúralo tú mismo cuando uses otros runtimes OCI (Podman, Kubernetes, Nomad, etc.).false

Configuración de certificado 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, establece SONARQUBE_HTTP_HOST=0.0.0.0 para que el contenedor escuche en todas las interfaces y el mapeo de puertos del runtime funcione, y establece SONARQUBE_MCP_IN_CONTAINER=true para indicar al servidor que está dentro de un contenedor. La imagen oficial de Docker establece esto último automáticamente; configúralo tú mismo cuando uses 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 tu 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 levantar restricciones más allá de lo que el servidor fue lanzado.

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

Puntos de conexión de servicio

Cuando se ejecuta en modo Streamable HTTP (http o https), el servidor expone algunos puntos de conexión de servicio no autenticados además del punto de conexión MCP en /mcp. Estos están destinados para uso de servicio a servicio (monitoreo, orquestación, comprobaciones de compatibilidad del cliente) y no requieren un encabezado Authorization.

Punto de conexiónMé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 de conexión no están disponibles cuando se ejecuta con el transporte Stdio.

Certificados personalizados

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

Configuración

Usando montaje de volumen

Monta un directorio que contenga tus 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:

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

Configuración de MCP con certificados

Cuando uses certificados personalizados, puedes modificar tu configuración de 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: ¿Ejecutando 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 puedes usar el almacén de confianza del sistema operativo — notablemente en Windows, donde no se consulta — apunta 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 sobre los certificados de confianza predeterminados.

Proxy

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

Configuración

Proxy HTTP/HTTPS

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

Propiedades comunes de proxy:

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
socksProxyHostNombre de host del proxy SOCKS5localhost
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 (TLS mutuo)

Si tu servidor SonarQube Server requiere que los clientes presenten un certificado durante el protocolo de enlace TLS (TLS mutuo), puedes 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

Usando 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       # look for -rw-r--r-- (644) or wider
chmod 644 /path/to/client.p12    # grant read access to the container user

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>"
    }
  }
}

Usando 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 separados .crt/.key) deben convertirse primero a formato PKCS12. Use openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 para convertirlos.

Herramientas

Análisis

  • analyze_code_snippet - Analizar el contenido de archivos 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, filtra 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 el espacio de trabajo montado (recomendado): pase filePath (relativo al proyecto) — el servidor lee el archivo directamente, manteniendo el contenido del archivo fuera del contexto del agente
    • Sin montaje del espacio de trabajo: pase el fileContent completo para el análisis del archivo completo (informa todos los problemas)
    • Agregue opcionalmente codeSnippet 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 - String requerida (Ignorada cuando SONARQUBE_PROJECT_KEY está definida)
    • 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 - String
    • fileContent - Contenido completo del archivo como cadena. Se requiere cuando el espacio de trabajo no está montado - String
    • codeSnippet - Fragmento de código para filtrar problemas (debe coincidir con el contenido en fileContent) - String
    • language - Lenguaje del código (p. ej., 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - String
    • scope - Alcance del archivo: MAIN o TEST (por defecto: MAIN) - String

    Lenguajes compatibles: 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 el ide)

  • analyze_file_list - Analizar 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 absolutas de archivos a analizar - String[] requerido
  • toggle_automatic_analysis - Habilitar o deshabilitar el análisis automático de SonarQube for IDE. Cuando está habilitado, SonarQube for IDE analizará automáticamente los archivos a medida que se modifiquen en el directorio de trabajo. Cuando está deshabilitado, el análisis automático se desactiva.

    • enabled - Habilitar o deshabilitar el análisis automático - Boolean requerido

Cuando el análisis Vortex está habilitado para su organización de SonarQube Cloud:

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

  • run_advanced_code_analysis - Ejecutar análisis Vortex en SonarQube Cloud para un solo archivo. La organización se infiere de la configuración de MCP.
    • projectKey - La clave del proyecto - String requerida (Ignorada cuando SONARQUBE_PROJECT_KEY está definida)
    • branch - Nombre de la rama utilizado para recuperar el contexto de análisis más reciente - String requerida
    • filePath - Ruta relativa al proyecto del archivo a analizar (p. ej., src/main/java/MyClass.java). - String requerida
    • fileScope - Define en qué alcance se origina el archivo: 'MAIN' o 'TEST' (por defecto: MAIN) - String

Cobertura

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

    • projectKey - La clave del proyecto para buscar - String requerida (Ignorada cuando SONARQUBE_PROJECT_KEY está definida)
    • branch - Nombre de rama opcional para análisis basado en ramas. Use list_branches para descubrir nombres válidos - String
    • pullRequest - Clave/ID de solicitud de extracción opcional. Use list_pull_requests para descubrir claves válidas - String
    • maxCoverage - Umbral máximo de cobertura (0-100). Solo devuelve archivos con cobertura <= este valor - Number
    • pageIndex - Índice de página (base 1, por defecto: 1) - Number
    • pageSize - Tamaño de página (por defecto: 100, máximo: 500) - Number
  • get_file_coverage_details - Obtener 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 con precisión dónde agregar cobertura de pruebas. Úsela después de identificar archivos con baja cobertura mediante search_files_by_coverage.

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

Riesgos de dependencias

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

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

Empresas

Nota: Las empresas solo están disponibles cuando se conecta a SonarQube Cloud.

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

Problemas

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

    • key - Clave del problema - String requerida
    • status - Nuevo estado del problema - Enum requerido {"accept", "falsepositive", "reopen"}
  • search_sonar_issues_in_projects - Buscar problemas de SonarQube en los proyectos de mi organización.

    • projectKeys - Lista opcional de claves de proyectos de SonarQube - String[]
    • branch - Nombre de rama opcional para análisis basado en ramas. Use list_branches para descubrir nombres válidos - String
    • pullRequest - Clave/ID de solicitud de extracción opcional. Use list_pull_requests para descubrir claves válidas - String
    • severities - Lista opcional de severidades para filtrar. Valores posibles: INFO, LOW, MEDIUM, HIGH, BLOCKER - String[]
    • impactSoftwareQualities - Lista opcional de calidades de software para filtrar. Valores posibles: MAINTAINABILITY, RELIABILITY, SECURITY - String[]
    • issueStatuses - Lista opcional de estados de problema para filtrar. Valores posibles: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - String[]
    • issueKey - Clave de problema opcional para obtener un problema específico - String
    • pageIndex - Índice de página opcional (base 1, por defecto: 1) - Integer
    • pageSize - Tamaño de página opcional. Debe ser mayor que 0 y menor o igual a 500 (por defecto: 100) - Integer

Puntos calientes de seguridad

  • search_security_hotspots - Buscar puntos calientes de seguridad en un proyecto de SonarQube.

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

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

    • hotspotKey - Clave del punto caliente de seguridad - String requerida
    • status - Nuevo estado - Enum requerido {"TO_REVIEW", "REVIEWED"}
    • resolution - Resolución cuando el estado es REVIEWED - Enum {"FIXED", "SAFE", "ACKNOWLEDGED"}
    • comment - Comentario de revisión opcional - String

Lenguajes

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

Medidas

  • get_component_measures - Obtener medidas de SonarQube para un componente (proyecto, directorio, archivo).
    • projectKey - La clave del proyecto - String requerida cuando SONARQUBE_PROJECT_KEY no está configurada
    • branch - Nombre de rama opcional para análisis basado en ramas. Use list_branches para descubrir nombres válidos - String
    • metricKeys - Claves de métricas opcionales para recuperar (p. ej., ncloc, complexity, violations, coverage) - String[]
    • pullRequest - Clave/ID de solicitud de extracción opcional. Use list_pull_requests para descubrir claves válidas - String

Métricas

  • search_metrics - Buscar métricas de SonarQube.
    • pageIndex - Índice de página opcional (base 1, por defecto: 1) - Integer
    • pageSize - Tamaño de página opcional. Debe ser mayor que 0 y menor o igual a 500 (por defecto: 100) - Integer

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 - Boolean
    • pageIndex - Número de página opcional basado en 1 (predeterminado: 1) - Integer
    • pageSize - Tamaño de página opcional, máximo 500 (predeterminado: 100) - Integer

    Para SonarQube Cloud:

    • enterpriseId - UUID de la empresa. 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 se omite el parámetro 'enterpriseId'. Si es true, solo devuelve los portafolios marcados como favoritos por el usuario conectado. No puede ser true cuando 'draft' es true - Boolean
    • draft - Si es true, solo devuelve los borradores creados por el usuario conectado. No puede ser true cuando 'favorite' es true - Boolean
    • pageIndex - Índice opcional de la página a obtener (predeterminado: 1) - Integer
    • pageSize - Tamaño opcional de la página a obtener (predeterminado: 50) - Integer

Proyectos

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

    • pageIndex - Índice de página opcional basado en 1 (predeterminado: 1) - Integer
    • pageSize - Tamaño de página opcional. Debe ser mayor que 0 y menor o igual que 500 (predeterminado: 500) - Integer
    • 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, calidad, fecha de análisis). Sin filtro type, mergeBranch, ni 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 con decoración de PR (cobertura, problemas, calidad). 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. Por defecto, obtiene automáticamente todos los archivos duplicados de 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 - Integer
    • 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 - Integer
  • get_duplications - Obtiene las duplicaciones de un archivo. Requiere permiso de exploración 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 plano desde SonarQube. Requiere permiso 'See Source Code' 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 los archivos fuente de SonarQube. Requiere permiso See Source Code en el proyecto del archivo.

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

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 requiere atención) o RED (no operativo).

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

  • get_system_logs - Obtiene los registros del sistema de SonarQube Server en formato de texto plano. Requiere permisos 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 comprobar si está activo. Devuelve 'pong' como texto plano.

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

Webhooks

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

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

    • projectKey - Clave de proyecto opcional para listar webhooks específicos del 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 de expresión regular.

    • include_code_regex_list - Lista de patrones de expresión regular para comparar contra las firmas - String[] obligatorio
    • exclude_code_regex_list - Lista de patrones de expresión regular para excluir de los resultados - String[]
    • include_glob - Patrón glob de filtro de archivo (p. ej., *.java) - String
    • exclude_glob - Patrón glob de exclusión de archivos - String
    • fields - Lista de campos separados por comas para incluir en la respuesta - String
    • limit - Número máximo de resultados a devolver (predeterminado: 10) - Integer
    • 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 de expresión regular. Útil para localizar dónde se usan realmente APIs o patrones.

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

    • fqn - Nombre totalmente calificado de la función - String obligatorio
    • depth - Profundidad de la cadena de llamadas (0=solo función, 1=llamadores directos, etc.) - Integer
    • fields - Lista de campos separados por comas para incluir en la respuesta - String
  • get_downstream_call_flow - Traza qué funciones llama una función determinada. Útil para análisis de impacto y para entender el flujo de ejecución.

    • fqn - Nombre totalmente calificado de la función - String obligatorio
    • depth - Profundidad de la cadena de llamadas (0=solo función, 1=funciones llamadas directamente, etc.) - Integer
    • fields - Lista de campos separados por comas para 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 totalmente calificado.

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

    • fqn - Nombre totalmente calificado de la estructura tipo clase - String obligatorio
    • fields - Lista de campos separados por comas para 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 totalmente calificado de la clase o módulo - String obligatorio
    • fields - Lista de campos separados por comas para 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 la jerarquía (0=solo raíz, 1=raíz + hijos, etc.) - Integer obligatorio
    • 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** - Obtén pautas de codificación basadas en incidencias del proyecto SonarQube, categorías de catálogo o una combinación de ambas. - `mode` - Modo de recuperación de pautas: `project_based`, `category_based`, o `combined` - _String requerido_ - `categories` - Lista de nombres de categorías (necesario para modos `category_based` y `combined`) - _String[]_ - `languages` - Lista de lenguajes objetivo en formato de clave de repositorio de SonarQube (necesaria cuando se proporciona `categories`) - _String[]_ - `file_paths` - Lista opcional de rutas de archivo para filtrar las pautas - _String[]_
Herramientas de Dependencias de Terceros
  • check_dependency - Comprueba una dependencia de terceros en busca de vulnerabilidades de seguridad, malware en la cadena de suministro y cumplimiento de licencias antes de añadirla o actualizarla.
    • purl - URL del paquete (purl) con versión, según purl-spec. Formato: pkg:<type>/<namespace>/<name>@<version> (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 para Aumento de Contexto
VariableDescripciónRequeridaPredeterminado
SONARQUBE_URLURL de SonarQube Cloudhttps://sonarcloud.io
SONARQUBE_TOKENToken de autenticaciónNone
SONARQUBE_ORGClave de organización en SonarQube CloudNone
SONARQUBE_PROJECT_KEYClave de proyecto en SonarQube CloudNone
SONAR_SQ_BRANCHSobrescritura explícita de rama de SonarQube *NoNone
SONARQUBE_DEBUG_ENABLEDActiva el registro de depuración (para solucionar problemas)NoFalse
SONAR_LOG_LEVELVerbosidad del registro (TRACE, DEBUG, INFO, WARNING, ERROR)NoINFO
  • Se debe proporcionar 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 (Recomendada)

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 alcance de proyecto, no pongas SONARQUBE_TOKEN en el bloque de entorno. Exprésalo 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 el estado PENDING y un assessmentId. Usa get_agentic_readiness_assessment para consultar los resultados.

    • projectKey - La clave del proyecto - String requerido (Se ignora 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 completa, 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, las más recientes primero. Usa get_agentic_readiness_assessment para obtener resultados completos a nivel de pilar.

    • projectKey - La clave del proyecto para listar evaluaciones - String requerido (Se ignora 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í hay algunos ejemplos de prompts para escenarios comunes del mundo real:

Corregir un Quality Gate que Falló
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?
Comprobaciones Previas al Lanzamiento y a la 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?
Entender y Corregir Incidencias
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 para 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 para la versión que desees desde el repositorio de binarios, luego configura tu cliente MCP para ejecutarlo con Java 21 o posterior:

  • Para conectar 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 conectar 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 compilar.

Ejecuta el siguiente comando 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 añadir 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 por defecto. Para deshabilitar por completo el registro en archivo, establece SONARQUBE_LOG_TO_FILE_DISABLED=true.

Problemas Comunes

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

Puede 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 obtener la última imagen, reinicia tu cliente MCP para usar la versión actualizada.

Opcionalmente, añade la bandera --pull=always a tu comando docker run para verificar siempre y descargar la última versión:

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 dirección 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 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.