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?
- Conectarse a SonarQube Cloud o Server — Configura el contenedor
sonarsource/sonarqube-mcpcon un token, una clave de organización o la URL de un servidor para vincular tu asistente a SonarQube. - Analizar fragmentos de código — Pide al asistente que analice un fragmento de código o un archivo, usando un montaje del espacio de trabajo para leer archivos directamente del disco.
- Buscar y gestionar incidencias — Busca y actualiza incidencias de SonarQube mediante el conjunto de herramientas
issues. - Revisar puntos críticos de seguridad — Busca y revisa puntos críticos de seguridad mediante el conjunto de herramientas
security-hotspots. - Explorar proyectos y puertas de calidad — Consulta claves de proyectos, puertas de calidad, reglas, métricas y datos de cobertura.
- Limitar conjuntos de herramientas y usar el modo de solo lectura — Usa
SONARQUBE_TOOLSETSySONARQUBE_READ_ONLYpara controlar qué herramientas se cargan y bloquear las operaciones de escritura.
Documentación
SonarQube MCP Server
SonarQube MCP Server es un servidor del Model Context Protocol (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.
Empieza con la configuración rápida o descubre más sobre la familia de productos SonarQube.
Configuración rápida
Prácticas recomendadas de seguridad
🔒 Importante: Tu token de SonarQube es una credencial confidencial. Sigue estas prácticas de seguridad:
Al usar comandos de CLI:
- Evita incluir tokens directamente en el código de los argumentos de la línea de comandos: se guardan en el historial del shell
- Usa variables de entorno: define los tokens en variables de entorno antes de ejecutar los comandos
Al usar archivos de configuración:
- Nunca confirmes tokens en el control de versiones
- Usa la 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 usar el Generador de configuración de SonarQube MCP Server, una herramienta interactiva que genera una configuración lista para usar para tu cliente de agente de IA preferido.
Configuración manual
Si prefieres configurar todo por tu cuenta, el método más sencillo es usar nuestra imagen de contenedor en sonarsource/sonarqube-mcp. Usa sonarsource/sonarqube-mcp para las actualizaciones automáticas (con --pull=always), o fija una etiqueta de versión (por ejemplo, sonarsource/sonarqube-mcp:1.19.0.2785) para obtener implementaciones reproducibles. Algunas versiones también llevan etiquetas con la versión de SonarQube Server con la que están alineadas, con el formato <SQS major>.<SQS minor>.<patch> (por ejemplo, sonarsource/sonarqube-mcp:2026.5.0), donde el número de parche se incrementa con cada versión de MCP destinada a esa versión de SonarQube Server. Lee lo siguiente si quieres compilarlo localmente.
Nota: Aunque los ejemplos siguientes usan
docker, funciona cualquier entorno de ejecución de contenedores compatible con OCI (por ejemplo, Podman, nerdctl). Solo tienes que sustituirdockerpor la herramienta que prefieras.
Antigravity
SonarQube MCP Server está disponible en la tienda MCP de Antigravity. Sigue estas instrucciones:
- Abre el panel lateral del agente
- Haz clic en los tres puntos (...) de la esquina superior derecha y selecciona MCP Servers
- Busca
SonarQubey selecciona Install - Proporciona el token de usuario de SonarQube requerido. También puedes proporcionar la clave de tu 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.
También puedes configurar el servidor manualmente mediante mcp_config.json:
- Para conectarte a SonarQube Cloud:
En el panel lateral del agente, haz clic en los tres puntos (...) -> MCP Store -> Manage MCP Servers -> View raw config y añade 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, añade manualmente "SONARQUBE_URL": "https://sonarqube.us" a la sección env y "-e", "SONARQUBE_URL" a la matriz args.
- Para conectarte a 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 a 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, añade --env SONARQUBE_URL=https://sonarqube.us al comando.
- Para conectarte a 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 añade la siguiente configuración:
- Para conectarte a 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, añade "SONARQUBE_URL" = "https://sonarqube.us" a la sección env y "-e", "SONARQUBE_URL" a la matriz args.
- Para conectarte a 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 a SonarQube Cloud:
Para SonarQube Cloud US, añade manualmente "SONARQUBE_URL": "https://sonarqube.us" a la sección env de tu configuración de MCP después de la instalación.
- Para conectarte a SonarQube Server:
Gemini CLI
Nota: La extensión de Gemini CLI se ha trasladado al repositorio sonarqube-agent-plugins. A partir de ahora, instálala desde allí.
Puedes instalar nuestra extensión del servidor MCP con el siguiente comando:
gemini extensions install https://github.com/SonarSource/sonarqube-agent-plugins
Tendrás que definir las variables de entorno requeridas antes de iniciar Gemini:
Variables de entorno requeridas:
-
Para SonarQube Cloud:
SONARQUBE_TOKEN- Tu token de SonarQube CloudSONARQUBE_ORG- La clave de tu 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 añadir el servidor SonarQube MCP:
/mcp add
Tendrás que proporcionar información sobre el servidor MCP. Puedes usar el tabulador para desplazarte entre los campos.
- Para conectarte a 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, añade -e, SONARQUBE_URL a Arguments y SONARQUBE_URL=https://sonarqube.us a Environment Variables.
- Para conectarte a 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 programación de GitHub Copilot
El agente de programación de GitHub Copilot puede usar directamente el servidor SonarQube MCP en tu CI/CD.
Para añadir los secretos a tu entorno de Copilot, sigue la documentación de Copilot. Solo estarán disponibles para tu configuración de MCP los secretos cuyos nombres tengan el prefijo COPILOT_MCP_.
En tu repositorio de GitHub, ve a Settings -> Copilot -> Coding agent y añade la siguiente configuración en la sección de configuración de MCP:
- Para conectarte a 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, añade "-e", "SONARQUBE_URL" a la matriz args y "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL" a la sección env; después, define el secreto COPILOT_MCP_SONARQUBE_URL=https://sonarqube.us.
- Para conectarte a 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 el directorio de tu espacio de trabajo (o edítalo si ya existe) y añade la siguiente configuración:
- Para conectarte a 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, añade "-e", "SONARQUBE_URL" a la matriz args y "SONARQUBE_URL": "https://sonarqube.us" a la sección env.
- Para conectarte a 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 en VS Code.
Para SonarQube Cloud US, añade manualmente "SONARQUBE_URL": "https://sonarqube.us" a la sección env de tu configuración de MCP después de la instalación.
Windsurf
SonarQube MCP Server está disponible como complemento de Windsurf. Sigue estas instrucciones:
- Abre Settings > Cascade > MCP Servers de Windsurf y selecciona Open MCP Marketplace
- Busca
sonarqubeen Cascade MCP Marketplace - Elige SonarQube MCP Server y selecciona Install
- Añade el token de usuario de SonarQube requerido. Opcionalmente, añade una clave de organización predeterminada para SonarQube Cloud o la URL de SonarQube para SonarQube Server o Community Build.
Para SonarQube Cloud US, establece la URL en https://sonarqube.us.
Zed
Ve a la vista Extensions de 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, añade "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 descargar la imagen más reciente con regularidad o antes de informar de problemas, para asegurarte de tener las funciones y correcciones más actualizadas.
Instalación manual
Puedes instalar manualmente el servidor SonarQube MCP copiando el siguiente fragmento en el archivo de configuración de servidores MCP:
- Para conectarte a 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 a 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
SonarQube MCP Server puede integrarse con SonarQube for IDE para mejorar aún más tu flujo de desarrollo y ofrecer análisis e información de código directamente en tu IDE.
Configuración
Al usar SonarQube for IDE, la variable de entorno SONARQUBE_IDE_PORT debe establecerse 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, añade la opción
--network=hostal comando de ejecución del contenedor.
Configuración
Según tu entorno, debes proporcionar variables de entorno específicas.
Base
Debes añadir la siguiente variable al ejecutar el servidor MCP:
| Variable de entorno | Descripción |
|---|---|
STORAGE_PATH | Ruta absoluta obligatoria a un directorio con permisos de escritura donde SonarQube MCP Server almacenará sus archivos (por ejemplo, para su creación, actualización y persistencia); se proporciona automáticamente al usar la imagen del contenedor |
SONARQUBE_PROJECT_KEY | Clave de proyecto predeterminada opcional. Si se establece, todas las herramientas que requieren una clave de proyecto usarán este valor automáticamente; el parámetro projectKey se elimina por completo de sus esquemas. Útil al trabajar en un solo proyecto. |
SONARQUBE_IDE_PORT | Número de puerto opcional entre 64120 y 64130 que se usa para conectar SonarQube MCP Server con SonarQube for IDE. |
SONARQUBE_FORCE_LOCAL_ANALYSIS | Establézcalo en true para usar analyze_code_snippet en lugar del análisis Vortex en Cloud stdio, también para las organizaciones con derecho de uso. Requiere el conjunto de herramientas analysis. Valor predeterminado: false. No tiene efecto en SonarQube Server ni en Cloud HTTP. |
SONARQUBE_DEBUG_ENABLED | Si 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. Es útil para solucionar problemas de conectividad o configuración. Valor predeterminado: false. |
SONARQUBE_LOG_TO_FILE_DISABLED | Si se establece en true, deshabilita por completo la escritura de registros en el disco. No se crearán archivos de registro en STORAGE_PATH/logs/. Es útil en entornos en contenedores o efímeros donde no se desea registrar en archivos. Valor predeterminado: false. |
Montaje del espacio de trabajo (reducción del exceso de contexto)
De forma predeterminada, la herramienta de análisis analyze_code_snippet requiere que el agente pase todo el contenido del archivo como argumento fileContent. En el caso de archivos grandes o al analizar muchos archivos en una sesión, esto aumenta considerablemente el uso de la ventana de contexto y el costo.
Solución: monte el directorio del proyecto en el contenedor en /app/mcp-workspace. Cuando se detecta este montaje, el servidor lee los archivos directamente del disco mediante 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"
]
}
Con un montaje, las herramientas de análisis leen los archivos directamente mediante filePath; no se necesita fileContent.
En stdio, el análisis se selecciona al iniciar (según los conjuntos de herramientas habilitados):
- SonarQube Cloud: análisis Vortex (
run_advanced_code_analysis) con un montaje del espacio de trabajo y al menos una organización con derecho de uso; de lo contrario, análisis local. El análisis Vortex solo acepta organizaciones con derecho de uso. - SonarQube Server: análisis Vortex para instancias con derecho de uso (requiere un montaje del espacio de trabajo); análisis local para instancias sin Vortex.
El análisis local usa SonarQube for IDE si está conectado o analyze_code_snippet. Sin un montaje, el análisis de fragmentos requiere fileContent.
En Cloud stdio, SONARQUBE_ORG limita la comprobación del derecho de uso a esa organización. Para usar fragmentos en todas las organizaciones, establezca SONARQUBE_FORCE_LOCAL_ANALYSIS=true, habilite el conjunto de herramientas analysis y reinicie. Esta configuración solo afecta a Cloud stdio.
En HTTP/HTTPS, Cloud y Server admiten analyze_code_snippet cuando el servidor MCP tiene un SONARQUBE_TOKEN de inicio y está habilitado el conjunto de herramientas analysis. El token de inicio es necesario para inicializar el analizador (las descargas de complementos de Cloud son anónimas); las llamadas usan el token del usuario y, en Cloud, la organización seleccionada para la solicitud a fin de recuperar los perfiles de calidad y las reglas activas. Sin un token de inicio, se deshabilitan el análisis de fragmentos y las descargas del analizador, incluso con SONARQUBE_FORCE_LOCAL_ANALYSIS=true. No se requiere el derecho de uso de Vortex.
Habilitación selectiva de herramientas
Los clientes MCP cargan todas las herramientas habilitadas —su nombre, descripción y esquema de entrada— en el contexto del agente en cada conversación. Limitar esa lista con SONARQUBE_TOOLSETS reduce el uso del contexto y el costo en tokens de cada sesión.
De forma predeterminada, solo están habilitados los conjuntos de herramientas importantes. Habilite otros conjuntos de herramientas solo cuando los necesite.
| Variable de entorno | Descripción |
|---|---|
SONARQUBE_TOOLSETS | Lista de conjuntos de herramientas que se habilitarán, separados por comas. Si se establece, solo estarán disponibles esos conjuntos. Si no se establece, se habilitan los conjuntos de herramientas importantes predeterminados (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 uso combinado por organización: una organización debe tener derecho de uso para ambos para poder usar cualquiera de ellos. El análisis integrado de Cloud comprueba la organización seleccionada en tiempo de ejecución; las herramientas de contexto con proxy usan la organización de inicio. En SonarQube Server, stdio muestra el contexto Vortex y run_advanced_code_analysis cuando los hubs CAG y A3S tienen derecho de uso. Se recomienda usar la clave unificada del conjunto de herramientas vortex. Las claves obsoletas cag y analysis siguen funcionando; cuando se usan sin vortex, se emite una advertencia al iniciar y una nota de obsolescencia en las instrucciones del servidor. En el modo Streamable HTTP, los clientes pueden enviar un encabezado HTTP SONARQUBE_TOOLSETS para restringir aún más las herramientas por solicitud, pero no pueden habilitar conjuntos de herramientas que no estuvieran habilitados al iniciar el servidor (consulte Transporte Streamable HTTP más abajo). |
SONARQUBE_READ_ONLY | Si se establece en true, habilita el modo de solo lectura, que deshabilita todas las operaciones de escritura (por ejemplo, cambiar el estado de una incidencia). Este filtro se acumula con SONARQUBE_TOOLSETS si ambos están establecidos. Valor predeterminado: false. En el modo Streamable HTTP, los clientes pueden enviar un encabezado HTTP SONARQUBE_READ_ONLY para restringir aún más solicitudes individuales al modo de solo lectura, pero no pueden anular una restricción de solo lectura establecida en el servidor (consulte Transporte Streamable HTTP más 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 del análisis de `analyze_file_list`/Vortex) | | **IDE** | `ide` | Herramientas puente de SonarQube for IDE (análisis de archivos, alternancia del análisis automático); actualmente también se incluye en `analysis` | | **Problemas** | `issues` | Buscar y gestionar problemas de SonarQube | | **Puntos críticos de seguridad** | `security-hotspots` | Buscar y revisar puntos críticos de seguridad | | **Proyectos** | `projects` | Explorar y buscar proyectos de SonarQube | | **Puertas de calidad** | `quality-gates` | Acceder a las puertas de calidad y a su estado | | **Reglas** | `rules` | Explorar y buscar reglas de SonarQube | | **Código fuente** | `sources` | Acceder al código fuente y a la información de SCM | | **Duplicaciones** | `duplications` | Encontrar duplicaciones de código entre proyectos | | **Medidas** | `measures` | Recuperar métricas y medidas (incluye herramientas de medidas y métricas) | | **Lenguajes** | `languages` | Enumerar los lenguajes de programación compatibles | | **Carteras** | `portfolios` | Gestionar carteras 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 la cobertura de pruebas | | **Contexto de Vortex** | `cag` | Herramientas de contexto de Vortex; solo stdio. **Obsoleto** en favor de `vortex` (nombre anterior: Context Augmentation/CAG) | | **Vortex** | `vortex` | Conjunto unificado y **recomendado** que ofrece herramientas de contexto y análisis de Vortex bajo un mismo nombre (solo stdio; Cloud requiere la habilitación combinada de la organización; Server requiere que ambos hubs estén habilitados) | | **Preparación para agentes** | `agentic-readiness` | Herramientas de evaluación de preparación para agentes (SonarQube Cloud; requiere habilitación de la organización) | | **Arquitectura** | `architecture` | Leer la arquitectura, reemplazar los modelos previstos y gestionar las directivas del proyecto (no está habilitado de forma predeterminada) |Ejemplos
Habilitar los conjuntos de herramientas de análisis, problemas y puertas de calidad (con Docker y 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 es necesario incluirlo en SONARQUBE_TOOLSETS.
Habilitar el modo de solo lectura (con Docker y 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 stdio, configura las siguientes variables de entorno:
| Variable de entorno | Descripción | Obligatoria |
|---|---|---|
SONARQUBE_TOKEN | Tu token de SonarQube Cloud | Sí |
SONARQUBE_ORG | Clave opcional de una organización fija de SonarQube Cloud | No |
SONARQUBE_URL | URL personalizada de SonarQube Cloud (el valor predeterminado es https://sonarcloud.io). Úsala para SonarQube Cloud US: https://sonarqube.us | No |
Ejemplos:
- SonarQube Cloud: Solo se requiere
SONARQUBE_TOKEN.SONARQUBE_ORGfija la organización cuando se establece. - SonarQube Cloud US: Establece
SONARQUBE_TOKENySONARQUBE_URL=https://sonarqube.us;SONARQUBE_ORGes opcional.
SonarQube Server
| Variable de entorno | Descripción | Obligatoria |
|---|---|---|
SONARQUBE_TOKEN | Tu token de USUARIO de SonarQube Server | Sí |
SONARQUBE_URL | URL de tu SonarQube Server | Sí |
Requisito de versión: Se requiere SonarQube Server 2025.1 (SQS) o 25.1 (SonarQube Community Build), o una versión posterior. Al iniciarse, el servidor MCP lee la versión de la instancia conectada y termina con un error si es demasiado antigua (por ejemplo, no se admiten las versiones heredadas 9.x/10.x de Server ni Community Build 24.x). Esta comprobación no se aplica a SonarQube Cloud.
⚠️ La conexión a SonarQube Server requiere un token de tipo USUARIO y no funcionará correctamente si se usan tokens de proyecto o globales.
💡 Consejo de configuración (modo stdio): Si no se especifica una URL, el token se conecta de forma predeterminada a SonarQube Cloud. Establece
SONARQUBE_URLpara SonarQube Server o para otra región de Cloud.SONARQUBE_ORGfija la organización de Cloud cuando se establece.
En stdio, establecer SONARQUBE_ORG fija la organización de Cloud. Los argumentos de la herramienta organization se omiten de los esquemas y se rechazan, al igual que projectKey cuando se establece SONARQUBE_PROJECT_KEY.
Si no se establece SONARQUBE_ORG, los agentes pueden llamar a list_organizations para descubrir las claves, los nombres, los ID y los UUID de las organizaciones a las que tiene acceso tu cuenta de usuario y, después, pasar una clave como argumento opcional organization a las herramientas que admiten organizaciones. Stdio conserva como valor predeterminado una organización detectada de forma única; si no se detecta ninguna o se detectan varias, la organización queda sin resolver. El argumento de una herramienta solo se aplica a esa llamada y nunca cambia el valor predeterminado detectado. Las búsquedas de perfiles de fragmentos y reglas usan la organización seleccionada para esa llamada.
Para las solicitudes HTTP/HTTPS con token, se sigue admitiendo la configuración de nivel de servidor SONARQUBE_ORG por compatibilidad, pero está obsoleta y genera una advertencia al iniciar. Fija la organización para todas las solicitudes y rechaza los encabezados de organización del cliente y los argumentos organization de las herramientas. Si no se configura una organización en el servidor, un encabezado opcional SONARQUBE_ORG del cliente fija la organización para esa solicitud e impide usar los argumentos organization de las herramientas. Si no se proporciona el encabezado, usa el argumento de la herramienta. Las herramientas que requieren una organización ofrecen instrucciones para descubrirla cuando no se proporciona ninguna de estas opciones. El descubrimiento de organizaciones y las herramientas cuyas API solo consumen identificadores de recursos no requieren un argumento de organización. La búsqueda de problemas que admite organizaciones y las comprobaciones de habilitación de riesgos de dependencias usan la organización seleccionada. Si se configura OAuth, se rechaza SONARQUBE_ORG a nivel de servidor. Las solicitudes OAuth también rechazan los encabezados de organización; selecciona las organizaciones mediante argumentos de herramientas.
Las herramientas de contexto de Vortex usan la organización configurada o la única organización detectada al iniciarse. Los argumentos de organización en tiempo de ejecución no reconfiguran el motor de contexto delegado; si la organización no se resuelve al inicio, se omite ese proxy. La herramienta integrada run_advanced_code_analysis comprueba la habilitación combinada de Vortex para la organización seleccionada en cada invocación.
Modos de transporte
La especificación MCP define dos mecanismos de transporte: Stdio y Streamable HTTP. El servidor MCP de SonarQube admite ambos:
| Transporte MCP | Modo del servidor | Uso habitual |
|---|---|---|
| Stdio | Predeterminado (sin SONARQUBE_TRANSPORT) | Clientes MCP locales que inician 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 mediante HTTP(S) (p. ej., Windsurf con una URL de servidor autohospedado) |
Nota: Streamable HTTP es el transporte de red MCP actual. El transporte HTTP antiguo, solo con SSE, de versiones anteriores de MCP está obsoleto y no es compatible.
1. Stdio (predeterminado; recomendado para desarrollo local)
El modo recomendado para el desarrollo local y las 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. Para implementaciones multiusuario, usa HTTPS.
⚠️ No recomendado: Usa Stdio para el desarrollo local o HTTPS (Streamable HTTP) para implementaciones de producción multiusuario.
| Variable de entorno | Descripción | Valor predeterminado |
|---|---|---|
SONARQUBE_TRANSPORT | Establécela en http para habilitar el transporte Streamable HTTP | No establecida (stdio) |
SONARQUBE_HTTP_PORT | Número de puerto (1024-65535) o 0 para que el sistema operativo asigne uno | 8080 |
SONARQUBE_HTTP_HOST | Host al que enlazarse (de forma predeterminada, localhost por seguridad) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Orígenes del navegador permitidos para CORS, separados por comas (p. ej., https://my-app.example.com) | No establecida |
SONARQUBE_MCP_IN_CONTAINER | Establécela en true cuando se ejecute dentro de un contenedor. La imagen oficial de Docker la establece automáticamente; establécela manualmente si usas otros entornos de ejecución OCI (Podman, Kubernetes, Nomad, etc.). | false |
Nota: HTTP/HTTPS acepta el token de SonarQube del usuario mediante Authorization: Bearer <token>. El servicio Cloud alojado de Sonar también admite OAuth. Para las solicitudes de tokens de SonarQube Cloud, la organización se resuelve de la siguiente manera: |
SONARQUBE_ORGes un encabezado de solicitud opcional que fija la organización para esa solicitud. La configuración obsoleta a nivel del servidor la fija para todas las solicitudes y rechaza los encabezados de organización del cliente y los argumentos de organización de las herramientas.- Las herramientas que admiten organizaciones aceptan un argumento opcional
organizationcuando ni la configuración del servidor ni el encabezado de solicitud fijan la organización. Si se proporciona el argumento cuando la organización ya está fijada, se rechaza. - Si no hay una organización predeterminada, los agentes pueden llamar a
list_organizationsusando solo su token y, luego, pasar la clave elegida a las herramientas posteriores.
Los clientes también pueden limitar las herramientas visibles por solicitud proporcionando los encabezados SONARQUBE_TOOLSETS y/o SONARQUBE_READ_ONLY; estos aplican filtros adicionales sobre la configuración a nivel del servidor: solo pueden reducir el alcance, nunca ampliarlo.
No se mantiene el estado de la sesión entre solicitudes.
Obsoleto: Para los tokens de SonarQube, 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 (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: Usa HTTPS al implementar el servidor MCP para varios usuarios mediante HTTP Streamable. De forma predeterminada, el servidor se enlaza a
127.0.0.1(localhost) por seguridad.
| Variable de entorno | Descripción | Valor predeterminado |
|---|---|---|
SONARQUBE_TRANSPORT | Establécela en https para habilitar el transporte HTTP Streamable sobre TLS | No establecido (stdio) |
SONARQUBE_HTTP_PORT | Número de puerto (normalmente 8443 para HTTPS) o 0 para un puerto asignado por el sistema operativo | 8080 |
SONARQUBE_HTTP_HOST | Host al que enlazarse (de forma predeterminada, localhost por seguridad) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Orígenes del navegador permitidos para CORS, separados por comas (p. ej., https://my-app.example.com) | No establecido |
SONARQUBE_MCP_IN_CONTAINER | Establécela en true cuando se ejecute dentro de un contenedor. La imagen oficial de Docker la establece automáticamente; establécela tú mismo si usas otros entornos de ejecución OCI (Podman, Kubernetes, Nomad, etc.). | false |
Configuración del certificado SSL (opcional):
| Variable de entorno | Descripción | Valor predeterminado |
|---|---|---|
SONARQUBE_HTTPS_KEYSTORE_PATH | Ruta al archivo del 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: Al ejecutarlo en un contenedor, establece
SONARQUBE_HTTP_HOST=0.0.0.0para que el contenedor escuche en todas las interfaces y funcione la asignación de puertos del entorno de ejecución, y estableceSONARQUBE_MCP_IN_CONTAINER=truepara indicar al servidor que está dentro de un contenedor. La imagen oficial de Docker establece automáticamente esta última variable; establécela tú mismo si usas otros entornos de ejecución OCI (Podman, Kubernetes, Nomad, etc.). La opción de puerto 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; CORS del navegador sigue permitiendo los orígenes localhost de forma predeterminada.
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 \
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 \
sonarsource/sonarqube-mcp
Configuración del cliente (SonarQube Cloud):
Para las solicitudes de tokens de SonarQube, puedes establecer SONARQUBE_ORG en los encabezados del cliente para fijar la organización de la solicitud, u omitirlo para seleccionar organizaciones mediante los argumentos de las herramientas.
{
"mcpServers": {
"sonarqube-https": {
"url": "https://your-server:8443/mcp",
"headers": {
"Authorization": "Bearer <your-token>",
"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 del 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 establecido al iniciar el servidor.
Nota: Para el desarrollo local, usa el transporte Stdio (el predeterminado). HTTP Streamable sobre HTTPS está pensado para implementaciones de producción multiusuario con certificados SSL adecuados.
OAuth de SonarQube Cloud alojado
La compatibilidad con OAuth está dirigida al servicio MCP alojado de Sonar para SonarQube Cloud. Usa un cliente MCP compatible con OAuth e inicia sesión cuando se te solicite; no se necesitan ajustes del servidor OAuth en la configuración del cliente. Los clientes existentes que usan tokens de SonarQube siguen siendo compatibles.
Los ámbitos mcp:tools:read y mcp:tools:write controlan de forma independiente el acceso a las herramientas de lectura y escritura, sujeto a tus permisos de Cloud. Usa list_organizations y los argumentos de la herramienta organization para seleccionar una organización.
Las implementaciones autohospedadas siguen usando tokens de SonarQube; OAuth para SonarQube Server aún no es compatible.
Endpoints del servicio
Al ejecutarse en modo HTTP Streamable (http o https), el servidor expone algunos endpoints de servicio sin autenticación, además del endpoint MCP en /mcp. Están pensados para la comunicación entre servicios (supervisión, orquestación y comprobaciones de compatibilidad de clientes) y no requieren un encabezado Authorization.
| Endpoint | Método | Descripción | Respuesta de ejemplo |
|---|---|---|---|
/health | GET | Comprobación de disponibilidad. Devuelve 200 OK con un cuerpo vacío cuando el servidor empieza a aceptar solicitudes. | (cuerpo vacío) |
/info | GET | Devuelve la versión del servidor MCP en formato JSON. Útil para verificar la versión del servidor implementado. | {"version":"1.16.0"} |
Estos endpoints no están disponibles cuando se usa el transporte Stdio.
Certificados personalizados
Si tu SonarQube Server usa un certificado autofirmado o un certificado de una autoridad de certificación (CA) privada, puedes añadir certificados personalizados al contenedor para que se instalen automáticamente.
Configuration
Uso de un 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:
- archivos
.crt(codificados en PEM o DER) - archivos
.pem(codificados en PEM)
Configuración de MCP con certificados
Al usar certificados personalizados, puedes modificar la 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: ¿Ejecutas el servidor desde un JAR en lugar de usar el contenedor? El montaje de volumen anterior instala los certificados en el almacén de confianza del sistema operativo del contenedor, que también utiliza el servidor. Si no puedes usar el almacén de confianza del sistema operativo —en particular en Windows, donde no se consulta—, indica a la JVM que use 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 añade a los certificados de confianza predeterminados.
Proxy
El servidor MCP de SonarQube admite proxies HTTP y SOCKS5 mediante las propiedades estándar del sistema de proxy de Java.
Configuration
Proxy HTTP/HTTPS
Puedes configurar los ajustes del proxy mediante las propiedades del sistema de Java. Puedes establecerlas como variables de entorno o pasarlas como argumentos de la JVM.
Propiedades comunes del 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 barras verticales) | localhost|127.0.0.1|*.internal.com |
Autenticación del 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 | Valor predeterminado | Ejemplo |
|---|---|---|---|
socksProxyHost | Nombre de host del proxy SOCKS5 | — | localhost |
socksProxyPort | Puerto del proxy SOCKS5 | 1080 | 1080 |
java.net.socks.username | Nombre de usuario de SOCKS5 (si se requiere autenticación) | — | myuser |
java.net.socks.password | Contraseña de SOCKS5 (si se requiere autenticación) | — | mypassword |
Certificado de cliente (TLS mutuo)
Si tu 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 mediante JAVA_OPTS.
Configuration
Uso de un almacén de claves PKCS12
Monta tu archivo .p12 o .pfx en el contenedor y establece 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 proceso del contenedor debe poder leer el archivo del certificado. Comprueba y corrige los permisos si es necesario:
ls -la /path/to/client.p12 # busca -rw-r--r-- (644) o permisos más amplios chmod 644 /path/to/client.p12 # concede acceso de lectura al usuario del contenedor
Omite -Djavax.net.ssl.keyStorePassword si el almacén de claves no tiene frase de contraseña. Ten en cuenta que la frase de contraseña usada aquí podría quedar visible mediante docker inspect o en 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, pasa las propiedades del almacén de claves como argumentos de la 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>
Omite -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. Usaopenssl pkcs12 -export -in client.crt -inkey client.key -out client.p12para convertirlos.
Herramientas
Análisis
-
analyze_code_snippet - Analiza el contenido de un archivo con los analizadores de SonarQube para identificar problemas de calidad y seguridad del código. Siempre analiza el contenido completo del archivo para garantizar la precisión. Opcionalmente, filtra los resultados para mostrar un fragmento de código específico.
Obsoleto:
analyze_code_snippetse eliminará en una versión futura. Conecta SonarQube for IDE para usaranalyze_file_list, o habilita el análisis de Vortex para tu organización para usarrun_advanced_code_analysis(consulta más abajo).Uso:
- Con el espacio de trabajo montado (recomendado): pasa
filePath(relativo al proyecto); el servidor lee el archivo directamente y mantiene su contenido fuera de la ventana de contexto del agente - Sin montar el espacio de trabajo: pasa
fileContentcompleto para analizar todo el archivo (informa de todos los problemas) - Añade
codeSnippetopcional para filtrar los resultados; solo se informará de los problemas dentro del fragmento (la ubicación del fragmento se detecta automáticamente)
Parámetros:
organization- Clave de la organización de SonarQube Cloud - Cadena opcional, solo para CloudprojectKey- Clave del proyecto de SonarQube - Cadena obligatoria (Se ignora cuando se defineSONARQUBE_PROJECT_KEY)filePath- Ruta del archivo relativa al proyecto que se va 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. Obligatorio cuando el espacio de trabajo no está montado - CadenacodeSnippet- Fragmento de código para filtrar problemas (debe coincidir con el contenido de fileContent) - Cadenalanguage- Lenguaje del código (p. ej., 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - Cadenascope- Ámbito del archivo: MAIN o TEST (predeterminado: MAIN) - Cadena
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): pasa
Cuando está habilitada la integración con SonarQube for IDE: (estas dos herramientas están etiquetadas en los conjuntos de herramientas analysis y ide)
-
analyze_file_list - Analiza archivos del directorio de trabajo actual con SonarQube for IDE. Esta herramienta se conecta a una instancia en ejecución de SonarQube for IDE para realizar un análisis de calidad del código en una lista de archivos.
file_absolute_paths- Lista de rutas absolutas de los archivos que se van a analizar - Cadena[] obligatoria
-
toggle_automatic_analysis - Habilita o deshabilita el análisis automático de SonarQube for IDE. Cuando está habilitado, SonarQube for IDE analiza automáticamente los archivos a medida que se modifican en el directorio de trabajo. Cuando está deshabilitado, el análisis automático se desactiva.
enabled- Habilita o deshabilita el análisis automático - Booleano obligatorio
En SonarQube Server, stdio muestra las herramientas de contexto de Vortex y run_advanced_code_analysis cuando se tienen derechos de uso de los hubs CAG y A3S.
Cuando el análisis de Vortex está disponible:
Requiere que el espacio de trabajo esté montado en
/app/mcp-workspace
- run_advanced_code_analysis - Ejecuta el análisis de Vortex en un solo archivo. SonarQube Server usa el marcador de posición UUID nulo.
organization- Clave de la organización de SonarQube Cloud - Cadena opcional, solo para CloudprojectKey- Clave del proyecto - Cadena obligatoria (Se ignora cuando se defineSONARQUBE_PROJECT_KEY)branch- Nombre de la rama que se usa para recuperar el contexto del análisis más reciente - Cadena obligatoriafilePath- Ruta del archivo relativa al proyecto que se va a analizar (p. ej.,src/main/java/MyClass.java). - Cadena obligatoriafileScope- Define el ámbito de origen del archivo: 'MAIN' o 'TEST' (predeterminado: MAIN) - Cadena
Cobertura
-
search_files_by_coverage - Busca archivos de un proyecto ordenados por cobertura (ascendente: primero la cobertura más baja). Esta herramienta ayuda a identificar los archivos que necesitan mejoras en la cobertura de pruebas.
projectKey- Clave del proyecto en el que se va a buscar - Cadena obligatoria (Se ignora cuando se defineSONARQUBE_PROJECT_KEY)branch- Nombre de rama opcional para el análisis basado en ramas. Usalist_branchespara descubrir nombres válidos - CadenapullRequest- Clave/ID opcional de solicitud de incorporación de cambios. Usalist_pull_requestspara descubrir claves válidas - CadenamaxCoverage- Umbral máximo de cobertura (0-100). Devuelve solo archivos con una 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 - Obtiene información de cobertura línea por línea de un archivo específico, incluidas las líneas exactas sin cobertura y las que tienen ramas parcialmente cubiertas. Esta herramienta ayuda a identificar con precisión dónde añadir cobertura de pruebas. Úsala después de identificar archivos con poca cobertura mediante search_files_by_coverage.
key- Clave del archivo (p. ej., my_project:src/foo/Bar.java) - Cadena obligatoriabranch- Nombre de rama opcional para el análisis basado en ramas. Usalist_branchespara descubrir nombres válidos - CadenapullRequest- Clave/ID opcional de solicitud de incorporación de cambios. Usalist_pull_requestspara descubrir claves válidas - Cadenafrom- Primera línea que se va a analizar (basada en 1, predeterminado: 1) - Númeroto- Última línea que se va a analizar (inclusive). Si no se especifica, se devuelven todas las líneas - Número
Riesgos de dependencias
Nota: Los riesgos de dependencias requieren SonarQube Advanced Security. En SonarQube Server, se requiere la versión 2025.4 Enterprise o superior.
- search_dependency_risks - Busca 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, la aplicación o la cartera analizados.
organization- Clave de la organización de SonarQube Cloud - Cadena opcional, solo para CloudprojectKey- Clave del proyecto - Cadena obligatoria (Se ignora cuando se defineSONARQUBE_PROJECT_KEY)branch- Nombre de rama opcional para el análisis basado en ramas. Usalist_branchespara descubrir nombres válidos - CadenapullRequest- Clave/ID opcional de solicitud de incorporación de cambios. Usalist_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 que 500 (predeterminado: 100) - Entero
Empresas
Nota: Las empresas solo están disponibles al conectarse a SonarQube Cloud.
- list_enterprises - Muestra las empresas disponibles en SonarQube Cloud a las que tienes acceso. Usa esta herramienta para descubrir los ID de empresa que se pueden usar con otras herramientas.
enterpriseKey- Clave de empresa opcional para filtrar los resultados - Cadena
Problemas
-
change_sonar_issue_status - Cambia el estado de un problema de SonarQube a "accept", "falsepositive" o "reopen".
key- Clave del problema - Cadena obligatoriastatus- Nuevo estado del problema - Enum obligatorio {"accept", "falsepositive", "reopen"}comment- Comentario opcional que explica el cambio de estado - Cadena
-
search_sonar_issues_in_projects - Busca problemas de SonarQube en los proyectos de mi organización.
organization- Clave de la organización de SonarQube Cloud - Cadena opcional, solo para CloudprojectKeys- Lista opcional de claves de proyectos de SonarQube - Cadena[]branch- Nombre de rama opcional para el análisis basado en ramas. Usalist_branchespara descubrir nombres válidos - CadenapullRequest- Clave/ID opcional de solicitud de incorporación de cambios. Usalist_pull_requestspara descubrir claves válidas - Cadenaseverities- Lista opcional de niveles de gravedad para filtrar. Valores posibles: INFO, LOW, MEDIUM, HIGH, BLOCKER - Cadena[]impactSoftwareQualities- Lista opcional de cualidades del 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- Devuelve solo los problemas del período de código nuevo. Requiere exactamente una entrada entreprojectKeysyfiles- BooleanoissueKey- Clave opcional del problema para obtener uno 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 que 500 (predeterminado: 100) - Entero
Puntos críticos de seguridad
-
search_security_hotspots - Busca puntos críticos de seguridad en un proyecto de SonarQube.
projectKey- Clave del proyecto o de la aplicación - Cadena obligatoria (Se ignora cuando se defineSONARQUBE_PROJECT_KEY)hotspotKeys- Lista separada por comas de claves específicas de puntos críticos de seguridad que se van a recuperar - Cadena[]branch- Nombre de rama opcional para el análisis basado en ramas. Usalist_branchespara descubrir nombres válidos - CadenapullRequest- Clave/ID opcional de solicitud de incorporación de cambios. Usalist_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- Filtra los puntos críticos creados desde el período de desfase (código nuevo) - BooleanoonlyMine- Muestra solo los puntos críticos 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 que 500 (predeterminado: 100) - Entero
-
show_security_hotspot - Obtiene información detallada sobre un punto crítico de seguridad específico, incluidos los detalles de la regla, el contexto del código, los flujos y los comentarios.
hotspotKey- Clave del punto crítico de seguridad - Cadena obligatoria
-
change_security_hotspot_status - Revisa un punto crítico de seguridad cambiando su estado. Al marcarlo como REVIEWED, debes especificar una resolución (FIXED, SAFE o ACKNOWLEDGED).
hotspotKey- Clave del punto crítico de seguridad - Cadena obligatoriastatus- Nuevo estado - Enum obligatorio {"TO_REVIEW", "REVIEWED"}resolution- Resolución cuando el estado es REVIEWED - Enum {"FIXED", "SAFE", "ACKNOWLEDGED"}comment- Comentario opcional de revisión - Cadena
Lenguajes
- list_languages - Muestra todos los lenguajes de programación compatibles con esta instancia de SonarQube.
q- Patrón opcional para buscar coincidencias con las claves o los nombres de los lenguajes - Cadena
Medidas
- get_component_measures - Obtiene las medidas de SonarQube de un componente (proyecto, directorio o archivo).
projectKey- Clave del proyecto - Cadena obligatoria cuandoSONARQUBE_PROJECT_KEYno está configuradobranch- Nombre de rama opcional para el análisis basado en ramas. Usalist_branchespara descubrir nombres válidos - CadenametricKeys- Claves de métricas opcionales que se van a recuperar (p. ej., ncloc, complexity, violations, coverage) - Cadena[]pullRequest- Clave/ID opcional de solicitud de incorporación de cambios. Usalist_pull_requestspara descubrir claves válidas - Cadena
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 que 500 (predeterminado: 100) - Entero
Carteras
-
list_portfolios - Muestra las carteras empresariales disponibles en SonarQube con opciones de filtrado y paginación.
Para SonarQube Server:
q- Consulta de búsqueda opcional para filtrar carteras por nombre o clave - Cadenafavorite- Si es true, solo devuelve las carteras favoritas - 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 de la empresa. Solo se puede omitir si se proporciona el parámetro 'favorite' con el valor true - Stringq- Consulta de búsqueda opcional para filtrar carteras por nombre - Stringfavorite- Debe ser true si se omite el parámetro 'enterpriseId'. Si es true, solo devuelve las carteras marcadas como favoritas por el usuario que inició sesión. No puede ser true cuando 'draft' es true - Booleandraft- Si es true, solo devuelve borradores creados por el usuario que inició sesión. No puede ser true cuando 'favorite' es true - BooleanpageIndex- Índice opcional de la página que se va a obtener (valor predeterminado: 1) - IntegerpageSize- Tamaño opcional de la página que se va a obtener (valor predeterminado: 50) - Integer
Proyectos
-
list_organizations - Enumera las organizaciones de SonarQube Cloud de las que forma parte un usuario, incluidas sus claves, nombres, ID y UUID. Usa una clave devuelta como
organizationen herramientas posteriores. -
search_my_sonarqube_projects - Busca proyectos de SonarQube. La respuesta está paginada.
organization- Clave de la organización de SonarQube Cloud - Optional String, Cloud onlypageIndex- Índice de página opcional basado en 1 (valor predeterminado: 1) - IntegerpageSize- Tamaño de página opcional. Debe ser mayor que 0 y menor o igual que 500 (valor predeterminado: 500) - Integerq- Consulta de búsqueda opcional para filtrar proyectos por nombre (coincidencia parcial) o clave (coincidencia exacta) - String
-
list_branches - Enumera 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, puerta de calidad, fecha del análisis). No hay filtro
type,mergeBranchnibranchTypes. - Usa los nombres de rama devueltos como parámetro
branchen otras herramientas. Para el análisis de solicitudes de incorporación de cambios, usalist_pull_requestsen su lugar. projectKey- Clave del proyecto (p. ej., my_project) - Required String (Se ignora cuando se defineSONARQUBE_PROJECT_KEY)branchTypes- (Solo SonarQube Cloud) Filtro opcional:ALL(predeterminado),LONGoSHORT- Enum {"ALL", "LONG", "SHORT"}
- SonarQube Cloud: devuelve ramas de larga duración (
-
list_pull_requests - Enumera todas las solicitudes de incorporación de cambios de un proyecto. Usa esta herramienta para descubrir solicitudes de incorporación de cambios para análisis con decoración de PR (cobertura, incidencias, puerta de calidad). Devuelve la clave/ID de la solicitud de incorporación de cambios, que se puede usar con otras herramientas. Para análisis basado en ramas sin solicitudes de incorporación de cambios, usa
list_branchesen su lugar.projectKey- Clave del proyecto (p. ej., my_project) - Required String (Se ignora cuando se defineSONARQUBE_PROJECT_KEY)
Puertas de calidad
-
get_project_quality_gate_status - Obtiene el estado de la puerta de calidad del proyecto de SonarQube.
analysisId- ID de análisis opcional - Stringbranch- Nombre de rama opcional para el análisis basado en ramas. Usalist_branchespara descubrir nombres válidos - StringprojectId- ID de proyecto opcional - StringprojectKey- Clave de proyecto opcional - StringpullRequest- Clave/ID opcional de solicitud de incorporación de cambios. Usalist_pull_requestspara descubrir claves válidas - String
-
list_quality_gates - Enumera todas las puertas de calidad de mi SonarQube.
organization- Clave de la organización de SonarQube Cloud - Optional String, Cloud only
Reglas
- show_rule - Muestra información detallada sobre una regla de SonarQube.
organization- Clave de la organización de SonarQube Cloud - Optional String, Cloud onlykey- Clave de la regla - Required String
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 de todas las páginas (hasta un máximo de 10 000 archivos). Devuelve solo archivos con duplicaciones.
projectKey- Clave del proyecto - Required String (Se ignora cuando se defineSONARQUBE_PROJECT_KEY)branch- Nombre de rama opcional para el análisis basado en ramas. Usalist_branchespara descubrir nombres válidos - StringpullRequest- Clave/ID opcional de solicitud de incorporación de cambios. Usalist_pull_requestspara descubrir claves válidas - StringpageSize- Número opcional de resultados por página para la paginación manual (máx.: 500). Si no se especifica, obtiene automáticamente todos los archivos duplicados - IntegerpageIndex- Número de página opcional para la paginación manual (empieza en 1). Si no se especifica, obtiene automáticamente todos los archivos duplicados - Integer
-
get_duplications - Obtiene las duplicaciones de un archivo. Requiere permiso Browse en el proyecto del archivo.
key- Clave del archivo - Required Stringbranch- Nombre de rama opcional para el análisis basado en ramas. Usalist_branchespara descubrir nombres válidos - StringpullRequest- Clave/ID opcional de solicitud de incorporación de cambios. Usalist_pull_requestspara descubrir claves válidas - String
Fuentes
-
get_raw_source - Obtiene el código fuente como texto sin procesar de SonarQube. Requiere el permiso 'See Source Code' en el archivo.
key- Clave del archivo - Required Stringbranch- Nombre de rama opcional para el análisis basado en ramas. Usalist_branchespara descubrir nombres válidos - StringpullRequest- Clave/ID opcional de solicitud de incorporación de cambios. Usalist_pull_requestspara descubrir claves válidas - String
-
get_scm_info - Obtiene información de SCM de los archivos fuente de SonarQube. Requiere el permiso See Source Code en el proyecto del archivo.
key- Clave del archivo - Required Stringcommits_by_line- Agrupa las líneas por confirmación de SCM si el valor es false; de lo contrario, muestra las confirmaciones de cada línea - Stringfrom- Primera línea que se devolverá. Empieza en 1 - Numberto- Última línea que se 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 operativa), YELLOW (utilizable, pero requiere atención) o RED (no operativa).
-
get_system_info - Obtiene información detallada sobre la configuración del sistema SonarQube Server, incluidos el estado de JVM, la base de datos, los índices de búsqueda y los ajustes. Requiere permisos 'Administer'.
-
get_system_logs - Obtiene los registros del sistema SonarQube Server en formato de texto sin formato. Requiere permiso de administración del sistema.
name- Nombre opcional de los registros que se obtendrán. Valores posibles: access, app, ce, deprecation, es, web. Valor predeterminado: app - String
-
ping_system - Envía una señal al sistema SonarQube Server para comprobar si está activo. Devuelve 'pong' como texto sin formato.
-
get_system_status - Obtiene información sobre el estado de 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 webhook para la organización o el proyecto de SonarQube. Requiere el permiso 'Administer' en el proyecto especificado o el permiso global 'Administer'.
organization- Clave de la organización de SonarQube Cloud - Optional String, Cloud onlyname- Nombre del webhook - Required Stringurl- URL del webhook - Required StringprojectKey- Clave de proyecto opcional para un webhook específico del proyecto - Stringsecret- Secreto opcional del webhook para proteger la carga útil del webhook - String
-
list_webhooks - Enumera todos los webhooks de la organización o el proyecto de SonarQube. Requiere el permiso 'Administer' en el proyecto especificado o el permiso global 'Administer'.
organization- Clave de la organización de SonarQube Cloud - Optional String, Cloud onlyprojectKey- Clave de proyecto opcional para enumerar los webhooks específicos del proyecto - String
Ampliación del contexto
Herramientas de arquitectura
-
search_by_signature_patterns - Busca elementos de código (clases, métodos, interfaces, ...) mediante patrones regex que coinciden con sus firmas de declaración.
include_code_regex_list- Lista de patrones regex que se compararán con las firmas - Required String[]exclude_code_regex_list- Lista de patrones regex que se excluirán de los resultados - String[]include_glob- Patrón glob de filtro de archivos (p. ej.,*.java) - Stringexclude_glob- Patrón glob para excluir archivos - Stringfields- Lista separada por comas de los campos que se incluirán en la respuesta - Stringlimit- Número máximo de resultados que se devolverán (valor predeterminado: 10) - Integerregex_lists_operator- Cómo combinar varios patrones:OR(predeterminado) oAND- String
-
search_by_body_patterns - Busca elementos de código mediante patrones regex en el cuerpo de su implementación. Es útil para localizar dónde se usan realmente las API o los patrones.
include_code_regex_list- Lista de patrones regex que se buscarán en los cuerpos del código - Required String[]exclude_code_regex_list- Lista de patrones regex que se excluirán de los resultados - String[]include_glob- Patrón glob de filtro de archivos - Stringexclude_glob- Patrón glob para excluir archivos - Stringfields- Lista separada por comas de los campos que se incluirán en la respuesta - Stringlimit- Número máximo de resultados que se devolverán (valor predeterminado: 10) - Integerregex_lists_operator- Cómo combinar varios patrones:OR(predeterminado) oAND- String
-
get_upstream_call_flow - Rastrea qué funciones llaman a una función determinada. Es útil para encontrar todos los llamadores y puntos de entrada, y entender qué se rompe si cambia una firma.
fqn- Nombre completo de la función - Required Stringdepth- Profundidad de la cadena de llamadas (0=solo la función, 1=llamadores directos, etc.) - Integerfields- Lista separada por comas de los campos que se incluirán en la respuesta - String
-
get_downstream_call_flow - Rastrea qué funciones llama una función determinada. Es útil para analizar el impacto y entender el flujo de ejecución.
fqn- Nombre completo de la función - Required Stringdepth- Profundidad de la cadena de llamadas (0=solo la función, 1=funciones llamadas directamente, etc.) - Integerfields- Lista separada por comas de los campos que se incluirán en la respuesta - String
-
get_source_code - Obtiene el código fuente completo (firma y cuerpo) de un elemento de código mediante su nombre completo.
fqn- Nombre completo del elemento - Required Stringfields- Lista separada por comas de los campos que se incluirán en la respuesta - String
-
get_type_hierarchy - Obtiene la jerarquía de herencia completa de una estructura similar a una clase (clase, interfaz, enum, record, excepción, struct). Es esencial para entender los árboles de herencia y la refactorización.
fqn- Nombre completo de la estructura similar a una clase - Required Stringfields- Lista separada por comas de los campos que se incluirán en la respuesta - String
-
get_references - Obtiene las referencias directas entrantes y salientes del código de una clase o módulo. Devuelve solo referencias directas (no transitivas).
fqn- Nombre completo de la clase o el módulo - Required Stringfields- Lista separada por comas de los campos que se incluirán en la respuesta - String
-
get_current_architecture - Obtiene un grafo jerárquico de arquitectura filtrado por prefijo de ruta y profundidad. Es útil para explorar la estructura de los módulos y las dependencias de alto nivel.
depth- Profundidad de la jerarquía (0=solo raíz, 1=raíz + elementos secundarios, etc.) - Required Integerpath_prefix- Prefijo de ruta opcional para filtrar nodos (p. ej.,com.example.service) - Stringecosystem- Ecosistema opcional por el que filtrar (java,cs,py,js,ts) - String
-
get_intended_architecture - Obtener las restricciones arquitectónicas definidas por el usuario que especifican qué módulos pueden depender de otros.
Herramientas de directrices
- get_guidelines - Obtener directrices de codificación basadas en problemas del proyecto de SonarQube, categorías del catálogo o una combinación de ambos.
mode- Modo de recuperación de directrices:project_based,category_basedocombined- Cadena obligatoriacategories- Lista de nombres de categorías (obligatoria para los modoscategory_basedycombined) - String[]languages- Lista de lenguajes de destino en el formato de clave de repositorio de SonarQube (obligatoria cuando se proporcionacategories) - String[]file_paths- Lista opcional de rutas de archivo para filtrar las directrices - String[]
Herramientas de dependencias de terceros
- check_dependency - Comprobar si una dependencia de terceros presenta vulnerabilidades de seguridad, malware en la cadena de suministro y problemas de 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>(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) - Cadena obligatoria
Variables de entorno de ampliación del contexto
| Variable | Descripción | Obligatoria | Valor predeterminado |
|---|---|---|---|
SONARQUBE_URL | URL de SonarQube Cloud | Sí | https://sonarcloud.io |
SONARQUBE_TOKEN | Token de autenticación | Sí | Ninguno |
SONARQUBE_ORG | Organización de Cloud; se pasa al proxy desde la configuración de inicio o mediante detección única | No | Ninguno |
SONARQUBE_PROJECT_KEY | Clave del proyecto en SonarQube Cloud | Sí | Ninguno |
SONAR_SQ_BRANCH | Anulación explícita de la rama de SonarQube * | No | Ninguno |
SONARQUBE_DEBUG_ENABLED | Activar el registro de depuración (para solucionar problemas) | No | False |
SONAR_LOG_LEVEL | Nivel de detalle del registro (TRACE, DEBUG, INFO, WARNING, ERROR) | No | INFO |
- Se debe proporcionar cuando no se use git o cuando el nombre de la rama de git no coincida con el nombre de la rama en SonarQube.
Configuración específica del proyecto (recomendada)
Primero, exporta la SONARQUBE_TOKEN variable de entorno con un token de acceso personal (PAT) válido para tu proyecto.
# macOS/Linux (Bash/Zsh)
export SONARQUBE_TOKEN="{<YourUserToken>}"
A continuación, monta el espacio de trabajo del proyecto para dar al servidor de ampliación del contexto acceso directo a tus archivos de código 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 incluyas SONARQUBE_TOKEN en el bloque env. Expórtala como variable de entorno (export SONARQUBE_TOKEN=...). Docker la 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.
La marca de función se comprueba al iniciar en modo stdio. Por HTTP/HTTPS, añade agentic-readiness a SONARQUBE_TOOLSETS del servidor para habilitar las herramientas.
-
start_agentic_readiness_assessment - Iniciar una evaluación de preparación para agentes de un proyecto. Devuelve inmediatamente el estado
PENDINGy unassessmentId. Usaget_agentic_readiness_assessmentpara consultar los resultados.projectKey- La clave del proyecto - Cadena obligatoria (Se ignora cuando se defineSONARQUBE_PROJECT_KEY)branch- Rama que se evaluará. Omítela para usar la rama predeterminada del proyecto - String
-
get_agentic_readiness_assessment - Recuperar el resultado de una evaluación. Vuelve a llamar con el mismo
assessmentIdhasta que el estado seaCOMPLETED,FAILEDoINTERRUPTED. Al completarse, devuelve el nivel general y un desglose por pilar con acciones recomendadas y evidencias.assessmentId- El ID de evaluación devuelto porstart_agentic_readiness_assessment- Cadena obligatoria
-
list_agentic_readiness_assessments - Enumerar todas las evaluaciones de un proyecto, empezando por la más reciente. Usa
get_agentic_readiness_assessmentpara obtener los resultados completos por pilar.projectKey- La clave del proyecto cuyas evaluaciones se enumerarán - Cadena obligatoria (Se ignora cuando se defineSONARQUBE_PROJECT_KEY)branch- Filtrar las evaluaciones por nombre de rama. Omítelo para enumerar las 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
Arquitectura
Nota: Habilita estas herramientas con SONARQUBE_TOOLSETS=architecture en modo stdio o HTTP/HTTPS. SonarQube Cloud requiere un plan Team o Enterprise. SonarQube Server requiere la versión 2026.6 o posterior y la edición Developer o superior; las herramientas no están disponibles en versiones anteriores ni en Community Build. Consulta flujos de trabajo de arquitectura y recuperación.
-
architecture_get - Leer las dependencias actuales, la arquitectura prevista, las directivas del proyecto o los hallazgos (desviaciones, defectos y problemas de calidad).
target-current,intended,directivesofindings; la disponibilidad depende de la compilación de MCP y Server - Enum obligatorioprojectKey- La clave del proyecto - Cadena obligatoria (Se ignora cuando se defineSONARQUBE_PROJECT_KEY)organization- Clave de organización de SonarQube Cloud cuando no hay ninguna configurada - String opcional, solo Cloudcomponent- Clave exacta del nodo actual o ruta del grupo previsto; nivel superior si se omite - Stringdepth- Solo actual/prevista: niveles por debajo del inicio; predeterminado 1 para actual, todos para prevista - Numberlanguage- Solo actual/prevista/hallazgos:java,cs,js,tsopy- EnumdirectiveId- Directiva completa por UUID, incluida la descripción; úsala en lugar de la paginación - Stringcategory/type- Solo hallazgos: filtrar desviaciones, defectos o problemas de calidad por el tipo indicado - EnumpageIndex- Directivas/hallazgos: índice de página basado en 1 (predeterminado: 1) - NumberpageSize- Directivas: resúmenes, predeterminado/máximo 50. Hallazgos: predeterminado 50, máximo 1000; 0 solo cuenta - Number
-
architecture_set - Sustituir toda la arquitectura prevista o crear, actualizar y eliminar directivas del proyecto. Disponible en las compilaciones compatibles de Cloud y Server cuando las escrituras están habilitadas.
target-intendedodirectives- Enum obligatorioprojectKey- La clave del proyecto - Cadena obligatoria (Se ignora cuando se defineSONARQUBE_PROJECT_KEY)organization- Clave de organización de SonarQube Cloud cuando no hay ninguna configurada - String opcional, solo Cloudmodel- Cadena JSON: exportación completa prevista o matrizmodels(se elimina el contenido omitido), o cambios en las directivas con las matricescreate,updateydelete- Cadena obligatoriadryRun-truepara obtener una vista previa,falsepara aplicar - Boolean obligatoriorevision- Solo prevista: revisión dearchitecture_get; de forma predeterminada, se usa la revisión de la exportación completa. Obligatorio al aplicar una eliminación - String
Ejemplos de prompts
Una vez configurado el servidor MCP de SonarQube, aquí tienes algunos ejemplos de prompts para situaciones habituales del mundo real:
Corregir una puerta de calidad fallida
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 a una versión y a una 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?
Seguridad y gestión de 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 la 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.
Supervisión del estado 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
Se recomienda la imagen de contenedor sonarsource/sonarqube-mcp.
Para ejecutar el servidor como JAR independiente sin Docker, descarga una versión precompilada del repositorio de binarios de SonarSource. Todas las versiones publicadas están disponibles allí como sonarqube-mcp-server-<version>.jar (por ejemplo, sonarqube-mcp-server-1.19.0.2785.jar).
Ejecutar desde un JAR
Descarga el JAR de la versión que quieras desde el repositorio de binarios y, a continuación, configura tu cliente MCP para ejecutarlo con Java 21 o posterior:
- Para conectarte a 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 a 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 la versión 21 o posterior del kit de desarrollo de Java (JDK) 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 añadir o actualizar dependencias, vuelve a generar los archivos de bloqueo:
./gradlew :dependencies --write-locks
./gradlew :its:dependencies --write-locks
Usa la configuración Ejecutar desde un JAR anterior y establece <path_to_sonarqube_mcp_server_jar> en la ruta del JAR en build/libs/.
Solución de problemas
De forma predeterminada, los registros de la aplicación se escriben en el archivo STORAGE_PATH/logs/mcp.log. Para desactivar por completo el registro en archivos, establece SONARQUBE_LOG_TO_FILE_DISABLED=true.
Problemas habituales
«La versión del servidor SonarQube no es compatible»
El servidor MCP comprueba 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 comprobación solo se aplica al conectarse a SonarQube Server (SONARQUBE_URL sin SONARQUBE_ORG), no a SonarQube Cloud.
«La función no funciona» o «Faltan herramientas o funcionalidades»
Es posible que estés usando una imagen de Docker desactualizada. Docker almacena las imágenes en caché localmente, por lo que no recibirás las actualizaciones automáticamente.
Solución: Actualiza a la versión más reciente:
docker pull sonarsource/sonarqube-mcp
Después de descargar la imagen más reciente, reinicia tu cliente MCP para usar la versión actualizada.
Opcionalmente, añade la marca --pull=always al comando docker run para comprobar siempre si hay una versión más reciente y descargarla:
docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG sonarsource/sonarqube-mcp
«Quiero fijar una versión específica»
Consulta las etiquetas disponibles en sonarsource/sonarqube-mcp y especifica la versión que quieras:
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 recopilan código fuente ni direcciones IP, y SonarSource no comparte los datos con nadie más. La recopilación de telemetría se puede desactivar con la siguiente propiedad del sistema o variable de entorno: TELEMETRY_DISABLED=true. Haz clic aquí para ver una muestra de los datos recopilados.
Licencia
Copyright 2025 SonarSource.
Licenciado bajo la SONAR Source-Available License v1.0. El uso del servidor MCP de SonarQube de conformidad con esta documentación constituye un propósito no competitivo y, por tanto, está permitido bajo la SSAL.
El uso de SonarQube a través de MCP se rige por los Términos del servicio de SonarQube Cloud o los Términos y condiciones de SonarQube Server, incluido el uso de los datos de resultados exclusivamente para tus fines internos de desarrollo de software.