SonarQube
oficialProporciona 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
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 reemplazadockercon tu herramienta preferida.
Antigravity
El Servidor MCP de SonarQube está disponible en la Tienda MCP de Antigravity. Sigue estas instrucciones:
- Abre el Panel Lateral del Agente
- Haz clic en los tres puntos (...) en la esquina superior derecha y selecciona Servidores MCP
- Busca
SonarQubey selecciona Instalar - 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:
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:
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 CloudSONARQUBE_ORG- Tu clave de organizaciónSONARQUBE_URL- (Opcional) Configúralo enhttps://sonarqube.uspara SonarQube Cloud US
-
Para SonarQube Server:
SONARQUBE_TOKEN- Tu token de USUARIO de SonarQube ServerSONARQUBE_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.
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.
Windsurf
El Servidor MCP de SonarQube está disponible como un plugin de Windsurf. Sigue estas instrucciones:
- Abre Configuración de Windsurf > Cascade > Servidores MCP y selecciona Abrir Marketplace de MCP
- Busca
sonarqubeen el Marketplace de MCP de Cascade - Elige el Servidor MCP de SonarQube y selecciona Instalar
- 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=hosta 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 entorno | Descripción |
|---|---|
STORAGE_PATH | Ruta 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_KEY | Clave 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_PORT | Número de puerto opcional entre 64120 y 64130 utilizado para conectar el Servidor MCP de SonarQube con SonarQube para IDE. |
SONARQUBE_DEBUG_ENABLED | Cuando 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_DISABLED | Cuando 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_analysisestá disponible si tu organización tiene derecho a elloanalyze_code_snippet:filePathes obligatorio yfileContentno 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 entorno | Descripción |
|---|---|
SONARQUBE_TOOLSETS | Lista 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_ONLY | Cuando 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 herramientas | Clave | Descripción |
|---|---|---|
| Análisis | analysis | Herramientas de análisis de código (análisis local mediante analyze_code_snippet, obsoleto en favor de analyze_file_list/análisis Vortex) |
| IDE | ide | Herramientas de puente SonarQube para IDE (análisis de archivos, alternancia de análisis automático) — actualmente también incluidas en analysis |
| Problemas | issues | Buscar y gestionar problemas de SonarQube |
| Puntos calientes de seguridad | security-hotspots | Buscar y revisar puntos calientes de seguridad |
| Proyectos | projects | Explorar y buscar proyectos de SonarQube |
| Puertas de calidad | quality-gates | Acceder a puertas de calidad y su estado |
| Reglas | rules | Explorar y buscar reglas de SonarQube |
| Fuentes | sources | Acceder al código fuente e información SCM |
| Duplicaciones | duplications | Encontrar duplicaciones de código entre proyectos |
| Medidas | measures | Recuperar métricas y medidas (incluye tanto herramientas de medidas como de métricas) |
| Lenguajes | languages | Listar lenguajes de programación compatibles |
| Portafolios | portfolios | Gestionar portafolios y empresas (Cloud y Server) |
| Sistema | system | Herramientas de administración del sistema (solo Server) |
| Webhooks | webhooks | Gestionar webhooks |
| Riesgos de dependencias | dependency-risks | Analizar riesgos de dependencias y problemas de seguridad (SCA) |
| Cobertura | coverage | Herramientas de análisis y mejora de cobertura de pruebas |
| Contexto Vortex | cag | Herramientas de contexto Vortex — solo stdio. Obsoleto en favor de vortex (nombre antiguo: Context Augmentation/CAG) |
| Vortex | vortex | Conjunto 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éntica | agentic-readiness | Herramientas 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 entorno | Descripción | Obligatoria |
|---|---|---|
SONARQUBE_TOKEN | Tu token de SonarQube Cloud | Sí |
SONARQUBE_ORG | Tu clave de organización de SonarQube Cloud | Sí |
SONARQUBE_URL | URL personalizada de SonarQube Cloud (predeterminada a https://sonarcloud.io). Úsala para SonarQube Cloud US: https://sonarqube.us | No |
Ejemplos:
- SonarQube Cloud: Solo se necesitan
SONARQUBE_TOKENySONARQUBE_ORG - SonarQube Cloud US: Establece
SONARQUBE_TOKEN,SONARQUBE_ORGySONARQUBE_URL=https://sonarqube.us
SonarQube Server
| Variable de entorno | Descripción | Obligatoria |
|---|---|---|
SONARQUBE_TOKEN | Tu token de USUARIO de SonarQube Server | Sí |
SONARQUBE_URL | La URL de tu SonarQube Server | Sí |
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_ORGdetermina si te estás conectando a SonarQube Cloud o Server. SiSONARQUBE_ORGestá 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 MCP | Modo de servidor | Uso típico |
|---|---|---|
| Stdio | Predeterminado (sin SONARQUBE_TRANSPORT) | Clientes MCP locales que inician el servidor como subproceso (Cursor, Claude Code, VS Code, etc.) |
| HTTP Streamable | SONARQUBE_TRANSPORT=http o https | Implementaciones 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 entorno | Descripción | Predeterminado |
|---|---|---|
SONARQUBE_TRANSPORT | Establézcala en http para habilitar el transporte HTTP Streamable | No configurada (stdio) |
SONARQUBE_HTTP_PORT | Número de puerto (1024-65535) | 8080 |
SONARQUBE_HTTP_HOST | Host al que vincularse (por defecto localhost por seguridad) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Orígenes de navegador separados por comas permitidos para CORS (p. ej., https://my-app.example.com) | No configurado |
SONARQUBE_MCP_IN_CONTAINER | Establé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_ORGestá configurada al iniciar el servidor, todas las solicitudes se enrutan a esa organización. Los clientes no deben enviar un encabezadoSONARQUBE_ORG; hacerlo resultará en un error. - Si
SONARQUBE_ORGno está configurada al iniciar el servidor, cada cliente debe proporcionar un encabezadoSONARQUBE_ORGen cada solicitud. Los clientes también pueden limitar las herramientas visibles por solicitud proporcionando encabezadosSONARQUBE_TOOLSETSy/oSONARQUBE_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_TOKENtodavía se acepta por compatibilidad con versiones anteriores, pero se eliminará en una versión futura. Migre aAuthorization: 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 entorno | Descripción | Predeterminado |
|---|---|---|
SONARQUBE_TRANSPORT | Establézcala en https para habilitar el transporte HTTP Streamable sobre TLS | No configurada (stdio) |
SONARQUBE_HTTP_PORT | Número de puerto (normalmente 8443 para HTTPS) | 8080 |
SONARQUBE_HTTP_HOST | Host al que vincularse (por defecto localhost por seguridad) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Orígenes de navegador separados por comas permitidos para CORS (p. ej., https://my-app.example.com) | No configurado |
SONARQUBE_MCP_IN_CONTAINER | Establé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 entorno | Descripción | Predeterminado |
|---|---|---|
SONARQUBE_HTTPS_KEYSTORE_PATH | Ruta al archivo de almacén de claves (.p12 o .jks) | /etc/ssl/mcp/keystore.p12 |
SONARQUBE_HTTPS_KEYSTORE_PASSWORD | Contraseña del almacén de claves | sonarlint |
SONARQUBE_HTTPS_KEYSTORE_TYPE | Tipo 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.0para que el contenedor escuche en todas las interfaces y la asignación de puertos del runtime funcione, y configureSONARQUBE_MCP_IN_CONTAINER=truepara 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.0solo 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_TOOLSETSySONARQUBE_READ_ONLYson 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 final | Método | Descripción | Respuesta de ejemplo |
|---|---|---|---|
/health | GET | Sonda de actividad. Devuelve 200 OK con un cuerpo vacío una vez que el servidor acepta solicitudes. | (cuerpo vacío) |
/info | GET | Devuelve 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:
| Propiedad | Descripción | Ejemplo |
|---|---|---|
http.proxyHost | Nombre de host del proxy HTTP | proxy.example.com |
http.proxyPort | Puerto del proxy HTTP | 8080 |
https.proxyHost | Nombre de host del proxy HTTPS | proxy.example.com |
https.proxyPort | Puerto del proxy HTTPS | 8443 |
http.nonProxyHosts | Hosts que omiten el proxy (separados por tubería) | localhost|127.0.0.1|*.internal.com |
Autenticación de proxy HTTP/HTTPS:
| Propiedad | Descripción | Ejemplo |
|---|---|---|
http.proxyUser | Nombre de usuario del proxy HTTP | myuser |
http.proxyPassword | Contraseña del proxy HTTP | mypassword |
https.proxyUser | Nombre de usuario del proxy HTTPS | myuser |
https.proxyPassword | Contraseña del proxy HTTPS | mypassword |
Proxy SOCKS5
Se admiten proxies SOCKS5.
| Propiedad | Descripción | Predeterminado | Ejemplo |
|---|---|---|---|
socksProxyHost | Hostname del proxy SOCKS5 | — | localhost |
socksProxyPort | Puerto del proxy SOCKS5 | 1080 | 1080 |
java.net.socks.username | Nombre de usuario SOCKS5 (si se requiere autenticación) | — | myuser |
java.net.socks.password | Contraseñ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/.keyseparados) deben convertirse primero al formato PKCS12. Useopenssl pkcs12 -export -in client.crt -inkey client.key -out client.p12para 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_snippetse eliminará en una versión futura. Conecte SonarQube for IDE para usaranalyze_file_list, o habilite el análisis Vortex para su organización para usarrun_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
fileContentcompleto para el análisis completo del archivo (informa todos los problemas) - Agregue el
codeSnippetopcional 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 cuandoSONARQUBE_PROJECT_KEYestá 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- CadenafileContent- Contenido completo del archivo como cadena. Requerido cuando el espacio de trabajo no está montado - CadenacodeSnippet- Fragmento de código para filtrar problemas (debe coincidir con el contenido en fileContent) - Cadenalanguage- Idioma del código (p. ej., 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - Cadenascope- 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 - Con espacio de trabajo montado (recomendado): pase
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 cuandoSONARQUBE_PROJECT_KEYestá definido)branch- Nombre de la rama utilizado para recuperar el contexto de análisis más reciente - Cadena requeridafilePath- Ruta relativa al proyecto del archivo a analizar (p. ej.,src/main/java/MyClass.java). - Cadena requeridafileScope- 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 cuandoSONARQUBE_PROJECT_KEYestá definido)branch- Nombre de rama opcional para análisis basado en ramas. Uselist_branchespara descubrir nombres válidos - CadenapullRequest- Clave/ID de solicitud de extracción opcional. Uselist_pull_requestspara descubrir claves válidas - CadenamaxCoverage- Umbral máximo de cobertura (0-100). Solo devuelve archivos con cobertura <= este valor - NúmeropageIndex- Índice de página (basado en 1, predeterminado: 1) - NúmeropageSize- 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 requeridabranch- Nombre de rama opcional para análisis basado en ramas. Uselist_branchespara descubrir nombres válidos - CadenapullRequest- Clave/ID de solicitud de extracción opcional. Uselist_pull_requestspara descubrir claves válidas - Cadenafrom- Primera línea para analizar (basada en 1, predeterminado: 1) - Númeroto- Ú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 cuandoSONARQUBE_PROJECT_KEYestá definido)branch- Nombre de rama opcional para análisis basado en ramas. Uselist_branchespara descubrir nombres válidos - CadenapullRequest- Clave/ID de solicitud de extracción opcional. Uselist_pull_requestspara descubrir claves válidas - CadenapageIndex- Índice de página opcional (basado en 1, predeterminado: 1) - EnteropageSize- 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 requeridastatus- 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. Uselist_branchespara descubrir nombres válidos - CadenapullRequest- Clave/ID de solicitud de extracción opcional. Uselist_pull_requestspara descubrir claves válidas - Cadenaseverities- 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 entreprojectKeysyfiles- BooleanoissueKey- Clave de problema opcional para obtener un problema específico - CadenapageIndex- Índice de página opcional basado en 1 (predeterminado: 1) - EnteropageSize- 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 cuandoSONARQUBE_PROJECT_KEYestá 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. Uselist_branchespara descubrir nombres válidos - CadenapullRequest- Clave/ID de solicitud de extracción opcional. Uselist_pull_requestspara descubrir claves válidas - Cadenafiles- Lista opcional de rutas de archivo para filtrar - Cadena[]status- Filtro de estado opcional: TO_REVIEW, REVIEWED - Cadenaresolution- Filtro de resolución opcional: FIXED, SAFE, ACKNOWLEDGED - CadenasinceLeakPeriod- Filtrar puntos de acceso creados desde el período de fuga (código nuevo) - BooleanoonlyMine- Mostrar solo puntos de acceso asignados a mí - BooleanopageIndex- Índice de página opcional basado en 1 (predeterminado: 1) - EnteropageSize- 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 obligatoriostatus- 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 cuandoSONARQUBE_PROJECT_KEYno está configuradobranch- Nombre de rama opcional para análisis basado en ramas. Usalist_branchespara descubrir nombres válidos - StringmetricKeys- Claves de métricas opcionales a recuperar (p. ej., ncloc, complexity, violations, coverage) - String[]pullRequest- Clave/ID de pull request opcional. Usalist_pull_requestspara 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) - EnteropageSize- 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 - Stringfavorite- Si es true, solo devuelve portafolios favoritos - BooleanopageIndex- Número de página opcional basado en 1 (predeterminado: 1) - EnteropageSize- 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 - Stringq- Consulta de búsqueda opcional para filtrar portafolios por nombre - Stringfavorite- 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 - Booleanodraft- Si es true, solo devuelve borradores creados por el usuario conectado. No puede ser true cuando 'favorite' es true - BooleanopageIndex- Índice opcional de la página a obtener (predeterminado: 1) - EnteropageSize- 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) - EnteropageSize- Tamaño de página opcional. Debe ser mayor que 0 y menor o igual a 500 (predeterminado: 500) - Enteroq- 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 campostypeymergeBranch. Filtro opcionalbranchTypes:ALL(predeterminado),LONGoSHORT. - SonarQube Server: devuelve todas las ramas analizadas (nombre, quality gate, fecha de análisis). Sin filtro
type,mergeBranchobranchTypes. - Usa los nombres de rama devueltos como parámetro
branchen otras herramientas. Para análisis de pull requests, usalist_pull_requestsen su lugar. projectKey- Clave del proyecto (p. ej., my_project) - String obligatorio (Se ignora cuandoSONARQUBE_PROJECT_KEYestá definido)branchTypes- (Solo SonarQube Cloud) Filtro opcional:ALL(predeterminado),LONGoSHORT- Enum {"ALL", "LONG", "SHORT"}
- SonarQube Cloud: devuelve ramas de larga duración (
-
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_branchesen su lugar.projectKey- Clave del proyecto (p. ej., my_project) - String obligatorio (Se ignora cuandoSONARQUBE_PROJECT_KEYestá 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 - Stringbranch- Nombre de rama opcional para análisis basado en ramas. Usalist_branchespara descubrir nombres válidos - StringprojectId- ID de proyecto opcional - StringprojectKey- Clave de proyecto opcional - StringpullRequest- Clave/ID de pull request opcional. Usalist_pull_requestspara 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 cuandoSONARQUBE_PROJECT_KEYestá definido)branch- Nombre de rama opcional para análisis basado en ramas. Usalist_branchespara descubrir nombres válidos - StringpullRequest- Clave/ID de pull request opcional. Usalist_pull_requestspara descubrir claves válidas - StringpageSize- 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 - EnteropageIndex- 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 obligatoriobranch- Nombre de rama opcional para análisis basado en ramas. Usalist_branchespara descubrir nombres válidos - StringpullRequest- Clave/ID de pull request opcional. Usalist_pull_requestspara 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 obligatoriobranch- Nombre de rama opcional para análisis basado en ramas. Usalist_branchespara descubrir nombres válidos - StringpullRequest- Clave/ID de pull request opcional. Usalist_pull_requestspara 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 obligatoriocommits_by_line- Agrupa líneas por commit SCM si el valor es false; de lo contrario, muestra commits para cada línea - Stringfrom- Primera línea a devolver. Comienza en 1 - Númeroto- Ú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 obligatoriourl- URL del webhook - String obligatorioprojectKey- Clave de proyecto opcional para webhook específico de proyecto - Stringsecret- 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[] obligatorioexclude_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) - Stringexclude_glob- Patrón glob de exclusión de archivos - Stringfields- Lista separada por comas de campos a incluir en la respuesta - Stringlimit- Número máximo de resultados a devolver (predeterminado: 10) - Enteroregex_lists_operator- Cómo combinar múltiples patrones:OR(predeterminado) oAND- 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[] obligatorioexclude_code_regex_list- Lista de patrones regex para excluir de los resultados - String[]include_glob- Patrón glob de filtro de archivos - Stringexclude_glob- Patrón glob de exclusión de archivos - Stringfields- Lista separada por comas de campos a incluir en la respuesta - Stringlimit- Número máximo de resultados a devolver (predeterminado: 10) - Enteroregex_lists_operator- Cómo combinar múltiples patrones:OR(predeterminado) oAND- 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 obligatoriodepth- Profundidad de la cadena de llamadas (0=solo función, 1=llamadores directos, etc.) - Enterofields- 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 obligatoriodepth- Profundidad de la cadena de llamadas (0=solo función, 1=funciones llamadas directamente, etc.) - Enterofields- 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 obligatoriofields- 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 requeridofields- 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 requeridofields- 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 requeridopath_prefix- Prefijo de ruta opcional para filtrar nodos (p. ej.,com.example.service) - Stringecosystem- 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_basedocombined- String requeridocategories- Lista de nombres de categorías (requerido para modoscategory_basedycombined) - String[]languages- Lista de lenguajes objetivo en formato de clave de repositorio de SonarQube (requerido cuando se proporcionacategories) - 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
| Variable | Descripción | Requerido | Predeterminado |
|---|---|---|---|
SONARQUBE_URL | URL de SonarQube Cloud | Sí | https://sonarcloud.io |
SONARQUBE_TOKEN | Token de autenticación | Sí | Ninguno |
SONARQUBE_ORG | Clave de organización en SonarQube Cloud | Sí | Ninguno |
SONARQUBE_PROJECT_KEY | Clave de proyecto en SonarQube Cloud | Sí | Ninguno |
SONAR_SQ_BRANCH | Anulación explícita de rama de SonarQube * | No | Ninguno |
SONARQUBE_DEBUG_ENABLED | Activar registro de depuración (para solución de problemas) | No | Falso |
SONAR_LOG_LEVEL | Verbosidad de registro (TRACE, DEBUG, INFO, WARNING, ERROR) | No | INFO |
- 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
PENDINGy unassessmentId. Usaget_agentic_readiness_assessmentpara consultar los resultados.projectKey- La clave del proyecto - String requerido (Ignorado cuandoSONARQUBE_PROJECT_KEYestá 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
assessmentIdhasta que el estado seaCOMPLETED,FAILEDoINTERRUPTED. Cuando se complete, devuelve el nivel general y un desglose por pilar con acciones recomendadas y evidencia.assessmentId- El ID de evaluación devuelto porstart_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_assessmentpara resultados completos a nivel de pilar.projectKey- La clave del proyecto para listar evaluaciones - String requerido (Ignorado cuandoSONARQUBE_PROJECT_KEYestá definido)branch- Filtra evaluaciones por nombre de rama. Omítelo para listar evaluaciones de todas las ramas - StringpageIndex- Índice de página basado en 1 (predeterminado: 1) - NumberpageSize- 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.