SonarQube

offiziell

Ermöglicht eine nahtlose Integration mit SonarQube Server oder Cloud und die Analyse von Codeausschnitten direkt im Agentenkontext.

Was kann man mit SonarQube MCP machen?

  • Codeausschnitte analysieren — Bitten Sie Ihren Assistenten, analyze_code_snippet auf einem Codebeispiel auszuführen, um sofort Qualitäts- und Sicherheitsbefunde zu erhalten.
  • Issues verwalten — Verwenden Sie das issues-Toolset, um SonarQube-Issues nach Schweregrad, Status oder Projekt zu suchen, zu filtern und zu aktualisieren.
  • Sicherheits-Hotspots überprüfen — Fragen Sie das security-hotspots-Toolset ab, um Hotspots aufzulisten, die überprüft werden müssen, und verstehen Sie deren Risiko.
  • Qualitäts-Gates prüfen — Fragen Sie nach dem quality-gates-Status eines Projekts, um zu sehen, ob es seine Qualitätsschwelle erfüllt.
  • Projektmetriken abrufen — Rufen Sie measures wie Abdeckung und Duplikate ab, oder durchsuchen Sie Projekte über das projects-Toolset.

Dokumentation

SonarQube MCP Server

Build Quality Gate Status

Der SonarQube MCP Server ist ein Model Context Protocol (MCP)-Server, der eine nahtlose Integration mit SonarQube Server oder Cloud für Codequalität und Sicherheit ermöglicht. Er unterstützt auch die Analyse von Codeausschnitten direkt im Agentenkontext.

Schnellstart

Security best practices

🔒 Wichtig: Ihr SonarQube-Token ist eine sensible Anmeldeinformation. Befolgen Sie diese Sicherheitspraktiken:

Bei Verwendung von CLI-Befehlen:

  • Vermeiden Sie das Hartkodieren von Tokens in Befehlszeilenargumenten – sie werden in der Shell-Historie gespeichert
  • Verwenden Sie Umgebungsvariablen – setzen Sie Tokens in Umgebungsvariablen, bevor Sie Befehle ausführen

Bei Verwendung von Konfigurationsdateien:

  • Übertragen Sie Tokens niemals in die Versionskontrolle
  • Verwenden Sie nach Möglichkeit die Substitution von Umgebungsvariablen in Konfigurationsdateien

🚀 Konfiguration generieren

Der schnellste Weg, um zu starten, ist der SonarQube MCP Server Configuration Generator – ein interaktives Tool, das eine einsatzbereite Konfiguration für Ihren bevorzugten KI-Agenten-Client erstellt.

Manuelle Einrichtung

Wenn Sie die Konfiguration lieber selbst vornehmen, ist die einfachste Methode die Verwendung unseres Container-Images unter sonarsource/sonarqube-mcp. Verwenden Sie sonarsource/sonarqube-mcp für automatische Updates (mit --pull=always) oder binden Sie eine Versionskennung (z. B. sonarsource/sonarqube-mcp:1.19.0.2785) für reproduzierbare Bereitstellungen an. Lesen Sie unten, wenn Sie es lokal erstellen möchten.

Hinweis: Während die Beispiele unten docker verwenden, funktioniert jede OCI-kompatible Container-Laufzeit (z. B. Podman, nerdctl). Ersetzen Sie einfach docker durch Ihr bevorzugtes Werkzeug.

Antigravity

SonarQube MCP Server ist im Antigravity MCP Store verfügbar. Befolgen Sie diese Anweisungen:

  1. Öffnen Sie das Agent Side Panel
  2. Klicken Sie oben rechts auf die drei Punkte (...) und wählen Sie MCP Servers
  3. Suchen Sie nach SonarQube und wählen Sie Installieren
  4. Geben Sie das erforderliche SonarQube-Benutzertoken an. Sie können auch Ihren Organisationsschlüssel für SonarQube Cloud oder die SonarQube-URL angeben, wenn Sie eine Verbindung zu SonarQube Server herstellen.

Für SonarQube Cloud US setzen Sie die URL auf https://sonarqube.us.

Alternativ können Sie den Server manuell über mcp_config.json konfigurieren:

  • Für die Verbindung mit SonarQube Cloud:

Klicken Sie im Agent Side Panel auf die drei Punkte (...) -> MCP Store -> Manage MCP Servers -> View raw config und fügen Sie Folgendes hinzu:

{
  "mcpServers": {
    "sonarqube": {
      "command": "docker",
      "args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"],
      "env": {
        "SONARQUBE_TOKEN": "<YOUR_TOKEN>",
        "SONARQUBE_ORG": "<YOUR_ORG>"
      }
    }
  }
}

Für SonarQube Cloud US fügen Sie manuell "SONARQUBE_URL": "https://sonarqube.us" zum Abschnitt env und "-e", "SONARQUBE_URL" zum Array args hinzu.

  • Für die Verbindung mit SonarQube Server:
{
  "mcpServers": {
    "sonarqube": {
      "command": "docker",
      "args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_URL", "sonarsource/sonarqube-mcp"],
      "env": {
        "SONARQUBE_TOKEN": "<YOUR_USER_TOKEN>",
        "SONARQUBE_URL": "<YOUR_SERVER_URL>"
      }
    }
  }
}
Claude Code
  • Für die Verbindung mit SonarQube Cloud:
claude mcp add sonarqube \
  --env SONARQUBE_TOKEN=$SONAR_TOKEN \
  --env SONARQUBE_ORG=$SONAR_ORG \
  -- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG sonarsource/sonarqube-mcp

Für SonarQube Cloud US fügen Sie --env SONARQUBE_URL=https://sonarqube.us zum Befehl hinzu.

  • Für die Verbindung mit SonarQube Server:
claude mcp add sonarqube \
  --env SONARQUBE_TOKEN=$SONAR_USER_TOKEN \
  --env SONARQUBE_URL=$SONAR_URL \
  -- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_URL sonarsource/sonarqube-mcp
Codex CLI

Bearbeiten Sie die Konfigurationsdatei unter ~/.codex/config.toml manuell und fügen Sie die folgende Konfiguration hinzu:

  • Für die Verbindung mit SonarQube Cloud:
[mcp_servers.sonarqube]
command = "docker"
args = ["run", "--init", "--pull=always", "--rm", "-i", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"]
env = { "SONARQUBE_TOKEN" = "<YOUR_USER_TOKEN>", "SONARQUBE_ORG" = "<YOUR_ORG>" }

Für SonarQube Cloud US fügen Sie "SONARQUBE_URL" = "https://sonarqube.us" zum Abschnitt env und "-e", "SONARQUBE_URL" zum Array args hinzu.

  • Für die Verbindung mit SonarQube Server:
[mcp_servers.sonarqube]
command = "docker"
args = ["run", "--init", "--pull=always", "--rm", "-i", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_URL", "sonarsource/sonarqube-mcp"]
env = { "SONARQUBE_TOKEN" = "<YOUR_TOKEN>", "SONARQUBE_URL" = "<YOUR_SERVER_URL>" }
Cursor
  • Für die Verbindung mit SonarQube Cloud:

Install for SonarQube Cloud

Für SonarQube Cloud US fügen Sie nach der Installation manuell "SONARQUBE_URL": "https://sonarqube.us" zum Abschnitt env in Ihrer MCP-Konfiguration hinzu.

  • Für die Verbindung mit SonarQube Server:

Install for SonarQube Server

Gemini CLI

Hinweis: Die Gemini CLI-Erweiterung wurde in das Repository sonarqube-agent-plugins verschoben. Bitte installieren Sie es von dort aus in Zukunft.

Sie können unsere MCP-Server-Erweiterung mit dem folgenden Befehl installieren:

gemini extensions install https://github.com/SonarSource/sonarqube-agent-plugins

Sie müssen die erforderlichen Umgebungsvariablen festlegen, bevor Sie Gemini starten:

Erforderliche Umgebungsvariablen:

  • Für SonarQube Cloud:

    • SONARQUBE_TOKEN - Ihr SonarQube Cloud-Token
    • SONARQUBE_ORG - Ihr Organisationsschlüssel
    • SONARQUBE_URL - (Optional) Setzen Sie auf https://sonarqube.us für SonarQube Cloud US
  • Für SonarQube Server:

    • SONARQUBE_TOKEN - Ihr SonarQube Server-Benutzertoken
    • SONARQUBE_URL - Ihre SonarQube Server-URL

Nach der Installation wird die Erweiterung unter <home>/.gemini/extensions/sonarqube/gemini-extension.json installiert.

GitHub Copilot CLI

Nach dem Start von Copilot CLI führen Sie den folgenden Befehl aus, um den SonarQube MCP-Server hinzuzufügen:

/mcp add

Sie müssen verschiedene Informationen über den MCP-Server angeben. Sie können die Tabulatortaste verwenden, um zwischen den Feldern zu navigieren.

  • Für die Verbindung mit SonarQube Cloud:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_ORG, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_TOKEN>,SONARQUBE_ORG=<YOUR_ORG>
Tools: *

Für SonarQube Cloud US fügen Sie -e, SONARQUBE_URL zu Argumenten und SONARQUBE_URL=https://sonarqube.us zu Umgebungsvariablen hinzu.

  • Für die Verbindung mit SonarQube Server:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_URL, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_USER_TOKEN>,SONARQUBE_URL=<YOUR_SERVER_URL>
Tools: *

Die Konfigurationsdatei befindet sich unter ~/.copilot/mcp-config.json.

GitHub Copilot coding agent

Der GitHub Copilot Coding Agent kann den SonarQube MCP-Server direkt in Ihrer CI/CD nutzen.

Um die Geheimnisse zu Ihrer Copilot-Umgebung hinzuzufügen, folgen Sie der Copilot-Dokumentation. Nur Geheimnisse mit Namen, die mit COPILOT_MCP_ beginnen, sind für Ihre MCP-Konfiguration verfügbar.

Navigieren Sie in Ihrem GitHub-Repository unter Settings -> Copilot -> Coding agent und fügen Sie die folgende Konfiguration im MCP-Konfigurationsabschnitt hinzu:

  • Für die Verbindung mit SonarQube Cloud:
{
  "mcpServers": {
    "sonarqube": {
      "type": "local",
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "--rm",
        "-i",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_TOKEN": "COPILOT_MCP_SONARQUBE_TOKEN",
        "SONARQUBE_ORG": "COPILOT_MCP_SONARQUBE_ORG"
      },
      "tools": ["*"]
    }
  }
}

Für SonarQube Cloud US fügen Sie "-e", "SONARQUBE_URL" zum Array args und "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL" zum Abschnitt env hinzu, und setzen Sie dann das Geheimnis COPILOT_MCP_SONARQUBE_URL=https://sonarqube.us.

  • Für die Verbindung mit SonarQube Server:
{
  "mcpServers": {
    "sonarqube": {
      "type": "local",
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "--rm",
        "-i",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_URL",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_TOKEN": "COPILOT_MCP_SONARQUBE_USER_TOKEN",
        "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL"
      },
      "tools": ["*"]
    }
  }
}
Kiro

