VOOZH about

URL: https://glama.ai/mcp/servers/mshegolev/sonarqube-mcp?locale=de-DE

⇱ sonarqube-mcp by mshegolev | Glama


sonarqube-mcp

👁 PyPI
👁 Python
👁 License: MIT

MCP-Server für SonarQube. Ermöglicht es einem LLM-Agenten (Claude Code, Cursor, OpenCode usw.), Projekte zu entdecken, wichtige Metriken abzurufen, den Status des Quality Gates zu prüfen, Probleme mit Schweregrad-/Typ-Filtern zu suchen und Projekte nach dem schlechtesten Wert einer beliebigen Metrik zu sortieren.

Python, FastMCP, stdio-Transport.

Funktioniert mit jeder SonarQube 9.x / 10.x-Instanz (selbst gehostet) sowie mit SonarCloud.

Warum ein weiteres SonarQube MCP?

Es gibt bereits einige SonarQube-MCPs aus der Community, aber diese beschränken sich meist auf das Lesen einzelner Projekte. Dieses hier fügt ein projektübergreifendes Ranking (sonarqube_worst_metrics) hinzu – die Operation, die ein Teamleiter tatsächlich während einer Triage-Sitzung durchführt: „Zeige mir die 10 Dienste mit der schlechtesten Testabdeckung in der Organisation“. Alle Tools sind schreibgeschützt und sicher parametrisiert (Pydantic-Eingabevalidierung, Whitelists für Schweregrad/Typ).

Related MCP server: sonarqube-api-mcp

Design-Highlights

  • Tool-Annotationen — alle fünf Tools tragen readOnlyHint: True, destructiveHint: False, idempotentHint: True. Nichts kann SonarQube von diesem Server aus verändern.

  • Strukturierte Ausgabe — jedes Tool gibt ein typisiertes Payload (TypedDict) + eine Markdown-Zusammenfassung zurück, sodass Clients mit und ohne Unterstützung für strukturierte Inhalte eine nutzbare Antwort erhalten.

  • Strukturierte Fehler — 401 / 403 / 404 / 400 / 429 / 5xx werden auf umsetzbare Hinweise abgebildet (z. B. „Token neu generieren“, „Projekt-Key mit sonarqube_list_projects prüfen“).

  • Pydantic-Eingabevalidierung für jedes Argument; Schweregrad-/Typ-Filter werden gegen das gültige SonarQube-Enum geprüft, bevor die Anfrage gesendet wird.

  • Projektübergreifendes Ranking der schlechtesten Metriken — bündelt /api/measures/search-Aufrufe im Hintergrund und sortiert auf- oder absteigend, je nachdem, ob ein höherer Wert für die gewählte Metrik schlechter ist.

Funktionen (5 Tools)

Entdeckung

  • sonarqube_list_projects — paginierte Projektsuche mit optionalem Textfilter

Einblick in einzelne Projekte

  • sonarqube_project_metrics — Messwerte für ein Projekt (Standard-Set umfasst Bugs / Abdeckung / Code Smells / Ratings / ncloc / Tests / alert_status)

  • sonarqube_quality_gate_status — Quality Gate-Status + Fehler pro Bedingung

Problem-Triage

  • sonarqube_get_issues — Problemsuche, gefiltert nach Schweregrad / Typ / Auflösungsstatus

Projektübergreifendes Ranking

  • sonarqube_worst_metrics — Top-N-Projekte, sortiert nach dem schlechtesten Wert einer Metrik (z. B. schlechteste Abdeckung, die meisten Bugs)

Installation

Erfordert Python 3.10+.

# via uvx (recommended — no install, just run)
uvx --from sonarqube-mcp sonarqube-mcp

# or via pipx
pipx install sonarqube-mcp

Konfiguration

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

Oder in .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"
 }
 }
 }
}

Überprüfung:

claude mcp list
# sonarqube: uvx --from sonarqube-mcp sonarqube-mcp - ✓ Connected

