VOOZH about

URL: https://glama.ai/mcp/servers/mshegolev/sonarqube-mcp?locale=es-ES

⇱ sonarqube-mcp by mshegolev | Glama


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/search internamente, 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-mcp

Configuració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-mcp

O 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 - ✓ Connected

Variables de entorno

Variable

Requerido

Descripción

SONARQUBE_URL

URL de SonarQube (sin barra diagonal al final)

SONARQUBE_TOKEN

Token de portador (Bearer). Generar en: Mi cuenta → Seguridad → Tokens

SONARQUBE_SSL_VERIFY

no

true/false. Predeterminado: true.

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_metrics limita candidate_pool a 500 — en instancias con miles de proyectos, filtra previamente con query= 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]'
pytest

Licencia

MIT © Mikhail Shchegolev

A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

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