Erstellen Sie eine .kiro/settings/mcp.json-Datei in Ihrem Arbeitsverzeichnis (oder bearbeiten Sie sie, falls sie bereits existiert) und fügen Sie die folgende Konfiguration hinzu:

  • Für die Verbindung mit SonarQube Cloud:
{
  "mcpServers": {
    "sonarqube": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e", 
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_TOKEN": "<YOUR_TOKEN>",
        "SONARQUBE_ORG": "<YOUR_ORG>"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

Für SonarQube Cloud US fügen Sie "-e", "SONARQUBE_URL" zum Array args und "SONARQUBE_URL": "https://sonarqube.us" zum Abschnitt env hinzu.

  • Für die Verbindung mit SonarQube Server:
{
  "mcpServers": {
    "sonarqube": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e", 
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_URL",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_TOKEN": "<YOUR_USER_TOKEN>",
        "SONARQUBE_URL": "<YOUR_SERVER_URL>"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}
VS Code

Sie können die folgenden Schaltflächen verwenden, um den Installationsprozess in VS Code zu vereinfachen.

Install for SonarQube Cloud

Für SonarQube Cloud US fügen Sie nach der Installation manuell "SONARQUBE_URL": "https://sonarqube.us" zum Abschnitt env in Ihrer MCP-Konfiguration hinzu.

Install for SonarQube Server

Windsurf

SonarQube MCP Server ist als Windsurf-Plugin verfügbar. Befolgen Sie diese Anweisungen:

  1. Öffnen Sie in Windsurf Settings > Cascade > MCP Servers und wählen Sie Open MCP Marketplace
  2. Suchen Sie nach sonarqube im Cascade MCP Marketplace
  3. Wählen Sie den SonarQube MCP Server und wählen Sie Installieren
  4. Fügen Sie das erforderliche SonarQube-Benutzertoken hinzu. Fügen Sie dann den Organisationsschlüssel hinzu, wenn Sie eine Verbindung mit SonarQube Cloud herstellen möchten, oder die SonarQube-URL, wenn Sie eine Verbindung zu SonarQube Server oder Community Build herstellen möchten.

Für SonarQube Cloud US setzen Sie die URL auf https://sonarqube.us.

Zed

Navigieren Sie in Zed zur Ansicht Extensions und suchen Sie nach SonarQube MCP Server. Bei der Installation der Erweiterung werden Sie aufgefordert, die erforderlichen Umgebungsvariablen anzugeben:

  • Bei Verwendung von SonarQube Cloud:
{
  "sonarqube_token": "YOUR_SONARQUBE_TOKEN",
  "sonarqube_org": "SONARQUBE_ORGANIZATION_KEY",
  "docker_path": "DOCKER_PATH"
}

Für SonarQube Cloud US fügen Sie "sonarqube_url": "https://sonarqube.us" zur Konfiguration hinzu.

  • Bei Verwendung von SonarQube Server:
{
  "sonarqube_token": "YOUR_SONARQUBE_USER_TOKEN",
  "sonarqube_url": "YOUR_SONARQUBE_SERVER_URL",
  "docker_path": "DOCKER_PATH"
}

Der docker_path ist der Pfad zu einer Docker-Ausführungsdatei. Beispiele:

Linux/macOS: /usr/bin/docker oder /usr/local/bin/docker

Windows: C:\Program Files\Docker\Docker\resources\bin\docker.exe

💡 Tipp: Wir empfehlen, das neueste Image regelmäßig oder vor der Meldung von Problemen zu ziehen, um sicherzustellen, dass Sie die aktuellsten Funktionen und Fehlerbehebungen haben.

Manuelle Installation

Sie können den SonarQube MCP-Server manuell installieren, indem Sie den folgenden Ausschnitt in die Konfigurationsdatei der MCP-Server kopieren:

  • Für die Verbindung mit SonarQube Cloud:
{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run",
      "--init",
      "--pull=always",
      "-i",
      "--rm",
      "-e",
      "SONARQUBE_TOKEN",
      "-e",
      "SONARQUBE_ORG",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_ORG": "<org>"
    }
  }
}
  • Für die Verbindung mit SonarQube Server:
{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run",
      "--init",
      "--pull=always",
      "-i",
      "--rm",
      "-e",
      "SONARQUBE_TOKEN",
      "-e",
      "SONARQUBE_URL",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_URL": "<url>"
    }
  }
}

Integration mit SonarQube for IDE

Der SonarQube MCP-Server kann mit SonarQube for IDE integriert werden, um Ihren Entwicklungsworkflow weiter zu verbessern und bessere Codeanalyse und Einblicke direkt in Ihrer IDE zu bieten.

Configuration

Bei Verwendung von SonarQube for IDE sollte die Umgebungsvariable SONARQUBE_IDE_PORT mit der korrekten Portnummer gesetzt werden. SonarQube for VS Code enthält eine Schaltfläche für die Schnellinstallation, die automatisch die korrekte Portkonfiguration festlegt.

Zum Beispiel mit SonarQube Cloud:

{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run",
      "--init",
      "--pull=always",
      "-i",
      "--rm",
      "-e",
      "SONARQUBE_TOKEN",
      "-e",
      "SONARQUBE_ORG",
      "-e",
      "SONARQUBE_IDE_PORT",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_ORG": "<org>",
      "SONARQUBE_IDE_PORT": "<64120-64130>"
    }
  }
}

Wenn der MCP-Server in einem Container unter Linux ausgeführt wird, kann der Container nicht auf den eingebetteten SonarQube for IDE-Server zugreifen, der auf localhost läuft. Um dem Container die Verbindung zum SonarQube for IDE-Server zu ermöglichen, fügen Sie die Option --network=host zu Ihrem Container-Run-Befehl hinzu.

Konfiguration

Abhängig von Ihrer Umgebung sollten Sie bestimmte Umgebungsvariablen angeben.

Basis

Sie sollten die folgende Variable hinzufügen, wenn Sie den MCP-Server ausführen:

UmgebungsvariableBeschreibung
STORAGE_PATHErforderlicher absoluter Pfad zu einem beschreibbaren Verzeichnis, in dem der SonarQube MCP Server seine Dateien speichert (z. B. für Erstellung, Aktualisierungen und Persistenz). Er wird automatisch bereitgestellt, wenn das Container-Image verwendet wird.
SONARQUBE_PROJECT_KEYOptionaler Standard-Projektschlüssel. Wenn gesetzt, verwenden alle Tools, die einen Projektschlüssel benötigen, diesen Wert automatisch – der Parameter projectKey wird vollständig aus ihrem Schema entfernt. Nützlich, wenn Sie an einem einzelnen Projekt arbeiten.
SONARQUBE_IDE_PORTOptionale Portnummer zwischen 64120 und 64130, die verwendet wird, um den SonarQube MCP Server mit SonarQube for IDE zu verbinden.
SONARQUBE_DEBUG_ENABLEDWenn auf true gesetzt, wird Debug-Logging aktiviert. Debug-Logs werden sowohl in die Logdatei als auch nach STDERR geschrieben. Nützlich zur Fehlerbehebung von Konnektivitäts- oder Konfigurationsproblemen. Standard: false.
SONARQUBE_LOG_TO_FILE_DISABLEDWenn auf true gesetzt, wird das Schreiben von Logs auf die Festplatte vollständig deaktiviert. Es werden keine Logdateien unter STORAGE_PATH/logs/ erstellt. Nützlich in containerisierten oder ephemeren Umgebungen, in denen Datei-Logging unerwünscht ist. Standard: false.

Workspace-Mount (Reduzierung des Kontextumfangs)

Standardmäßig erfordert das Analysetool analyze_code_snippet, dass der Agent den vollständigen Dateiinhalt als fileContent-Argument übergibt. Bei großen Dateien oder bei der Analyse vieler Dateien in einer Sitzung erhöht dies erheblich die Nutzung des Kontextfensters und die Kosten. Lösung: Binden Sie Ihr Projektverzeichnis in den Container bei /app/mcp-workspace ein. Wenn dieser Mount erkannt wird, liest der Server Dateien direkt von der Festplatte mithilfe des projektrelativen filePath-Arguments — Dateiinhalte laufen niemals durch den Agent-Kontext.

{
  "args": [
    "run", "-i", "--rm", "--init", "--pull=always",
    "-e", "SONARQUBE_TOKEN",
    "-e", "SONARQUBE_ORG",
    "-v", "/path/to/your/project:/app/mcp-workspace",
    "sonarsource/sonarqube-mcp"
  ]
}

Wenn der Mount aktiv ist:

  • run_advanced_code_analysis wird verfügbar, wenn Ihre Organisation dafür berechtigt ist
  • analyze_code_snippet: filePath ist erforderlich und fileContent wird nicht verwendet — der Server löst die Datei auf dieselbe Weise auf

Selektive Toolset-Aktivierung

Standardmäßig sind nur wichtige Toolsets aktiviert, um den Kontext-Overhead zu reduzieren. Sie können bei Bedarf zusätzliche Toolsets aktivieren.

