/ Verzeichnis / Playground / SonarQube MCP
● Offiziell SonarSource 🔑 Eigener Schlüssel nötig

SonarQube MCP

von SonarSource · SonarSource/sonarqube-mcp-server

Sonars statische Analysebefunde in Claudes Händen — Issues nach Datei und Regel beheben, nicht durch Dashboard-Scrollen.

sonarqube-mcp-server ist das offizielle MCP für SonarQube und SonarCloud. Es exponiert Issues, Security-Hotspots, Quality-Gates, Metriken und Code-Qualitätsverlauf als MCP-Tools. Claude liest das Issue, schaut sich die Regel an und schreibt einen auf der Regelempfehlung basierenden Fix — keine generische Vermutung.

Warum nutzen

Hauptfunktionen

Live-Demo

In der Praxis

sonarqube-mcp.replay ▶ bereit
0/0

Installieren

Wählen Sie Ihren Client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

Öffne Claude Desktop → Settings → Developer → Edit Config. Nach dem Speichern neu starten.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

Cursor nutzt das gleiche mcpServers-Schema wie Claude Desktop. Projektkonfiguration schlägt die globale.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

Klicken Sie auf das MCP-Servers-Symbol in der Cline-Seitenleiste, dann "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

Gleiche Struktur wie Claude Desktop. Windsurf neu starten zum Übernehmen.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "sonarqube-mcp",
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  ]
}

Continue nutzt ein Array von Serverobjekten statt einer Map.

~/.config/zed/settings.json
{
  "context_servers": {
    "sonarqube-mcp": {
      "command": {
        "path": "docker",
        "args": [
          "run",
          "--init",
          "--pull=always",
          "-i",
          "--rm",
          "-e",
          "SONARQUBE_TOKEN",
          "-e",
          "SONARQUBE_ORG",
          "mcp/sonarqube"
        ]
      }
    }
  }
}

In context_servers hinzufügen. Zed lädt beim Speichern neu.

claude mcp add sonarqube-mcp -- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG mcp/sonarqube

Einzeiler. Prüfen mit claude mcp list. Entfernen mit claude mcp remove.

Anwendungsfälle

Praxisnahe Nutzung: SonarQube MCP

Alle Issues einer einzelnen Regel im gesamten Codebase beheben

👤 Entwickler beim Abbau von technischen Schulden ⏱ ~45 min intermediate

Wann einsetzen: Sonar hat 47 Instanzen derselben Regel markiert und du möchtest sie alle in einem PR beheben.

Voraussetzungen
  • Sonar-Token — User → Security → Token generieren (projektbegrenzt wenn möglich)
  • Docker verfügbar — Standard Docker-Setup; Image wird beim ersten Aufruf gezogen
Ablauf
  1. Regel identifizieren
    Use sonarqube-mcp. Top 5 rules by open-issue count in project 'foo'.✓ Kopiert
    → Regelschlüssel + Anzahl + Schweregrad
  2. Alle Instanzen einer Regel abrufen
    List every open issue for rule java:S2293 (Use Diamond Operator) — file, line, snippet.✓ Kopiert
    → 47 Issues mit file:line und umgebendem Code
  3. Fix anwenden
    For each, apply the rule's recommended fix. Keep changes minimal; don't reformat.✓ Kopiert
    → 47 kleine Änderungen über ~20 Dateien
  4. Neu scannen zur Verifikation
    After my CI runs the next analysis, recheck the issue count for that rule.✓ Kopiert
    → Anzahl fällt auf 0

Ergebnis: Ein fokussierter PR, der eine ganze Regel schließt, statt 47 verstreuter Fix-Commits.

Fallstricke
  • Regel-Auto-Fix bricht generierten Code — Nach Verzeichnis filtern; generierte/Test-Pfade überspringen oder manuell prüfen
Kombinieren mit: github · filesystem

Debuggen warum das Quality Gate eines PRs fehlschlägt

👤 Entwickler, deren PR blockiert wurde ⏱ ~30 min intermediate

Wann einsetzen: Sonar blockiert deinen PR und das Dashboard ist überwältigend.

Ablauf
  1. Gate-Status abrufen
    Use sonarqube-mcp. Show quality gate status for PR 1234 — which conditions failed?✓ Kopiert
    → Gate-Aufschlüsselung: z.B. 'New Coverage 67% < 80% Schwellenwert'
  2. Fehlgeschlagene Bedingung untersuchen
    For 'New Coverage' below threshold — list new lines added in this PR with no test coverage.✓ Kopiert
    → Pro-Datei Liste nicht abgedeckter neuer Zeilen
  3. Tests generieren
    Write tests covering those uncovered lines.✓ Kopiert
    → Neue Testdateien hinzugefügt; gedanklicher Durchlauf der Fälle

Ergebnis: PR entsperrt mit gezielten Tests, nicht mit einem Coverage-Teppichbombenangriff.

Fallstricke
  • Tests für Coverage statt Verhalten geschrieben — Claude bitten auch zu nennen was jeder Test prüft; solche ohne echte Assertion ablehnen
