sonarqube-mcp
👁 PyPI
👁 Python
👁 License: MIT
Servidor MCP para SonarQube. Permite que un agente LLM (Claude Code, Cursor, OpenCode, etc.) descubra proyectos, obtenga métricas principales, verifique el estado del Quality Gate, busque problemas con filtros de severidad/tipo y clasifique proyectos según el peor valor de cualquier métrica.
Python, FastMCP, transporte stdio.
Funciona con cualquier instancia de SonarQube 9.x / 10.x (autoalojada) y con SonarCloud.
¿Por qué otro MCP de SonarQube?
Existen algunos MCP de SonarQube en la comunidad, pero tienden a limitarse a lecturas de un solo proyecto. Este añade clasificación entre proyectos (sonarqube_worst_metrics), la operación que un líder realmente ejecuta durante una sesión de triaje: "muéstrame los 10 servicios con peor cobertura en la organización". Todas las herramientas son de solo lectura y están parametrizadas de forma segura (validación de entrada Pydantic, listas blancas de severidad/tipo).
Related MCP server: sonarqube-api-mcp
Aspectos destacados del diseño
Anotaciones de herramientas — las cinco herramientas incluyen
readOnlyHint: True,destructiveHint: False,idempotentHint: True. Nada puede modificar SonarQube desde este servidor.Salida estructurada — cada herramienta devuelve una carga útil tipada (TypedDict) + un resumen en markdown, por lo que los clientes con y sin soporte para contenido estructurado obtienen una respuesta utilizable.
Errores estructurados — 401 / 403 / 404 / 400 / 429 / 5xx mapeados a sugerencias accionables (p. ej., "regenerar token", "verificar clave de proyecto con sonarqube_list_projects").
Validación de entrada Pydantic para cada argumento; los filtros de severidad/tipo se verifican contra el enum válido de SonarQube antes de enviar la solicitud.
Clasificación de peores métricas entre proyectos — procesa por lotes las llamadas a
/api/measures/searchinternamente, ordenando de forma ascendente o descendente según si un valor más alto es peor para la métrica elegida.
Características (5 herramientas)
Descubrimiento
sonarqube_list_projects— búsqueda de proyectos paginada con filtro de texto opcional
Información de un solo proyecto
sonarqube_project_metrics— medidas para un proyecto (el conjunto predeterminado cubre errores / cobertura / olores / calificaciones / ncloc / pruebas / alert_status)sonarqube_quality_gate_status— estado del Quality Gate + fallos por condición
Triaje de problemas
sonarqube_get_issues— búsqueda de problemas filtrada por severidad / tipo / estado de resolución
Clasificación entre proyectos
sonarqube_worst_metrics— los N mejores proyectos ordenados por el peor valor de una métrica (p. ej., peor cobertura, más errores)
Instalación
Requiere Python 3.10+.
# via uvx (recommended — no install, just run)
uvx --from sonarqube-mcp sonarqube-mcp
# or via pipx
pipx install sonarqube-mcpConfiguración
claude mcp add sonarqube -s project \
--env SONARQUBE_URL=https://sonar.example.com \
--env SONARQUBE_TOKEN=squ_your_token \
--env SONARQUBE_SSL_VERIFY=true \
-- uvx --from sonarqube-mcp sonarqube-mcpO en .mcp.json:
{
"mcpServers": {
"sonarqube": {
"type": "stdio",
"command": "uvx",
"args": ["--from", "sonarqube-mcp", "sonarqube-mcp"],
"env": {
"SONARQUBE_URL": "https://sonar.example.com",
"SONARQUBE_TOKEN": "${SONARQUBE_TOKEN}",
"SONARQUBE_SSL_VERIFY": "true"
}
}
}
}Verificar:
claude mcp list
# sonarqube: uvx --from sonarqube-mcp sonarqube-mcp - ✓ ConnectedVariables de entorno
Variable | Requerido | Descripción |
| sí | URL de SonarQube (sin barra diagonal al final) |
| sí | Token de portador (Bearer). Generar en: Mi cuenta → Seguridad → Tokens |
| no |
|
Nota sobre proxies HTTP. El cliente deshabilita intencionalmente la detección de proxy basada en el entorno (trust_env=False) porque SonarQube autoalojado suele ser accesible solo en una red interna. Si te conectas a SonarCloud o a cualquier SonarQube que viva detrás de un proxy corporativo, actualmente necesitarás eliminar las variables de proxy a nivel de proceso; se planea una perilla SONARQUBE_TRUST_ENV_PROXY para una versión posterior.
Ejemplo de uso
"Listar todos los proyectos de SonarQube que coincidan con 'einvy'"
"¿Cuál es el estado del Quality Gate para
einvy:aut_einvy?""Muéstrame los 10 proyectos con más errores"
"Encontrar todas las vulnerabilidades BLOCKER / CRITICAL en
einvy:aut_einvy""¿Cuál es la cobertura en
einvy:qa_assistant?""Los 5 proyectos con peor cobertura que coincidan con la consulta 'einvy'"
Direcciones de métricas (usadas por sonarqube_worst_metrics)
Más alto es peor (ordenado descendentemente — más es peor):
bugs, code_smells, vulnerabilities, duplicated_lines_density, reliability_rating, security_rating, security_review_rating, sqale_rating, open_issues
Más bajo es peor (ordenado ascendentemente — menos es peor):
coverage, line_coverage, branch_coverage, test_success_density, tests
Las calificaciones en SonarQube son cadenas numéricas de "1" (A, mejor) a "5" (E, peor).
Seguridad
Todas las herramientas son
readOnlyHint: True— nada puede modificar SonarQube.Nunca se llama a
POST/PUT/DELETE.Las entradas de severidad / tipo / calificador se validan contra los enums de SonarQube antes de la llamada a la API, por lo que la herramienta falla rápidamente ante errores tipográficos en lugar de afectar a la API.
Características de rendimiento
Cada herramienta realiza una llamada HTTP a SonarQube, excepto
sonarqube_worst_metrics, que realiza una llamada de búsqueda + ⌈candidate_pool/100⌉ llamadas de medidas masivas. La configuración predeterminada resulta en ≤ 2 llamadas.Tiempo de respuesta de una sola herramienta en una instancia de SonarQube saludable: generalmente < 500 ms.
La paginación se pasa a SonarQube (parámetros
p+ps) — no hay almacenamiento en búfer de resultados completos en el servidor MCP.sonarqube_worst_metricslimitacandidate_poola 500 — en instancias con miles de proyectos, filtra previamente conquery=antes de clasificar (consulta la cadena de documentación de la herramienta).SonarQube no tiene un límite de tasa estricto publicado. Si se recibe 429, el servidor muestra un error accionable ("Espera 30-60 s antes de volver a intentar; reduce page_size").
Desarrollo
git clone https://github.com/mshegolev/sonarqube-mcp.git
cd sonarqube-mcp
pip install -e '.[dev]'
pytestLicencia
MIT © Mikhail Shchegolev
Maintenance
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mshegolev/sonarqube-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