UmgebungsvariableBeschreibung
SONARQUBE_TOOLSETSKommagetrennte Liste der zu aktivierenden Toolsets. Wenn gesetzt, sind nur diese Toolsets verfügbar. Wenn nicht gesetzt, sind die standardmäßig wichtigen Toolsets aktiviert (analysis, ide, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag). Hinweis: Das projects-Toolset ist immer aktiviert, da es erforderlich ist, um Projektschlüssel für andere Operationen zu finden. Vortex-Kontext-Tools (veralteter Name: Context Augmentation/CAG) und Vortex-Analyse-Tools (veralteter Name: Advanced Analysis/A3S) sind nur im stdio-Modus verfügbar und teilen sich eine einzige kombinierte Organisationsberechtigung — eine Organisation muss für beide berechtigt sein, um eines davon nutzen zu können. Der Zugriff über die cag- oder analysis-Toolset-Schlüssel ist zugunsten des einheitlichen vortex-Toolset-Schlüssels veraltet; die alten Schlüssel funktionieren weiterhin aus Gründen der Abwärtskompatibilität, aber eine Startwarnung und ein Veraltet-Hinweis in den Server-Anweisungen werden ausgegeben, wann immer sie ohne vortex verwendet werden. Im Streamable-HTTP-Modus können Clients einen SONARQUBE_TOOLSETS-HTTP-Header senden, um dies pro Anfrage weiter einzugrenzen, können aber keine Toolsets über das hinaus aktivieren, mit denen der Server gestartet wurde (siehe Streamable-HTTP-Transport unten).
SONARQUBE_READ_ONLYWenn auf true gesetzt, wird der Nur-Lese-Modus aktiviert, der alle Schreiboperationen deaktiviert (z. B. das Ändern des Issue-Status). Dieser Filter ist kumulativ mit SONARQUBE_TOOLSETS, wenn beide gesetzt sind. Standard: false. Im Streamable-HTTP-Modus können Clients einen SONARQUBE_READ_ONLY-HTTP-Header senden, um einzelne Anfragen weiter auf Nur-Lese einzuschränken, können aber eine serverseitige Nur-Lese-Einschränkung nicht aufheben (siehe Streamable-HTTP-Transport unten).
Verfügbare Toolsets
ToolsetSchlüsselBeschreibung
AnalyseanalysisCode-Analyse-Tools (lokale Analyse über analyze_code_snippet, veraltet zugunsten von analyze_file_list/Vortex-Analyse)
IDEideSonarQube für IDE-Bridge-Tools (Dateianalyse, automatischer Analyse-Umschalter) — derzeit auch in analysis enthalten
IssuesissuesSonarQube-Issues suchen und verwalten
Sicherheits-Hotspotssecurity-hotspotsSicherheits-Hotspots suchen und überprüfen
ProjekteprojectsSonarQube-Projekte durchsuchen und finden
Qualitäts-Gatesquality-gatesAuf Qualitäts-Gates und deren Status zugreifen
RegelnrulesSonarQube-Regeln durchsuchen und finden
QuellensourcesAuf Quellcode und SCM-Informationen zugreifen
DuplikationenduplicationsCodeduplikationen in Projekten finden
KennzahlenmeasuresMetriken und Kennzahlen abrufen (umfasst sowohl Kennzahlen- als auch Metrik-Tools)
SprachenlanguagesUnterstützte Programmiersprachen auflisten
PortfoliosportfoliosPortfolios und Unternehmen verwalten (Cloud und Server)
SystemsystemSystemverwaltungs-Tools (nur Server)
WebhookswebhooksWebhooks verwalten
Abhängigkeitsrisikendependency-risksAbhängigkeitsrisiken und Sicherheitsprobleme analysieren (SCA)
AbdeckungcoverageTestabdeckungsanalyse- und Verbesserungs-Tools
Vortex-KontextcagVortex-Kontext-Tools — nur stdio. Veraltet zugunsten von vortex (alter Name: Context Augmentation/CAG)
VortexvortexEinheitliches, empfohlenes Toolset, das sowohl Vortex-Kontext- als auch Vortex-Analyse-Tools unter einem Namen bereitstellt (nur stdio, erfordert die kombinierte Organisationsberechtigung)
Agentic Readinessagentic-readinessAgentic-Readiness-Bewertungs-Tools (SonarQube Cloud, erfordert Organisationsberechtigung)

Beispiele

Toolsets für Analyse, Issues und Qualitäts-Gates aktivieren (mit Docker und SonarQube Cloud):

docker run --init --pull=always -i --rm \
  -e SONARQUBE_TOKEN="<token>" \
  -e SONARQUBE_ORG="<org>" \
  -e SONARQUBE_TOOLSETS="analysis,issues,quality-gates" \
  sonarsource/sonarqube-mcp

Hinweis: Das projects-Toolset wird immer automatisch aktiviert, daher müssen Sie es nicht in SONARQUBE_TOOLSETS aufnehmen.

Nur-Lese-Modus aktivieren (mit Docker und SonarQube Cloud):

docker run --init --pull=always -i --rm \
  -e SONARQUBE_TOKEN="<token>" \
  -e SONARQUBE_ORG="<org>" \
  -e SONARQUBE_READ_ONLY="true" \
  sonarsource/sonarqube-mcp

SonarQube Cloud

Um die volle Funktionalität zu aktivieren, müssen die folgenden Umgebungsvariablen vor dem Start des Servers gesetzt werden:

UmgebungsvariableBeschreibungErforderlich
SONARQUBE_TOKENIhr SonarQube-Cloud-TokenJa
SONARQUBE_ORGIhr SonarQube-Cloud-Organisations-SchlüsselJa
SONARQUBE_URLBenutzerdefinierte SonarQube-Cloud-URL (Standard: https://sonarcloud.io). Für SonarQube Cloud US verwenden: https://sonarqube.usNein

Beispiele:

  • SonarQube Cloud: Nur SONARQUBE_TOKEN und SONARQUBE_ORG werden benötigt
  • SonarQube Cloud US: SONARQUBE_TOKEN, SONARQUBE_ORG und SONARQUBE_URL=https://sonarqube.us setzen

SonarQube Server

UmgebungsvariableBeschreibungErforderlich
SONARQUBE_TOKENIhr SonarQube-Server-BENUTZER-TokenJa
SONARQUBE_URLIhre SonarQube-Server-URLJa

⚠️ Die Verbindung zu SonarQube Server erfordert ein Token vom Typ BENUTZER und funktioniert nicht ordnungsgemäß, wenn Projekt-Tokens oder globale Tokens verwendet werden. 💡 Konfigurationstipp (stdio-Modus): Das Vorhandensein von SONARQUBE_ORG bestimmt, ob Sie eine Verbindung zu SonarQube Cloud oder Server herstellen. Wenn SONARQUBE_ORG gesetzt ist, wird SonarQube Cloud verwendet; andernfalls wird SonarQube Server verwendet.

Transportmodi

Die MCP-Spezifikation definiert zwei Transportmechanismen: Stdio und Streamable HTTP. Der SonarQube MCP Server unterstützt beide:

MCP-TransportServermodusTypische Verwendung
StdioStandard (kein SONARQUBE_TRANSPORT)Lokale MCP-Clients, die den Server als Unterprozess starten (Cursor, Claude Code, VS Code usw.)
Streamable HTTPSONARQUBE_TRANSPORT=http oder httpsRemote- oder Mehrbenutzer-Bereitstellungen; Clients verbinden sich über HTTP(S) mit /mcp (z. B. Windsurf mit einer selbst gehosteten Server-URL)

Hinweis: Streamable HTTP ist der aktuelle MCP-Netzwerktransport. Der ältere reine SSE-HTTP-Transport aus früheren MCP-Versionen ist veraltet und wird nicht unterstützt.

1. Stdio (Standard – für die lokale Entwicklung empfohlen)

Der empfohlene Modus für die lokale Entwicklung und Einzelbenutzer-Setups, der von den meisten MCP-Clients verwendet wird.

Beispiel – Docker mit SonarQube Cloud:

{
  "mcpServers": {
    "sonarqube": {
      "command": "docker",
      "args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"],
      "env": {
        "SONARQUBE_TOKEN": "<your-token>",
        "SONARQUBE_ORG": "<your-org>"
      }
    }
  }
}

2. HTTP (Streamable HTTP)

Unverschlüsselter Streamable-HTTP-Transport. Verwenden Sie für Mehrbenutzer-Bereitstellungen stattdessen HTTPS.

⚠️ Nicht empfohlen: Verwenden Sie Stdio für die lokale Entwicklung oder HTTPS (Streamable HTTP) für Mehrbenutzer-Produktionsbereitstellungen.