Umgebungsvariablen

Variable

Erforderlich

Beschreibung

SONARQUBE_URL

ja

SonarQube-URL (ohne abschließenden Schrägstrich)

SONARQUBE_TOKEN

ja

Bearer-Token. Generieren unter: Mein Konto → Sicherheit → Token

SONARQUBE_SSL_VERIFY

nein

true/false. Standard: true.

Hinweis zu HTTP-Proxys. Der Client deaktiviert absichtlich die umgebungsbasierte Proxy-Erkennung (trust_env=False), da selbst gehostetes SonarQube normalerweise nur in einem internen Netzwerk erreichbar ist. Wenn Sie eine Verbindung zu SonarCloud oder einem SonarQube herstellen, das hinter einem Unternehmens-Proxy liegt, müssen Sie derzeit die Proxy-Variablen auf Prozessebene entfernen – ein SONARQUBE_TRUST_ENV_PROXY-Schalter ist für ein zukünftiges Release geplant.

Beispielanwendung

  • „Liste alle SonarQube-Projekte auf, die auf 'einvy' passen“

  • „Was ist der Quality Gate-Status für einvy:aut_einvy?“

  • „Zeige mir die Top 10 Projekte mit den meisten Bugs“

  • „Finde alle BLOCKER / CRITICAL Schwachstellen in einvy:aut_einvy

  • „Wie hoch ist die Abdeckung bei einvy:qa_assistant?“

  • „Top 5 Projekte mit der schlechtesten Abdeckung, die auf die Abfrage 'einvy' passen“

Metrik-Richtungen (verwendet von sonarqube_worst_metrics)

Höher ist schlechter (absteigend sortiert — mehr ist schlechter): bugs, code_smells, vulnerabilities, duplicated_lines_density, reliability_rating, security_rating, security_review_rating, sqale_rating, open_issues

Niedriger ist schlechter (aufsteigend sortiert — weniger ist schlechter): coverage, line_coverage, branch_coverage, test_success_density, tests

Ratings in SonarQube sind numerische Strings von „1“ (A, am besten) bis „5“ (E, am schlechtesten).

Sicherheit

  • Alle Tools sind readOnlyHint: True — nichts kann SonarQube verändern.

  • Es werden niemals POST / PUT / DELETE-Anfragen aufgerufen.

  • Eingaben für Schweregrad / Typ / Qualifizierer werden vor dem API-Aufruf gegen SonarQube-Enums validiert, sodass das Tool bei Tippfehlern sofort fehlschlägt, anstatt die API aufzurufen.

Leistungsmerkmale

  • Jedes Tool führt einen HTTP-Aufruf an SonarQube durch, außer sonarqube_worst_metrics, das einen Suchaufruf + ⌈Kandidatenpool/100⌉ Bulk-Messwert-Aufrufe durchführt. Die Standardeinstellungen führen zu ≤ 2 Aufrufen.

  • Antwortzeit eines einzelnen Tools auf einer stabilen SonarQube-Instanz: typischerweise < 500 ms.

  • Paginierung wird an SonarQube weitergereicht (p + ps Parameter) — kein vollständiges Zwischenspeichern der Ergebnisse im MCP-Server.

  • sonarqube_worst_metrics begrenzt den candidate_pool auf 500 — bei Instanzen mit Tausenden von Projekten sollten Sie vor dem Ranking mit query= filtern (siehe Tool-Dokumentation).

  • SonarQube hat kein veröffentlichtes hartes Ratenlimit. Wenn ein 429-Fehler empfangen wird, gibt der Server einen umsetzbaren Fehler aus („Warten Sie 30-60 s vor dem erneuten Versuch; reduzieren Sie page_size“).

Entwicklung

git clone https://github.com/mshegolev/sonarqube-mcp.git
cd sonarqube-mcp
pip install -e '.[dev]'
pytest

Lizenz

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