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 — Pide a tu asistente que ejecute
analyze_code_snippeten una muestra de código para obtener hallazgos instantáneos de calidad y seguridad. - Gestionar incidencias — Usa el conjunto de herramientas
issuespara buscar, filtrar y actualizar incidencias de SonarQube por severidad, estado o proyecto. - Revisar hotspots de seguridad — Consulta el conjunto de herramientas
security-hotspotspara listar hotspots que necesitan revisión y comprender su riesgo. - Comprobar las compuertas de calidad — Pide el estado de
quality-gatesde un proyecto para ver si cumple con su barrera de calidad. - Obtener métricas del proyecto — Recupera
measurescomo cobertura y duplicaciones, o navega por proyectos mediante el conjunto de herramientasprojects.
Documentación
Servidor MCP de SonarQube
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 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
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:
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:
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 CloudSONARQUBE_ORG- Tu clave de organizaciónSONARQUBE_URL- (Opcional) Establécelo enhttps://sonarqube.uspara SonarQube Cloud US
-
Para SonarQube Server:
SONARQUBE_TOKEN- Tu token de USUARIO de SonarQube ServerSONARQUBE_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.
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 Settings > Cascade > MCP Servers en Windsurf y selecciona Open MCP Marketplace
- Busca
sonarqubeen el Cascade MCP Marketplace - Elige el SonarQube MCP Server 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 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=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 (p. ej., 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 for IDE. |
SONARQUBE_DEBUG_ENABLED | Cuando 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_DISABLED | Cuando 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_analysisestará disponible si su 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 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 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, 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_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 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 herramientas | Clave | Descripción |
|---|---|---|
| Analysis | 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 puente de SonarQube for IDE (análisis de archivos, alternancia de análisis automático) — actualmente también incluidas en analysis |
| Issues | issues | Buscar y gestionar issues de SonarQube |
| Security Hotspots | security-hotspots | Buscar y revisar Security Hotspots |
| Projects | projects | Explorar y buscar proyectos de SonarQube |
| Quality Gates | quality-gates | Acceder a los quality gates y su estado |
| Rules | rules | Explorar y buscar reglas de SonarQube |
| Sources | sources | Acceder al código fuente e información SCM |
| Duplications | duplications | Encontrar duplicaciones de código entre proyectos |
| Measures | measures | Recuperar métricas y medidas (incluye tanto las herramientas de medidas como de métricas) |
| Languages | languages | Listar lenguajes de programación compatibles |
| Portfolios | portfolios | Gestionar portafolios y empresas (Cloud y Server) |
| System | system | Herramientas de administración del sistema (solo Server) |
| Webhooks | webhooks | Gestionar webhooks |
| Dependency Risks | dependency-risks | Analizar riesgos de dependencias y problemas de seguridad (SCA) |
| Coverage | coverage | Herramientas de análisis y mejora de cobertura de pruebas |
| Vortex Context | cag | Herramientas de contexto Vortex — solo stdio. Obsoleto en favor de vortex (nombre antiguo: Context Augmentation/CAG) |
| Vortex | vortex | Conjunto 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 Readiness | agentic-readiness | Herramientas 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 entorno | Descripción | Requerido |
|---|---|---|
SONARQUBE_TOKEN | Su token de SonarQube Cloud | Sí |
SONARQUBE_ORG | La clave de su organización de SonarQube Cloud | Sí |
SONARQUBE_URL | URL personalizada de SonarQube Cloud (el valor predeterminado es https://sonarcloud.io). Úsela para SonarQube Cloud US: https://sonarqube.us | No |
Ejemplos:
- SonarQube Cloud: Solo se necesitan
SONARQUBE_TOKENySONARQUBE_ORG - SonarQube Cloud US: Establezca
SONARQUBE_TOKEN,SONARQUBE_ORGySONARQUBE_URL=https://sonarqube.us
SonarQube Server
| Variable de entorno | Descripción | Requerido |
|---|---|---|
SONARQUBE_TOKEN | Su token de USUARIO de SonarQube Server | Sí |
SONARQUBE_URL | La URL de su SonarQube Server | Sí |
⚠️ 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_ORGdetermina si te estás conectando a SonarQube Cloud o Server. SiSONARQUBE_ORGestá 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 MCP | Modo de servidor | Uso típico |
|---|---|---|
| Stdio | Predeterminado (sin SONARQUBE_TRANSPORT) | Clientes MCP locales que lanzan el servidor como subproceso (Cursor, Claude Code, VS Code, etc.) |
| Streamable HTTP | SONARQUBE_TRANSPORT=http o https | Implementaciones 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 entorno | Descripción | Predeterminado |
|---|---|---|
SONARQUBE_TRANSPORT | Establecer a http para habilitar el transporte Streamable HTTP | No establecido (stdio) |
SONARQUBE_HTTP_PORT | Número de puerto (1024-65535) | 8080 |
SONARQUBE_HTTP_HOST | Host al que vincular (por defecto localhost por seguridad) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Orígenes de navegador separados por comas permitidos para CORS (por ejemplo, https://my-app.example.com) | No establecido |
SONARQUBE_MCP_IN_CONTAINER | Establecer 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_ORGestá configurado 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á configurado 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 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_TOKENtodavía se acepta por compatibilidad con versiones anteriores, pero se eliminará en una versión futura. Migra aAuthorization: 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 entorno | Descripción | Predeterminado |
|---|---|---|
SONARQUBE_TRANSPORT | Establecer a https para habilitar el transporte Streamable HTTP sobre TLS | No establecido (stdio) |
SONARQUBE_HTTP_PORT | Número de puerto (típicamente 8443 para HTTPS) | 8080 |
SONARQUBE_HTTP_HOST | Host al que vincular (por defecto localhost por seguridad) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Orígenes de navegador separados por comas permitidos para CORS (por ejemplo, https://my-app.example.com) | No establecido |
SONARQUBE_MCP_IN_CONTAINER | Establecer 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 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, establece
SONARQUBE_HTTP_HOST=0.0.0.0para que el contenedor escuche en todas las interfaces y el mapeo de puertos del runtime funcione, y estableceSONARQUBE_MCP_IN_CONTAINER=truepara 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.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 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_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 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ón | 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 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:
.crtarchivos (codificados PEM o DER).pemarchivos (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:
| 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 | Nombre de host 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 (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. Useopenssl pkcs12 -export -in client.crt -inkey client.key -out client.p12para 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_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 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
fileContentcompleto para el análisis del archivo completo (informa todos los problemas) - Agregue opcionalmente
codeSnippetpara 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 cuandoSONARQUBE_PROJECT_KEYestá 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- StringfileContent- Contenido completo del archivo como cadena. Se requiere cuando el espacio de trabajo no está montado - StringcodeSnippet- Fragmento de código para filtrar problemas (debe coincidir con el contenido en fileContent) - Stringlanguage- Lenguaje del código (p. ej., 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - Stringscope- 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 - Con el 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 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 cuandoSONARQUBE_PROJECT_KEYestá definida)branch- Nombre de la rama utilizado para recuperar el contexto de análisis más reciente - String requeridafilePath- Ruta relativa al proyecto del archivo a analizar (p. ej.,src/main/java/MyClass.java). - String requeridafileScope- 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 cuandoSONARQUBE_PROJECT_KEYestá definida)branch- Nombre de rama opcional para análisis basado en ramas. Uselist_branchespara descubrir nombres válidos - StringpullRequest- Clave/ID de solicitud de extracción opcional. Uselist_pull_requestspara descubrir claves válidas - StringmaxCoverage- Umbral máximo de cobertura (0-100). Solo devuelve archivos con cobertura <= este valor - NumberpageIndex- Índice de página (base 1, por defecto: 1) - NumberpageSize- 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 requeridabranch- Nombre de rama opcional para análisis basado en ramas. Uselist_branchespara descubrir nombres válidos - StringpullRequest- Clave/ID de solicitud de extracción opcional. Uselist_pull_requestspara descubrir claves válidas - Stringfrom- Primera línea a analizar (base 1, por defecto: 1) - Numberto- Ú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 cuandoSONARQUBE_PROJECT_KEYestá definida)branch- Nombre de rama opcional para análisis basado en ramas. Uselist_branchespara descubrir nombres válidos - StringpullRequest- Clave/ID de solicitud de extracción opcional. Uselist_pull_requestspara descubrir claves válidas - StringpageIndex- Índice de página opcional (base 1, por defecto: 1) - IntegerpageSize- 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 requeridastatus- 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. Uselist_branchespara descubrir nombres válidos - StringpullRequest- Clave/ID de solicitud de extracción opcional. Uselist_pull_requestspara descubrir claves válidas - Stringseverities- 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 - StringpageIndex- Índice de página opcional (base 1, por defecto: 1) - IntegerpageSize- 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 cuandoSONARQUBE_PROJECT_KEYestá 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. Uselist_branchespara descubrir nombres válidos - StringpullRequest- Clave/ID de solicitud de extracción opcional. Uselist_pull_requestspara descubrir claves válidas - Stringfiles- Lista opcional de rutas de archivos para filtrar - String[]status- Filtro de estado opcional: TO_REVIEW, REVIEWED - Stringresolution- Filtro de resolución opcional: FIXED, SAFE, ACKNOWLEDGED - StringsinceLeakPeriod- Filtrar puntos calientes creados desde el período de fuga (código nuevo) - BooleanonlyMine- Mostrar solo puntos calientes asignados a mí - BooleanpageIndex- Índice de página opcional (base 1, por defecto: 1) - IntegerpageSize- 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 requeridastatus- 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 cuandoSONARQUBE_PROJECT_KEYno está configuradabranch- Nombre de rama opcional para análisis basado en ramas. Uselist_branchespara descubrir nombres válidos - StringmetricKeys- Claves de métricas opcionales para recuperar (p. ej., ncloc, complexity, violations, coverage) - String[]pullRequest- Clave/ID de solicitud de extracción opcional. Uselist_pull_requestspara 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) - IntegerpageSize- 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 - Stringfavorite- Si es true, solo devuelve portafolios favoritos - BooleanpageIndex- Número de página opcional basado en 1 (predeterminado: 1) - IntegerpageSize- 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 - Stringq- Consulta de búsqueda opcional para filtrar portafolios por nombre - Stringfavorite- 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 - Booleandraft- Si es true, solo devuelve los borradores creados por el usuario conectado. No puede ser true cuando 'favorite' es true - BooleanpageIndex- Índice opcional de la página a obtener (predeterminado: 1) - IntegerpageSize- 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) - IntegerpageSize- Tamaño de página opcional. Debe ser mayor que 0 y menor o igual que 500 (predeterminado: 500) - Integerq- 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),LONG, oSHORT. - SonarQube Server: devuelve todas las ramas analizadas (nombre, calidad, fecha de análisis). Sin filtro
type,mergeBranch, nibranchTypes. - 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),LONG, oSHORT- 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 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_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. 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 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 - IntegerpageIndex- 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 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 plano desde SonarQube. Requiere permiso 'See Source Code' 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 los archivos fuente de SonarQube. Requiere permiso See Source Code en el proyecto del archivo.
key- Clave del archivo - String obligatoriocommits_by_line- Agrupa líneas por commit de SCM si el valor es false; de lo contrario, muestra los commits por cada línea - Stringfrom- Primera línea a devolver. Comienza en 1 - Numberto- Ú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 obligatoriourl- URL del webhook - String obligatorioprojectKey- Clave de proyecto opcional para webhook específico del proyecto - Stringsecret- 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[] obligatorioexclude_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) - Stringexclude_glob- Patrón glob de exclusión de archivos - Stringfields- Lista de campos separados por comas para incluir en la respuesta - Stringlimit- Número máximo de resultados a devolver (predeterminado: 10) - Integerregex_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 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[] obligatorioexclude_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 - Stringexclude_glob- Patrón glob de exclusión de archivos - Stringfields- Lista de campos separados por comas para incluir en la respuesta - Stringlimit- Número máximo de resultados a devolver (predeterminado: 10) - Integerregex_lists_operator- Cómo combinar múltiples patrones:OR(predeterminado) oAND- 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 obligatoriodepth- Profundidad de la cadena de llamadas (0=solo función, 1=llamadores directos, etc.) - Integerfields- 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 obligatoriodepth- Profundidad de la cadena de llamadas (0=solo función, 1=funciones llamadas directamente, etc.) - Integerfields- 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 obligatoriofields- 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 obligatoriofields- 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 obligatoriofields- 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 obligatoriopath_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** - 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
| Variable | Descripción | Requerida | Predeterminado |
|---|---|---|---|
SONARQUBE_URL | URL de SonarQube Cloud | Sí | https://sonarcloud.io |
SONARQUBE_TOKEN | Token de autenticación | Sí | None |
SONARQUBE_ORG | Clave de organización en SonarQube Cloud | Sí | None |
SONARQUBE_PROJECT_KEY | Clave de proyecto en SonarQube Cloud | Sí | None |
SONAR_SQ_BRANCH | Sobrescritura explícita de rama de SonarQube * | No | None |
SONARQUBE_DEBUG_ENABLED | Activa el registro de depuración (para solucionar problemas) | No | False |
SONAR_LOG_LEVEL | Verbosidad del registro (TRACE, DEBUG, INFO, WARNING, ERROR) | No | INFO |
- 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
PENDINGy unassessmentId. Usaget_agentic_readiness_assessmentpara consultar los resultados.projectKey- La clave del proyecto - String requerido (Se ignora 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 completa, 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, las más recientes primero. Usa
get_agentic_readiness_assessmentpara obtener resultados completos a nivel de pilar.projectKey- La clave del proyecto para listar evaluaciones - String requerido (Se ignora 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í 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.