UmgebungsvariableBeschreibungStandard
SONARQUBE_TRANSPORTAuf http setzen, um den Streamable-HTTP-Transport zu aktivierenNicht gesetzt (stdio)
SONARQUBE_HTTP_PORTPortnummer (1024-65535)8080
SONARQUBE_HTTP_HOSTZu bindender Host (standardmäßig localhost aus Sicherheitsgründen)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSDurch Kommas getrennte Browser-Ursprünge, die für CORS erlaubt sind (z. B. https://my-app.example.com)Nicht gesetzt
SONARQUBE_MCP_IN_CONTAINERAuf true setzen, wenn in einem Container ausgeführt. Das offizielle Docker-Image setzt dies automatisch; setzen Sie es selbst, wenn Sie andere OCI-Laufzeiten (Podman, Kubernetes, Nomad usw.) verwenden.false

Hinweis: Im Streamable-HTTP-Modus (HTTP oder HTTPS) ist der Server zustandslos – jede Client-Anfrage muss einen Authorization: Bearer <token>-Header mit dem eigenen SonarQube-Token des Benutzers enthalten. Für SonarQube Cloud wird die Organisation wie folgt aufgelöst:

  • Wenn SONARQUBE_ORG beim Serverstart gesetzt ist, werden alle Anfragen an diese Organisation weitergeleitet. Clients dürfen keinen SONARQUBE_ORG-Header senden – dies führt zu einem Fehler.
  • Wenn SONARQUBE_ORG beim Serverstart nicht gesetzt ist, muss jeder Client bei jeder Anfrage einen SONARQUBE_ORG-Header angeben. Clients können die sichtbaren Tools auch pro Anfrage eingrenzen, indem sie SONARQUBE_TOOLSETS- und/oder SONARQUBE_READ_ONLY-Header angeben; diese wenden zusätzliche Filter auf die Serverkonfiguration an – sie können den Umfang nur reduzieren, niemals erweitern. Zwischen Anfragen wird kein Sitzungszustand beibehalten.

Veraltet: Der SONARQUBE_TOKEN-Anfrageheader wird aus Gründen der Abwärtskompatibilität weiterhin akzeptiert, wird jedoch in einer zukünftigen Version entfernt. Migrieren Sie zu Authorization: Bearer <token>.

3. HTTPS (Streamable HTTP über TLS) (für Mehrbenutzer-Produktionsbereitstellungen empfohlen)

Sicherer Streamable-HTTP-Transport mit TLS-Verschlüsselung. Erfordert SSL-Zertifikate.

Für die Produktion empfohlen: Verwenden Sie HTTPS, wenn Sie den MCP-Server für mehrere Benutzer über Streamable HTTP bereitstellen. Der Server bindet standardmäßig aus Sicherheitsgründen an 127.0.0.1 (localhost).

UmgebungsvariableBeschreibungStandard
SONARQUBE_TRANSPORTAuf https setzen, um den Streamable-HTTP-Transport über TLS zu aktivierenNicht gesetzt (stdio)
SONARQUBE_HTTP_PORTPortnummer (typischerweise 8443 für HTTPS)8080
SONARQUBE_HTTP_HOSTZu bindender Host (standardmäßig localhost aus Sicherheitsgründen)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSDurch Kommas getrennte Browser-Ursprünge, die für CORS erlaubt sind (z. B. https://my-app.example.com)Nicht gesetzt
SONARQUBE_MCP_IN_CONTAINERAuf true setzen, wenn in einem Container ausgeführt. Das offizielle Docker-Image setzt dies automatisch; setzen Sie es selbst, wenn Sie andere OCI-Laufzeiten (Podman, Kubernetes, Nomad usw.) verwenden.false

SSL-Zertifikatskonfiguration (optional):

UmgebungsvariableBeschreibungStandard
SONARQUBE_HTTPS_KEYSTORE_PATHPfad zur Keystore-Datei (.p12 oder .jks)/etc/ssl/mcp/keystore.p12
SONARQUBE_HTTPS_KEYSTORE_PASSWORDKeystore-Passwortsonarlint
SONARQUBE_HTTPS_KEYSTORE_TYPEKeystore-Typ (PKCS12 oder JKS)PKCS12

Beispiel – Docker mit SonarQube Cloud:

Hinweis: Beim Ausführen in einem Container setzen Sie SONARQUBE_HTTP_HOST=0.0.0.0, damit der Container auf allen Schnittstellen lauscht und die Portzuordnung der Laufzeit funktioniert, und setzen Sie SONARQUBE_MCP_IN_CONTAINER=true, um dem Server mitzuteilen, dass er sich in einem Container befindet. Das offizielle Docker-Image setzt Letzteres automatisch; setzen Sie es selbst, wenn Sie andere OCI-Laufzeiten (Podman, Kubernetes, Nomad usw.) verwenden. Das hostseitige Port-Flag steuert, wer den Server von außerhalb des Containers erreichen kann. SONARQUBE_HTTP_HOST=0.0.0.0 steuert nur, wo der Server innerhalb des Containers lauscht – Browser-CORS erlaubt standardmäßig weiterhin localhost-Ursprünge.

Für einen Server, der lokal auf Ihrem Rechner läuft (nur von localhost aus erreichbar):

docker run --init --pull=always -p 127.0.0.1:8443:8443 \
  -v $(pwd)/keystore.p12:/etc/ssl/mcp/keystore.p12:ro \
  -e SONARQUBE_TRANSPORT=https \
  -e SONARQUBE_HTTP_HOST=0.0.0.0 \
  -e SONARQUBE_HTTP_PORT=8443 \
  -e SONARQUBE_TOKEN="<init-token>" \
  -e SONARQUBE_ORG="<your-org>" \
  sonarsource/sonarqube-mcp

Für einen Server, der aus dem Netzwerk erreichbar ist (Remote-Bereitstellungen):

docker run --init --pull=always -p 8443:8443 \
  -v $(pwd)/keystore.p12:/etc/ssl/mcp/keystore.p12:ro \
  -e SONARQUBE_TRANSPORT=https \
  -e SONARQUBE_HTTP_HOST=0.0.0.0 \
  -e SONARQUBE_HTTP_PORT=8443 \
  -e SONARQUBE_TOKEN="<init-token>" \
  -e SONARQUBE_ORG="<your-org>" \
  sonarsource/sonarqube-mcp

Client-Konfiguration (SonarQube Cloud):

{
  "mcpServers": {
    "sonarqube-https": {
      "url": "https://your-server:8443/mcp",
      "headers": {
        "Authorization": "Bearer <your-token>",
        "SONARQUBE_ORG": "<your-org>",
        "SONARQUBE_TOOLSETS": "issues,quality-gates",
        "SONARQUBE_READ_ONLY": "true"
      }
    }
  }
}

Client-Konfiguration (SonarQube Server):

{
  "mcpServers": {
    "sonarqube-https": {
      "url": "https://your-server:8443/mcp",
      "headers": {
        "Authorization": "Bearer <your-token>",
        "SONARQUBE_TOOLSETS": "issues,quality-gates",
        "SONARQUBE_READ_ONLY": "true"
      }
    }
  }
}

Hinweis: SONARQUBE_TOOLSETS und SONARQUBE_READ_ONLY sind optionale Pro-Anfrage-Header, die den serverseitigen Tool-Satz für diese bestimmte Anfrage eingrenzen. Sie können den Umfang nur reduzieren – sie können keine Toolsets aktivieren oder Einschränkungen über das hinaus aufheben, womit der Server gestartet wurde.

Hinweis: Verwenden Sie für die lokale Entwicklung stattdessen den Stdio-Transport (den Standard). HTTPS Streamable HTTP ist für Mehrbenutzer-Produktionsbereitstellungen mit ordnungsgemäßen SSL-Zertifikaten vorgesehen.

Service-Endpunkte

Wenn der Server im Streamable-HTTP-Modus (http oder https) ausgeführt wird, stellt er zusätzlich zum MCP-Endpunkt unter /mcp einige nicht authentifizierte Service-Endpunkte bereit. Diese sind für die Service-zu-Service-Nutzung vorgesehen (Überwachung, Orchestrierung, Client-Kompatibilitätsprüfungen) und erfordern keinen Authorization-Header.

EndpunktMethodeBeschreibungBeispielantwort
/healthGETLiveness-Sonde. Gibt 200 OK mit leerem Body zurück, sobald der Server Anfragen annimmt.(leerer Body)
/infoGETGibt die MCP-Serverversion als JSON zurück. Nützlich zur Überprüfung der bereitgestellten Serverversion.{"version":"1.16.0"}

Diese Endpunkte sind beim Ausführen mit dem Stdio-Transport nicht verfügbar.

Benutzerdefinierte Zertifikate

Wenn Ihr SonarQube Server ein selbstsigniertes Zertifikat oder ein Zertifikat einer privaten Zertifizierungsstelle (CA) verwendet, können Sie dem Container benutzerdefinierte Zertifikate hinzufügen, die automatisch installiert werden.

Konfiguration

Verwendung von Volume-Mount

Mounten Sie ein Verzeichnis mit Ihren Zertifikaten, wenn Sie den Container ausführen:

docker run --init --pull=always -i --rm \
  -v /path/to/your/certificates/:/usr/local/share/ca-certificates/:ro \
  -e SONARQUBE_TOKEN="<token>" \
  -e SONARQUBE_URL="<url>" \
  sonarsource/sonarqube-mcp

Unterstützte Zertifikatsformate

Der Container unterstützt die folgenden Zertifikatsformate:

  • .crt-Dateien (PEM- oder DER-kodiert)
  • .pem-Dateien (PEM-kodiert)

MCP-Konfiguration mit Zertifikaten

Bei Verwendung benutzerdefinierter Zertifikate können Sie Ihre MCP-Konfiguration ändern, um die Zertifikate zu mounten:

{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run",
      "--init",
      "--pull=always",
      "-i",
      "--rm",
      "-v",
      "/path/to/your/certificates/:/usr/local/share/ca-certificates/:ro",
      "-e",
      "SONARQUBE_TOKEN",
      "-e",
      "SONARQUBE_URL",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_URL": "<url>"
    }
  }
}

Hinweis: Führen Sie den Server aus einer JAR statt aus dem Container aus? Der Volume-Mount oben installiert Zertifikate in den Betriebssystem-Truststore des Containers, den der Server ebenfalls liest. Wenn Sie den Betriebssystem-Truststore nicht verwenden können – insbesondere unter Windows, wo er nicht berücksichtigt wird – weisen Sie die JVM auf einen Java-Truststore, der das CA-Zertifikat enthält: -Djavax.net.ssl.trustStore=/path/to/truststore.p12 -Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.trustStorePassword=<passphrase>. Er wird zusätzlich zu den standardmäßig vertrauenswürdigen Zertifikaten hinzugefügt.

Proxy

Der SonarQube MCP Server unterstützt HTTP- und SOCKS5-Proxys über standardmäßige Java-Proxy-Systemeigenschaften.

Konfiguration

HTTP/HTTPS-Proxy

Sie können Proxy-Einstellungen mithilfe von Java-Systemeigenschaften konfigurieren. Diese können als Umgebungsvariablen festgelegt oder als JVM-Argumente übergeben werden.

Häufige Proxy-Eigenschaften:

EigenschaftBeschreibungBeispiel
http.proxyHostHTTP-Proxy-Hostnameproxy.example.com
http.proxyPortHTTP-Proxy-Port8080
https.proxyHostHTTPS-Proxy-Hostnameproxy.example.com
https.proxyPortHTTPS-Proxy-Port8443
http.nonProxyHostsHosts, die den Proxy umgehen (durch senkrechte Striche getrennt)localhost|127.0.0.1|*.internal.com

HTTP/HTTPS-Proxy-Authentifizierung:

EigenschaftBeschreibungBeispiel
http.proxyUserHTTP-Proxy-Benutzernamemyuser
http.proxyPasswordHTTP-Proxy-Passwortmypassword
https.proxyUserHTTPS-Proxy-Benutzernamemyuser
https.proxyPasswordHTTPS-Proxy-Passwortmypassword

SOCKS5-Proxy

SOCKS5-Proxys werden unterstützt.

EigenschaftBeschreibungStandardBeispiel
socksProxyHostSOCKS5-Proxy-Hostnamelocalhost
socksProxyPortSOCKS5-Proxy-Port10801080
java.net.socks.usernameSOCKS5-Benutzername (falls Authentifizierung erforderlich)myuser
java.net.socks.passwordSOCKS5-Passwort (falls Authentifizierung erforderlich)mypassword

Client-Zertifikat (Gegenseitiges TLS)

Wenn Ihr SonarQube Server verlangt, dass Clients während des TLS-Handshakes ein Zertifikat vorlegen (gegenseitiges TLS), können Sie einen PKCS12-Keystore bereitstellen, indem Sie ihn in den Container mounten und seinen Speicherort über JAVA_OPTS übergeben.

Konfiguration

Verwenden eines PKCS12-Keystores

Mounten Sie Ihre .p12- oder .pfx-Datei in den Container und setzen Sie die Umgebungsvariable JAVA_OPTS mit den Keystore-Eigenschaften:

docker run --init --pull=always -i --rm \
  -v /path/to/client.p12:/etc/ssl/mcp/client.p12:ro \
  -e JAVA_OPTS="-Djavax.net.ssl.keyStore=/etc/ssl/mcp/client.p12 -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=<passphrase>" \
  -e SONARQUBE_TOKEN="<token>" \
  -e SONARQUBE_URL="<url>" \
  sonarsource/sonarqube-mcp