Kombinieren mit: github

Security-Hotspots prüfen und auflösen

👤 Sicherheitsbewusste Entwickler ⏱ ~40 min advanced

Wann einsetzen: Hotspots haben sich angehäuft und müssen als 'geprüft sicher' oder 'behoben' triagiert werden.

Ablauf
  1. Ungelöste Hotspots auflisten
    Use sonarqube-mcp. List all unreviewed security hotspots in project 'foo' grouped by category.✓ Kopiert
    → Hotspots gruppiert nach Kategorie (z.B. 'Schwache Kryptographie', 'Auth')
  2. Risiken erklären
    For each, summarize the risk in 1 line. Mark which are clearly safe-to-acknowledge vs need-fix.✓ Kopiert
    → Annotierte Triage-Liste
  3. Beheben oder bestätigen
    For need-fix ones, apply the rule's safe pattern. For safe ones, give me the comment to leave on the hotspot review.✓ Kopiert
    → Fixes angewendet + Review-Kommentare entworfen

Ergebnis: Hotspots mit Prüfpfad beseitigt, nicht still ignoriert.

Fallstricke
  • Dinge als 'sicher' markieren ohne nachzudenken — Claude verpflichten zu begründen *warum* es sicher ist — das schafft einen prüfbaren Pfad
Kombinieren mit: github

Kombinationen

Mit anderen MCPs für 10-fache Wirkung

sonarqube-mcp + github

PRs mit Sonar-Befunden annotieren oder Issues automatisch für neue Verstöße anlegen

On every PR, comment Sonar's gate result and any new issues it added.✓ Kopiert
sonarqube-mcp + filesystem

Regelkorrekturen lokal anwenden und committen

Fix all java:S2293 instances; write the diffs locally for review before commit.✓ Kopiert

Werkzeuge

Was dieses MCP bereitstellt

WerkzeugEingabenWann aufrufenKosten
search_issues project, rules?, severities?, types?, branch? Issues nach Regel/Schweregrad/Typ filtern 1 SonarQube API call
get_rule rule_key Offizielle Anleitung vor dem Fix lesen 1 API call
get_quality_gate project, branch_or_pr PR/Branch-Gate-Fehler diagnostizieren 1 API call
search_hotspots project, status? Sicherheitsreview 1 API call
get_metrics project, metric_keys[] Trend-/Drift-Überprüfungen (Coverage, Duplikate) 1 API call

Kosten & Limits

Was der Betrieb kostet

API-Kontingent
Sonar-API-Rate-Limit variiert je nach Edition — bei Bulk-Schleifen konservativ sein
Tokens pro Aufruf
Issues kommen in Seiten à 100; jedes Issue ~200 Tokens
Kosten in €
Kostenlos für öffentliche SonarCloud-Projekte; Enterprise-Lizenz für SonarQube
Tipp
Bei search_issues aggressiv filtern — durch alles zu pagen ist verschwenderisch

Sicherheit

Rechte, Secrets, Reichweite

Minimale Scopes: Browse See Source Code
Credential-Speicherung: SONARQUBE_TOKEN-Umgebungsvariable, projektbegrenzt
Datenabfluss: Zu deiner Sonar-Instanz (sonarcloud.io oder self-hosted)
Niemals gewähren: Administer-Berechtigungen an einen chat-gesteuerten Agenten

Fehlerbehebung

Häufige Fehler und Lösungen

401 Unauthorized

Token neu generieren; prüfen ob Token nicht nur User-Scope hat wenn Projekt-Scope benötigt wird

Prüfen: curl -u $SONARQUBE_TOKEN: $SONAR_HOST/api/projects/search
Falsche Organisation

SONARQUBE_ORG-Umgebungsvariable muss exakt mit dem Sonar-Org-Slug übereinstimmen (Kleinbuchstaben)

Docker-Container kann self-hosted SonarQube nicht erreichen

--network host übergeben oder SonarQube auf einem erreichbaren Hostnamen exponieren; SONAR_HOST_URL im Container setzen

Prüfen: docker run ... curl $SONAR_HOST_URL/api/system/status
Issue-Liste scheint veraltet

Sonar spiegelt die letzte abgeschlossene Analyse — Analyse neu ausführen oder letzten Analyse-Zeitstempel des Projekts prüfen

Alternativen

SonarQube MCP vs. andere

AlternativeWann stattdessenKompromiss
CodeQL via GitHub MCPBereits auf GitHub Advanced Security und Befunde auf derselben Oberfläche gewünschtAnderer Regelsatz; kein Quality-Gate-Konzept
Semgrep MCPLeichtgewichtiges musterbasiertes Scannen ohne Sonar-Infrastruktur gewünschtWeniger Abdeckung von Code-Smells / Wartbarkeitsmetriken

Mehr

Ressourcen

📖 Offizielle README auf GitHub lesen

🐙 Offene Issues ansehen

🔍 Alle 400+ MCP-Server und Skills durchsuchen