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-mcpKonfiguration
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-mcpOder 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 - ✓ ConnectedUmgebungsvariablen
Variable | Erforderlich | Beschreibung |
| ja | SonarQube-URL (ohne abschließenden Schrägstrich) |
| ja | Bearer-Token. Generieren unter: Mein Konto → Sicherheit → Token |
| nein |
|
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+psParameter) — kein vollständiges Zwischenspeichern der Ergebnisse im MCP-Server.sonarqube_worst_metricsbegrenzt dencandidate_poolauf 500 — bei Instanzen mit Tausenden von Projekten sollten Sie vor dem Ranking mitquery=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]'
pytestLizenz
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