Hinweis: Die Zertifikatsdatei muss für den Containerprozess lesbar sein. Überprüfen und korrigieren Sie bei Bedarf die Berechtigungen:

ls -la /path/to/client.p12       # look for -rw-r--r-- (644) or wider
chmod 644 /path/to/client.p12    # grant read access to the container user

Lassen Sie -Djavax.net.ssl.keyStorePassword weg, wenn der Keystore keine Passphrase hat. Beachten Sie, dass die hier verwendete Passphrase über docker inspect oder die Prozessliste sichtbar wäre.

MCP-Konfiguration mit einem Client-Zertifikat

{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run", "--init", "--pull=always", "-i", "--rm",
      "-v", "/path/to/client.p12:/etc/ssl/mcp/client.p12:ro",
      "-e", "JAVA_OPTS",
      "-e", "SONARQUBE_TOKEN",
      "-e", "SONARQUBE_URL",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "JAVA_OPTS": "-Djavax.net.ssl.keyStore=/etc/ssl/mcp/client.p12 -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=<passphrase>",
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_URL": "<url>"
    }
  }
}

Verwenden eines PKCS12-Keystores mit einer eigenständigen JAR

Wenn Sie den Server aus einer JAR ausführen, übergeben Sie die Keystore-Eigenschaften als JVM-Argumente vor -jar:

java \
  -Djavax.net.ssl.keyStore=/path/to/client.p12 \
  -Djavax.net.ssl.keyStoreType=PKCS12 \
  -Djavax.net.ssl.keyStorePassword=<passphrase> \
  -jar <path_to_sonarqube_mcp_server_jar>

Lassen Sie -Djavax.net.ssl.keyStorePassword weg, wenn der Keystore keine Passphrase hat.

MCP-Konfiguration mit einem Client-Zertifikat (JAR)

{
  "sonarqube": {
    "command": "java",
    "args": [
      "-Djavax.net.ssl.keyStore=/path/to/client.p12",
      "-Djavax.net.ssl.keyStoreType=PKCS12",
      "-Djavax.net.ssl.keyStorePassword=<passphrase>",
      "-jar",
      "<path_to_sonarqube_mcp_server_jar>"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_URL": "<url>"
    }
  }
}

Hinweis: PEM-Zertifikats- und Schlüsseldateien (separate .crt-/.key-Dateien) müssen zuerst in das PKCS12-Format konvertiert werden. Verwenden Sie openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 zur Konvertierung.

Werkzeuge

Analyse

  • analyze_code_snippet – Analysiert Dateiinhalte mit SonarQube-Analysatoren, um Codequalitäts- und Sicherheitsprobleme zu identifizieren. Analysiert für genaue Ergebnisse immer den vollständigen Dateiinhalt. Optional können Ergebnisse auf einen bestimmten Code-Ausschnitt gefiltert werden.

    Veraltet: analyze_code_snippet wird in einer zukünftigen Version entfernt. Verbinden Sie SonarQube for IDE, um analyze_file_list zu verwenden, oder aktivieren Sie die Vortex-Analyse für Ihre Organisation, um run_advanced_code_analysis zu verwenden (siehe unten).

    Verwendung:

    • Mit gemountetem Arbeitsbereich (empfohlen): Übergeben Sie filePath (projektrelativ) – der Server liest die Datei direkt und hält den Dateiinhalt aus dem Agenten-Kontextfenster heraus
    • Ohne Arbeitsbereich-Mount: Übergeben Sie den vollständigen fileContent für eine vollständige Dateianalyse (meldet alle Probleme)
    • Fügen Sie optional codeSnippet hinzu, um Ergebnisse zu filtern – nur Probleme innerhalb des Ausschnitts werden gemeldet (Ausschnittposition wird automatisch erkannt)

    Parameter:

    • projectKey – Der SonarQube-Projektschlüssel – Erforderliche Zeichenkette (Ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • filePath – Projektrelativer Pfad der zu analysierenden Datei (z. B. src/main/java/MyClass.java). Wird verwendet, wenn der Arbeitsbereich unter /app/mcp-workspace gemountet ist – Zeichenkette
    • fileContent – Vollständiger Dateiinhalt als Zeichenkette. Erforderlich, wenn der Arbeitsbereich nicht gemountet ist – Zeichenkette
    • codeSnippet – Code-Ausschnitt zum Filtern von Problemen (muss mit dem Inhalt in fileContent übereinstimmen) – Zeichenkette
    • language – Sprache des Codes (z. B. „java", „python", „js", „ts", „tsx", „jsx") – Zeichenkette
    • scope – Geltungsbereich der Datei: MAIN oder TEST (Standard: MAIN) – Zeichenkette

    Unterstützte Sprachen: Java, Kotlin, Python, Ruby, Go, JavaScript (js, jsx), TypeScript (ts, tsx), JSP, PHP, XML, HTML, CSS, CloudFormation, Kubernetes, Terraform, Azure Resource Manager, Ansible, Docker, Erkennung von Geheimnissen

Wenn die Integration mit SonarQube for IDE aktiviert ist: (diese beiden Werkzeuge sind sowohl im analysis- als auch im ide-Werkzeugsatz gekennzeichnet)

  • analyze_file_list – Analysiert Dateien im aktuellen Arbeitsverzeichnis mithilfe von SonarQube for IDE. Dieses Werkzeug verbindet sich mit einer laufenden SonarQube-for-IDE-Instanz, um eine Codequalitätsanalyse für eine Liste von Dateien durchzuführen.

    • file_absolute_paths – Liste der absoluten Dateipfade zur Analyse – Erforderliches String[]
  • toggle_automatic_analysis – Aktiviert oder deaktiviert die automatische Analyse von SonarQube for IDE. Wenn aktiviert, analysiert SonarQube for IDE Dateien automatisch, wenn sie im Arbeitsverzeichnis geändert werden. Wenn deaktiviert, ist die automatische Analyse ausgeschaltet.

    • enabled – Aktiviert oder deaktiviert die automatische Analyse – Erforderlicher Boolean

Wenn die Vortex-Analyse für Ihre SonarQube-Cloud-Organisation aktiviert ist:

Voraussetzung: Der Arbeitsbereich muss unter /app/mcp-workspace gemountet sein

  • run_advanced_code_analysis – Führt eine Vortex-Analyse in SonarQube Cloud für eine einzelne Datei durch. Die Organisation wird aus der MCP-Konfiguration abgeleitet.
    • projectKey – Der Schlüssel des Projekts – Erforderliche Zeichenkette (Ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • branch – Zweigname, der zum Abrufen des letzten Analysekontexts verwendet wird – Erforderliche Zeichenkette
    • filePath – Projektrelativer Pfad der zu analysierenden Datei (z. B. src/main/java/MyClass.java) – Erforderliche Zeichenkette
    • fileScope – Definiert, aus welchem Geltungsbereich die Datei stammt: ‚MAIN' oder ‚TEST' (Standard: MAIN) – Zeichenkette

Abdeckung

  • search_files_by_coverage – Sucht nach Dateien in einem Projekt, sortiert nach Abdeckung (aufsteigend – schlechteste Abdeckung zuerst). Dieses Werkzeug hilft dabei, Dateien zu identifizieren, die Verbesserungen der Testabdeckung benötigen.

    • projectKey – Der Projektschlüssel, in dem gesucht werden soll – Erforderliche Zeichenkette (Ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • branch – Optionaler Zweigname für die zweigbasierte Analyse. Verwenden Sie list_branches, um gültige Namen zu ermitteln – Zeichenkette
    • pullRequest – Optionaler Pull-Request-Schlüssel/ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln – Zeichenkette
    • maxCoverage – Maximaler Abdeckungsschwellenwert (0–100). Gibt nur Dateien mit einer Abdeckung <= diesem Wert zurück – Zahl
    • pageIndex – Seitenindex (1-basiert, Standard: 1) – Zahl
    • pageSize – Seitengröße (Standard: 100, max: 500) – Zahl
  • get_file_coverage_details – Ruft zeilenweise Abdeckungsinformationen für eine bestimmte Datei ab, einschließlich der genauen Zeilen, die nicht abgedeckt sind, und der Zeilen mit teilweise abgedeckten Zweigen. Dieses Werkzeug hilft dabei, genau zu identifizieren, wo Testabdeckung hinzugefügt werden sollte. Verwenden Sie es nach der Identifizierung von Dateien mit geringer Abdeckung über search_files_by_coverage.

    • key – Dateischlüssel (z. B. my_project:src/foo/Bar.java) – Erforderliche Zeichenkette
    • branch – Optionaler Zweigname für die zweigbasierte Analyse. Verwenden Sie list_branches, um gültige Namen zu ermitteln – Zeichenkette
    • pullRequest – Optionaler Pull-Request-Schlüssel/ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln – Zeichenkette
    • from – Erste zu analysierende Zeile (1-basiert, Standard: 1) – Zahl
    • to – Letzte zu analysierende Zeile (einschließlich). Wenn nicht angegeben, werden alle Zeilen zurückgegeben – Zahl

Abhängigkeitsrisiken

Hinweis: Abhängigkeitsrisiken sind nur verfügbar, wenn eine Verbindung zu SonarQube Server 2025.4 Enterprise oder höher mit aktiviertem SonarQube Advanced Security besteht.

  • search_dependency_risks – Sucht nach Problemen der Software-Zusammensetzungsanalyse (Abhängigkeitsrisiken) eines SonarQube-Projekts, zusammen mit Versionen, die im analysierten Projekt, in der Anwendung oder im Portfolio vorkommen.
    • projectKey – Projektschlüssel – Erforderliche Zeichenkette (Ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • branch – Optionaler Zweigname für die zweigbasierte Analyse. Verwenden Sie list_branches, um gültige Namen zu ermitteln – Zeichenkette
    • pullRequest – Optionaler Pull-Request-Schlüssel/ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln – Zeichenkette
    • pageIndex – Optionaler Seitenindex (1-basiert, Standard: 1) – Ganzzahl
    • pageSize – Optionale Seitengröße. Muss größer als 0 und kleiner oder gleich 500 sein (Standard: 100) – Ganzzahl

Unternehmen

Hinweis: Unternehmen sind nur verfügbar, wenn eine Verbindung zu SonarQube Cloud besteht.

  • list_enterprises – Listet die Unternehmen in SonarQube Cloud auf, auf die Sie Zugriff haben. Verwenden Sie dieses Werkzeug, um Unternehmens-IDs zu ermitteln, die mit anderen Werkzeugen verwendet werden können.
    • enterpriseKey – Optionaler Unternehmensschlüssel zum Filtern der Ergebnisse – Zeichenkette

Probleme

  • change_sonar_issue_status – Ändert den Status eines SonarQube-Problems auf „accept", „falsepositive" oder um ein Problem wieder zu öffnen („reopen").

    • key – Problemschlüssel – Erforderliche Zeichenkette
    • status – Neuer Status des Problems – Erforderliche Aufzählung {"accept", "falsepositive", "reopen"}_
  • search_sonar_issues_in_projects – Sucht nach SonarQube-Problemen in den Projekten meiner Organisation.

    • projectKeys – Optionale Liste von SonarQube-Projektschlüsseln – String[]
    • branch – Optionaler Zweigname für die zweigbasierte Analyse. Verwenden Sie list_branches, um gültige Namen zu ermitteln – Zeichenkette
    • pullRequest – Optionaler Pull-Request-Schlüssel/ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln – Zeichenkette
    • severities – Optionale Liste von Schweregraden zum Filtern. Mögliche Werte: INFO, LOW, MEDIUM, HIGH, BLOCKER – String[]
    • impactSoftwareQualities – Optionale Liste von Softwarequalitäten zum Filtern. Mögliche Werte: MAINTAINABILITY, RELIABILITY, SECURITY – String[]
    • issueStatuses – Optionale Liste von Problemstatus zum Filtern. Mögliche Werte: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX – String[]
    • issueKey – Optionaler Problemschlüssel zum Abrufen eines bestimmten Problems – Zeichenkette
    • pageIndex – Optionaler 1-basierter Seitenindex (Standard: 1) – Ganzzahl
    • pageSize – Optionale Seitengröße. Muss größer als 0 und kleiner oder gleich 500 sein (Standard: 100) – Ganzzahl

Sicherheits-Hotspots

  • search_security_hotspots – Sucht nach Sicherheits-Hotspots in einem SonarQube-Projekt.

    • projectKey – Projekt- oder Anwendungsschlüssel – Erforderliche Zeichenkette (Ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • hotspotKeys – Kommagetrennte Liste spezifischer Sicherheits-Hotspot-Schlüssel zum Abrufen – String[]
    • branch – Optionaler Zweigname für die zweigbasierte Analyse. Verwenden Sie list_branches, um gültige Namen zu ermitteln – Zeichenkette
    • pullRequest – Optionaler Pull-Request-Schlüssel/ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln – Zeichenkette
    • files – Optionale Liste von Dateipfaden zum Filtern – String[]
    • status – Optionaler Statusfilter: TO_REVIEW, REVIEWED – Zeichenkette
    • resolution – Optionaler Auflösungsfilter: FIXED, SAFE, ACKNOWLEDGED – Zeichenkette
    • sinceLeakPeriod – Filtert Hotspots, die seit dem Leak-Zeitraum (neuer Code) erstellt wurden – Boolean
    • onlyMine – Nur Hotspots anzeigen, die mir zugewiesen sind – Boolean
    • pageIndex – Optionaler 1-basierter Seitenindex (Standard: 1) – Ganzzahl
    • pageSize – Optionale Seitengröße. Muss größer als 0 und kleiner oder gleich 500 sein (Standard: 100) – Ganzzahl
  • show_security_hotspot – Ruft detaillierte Informationen zu einem bestimmten Sicherheits-Hotspot ab, einschließlich Regeldetails, Codekontext, Abläufen und Kommentaren.

    • hotspotKey – Schlüssel des Sicherheits-Hotspots – Erforderliche Zeichenkette
  • change_security_hotspot_status – Überprüft einen Sicherheits-Hotspot, indem sein Status geändert wird. Beim Markieren als REVIEWED müssen Sie eine Auflösung angeben (FIXED, SAFE oder ACKNOWLEDGED).

    • hotspotKey – Schlüssel des Sicherheits-Hotspots – Erforderliche Zeichenkette
    • status – Neuer Status – Erforderliche Aufzählung {"TO_REVIEW", "REVIEWED"}
    • resolution – Auflösung, wenn der Status REVIEWED ist – Aufzählung {"FIXED", "SAFE", "ACKNOWLEDGED"}
    • comment – Optionaler Überprüfungskommentar – Zeichenkette

Sprachen

  • list_languages – Listet alle in dieser SonarQube-Instanz unterstützten Programmiersprachen auf.
    • q – Optionales Muster, mit dem Sprachschlüssel/-namen abgeglichen werden – Zeichenkette

Messwerte

  • get_component_measures – Ruft SonarQube-Messwerte für eine Komponente ab (Projekt, Verzeichnis, Datei).
    • projectKey – Der Projektschlüssel – Erforderliche Zeichenkette, wenn SONARQUBE_PROJECT_KEY nicht konfiguriert ist
    • branch – Optionaler Zweigname für die zweigbasierte Analyse. Verwenden Sie list_branches, um gültige Namen zu ermitteln – Zeichenkette
    • metricKeys – Optionale Metrikschlüssel zum Abrufen (z. B. ncloc, complexity, violations, coverage) – String[]
    • pullRequest – Optionaler Pull-Request-Schlüssel/ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln – Zeichenkette

Metriken

  • search_metrics – Sucht nach SonarQube-Metriken.
    • pageIndex – Optionaler 1-basierter Seitenindex (Standard: 1) – Ganzzahl
    • pageSize – Optionale Seitengröße. Muss größer als 0 und kleiner oder gleich 500 sein (Standard: 100) – Ganzzahl

Portfolios

  • list_portfolios - Listet Unternehmensportfolios in SonarQube mit Filter- und Paginierungsoptionen auf.

    Für SonarQube Server:

    • q - Optionale Suchanfrage zum Filtern von Portfolios nach Name oder Schlüssel - String
    • favorite - Wenn true, werden nur favorisierte Portfolios zurückgegeben - Boolean
    • pageIndex - Optionale 1-basierte Seitennummer (Standard: 1) - Integer
    • pageSize - Optionale Seitengröße, maximal 500 (Standard: 100) - Integer

    Für SonarQube Cloud:

    • enterpriseId - Enterprise-UUID. Kann nur weggelassen werden, wenn der Parameter 'favorite' mit dem Wert true angegeben ist - String
    • q - Optionale Suchanfrage zum Filtern von Portfolios nach Name - String
    • favorite - Muss true sein, wenn der Parameter 'enterpriseId' weggelassen wird. Wenn true, werden nur Portfolios zurückgegeben, die vom angemeldeten Benutzer favorisiert wurden. Kann nicht true sein, wenn 'draft' true ist - Boolean
    • draft - Wenn true, werden nur Entwürfe zurückgegeben, die vom angemeldeten Benutzer erstellt wurden. Kann nicht true sein, wenn 'favorite' true ist - Boolean
    • pageIndex - Optionaler Index der abzurufenden Seite (Standard: 1) - Integer
    • pageSize - Optionale Größe der abzurufenden Seite (Standard: 50) - Integer

Projekte

  • search_my_sonarqube_projects - Findet SonarQube-Projekte. Die Antwort ist paginiert.

    • pageIndex - Optionaler 1-basierter Seitenindex (Standard: 1) - Integer
    • pageSize - Optionale Seitengröße. Muss größer als 0 und kleiner oder gleich 500 sein (Standard: 500) - Integer
    • q - Optionale Suchanfrage zum Filtern von Projekten nach Name (Teilübereinstimmung) oder Schlüssel (genaue Übereinstimmung) - String
  • list_branches - Listet analysierte Branches für ein Projekt auf.

    • SonarQube Cloud: gibt langlebige (LONG) und kurzlebige (SHORT) Branches mit type- und mergeBranch-Feldern zurück. Optionaler branchTypes-Filter: ALL (Standard), LONG oder SHORT.
    • SonarQube Server: gibt alle analysierten Branches zurück (Name, Qualitätsgate, Analysedatum). Kein type-, mergeBranch- oder branchTypes-Filter.
    • Verwenden Sie die zurückgegebenen Branch-Namen als Parameter branch für andere Tools. Für Pull-Request-Analysen verwenden Sie stattdessen list_pull_requests.
    • projectKey - Projekt-Schlüssel (z. B. my_project) - Erforderlicher String (Ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • branchTypes - (Nur SonarQube Cloud) Optionaler Filter: ALL (Standard), LONG oder SHORT - Enum {"ALL", "LONG", "SHORT"}
  • list_pull_requests - Listet alle Pull Requests für ein Projekt auf. Verwenden Sie dieses Tool, um Pull Requests für die mit Pull Requests versehene Analyse (Abdeckung, Issues, Qualitätsgate) zu ermitteln. Gibt den Pull-Request-Schlüssel/die Pull-Request-ID zurück, der/die mit anderen Tools verwendet werden kann. Für eine analyse auf Branch-Basis ohne Pull Requests verwenden Sie stattdessen list_branches.

    • projectKey - Projekt-Schlüssel (z. B. my_project) - Erforderlicher String (Ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)

Qualitätsgates

  • get_project_quality_gate_status - Ruft den Qualitätsgate-Status für das SonarQube-Projekt ab.

    • analysisId - Optionale Analyse-ID - String
    • branch - Optionaler Branch-Name für die Analyse auf Branch-Basis. Verwenden Sie list_branches, um gültige Namen zu ermitteln - String
    • projectId - Optionale Projekt-ID - String
    • projectKey - Optionaler Projekt-Schlüssel - String
    • pullRequest - Optionaler Pull-Request-Schlüssel/-ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln - String
  • list_quality_gates - Listet alle Qualitätsgates in meinem SonarQube auf.

Regeln

  • show_rule - Zeigt detaillierte Informationen zu einer SonarQube-Regel an.
    • key - Regelschlüssel - Erforderlicher String

Duplikate

  • search_duplicated_files - Sucht nach Dateien mit Codeduplikaten in einem SonarQube-Projekt. Standardmäßig werden automatisch alle duplizierten Dateien über alle Seiten abgerufen (maximal 10.000 Dateien). Gibt nur Dateien mit Duplikaten zurück.

    • projectKey - Projekt-Schlüssel - Erforderlicher String (Ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • branch - Optionaler Branch-Name für die Analyse auf Branch-Basis. Verwenden Sie list_branches, um gültige Namen zu ermitteln - String
    • pullRequest - Optionaler Pull-Request-Schlüssel/-ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln - String
    • pageSize - Optionale Anzahl von Ergebnissen pro Seite für manuelle Paginierung (maximal 500). Wenn nicht angegeben, werden automatisch alle duplizierten Dateien abgerufen - Integer
    • pageIndex - Optionale Seitennummer für manuelle Paginierung (beginnt bei 1). Wenn nicht angegeben, werden automatisch alle duplizierten Dateien abgerufen - Integer
  • get_duplications - Ruft Duplikate für eine Datei ab. Erfordert die Berechtigung "Browse" für das Projekt der Datei.

    • key - Dateischlüssel - Erforderlicher String
    • branch - Optionaler Branch-Name für die Analyse auf Branch-Basis. Verwenden Sie list_branches, um gültige Namen zu ermitteln - String
    • pullRequest - Optionaler Pull-Request-Schlüssel/-ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln - String

Quellen

  • get_raw_source - Ruft Quellcode als Rohtext von SonarQube ab. Erfordert die Berechtigung "Quellcode anzeigen" für die Datei.

    • key - Dateischlüssel - Erforderlicher String
    • branch - Optionaler Branch-Name für die Analyse auf Branch-Basis. Verwenden Sie list_branches, um gültige Namen zu ermitteln - String
    • pullRequest - Optionaler Pull-Request-Schlüssel/-ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln - String
  • get_scm_info - Ruft SCM-Informationen von SonarQube-Quelldateien ab. Erfordert die Berechtigung "Quellcode anzeigen" für das Projekt der Datei.

    • key - Dateischlüssel - Erforderlicher String
    • commits_by_line - Zeilen nach SCM-Commit gruppieren, wenn der Wert false ist, andernfalls Commits für jede Zeile anzeigen - String
    • from - Erste zurückzugebende Zeile. Beginnt bei 1 - Number
    • to - Letzte zurückzugebende Zeile (einschließlich) - Number

System

Hinweis: System-Tools sind nur verfügbar, wenn eine Verbindung zu SonarQube Server besteht.

  • get_system_health - Ruft den Gesundheitsstatus der SonarQube-Serverinstanz ab. Gibt GREEN (voll funktionsfähig), YELLOW (verwendbar, aber Aufmerksamkeit erforderlich) oder RED (nicht betriebsbereit) zurück.

  • get_system_info - Ruft detaillierte Informationen zur SonarQube-Serversystemkonfiguration ab, einschließlich JVM-Zustand, Datenbank, Suchindizes und Einstellungen. Erfordert die Berechtigung "Administrieren".

  • get_system_logs - Ruft SonarQube-Server-Systemprotokolle im Klartextformat ab. Erfordert die Systemadministratorberechtigung.

    • name - Optionaler Name der abzurufenden Protokolle. Mögliche Werte: access, app, ce, deprecation, es, web. Standard: app - String
  • ping_system - Pingt das SonarQube-Serversystem, um zu prüfen, ob es aktiv ist. Gibt 'pong' als Klartext zurück.

  • get_system_status - Ruft Statusinformationen zu SonarQube Server ab. Gibt Status (STARTING, UP, DOWN, RESTARTING, DB_MIGRATION_NEEDED, DB_MIGRATION_RUNNING), Version und ID zurück.

Webhooks

  • create_webhook - Erstellt einen neuen Webhook für die SonarQube-Organisation oder das SonarQube-Projekt. Erfordert die Berechtigung "Administrieren" für das angegebene Projekt oder die globale Berechtigung "Administrieren".

    • name - Webhook-Name - Erforderlicher String
    • url - Webhook-URL - Erforderlicher String
    • projectKey - Optionaler Projekt-Schlüssel für projektspezifische Webhooks - String
    • secret - Optionales Webhook-Geheimnis zur Sicherung der Webhook-Nutzlast - String
  • list_webhooks - Listet alle Webhooks für die SonarQube-Organisation oder das SonarQube-Projekt auf. Erfordert die Berechtigung "Administrieren" für das angegebene Projekt oder die globale Berechtigung "Administrieren".

    • projectKey - Optionaler Projekt-Schlüssel zum Auflisten projektspezifischer Webhooks - String

Kontextanreicherung

Architektur-Tools
  • search_by_signature_patterns - Findet Codeelemente (Klassen, Methoden, Schnittstellen, ...) anhand ihrer Deklarationssignaturen mit Regex-Mustern.

    • include_code_regex_list - Liste von Regex-Mustern zum Abgleichen von Signaturen - Erforderliches String[]
    • exclude_code_regex_list - Liste von Regex-Mustern, die von den Ergebnissen ausgeschlossen werden sollen - String[]
    • include_glob - Glob-Muster für den Dateifilter (z. B. *.java) - String
    • exclude_glob - Glob-Muster für Dateiausschluss - String
    • fields - Kommagetrennte Liste der Felder, die in die Antwort aufgenommen werden sollen - String
    • limit - Maximale Anzahl der zurückzugebenden Ergebnisse (Standard: 10) - Integer
    • regex_lists_operator - Wie mehrere Muster kombiniert werden: OR (Standard) oder AND - String
  • search_by_body_patterns - Findet Codeelemente anhand ihres Implementierungsrumpfs mit Regex-Mustern. Nützlich, um herauszufinden, wo APIs oder Muster tatsächlich verwendet werden.

    • include_code_regex_list - Liste von Regex-Mustern zum Abgleichen von Coderümpfen - Erforderliches String[]
    • exclude_code_regex_list - Liste von Regex-Mustern, die von den Ergebnissen ausgeschlossen werden sollen - String[]
    • include_glob - Glob-Muster für den Dateifilter - String
    • exclude_glob - Glob-Muster für Dateiausschluss - String
    • fields - Kommagetrennte Liste der Felder, die in die Antwort aufgenommen werden sollen - String
    • limit - Maximale Anzahl der zurückzugebenden Ergebnisse (Standard: 10) - Integer
    • regex_lists_operator - Wie mehrere Muster kombiniert werden: OR (Standard) oder AND - String
  • get_upstream_call_flow - Verfolgt, welche Funktionen eine bestimmte Funktion aufrufen. Nützlich, um alle Aufrufer und Einstiegspunkte zu finden und zu verstehen, was bricht, wenn sich eine Signatur ändert.

    • fqn - Vollqualifizierter Name der Funktion - Erforderlicher String
    • depth - Tiefe der Aufrufkette (0= nur Funktion, 1= direkte Aufrufer, usw.) - Integer
    • fields - Kommagetrennte Liste der Felder, die in die Antwort aufgenommen werden sollen - String
  • get_downstream_call_flow - Verfolgt, welche Funktionen eine bestimmte Funktion aufruft. Nützlich für Auswirkungsanalysen und das Verständnis des Ausführungsflusses.

    • fqn - Vollqualifizierter Name der Funktion - Erforderlicher String
    • depth - Tiefe der Aufrufkette (0= nur Funktion, 1= direkte Aufgerufene, usw.) - Integer
    • fields - Kommagetrennte Liste der Felder, die in die Antwort aufgenommen werden sollen - String
  • get_source_code - Ruft den vollständigen Quellcode (Signatur und Rumpf) für ein Codeelement anhand seines vollqualifizierten Namens ab.

    • fqn - Vollqualifizierter Name des Elements - Erforderlicher String
    • fields - Kommagetrennte Liste der Felder, die in die Antwort aufgenommen werden sollen - String
  • get_type_hierarchy - Ruft die vollständige Vererbungshierarchie für eine klassenähnliche Struktur ab (Klasse, Schnittstelle, Enum, Record, Ausnahme, Struct). Unverzichtbar für das Verständnis von Vererbungsbäumen und Refactoring.

    • fqn - Vollqualifizierter Name der klassenähnlichen Struktur - Erforderlicher String
    • fields - Kommagetrennte Liste der Felder, die in die Antwort aufgenommen werden sollen - String
  • get_references - Ruft direkte eingehende und ausgehende Codereferenzen für eine Klasse oder ein Modul ab. Gibt nur direkte (nicht transitive) Referenzen zurück.

    • fqn - Vollqualifizierter Name der Klasse oder des Moduls - Erforderlicher String
    • fields - Kommagetrennte Liste der Felder, die in die Antwort aufgenommen werden sollen - String
  • get_current_architecture - Ruft einen hierarchischen Architekturgraphen ab, der nach Pfadpräfix und Tiefe gefiltert ist. Nützlich zum Erkunden der Modulstruktur und von Abhängigkeiten auf hoher Ebene.

    • depth - Hierarchietiefe (0= nur Stamm, 1= Stamm + Kinder, usw.) - Erforderlicher Integer
    • path_prefix - Optionales Pfadpräfix zum Filtern von Knoten (z. B. com.example.service) - String
    • ecosystem - Optionales Ökosystem zum Filtern (java, cs, py, js, ts) - String
  • get_intended_architecture - Ruft benutzerdefinierte Architekturbeschränkungen ab, die festlegen, welche Module von anderen abhängen dürfen.

Richtlinien-Tools - **get_guidelines** - Ruft Codierungsrichtlinien basierend auf SonarQube-Projektproblemen, Katalogkategorien oder einer Kombination aus beidem ab. - `mode` - Abrufmodus für Richtlinien: `project_based`, `category_based` oder `combined` - _Erforderlicher String_ - `categories` - Liste der Kategorienamen (erforderlich für die Modi `category_based` und `combined`) - _String[]_ - `languages` - Liste der Zielsprachen im SonarQube-Repository-Schlüsselformat (erforderlich, wenn `categories` angegeben ist) - _String[]_ - `file_paths` - Optionale Liste von Dateipfaden zum Filtern der Richtlinien - _String[]_
Drittanbieter-Abhängigkeitstools
  • check_dependency - Prüft eine Drittanbieter-Abhängigkeit auf Sicherheitslücken, Supply-Chain-Malware und Lizenzkonformität, bevor Sie sie hinzufügen oder aktualisieren.
    • purl - Package-URL (purl) mit Version, gemäß purl-spec. Format: pkg:<type>/<namespace>/<name>@<version> (z. B. pkg:npm/lodash@4.17.21, pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1, pkg:pypi/django@3.2.0) - Erforderlicher String
Umgebungsvariablen für Context Augmentation
VariableBeschreibungErforderlichStandard
SONARQUBE_URLSonarQube-Cloud-URLJahttps://sonarcloud.io
SONARQUBE_TOKENAuthentifizierungstokenJaKeine
SONARQUBE_ORGOrganisationsschlüssel in SonarQube CloudJaKeine
SONARQUBE_PROJECT_KEYProjektschlüssel in SonarQube CloudJaKeine
SONAR_SQ_BRANCHExplizite SonarQube-Branch-Überschreibung *NeinKeine
SONARQUBE_DEBUG_ENABLEDDebug-Protokollierung aktivieren (zur Fehlerbehebung)NeinFalse
SONAR_LOG_LEVELProtokollierungsausführlichkeit (TRACE, DEBUG, INFO, WARNING, ERROR)NeinINFO
  • Anzugeben, wenn git nicht verwendet wird oder wenn der git-Branch-Name nicht mit dem Branch-Namen in SonarQube übereinstimmt.
Projektspezifische Konfiguration (empfohlen)

Exportieren Sie zunächst die SONARQUBE_TOKEN Umgebungsvariable mit einem gültigen Personal Access Token (PAT) für Ihr Projekt.

# macOS/Linux (Bash/Zsh)
export SONARQUBE_TOKEN="{<YourUserToken>}"

Mounten Sie dann den Projektarbeitsbereich, um dem Context-Augmentation-Server direkten Zugriff auf Ihre Quelldateien zu geben:

{
  "mcpServers": {
    "sonarqube-mcp-server": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm", "--pull=always",
        "-e", "SONARQUBE_URL",
        "-e", "SONARQUBE_TOKEN",
        "-e", "SONARQUBE_ORG",
        "-e", "SONARQUBE_PROJECT_KEY",
        "-e", "SONARQUBE_TOOLSETS",
        "-v", "/ABSOLUTE/PATH/TO/YOUR/PROJECT:/app/mcp-workspace:rw",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_URL": "https://sonarcloud.io",
        "SONARQUBE_ORG": "<YourOrganizationKey>",
        "SONARQUBE_PROJECT_KEY": "<YourProjectKey>",
        "SONARQUBE_TOOLSETS": "cag"
      }
    }
  }
}

Wichtig: In einer projektspezifischen Konfiguration setzen Sie SONARQUBE_TOKEN nicht in den env-Block. Exportieren Sie es als Umgebungsvariable (export SONARQUBE_TOKEN=...). Docker leitet es über -e SONARQUBE_TOKEN in den Container weiter.

Agentic Readiness

Hinweis: Agentic-Readiness-Tools sind nur in SonarQube Cloud verfügbar und erfordern, dass die Funktion für Ihre Organisation aktiviert ist.

  • start_agentic_readiness_assessment - Startet eine Agentic-Readiness-Bewertung für ein Projekt. Gibt sofort mit Status PENDING und einer assessmentId zurück. Verwenden Sie get_agentic_readiness_assessment, um auf Ergebnisse zu warten.

    • projectKey - Der Projektschlüssel - Erforderlicher String (Ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • branch - Zu bewertender Branch. Weglassen, um den Standard-Branch des Projekts zu verwenden - String
  • get_agentic_readiness_assessment - Ruft das Ergebnis einer Bewertung ab. Rufen Sie erneut mit derselben assessmentId auf, bis der Status COMPLETED, FAILED oder INTERRUPTED ist. Wenn abgeschlossen, werden die Gesamtstufe und eine Aufschlüsselung nach Säulen mit empfohlenen Maßnahmen und Belegen zurückgegeben.

    • assessmentId - Die von start_agentic_readiness_assessment zurückgegebene Bewertungs-ID - Erforderlicher String
  • list_agentic_readiness_assessments - Listet alle Bewertungen für ein Projekt auf, neueste zuerst. Verwenden Sie get_agentic_readiness_assessment für vollständige Ergebnisse auf Säulenebene.

    • projectKey - Der Projektschlüssel, für den Bewertungen aufgelistet werden sollen - Erforderlicher String (Ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • branch - Bewertungen nach Branch-Namen filtern. Weglassen, um Bewertungen für alle Branches aufzulisten - String
    • pageIndex - 1-basierter Seitenindex (Standard: 1) - Number
    • pageSize - Anzahl der Elemente pro Seite, max. 100 (Standard: 50) - Number

Beispiel-Prompts

Nachdem Sie den SonarQube-MCP-Server eingerichtet haben, finden Sie hier einige Beispiel-Prompts für häufige reale Szenarien:

Beheben eines fehlgeschlagenen Quality Gates
My quality gate is failing for my project. Can you help me understand why and fix the most critical issues?
The quality gate on my feature branch is red. What do I need to fix to get it passing before I can merge to main?
Pre-Release- und Pre-Merge-Prüfungen
I'm about to merge my pull request <#247> for the <web-app> project. Can you check if there are any quality issues I should address first?
We're deploying to production tomorrow. Can you check the quality gate status and alert me to any critical issues in this branch?
Verbesserung der Codequalität
I want to reduce technical debt in my project. What are the top issues I should prioritize?
Our code coverage dropped below 70%. Can you identify which files have the lowest coverage and help me improve it?
Verstehen und Beheben von Problemen
I have 15 new code smells in my latest commit. Can you explain what they are and help me fix them?
SonarQube flagged a critical security vulnerability in <AuthController.java>. What's the issue and how do I fix it?
Sicherheits- und Abhängigkeitsverwaltung
We need to pass a security audit. Can you check all our projects for security vulnerabilities and create a prioritized list of what needs to be fixed?
Are there any known vulnerabilities in our dependencies? Check this project for dependency risks.
Unterstützung bei der Code-Überprüfung
I just wrote this authentication function. Can you analyze it for security issues and code quality problems before I commit?
Review the changes in <src/database/migrations> for any potential bugs or security issues.
Überwachung der Projektgesundheit
Give me a health report for my project: quality gate status, number of bugs, Security Hotspots, and code coverage.
Compare code quality between our main branch and the develop branch. Are we introducing new issues?
Teamzusammenarbeit
What are the most common rule violations across all our projects? We might need to update our coding standards.
Show me all the issues that were marked as false positives in the last month. Are we seeing patterns that suggest our rules need adjustment?

Build

Bevorzugen Sie das Container-Image sonarsource/sonarqube-mcp.

Um den Server als eigenständiges JAR ohne Docker auszuführen, laden Sie ein vorgefertigtes Release aus dem SonarSource-Binärrepository herunter. Jede veröffentlichte Version wird dort als sonarqube-mcp-server-<version>.jar veröffentlicht (z. B. sonarqube-mcp-server-1.19.0.2785.jar).

Aus JAR ausführen

Laden Sie das JAR für die gewünschte Version aus dem Binärrepository herunter und konfigurieren Sie dann Ihren MCP-Client, um es mit Java 21 oder höher auszuführen:

  • Zur Verbindung mit SonarQube Cloud:
{
  "sonarqube": {
    "command": "java",
    "args": [
      "-jar",
      "<path_to_sonarqube_mcp_server_jar>"
    ],
    "env": {
      "STORAGE_PATH": "<path_to_your_mcp_storage>",
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_ORG": "<org>"
    }
  }
}
  • Zur Verbindung mit SonarQube Server:
{
  "sonarqube": {
    "command": "java",
    "args": [
      "-jar",
      "<path_to_sonarqube_mcp_server_jar>"
    ],
    "env": {
      "STORAGE_PATH": "<path_to_your_mcp_storage>",
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_URL": "<url>"
    }
  }
}
Aus dem Quellcode erstellen

Der SonarQube-MCP-Server erfordert zum Erstellen ein Java Development Kit (JDK) in Version 21 oder höher.

Führen Sie den folgenden Gradle-Befehl aus, um das Projekt zu bereinigen und die Anwendung zu erstellen:

./gradlew clean build -x test

Die JAR-Datei wird in build/libs/ erstellt.

Nach dem Hinzufügen oder Aktualisieren von Abhängigkeiten generieren Sie die Sperrdateien neu:

./gradlew :dependencies --write-locks
./gradlew :its:dependencies --write-locks

Verwenden Sie die obige Konfiguration Aus JAR ausführen und zeigen Sie mit <path_to_sonarqube_mcp_server_jar> auf das JAR in build/libs/.

Fehlerbehebung

Anwendungsprotokolle werden standardmäßig in die Datei STORAGE_PATH/logs/mcp.log geschrieben. Um die Dateiprotokollierung vollständig zu deaktivieren, setzen Sie SONARQUBE_LOG_TO_FILE_DISABLED=true.

Häufige Probleme

„Feature funktioniert nicht" oder „Fehlende Tools/Funktionalität"

Möglicherweise führen Sie ein veraltetes Docker-Image aus. Docker speichert Images lokal zwischen, sodass Sie keine automatischen Updates erhalten.

Lösung: Aktualisieren Sie auf die neueste Version:

docker pull sonarsource/sonarqube-mcp

Starten Sie nach dem Abrufen des neuesten Images Ihren MCP-Client neu, um die aktualisierte Version zu verwenden.

Optional können Sie das Flag --pull=always zu Ihrem docker-run-Befehl hinzufügen, um immer nach der neuesten Version zu suchen und sie abzurufen:

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

„Ich möchte eine bestimmte Version festlegen"

Durchsuchen Sie die verfügbaren Tags unter sonarsource/sonarqube-mcp und referenzieren Sie die gewünschte Version:

docker pull sonarsource/sonarqube-mcp:1.19.0.2785

docker run --init -i --rm \
  -e SONARQUBE_TOKEN -e SONARQUBE_ORG \
  sonarsource/sonarqube-mcp:1.19.0.2785

Verwenden Sie in Ihrer MCP-Client-Konfiguration sonarsource/sonarqube-mcp:<version> anstelle von sonarsource/sonarqube-mcp und entfernen Sie --pull=always, damit Docker das Image nicht stillschweigend aktualisiert.

Daten und Telemetrie

Dieser Server erfasst anonyme Nutzungsdaten und sendet sie an SonarSource, um das Produkt zu verbessern. Es werden weder Quellcode noch IP-Adressen erfasst, und SonarSource gibt die Daten nicht an Dritte weiter. Die Erfassung von Telemetriedaten kann mit der folgenden Systemeigenschaft oder Umgebungsvariable deaktiviert werden: TELEMETRY_DISABLED=true. Klicken Sie hier, um ein Beispiel der erfassten Daten zu sehen.

Lizenz

Copyright 2025 SonarSource.

Lizenziert unter der SONAR Source-Available License v1.0. Die Verwendung des SonarQube-MCP-Servers in Übereinstimmung mit dieser Dokumentation ist ein nicht-wettbewerblicher Zweck und daher unter der SSAL zulässig.

Ihre Nutzung von SonarQube über MCP unterliegt den SonarQube-Cloud-Nutzungsbedingungen oder den SonarQube-Server-Geschäftsbedingungen, einschließlich der Nutzung der Ergebnisdaten ausschließlich für Ihre internen Softwareentwicklungszwecke.