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?

  • Mit SonarQube Cloud oder Server verbinden — Konfigurieren Sie den Container sonarsource/sonarqube-mcp mit einem Token, Organisationsschlüssel oder einer Server-URL, um Ihren Assistenten mit SonarQube zu verbinden.
  • Codeausschnitte analysieren — Bitten Sie den Assistenten, einen Codeausschnitt oder eine Datei zu analysieren. Verwenden Sie dazu einen Workspace-Mount, damit Dateien direkt von der Festplatte gelesen werden können.
  • Issues suchen und verwalten — Finden und aktualisieren Sie SonarQube-Issues über das Toolset issues.
  • Security Hotspots überprüfen — Suchen und überprüfen Sie Security Hotspots über das Toolset security-hotspots.
  • Projekte und Quality Gates durchsuchen — Rufen Sie Projektschlüssel, Quality Gates, Regeln, Messwerte und Coverage-Daten ab.
  • Toolsets einschränken und schreibgeschützten Modus verwenden — Verwenden Sie SONARQUBE_TOOLSETS und SONARQUBE_READ_ONLY, um zu steuern, welche Tools geladen werden, und Schreibvorgänge zu blockieren.

Dokumentation

Sonar logo

Build Quality Gate Status

SonarQube MCP Server

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 außerdem die Analyse von Codeausschnitten direkt im Agent-Kontext.

Beginnen Sie mit der Schnelleinrichtung oder erfahren Sie mehr über die SonarQube-Produktfamilie.

Schnelleinrichtung

Bewährte Sicherheitspraktiken

🔒 Wichtig: Ihr SonarQube-Token ist eine vertrauliche Zugangsinformation. Befolgen Sie diese Sicherheitspraktiken:

Bei Verwendung von CLI-Befehlen:

  • Vermeiden Sie fest codierte Tokens in Befehlszeilenargumenten – sie werden im Shell-Verlauf gespeichert
  • Verwenden Sie Umgebungsvariablen – legen Sie Tokens in Umgebungsvariablen fest, bevor Sie Befehle ausführen

Bei Verwendung von Konfigurationsdateien:

  • Übernehmen Sie niemals Tokens in die Versionsverwaltung
  • Verwenden Sie nach Möglichkeit die Ersetzung durch Umgebungsvariablen in Konfigurationsdateien

🚀 Konfiguration generieren

Am schnellsten gelingt der Einstieg mit dem SonarQube MCP Server Configuration Generator – einem interaktiven Tool, das eine sofort einsatzbereite Konfiguration für den bevorzugten KI-Agent-Client erstellt.

Manuelle Einrichtung

Wenn Sie die Konfiguration lieber selbst vornehmen möchten, ist die einfachste Methode die Verwendung unseres Container-Images unter sonarsource/sonarqube-mcp. Verwenden Sie sonarsource/sonarqube-mcp für automatische Aktualisierungen (mit --pull=always) oder fixieren Sie die Version mit einem Versions-Tag (z. B. sonarsource/sonarqube-mcp:1.19.0.2785), um reproduzierbare Bereitstellungen zu gewährleisten. Einige Releases sind außerdem mit der SonarQube-Server-Version gekennzeichnet, auf die sie abgestimmt sind, im Format <SQS major>.<SQS minor>.<patch> (z. B. sonarsource/sonarqube-mcp:2026.5.0). Dabei wird die Patch-Nummer für jedes MCP-Release erhöht, das auf diese SonarQube-Server-Version abzielt. Lesen Sie weiter unten, wenn Sie den Server lokal erstellen möchten.

Hinweis: Die folgenden Beispiele verwenden zwar docker, aber jede OCI-kompatible Container-Laufzeitumgebung funktioniert (z. B. Podman, nerdctl). Ersetzen Sie docker einfach durch Ihr bevorzugtes Tool.

Antigravity

Der SonarQube MCP Server ist im Antigravity MCP Store verfügbar. Folgen Sie diesen Anweisungen:

  1. Öffnen Sie das Agent-Seitenpanel
  2. Klicken Sie oben rechts auf die drei Punkte (...) und wählen Sie MCP Servers
  3. Suchen Sie nach SonarQube und wählen Sie Install
  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 legen Sie die URL auf https://sonarqube.us fest.

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

  • Verbindung mit SonarQube Cloud:

Klicken Sie im Agent-Seitenpanel 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 "SONARQUBE_URL": "https://sonarqube.us" zum Abschnitt env und "-e", "SONARQUBE_URL" zum Array args hinzu.

  • 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
  • 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.

  • 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:

  • 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.

  • 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
  • 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 Ihrer MCP-Konfiguration hinzu.

  • 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 sie künftig von dort.

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

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

Vor dem Start von Gemini müssen Sie die erforderlichen Umgebungsvariablen festlegen:

Erforderliche Umgebungsvariablen:

  • Für SonarQube Cloud:

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

    • SONARQUBE_TOKEN – Ihr SonarQube-Server-BENUTZERTOKEN
    • SONARQUBE_URL – Ihre SonarQube-Server-URL

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

GitHub Copilot CLI

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

/mcp add

Sie müssen verschiedene Angaben zum MCP-Server machen. Mit der Tabulatortaste können Sie zwischen den Feldern wechseln.

  • 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 den Argumenten und SONARQUBE_URL=https://sonarqube.us zu den Umgebungsvariablen hinzu.

  • 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 Secrets zu Ihrer Copilot-Umgebung hinzuzufügen, folgen Sie der Copilot-Dokumentation. Nur Secrets, deren Namen mit COPILOT_MCP_ beginnen, stehen Ihrer MCP-Konfiguration zur Verfügung.

Navigieren Sie in Ihrem GitHub-Repository zu Settings -> Copilot -> Coding agent und fügen Sie im Abschnitt für die MCP-Konfiguration Folgendes hinzu:

  • 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 legen Sie anschließend das Secret COPILOT_MCP_SONARQUBE_URL=https://sonarqube.us fest.

  • 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 im Workspace-Verzeichnis eine Datei .kiro/settings/mcp.json (oder bearbeiten Sie sie, falls sie bereits vorhanden ist) und fügen Sie die folgende Konfiguration hinzu:

  • 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.

  • 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

Mit den folgenden Schaltflächen können Sie die Installation in VS Code 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 Ihrer MCP-Konfiguration hinzu.

Install for SonarQube Server

Windsurf

Der SonarQube MCP Server ist als Windsurf-Plugin verfügbar. Folgen Sie diesen Anweisungen:

  1. Öffnen Sie in Windsurf Settings > Cascade > MCP Servers und wählen Sie Open MCP Marketplace
  2. Suchen Sie im Cascade MCP Marketplace nach sonarqube
  3. Wählen Sie SonarQube MCP Server und anschließend Install
  4. Fügen Sie das erforderliche SonarQube-Benutzertoken hinzu. Optional können Sie einen Standardschlüssel für die Organisation in SonarQube Cloud oder die SonarQube-URL für SonarQube Server oder Community Build hinzufügen.

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

Zed

Öffnen Sie in Zed die 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"
}

docker_path ist der Pfad zu einer Docker-Programmdatei. Beispiele:

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

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

💡 Tipp: Wir empfehlen, regelmäßig oder vor dem Melden von Problemen das neueste Image abzurufen, damit Sie über die aktuellsten Funktionen und Fehlerbehebungen verfügen.

Manuelle Installation

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

  • 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>"
    }
  }
}
  • 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 lässt sich in SonarQube for IDE integrieren, um Ihren Entwicklungsworkflow weiter zu verbessern und bessere Codeanalysen und Einblicke direkt in Ihrer IDE bereitzustellen.

Konfiguration

Bei Verwendung von SonarQube for IDE muss die Umgebungsvariable SONARQUBE_IDE_PORT auf die richtige Portnummer gesetzt werden. SonarQube for VS Code enthält eine Schaltfläche für die Schnellinstallation, die die richtige Portkonfiguration automatisch festlegt.

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. Damit der Container eine Verbindung zum SonarQube-for-IDE-Server herstellen kann, fügen Sie die Option --network=host zum Container-Ausführungsbefehl hinzu.

Konfiguration

Je nach Umgebung sollten Sie bestimmte Umgebungsvariablen angeben.

Basis

Beim Ausführen des MCP Servers sollten Sie die folgende Variable hinzufügen:

UmgebungsvariableBeschreibung
STORAGE_PATHObligatorischer absoluter Pfad zu einem beschreibbaren Verzeichnis, in dem der SonarQube MCP Server seine Dateien speichert (z. B. für Erstellung, Aktualisierungen und Persistenz). Bei Verwendung des Container-Images wird er automatisch bereitgestellt.
SONARQUBE_PROJECT_KEYOptionaler Standardschlüssel für Projekte. Wenn festgelegt, verwenden alle Tools, die einen Projektschlüssel benötigen, automatisch diesen Wert — 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 für die Verbindung des SonarQube MCP Server mit SonarQube for IDE verwendet wird.
SONARQUBE_FORCE_LOCAL_ANALYSISAuf true setzen, um analyze_code_snippet anstelle der Vortex-Analyse auf Cloud stdio zu verwenden, auch für berechtigte Organisationen. Erfordert das Toolset analysis. Standard: false. Hat keine Auswirkungen auf SonarQube Server oder Cloud HTTP.
SONARQUBE_DEBUG_ENABLEDWenn auf true gesetzt, wird die Debug-Protokollierung aktiviert. Debug-Protokolle werden sowohl in die Protokolldatei als auch in STDERR geschrieben. Nützlich zur Behebung von Verbindungs- oder Konfigurationsproblemen. Standard: false.
SONARQUBE_LOG_TO_FILE_DISABLEDWenn auf true gesetzt, wird das Schreiben von Protokollen auf die Festplatte vollständig deaktiviert. Unter STORAGE_PATH/logs/ werden keine Protokolldateien erstellt. Nützlich in containerisierten oder kurzlebigen Umgebungen, in denen die Protokollierung in Dateien unerwünscht ist. Standard: false.

Workspace-Einbindung (Reduzierung des Kontextumfangs)

Standardmäßig erfordert das Analysetool analyze_code_snippet, dass der Agent den vollständigen Dateiinhalt als Argument fileContent übergibt. Bei großen Dateien oder der Analyse vieler Dateien in einer Sitzung erhöht dies den Kontextfensterverbrauch und die Kosten erheblich.

Lösung: Binden Sie Ihr Projektverzeichnis im Container unter /app/mcp-workspace ein. Wenn diese Einbindung erkannt wird, liest der Server Dateien direkt von der Festplatte und verwendet dafür das projektrelative Argument filePath — der Dateiinhalt wird nie durch den Agentenkontext geleitet.

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

Bei einer Einbindung lesen Analysetools Dateien direkt mithilfe von filePath; fileContent wird nicht benötigt.

Bei stdio wird die Analyse beim Start ausgewählt (abhängig von den aktivierten Toolsets):

  • SonarQube Cloud: Vortex-Analyse (run_advanced_code_analysis) mit einer Workspace-Einbindung und mindestens einer berechtigten Organisation; andernfalls lokale Analyse. Die Vortex-Analyse akzeptiert nur berechtigte Organisationen.
  • SonarQube Server: Vortex-Analyse für berechtigte Instanzen (erfordert eine Workspace-Einbindung); lokale Analyse für Instanzen ohne Vortex.

Bei der lokalen Analyse wird SonarQube for IDE verwendet, sofern eine Verbindung besteht, andernfalls analyze_code_snippet. Ohne Einbindung erfordert die Snippet-Analyse fileContent.

Bei Cloud stdio beschränkt SONARQUBE_ORG die Berechtigungsprüfung auf diese Organisation. Um Snippets für alle Organisationen zu verwenden, setzen Sie SONARQUBE_FORCE_LOCAL_ANALYSIS=true, aktivieren Sie das Toolset analysis und starten Sie neu. Diese Einstellung betrifft nur Cloud stdio.

Über HTTP/HTTPS unterstützen Cloud und Server analyze_code_snippet, wenn der MCP-Server über ein Start-SONARQUBE_TOKEN verfügt und das Toolset analysis aktiviert ist. Das Start-Token ist für die Initialisierung des Analyzers erforderlich (Cloud-Plugins werden anonym heruntergeladen); Aufrufe verwenden das Token des Aufrufers und bei Cloud die für die Anfrage ausgewählte Organisation, um Qualitätsprofile und aktive Regeln abzurufen. Ohne Start-Token sind die Snippet-Analyse und Analyzer-Downloads deaktiviert, auch mit SONARQUBE_FORCE_LOCAL_ANALYSIS=true. Eine Vortex-Berechtigung ist nicht erforderlich.

Selektive Aktivierung von Tools

MCP-Clients laden bei jeder Unterhaltung jedes aktivierte Tool — seinen Namen, seine Beschreibung und sein Eingabeschema — in den Kontext des Agenten. Durch Begrenzung dieser Liste mit SONARQUBE_TOOLSETS werden der Kontextverbrauch und die Tokenkosten jeder Sitzung reduziert.

Standardmäßig sind nur wichtige Toolsets aktiviert. Aktivieren Sie zusätzliche Toolsets nur bei Bedarf.

UmgebungsvariableBeschreibung
SONARQUBE_TOOLSETSDurch Kommas getrennte Liste der zu aktivierenden Toolsets. Wenn festgelegt, sind nur diese Toolsets verfügbar. Wenn nicht festgelegt, werden standardmäßig wichtige Toolsets aktiviert (analysis, ide, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag). Hinweis: Das Toolset projects ist immer aktiviert, da es benötigt wird, um Projektschlüssel für andere Vorgänge zu finden. Vortex-Kontexttools (veralteter Name: Context Augmentation/CAG) und Vortex-Analysetools (veralteter Name: Advanced Analysis/A3S) sind nur im stdio-Modus verfügbar und teilen sich eine gemeinsame Organisationsberechtigung — eine Organisation muss für beide berechtigt sein, damit eines der beiden verwendet werden kann. Die integrierte Cloud-Analyse prüft die zur Laufzeit ausgewählte Organisation; proxied Kontexttools verwenden die Startorganisation. Auf SonarQube Server führt stdio Vortex-Kontext und run_advanced_code_analysis auf, wenn sowohl der CAG- als auch der A3S-Hub berechtigt sind. Verwenden Sie vorzugsweise den einheitlichen Toolset-Schlüssel vortex. Die veralteten Schlüssel cag und analysis funktionieren weiterhin; bei ihrer Verwendung ohne vortex werden eine Startwarnung und ein Hinweis zur Einstellung in den Serveranweisungen ausgegeben. Im Streamable-HTTP-Modus können Clients einen HTTP-Header SONARQUBE_TOOLSETS senden, um die Auswahl pro Anfrage weiter einzuschränken. Toolsets, die nicht beim Serverstart aktiviert wurden, können jedoch nicht aktiviert werden (siehe Streamable-HTTP-Transport unten).
SONARQUBE_READ_ONLYWenn auf true gesetzt, wird der schreibgeschützte Modus aktiviert, der alle Schreibvorgänge deaktiviert (z. B. das Ändern des Problemstatus). Dieser Filter wird mit SONARQUBE_TOOLSETS kombiniert, wenn beide gesetzt sind. Standard: false. Im Streamable-HTTP-Modus können Clients einen HTTP-Header SONARQUBE_READ_ONLY senden, um einzelne Anfragen zusätzlich auf schreibgeschützten Zugriff zu beschränken. Eine serverseitige Einschränkung auf schreibgeschützten Zugriff kann dadurch jedoch nicht aufgehoben werden (siehe Streamable-HTTP-Transport unten).
Verfügbare Toolsets | Toolset | Schlüssel | Beschreibung | |-----------------------|---------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------| | **Analyse** | `analysis` | Codeanalyse-Tools (lokale Analyse über `analyze_code_snippet`, **veraltet** zugunsten der `analyze_file_list`/Vortex-Analyse) | | **IDE** | `ide` | SonarQube for IDE-Bridge-Tools (Dateianalyse, Umschalten der automatischen Analyse) — derzeit auch in `analysis` enthalten | | **Issues** | `issues` | SonarQube-Issues suchen und verwalten | | **Security Hotspots** | `security-hotspots` | Security Hotspots suchen und überprüfen | | **Projekte** | `projects` | SonarQube-Projekte durchsuchen und suchen | | **Quality Gates** | `quality-gates` | Auf Quality Gates und deren Status zugreifen | | **Regeln** | `rules` | SonarQube-Regeln durchsuchen und suchen | | **Quellen** | `sources` | Auf Quellcode und SCM-Informationen zugreifen | | **Duplikate** | `duplications` | Code-Duplikate projektübergreifend finden | | **Messwerte** | `measures` | Metriken und Messwerte abrufen (umfasst sowohl Messwert- als auch Metrik-Tools) | | **Sprachen** | `languages` | Unterstützte Programmiersprachen auflisten | | **Portfolios** | `portfolios` | Portfolios und Unternehmen verwalten (Cloud und Server) | | **System** | `system` | Systemadministrationstools (nur Server) | | **Webhooks** | `webhooks` | Webhooks verwalten | | **Abhängigkeitsrisiken** | `dependency-risks` | Abhängigkeitsrisiken und Sicherheitsprobleme analysieren (SCA) | | **Abdeckung** | `coverage` | Tools zur Analyse und Verbesserung der Testabdeckung | | **Vortex-Kontext** | `cag` | Vortex-Kontexttools — nur stdio. **Veraltet** zugunsten von `vortex` (alter Name: Context Augmentation/CAG) | | **Vortex** | `vortex` | Einheitliches, **empfohlenes** Toolset, das Vortex-Kontext- und Vortex-Analysetools unter einem Namen bereitstellt (nur stdio; Cloud benötigt eine kombinierte Organisationsberechtigung; Server benötigt Berechtigungen für beide Hubs) | | **Agentic Readiness** | `agentic-readiness` | Tools zur Bewertung der Agentic Readiness (SonarQube Cloud, erfordert eine Organisationsberechtigung) | | **Architektur** | `architecture` | Architektur lesen, vorgesehene Modelle ersetzen und Projektanweisungen verwalten (standardmäßig nicht aktiviert) |

Beispiele

Analyse-, Issues- und Quality-Gates-Toolsets 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 Toolset projects wird immer automatisch aktiviert, daher müssen Sie es nicht in SONARQUBE_TOOLSETS aufnehmen.

Schreibgeschützten 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

Konfigurieren Sie für stdio die folgenden Umgebungsvariablen:

UmgebungsvariableBeschreibungErforderlich
SONARQUBE_TOKENIhr SonarQube-Cloud-TokenJa
SONARQUBE_ORGOptionaler fester SonarQube-Cloud-OrganisationsschlüsselNein
SONARQUBE_URLBenutzerdefinierte SonarQube-Cloud-URL (Standard: https://sonarcloud.io). Verwenden Sie diese für SonarQube Cloud US: https://sonarqube.usNein

Beispiele:

  • SonarQube Cloud: Nur SONARQUBE_TOKEN ist erforderlich. SONARQUBE_ORG legt die Organisation fest, wenn angegeben.
  • SonarQube Cloud US: Setzen Sie SONARQUBE_TOKEN und SONARQUBE_URL=https://sonarqube.us; SONARQUBE_ORG ist optional.

SonarQube Server

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

Versionsanforderung: Erforderlich ist SonarQube Server 2025.1 (SQS) oder 25.1 (SonarQube Community Build) oder höher. Beim Start liest der MCP-Server die Version der verbundenen Instanz aus und wird mit einem Fehler beendet, wenn sie zu alt ist (beispielsweise werden ältere Server-Versionen 9.x/10.x und Community Build 24.x nicht unterstützt). SonarQube Cloud ist von dieser Prüfung nicht betroffen.

⚠️ Für die Verbindung mit SonarQube Server ist ein Token vom Typ USER erforderlich. Mit Projekt- oder globalen Tokens funktioniert sie nicht ordnungsgemäß.

💡 Konfigurationstipp (stdio-Modus): Ohne URL wird standardmäßig SonarQube Cloud verwendet. Setzen Sie SONARQUBE_URL für SonarQube Server oder eine andere Cloud-Region. SONARQUBE_ORG legt die Cloud-Organisation fest, wenn angegeben.

Bei stdio legt das Setzen von SONARQUBE_ORG die Cloud-Organisation fest. Argumente des Tools organization werden aus den Schemas ausgelassen und abgelehnt, ebenso wie projectKey, wenn SONARQUBE_PROJECT_KEY gesetzt ist.

Wenn SONARQUBE_ORG nicht gesetzt ist, können Agents list_organizations aufrufen, um Organisationsschlüssel, Namen, IDs und UUIDs zu ermitteln, auf die Ihr Benutzerkonto zugreifen kann. Anschließend können sie einen Schlüssel als optionales Argument organization an organisationsbezogene Tools übergeben. Bei stdio bleibt eine eindeutig erkannte Organisation als Standard festgelegt; bei keiner oder mehreren Organisationen bleibt sie unbestimmt. Ein Toolargument gilt nur für den jeweiligen Aufruf und ändert niemals die erkannte Standardorganisation. Snippet-Profil- und Regelsuchen verwenden die für diesen Aufruf ausgewählte Organisation.

Bei HTTP/HTTPS-Tokenanfragen wird SONARQUBE_ORG auf Serverebene aus Kompatibilitätsgründen weiterhin unterstützt, ist jedoch veraltet und erzeugt eine Startwarnung. Damit wird die Organisation für jede Anfrage festgelegt; Organisationsheader von Clients und Toolargumente organization werden abgelehnt. Wenn keine Serverorganisation konfiguriert ist, legt ein optionaler Clientheader SONARQUBE_ORG die Organisation für diese Anfrage fest und schließt Toolargumente organization aus. Ohne Header verwenden Sie das Toolargument. Tools, die eine Organisation benötigen, geben Hinweise zur Ermittlung aus, wenn alle Angaben fehlen. Für die Organisationsermittlung und Tools, deren APIs ausschließlich Ressourcenkennungen verwenden, ist kein Organisationsargument erforderlich. Die organisationsbezogene Issue-Suche und Berechtigungsprüfungen für Abhängigkeitsrisiken verwenden die ausgewählte Organisation. Wenn OAuth konfiguriert ist, wird SONARQUBE_ORG auf Serverebene abgelehnt. OAuth-Anfragen lehnen Organisationsheader ebenfalls ab; wählen Sie Organisationen über Toolargumente aus.

Vortex-Kontexttools verwenden die konfigurierte oder beim Start eindeutig erkannte Organisation. Organisationsargumente zur Laufzeit konfigurieren die proxied Context Engine nicht neu; bei einer unbestimmten Startorganisation wird dieser Proxy übersprungen. Das integrierte Tool run_advanced_code_analysis prüft bei jedem Aufruf die kombinierte Vortex-Berechtigung für die ausgewählte Organisation.

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 Mehrbenutzerbereitstellungen; 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 HTTP-Transport, der ausschließlich SSE verwendete und in früheren MCP-Versionen zum Einsatz kam, ist veraltet und wird nicht unterstützt.

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

Der empfohlene Modus für lokale Entwicklung und Einzelbenutzerkonfigurationen, 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 Mehrbenutzerbereitstellungen 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) oder 0 für einen vom Betriebssystem zugewiesenen Port8080
SONARQUBE_HTTP_HOSTHost, an den gebunden werden soll (aus Sicherheitsgründen standardmäßig localhost)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSDurch Kommas getrennte Browser-Ursprünge, die für CORS zugelassen sind (z. B. https://my-app.example.com)Nicht gesetzt
SONARQUBE_MCP_IN_CONTAINERAuf true setzen, wenn der Server in einem Container ausgeführt wird. Das offizielle Docker-Image setzt diesen Wert automatisch; bei Verwendung anderer OCI-Runtimes (Podman, Kubernetes, Nomad usw.) müssen Sie ihn selbst setzen.false
Hinweis: HTTP/HTTPS akzeptiert das SonarQube-Token des Benutzers über Authorization: Bearer <token>. Sonars gehosteter Cloud-Dienst unterstützt außerdem OAuth. Bei Token-Anfragen an SonarQube Cloud wird die Organisation wie folgt ermittelt:
  • SONARQUBE_ORG ist ein optionaler Request-Header, der die Organisation für diese Anfrage festlegt. Die veraltete Konfiguration auf Serverebene legt sie für alle Anfragen fest und weist Organisations-Header von Clients sowie Organisationsargumente von Tools zurück.
  • Organisationsbewusste Tools akzeptieren das optionale Argument organization, wenn weder die Serverkonfiguration noch der Request-Header die Organisation festlegt. Wird das Argument angegeben, obwohl die Organisation festgelegt ist, wird die Anfrage zurückgewiesen.
  • Ohne Standardorganisation können Agents mit ihrem Token allein list_organizations aufrufen und anschließend den ausgewählten Schlüssel an nachfolgende Tools übergeben.

Clients können außerdem die sichtbaren Tools pro Anfrage einschränken, indem sie die Header SONARQUBE_TOOLSETS und/oder SONARQUBE_READ_ONLY angeben. Diese wenden zusätzlich zur Konfiguration auf Serverebene weitere Filter an — sie können den Umfang nur einschränken, niemals erweitern. Zwischen Anfragen wird kein Sitzungsstatus beibehalten.

Veraltet: Bei SonarQube-Tokens wird der Request-Header SONARQUBE_TOKEN aus Gründen der Abwärtskompatibilität weiterhin akzeptiert, aber in einer zukünftigen Version entfernt. Migrieren Sie zu Authorization: Bearer <token>.

3. HTTPS (Streamable HTTP über TLS) (Empfohlen für Produktionsbereitstellungen mit mehreren Benutzern)

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

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

UmgebungsvariableBeschreibungStandardwert
SONARQUBE_TRANSPORTAuf https setzen, um den Streamable-HTTP-Transport über TLS zu aktivierenNicht gesetzt (stdio)
SONARQUBE_HTTP_PORTPortnummer (typischerweise 8443 für HTTPS) oder 0 für einen vom Betriebssystem zugewiesenen Port8080
SONARQUBE_HTTP_HOSTHost, an den gebunden wird (aus Sicherheitsgründen standardmäßig localhost)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSDurch Kommas getrennte Browser-Ursprünge, die für CORS zugelassen sind (z. B. https://my-app.example.com)Nicht gesetzt
SONARQUBE_MCP_IN_CONTAINERAuf true setzen, wenn der Server in einem Container ausgeführt wird. Das offizielle Docker-Image setzt dies automatisch; bei Verwendung anderer OCI-Runtimes (Podman, Kubernetes, Nomad usw.) müssen Sie es selbst setzen.false

SSL-Zertifikatskonfiguration (optional):

UmgebungsvariableBeschreibungStandardwert
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: Setzen Sie bei der Ausführung in einem Container SONARQUBE_HTTP_HOST=0.0.0.0, damit der Container an allen Schnittstellen lauscht und die Portzuordnung der Runtime funktioniert. Setzen Sie außerdem SONARQUBE_MCP_IN_CONTAINER=true, damit der Server weiß, dass er sich in einem Container befindet. Das offizielle Docker-Image setzt Letzteres automatisch; bei Verwendung anderer OCI-Runtimes (Podman, Kubernetes, Nomad usw.) müssen Sie es selbst setzen. Das Port-Flag auf der Hostseite bestimmt, wer von außerhalb des Containers auf den Server zugreifen kann. SONARQUBE_HTTP_HOST=0.0.0.0 steuert nur, an welchen Schnittstellen der Server innerhalb des Containers lauscht — CORS lässt standardmäßig weiterhin localhost-Ursprünge zu.

Für einen Server, der lokal auf Ihrem Rechner läuft (nur über localhost 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 \
  sonarsource/sonarqube-mcp

Für einen Server, der über das 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 \
  sonarsource/sonarqube-mcp

Clientkonfiguration (SonarQube Cloud):

Setzen Sie bei Token-Anfragen an SonarQube optional SONARQUBE_ORG in den Client-Headern, um die Organisation der Anfrage festzulegen, oder lassen Sie den Header weg, um Organisationen über Tool-Argumente auszuwählen.

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

Clientkonfiguration (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 Header pro Anfrage, die die auf Serverebene festgelegte Tool-Auswahl für die jeweilige Anfrage einschränken. 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 (Standard). HTTPS Streamable HTTP ist für Produktionsbereitstellungen mit mehreren Benutzern und ordnungsgemäßen SSL-Zertifikaten vorgesehen.

Gehostetes SonarQube Cloud OAuth

Die OAuth-Unterstützung gilt für Sonars gehosteten SonarQube-Cloud-MCP-Dienst. Verwenden Sie einen OAuth-fähigen MCP-Client und melden Sie sich an, wenn Sie dazu aufgefordert werden; in Ihrer Clientkonfiguration sind keine OAuth-Servereinstellungen erforderlich. Bestehende SonarQube-Token-Clients werden weiterhin unterstützt.

Die Scopes mcp:tools:read und mcp:tools:write steuern unabhängig voneinander den Zugriff auf Lese- und Schreibtools, vorbehaltlich Ihrer Cloud-Berechtigungen. Verwenden Sie list_organizations und das Tool-Argument organization, um eine Organisation auszuwählen.

Selbst gehostete Bereitstellungen verwenden weiterhin SonarQube-Tokens; OAuth für SonarQube Server wird noch nicht unterstützt.

Dienstendpunkte

Im Streamable-HTTP-Modus (http oder https) stellt der Server zusätzlich zum MCP-Endpunkt unter /mcp einige nicht authentifizierte Dienstendpunkte bereit. Diese sind für die Kommunikation zwischen Diensten vorgesehen (Überwachung, Orchestrierung, Kompatibilitätsprüfungen von Clients) und erfordern keinen Authorization-Header.

EndpunktMethodeBeschreibungBeispielantwort
/healthGETLiveness-Prüfung. Gibt 200 OK mit einem leeren Antworttext zurück, sobald der Server Anfragen annimmt.(leerer Antworttext)
/infoGETGibt die Version des MCP-Servers als JSON zurück. Nützlich, um die bereitgestellte Serverversion zu überprüfen.{"version":"1.16.0"}

Diese Endpunkte sind beim Betrieb 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

Volume-Mount verwenden

Binden Sie beim Ausführen des Containers ein Verzeichnis mit Ihren Zertifikaten ein:

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 so anpassen, dass die Zertifikate eingebunden werden:

{
  "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-Datei statt im Container aus? Der obige Volume-Mount installiert Zertifikate im Betriebssystem-Vertrauensspeicher des Containers, den der Server ebenfalls verwendet. Wenn Sie den Betriebssystem-Vertrauensspeicher nicht verwenden können — insbesondere unter Windows, wo er nicht herangezogen wird — verweisen Sie die JVM auf einen Java-Vertrauensspeicher mit dem CA-Zertifikat: -Djavax.net.ssl.trustStore=/path/to/truststore.p12 -Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.trustStorePassword=<passphrase>. Dieser wird zusätzlich zu den standardmäßig vertrauenswürdigen Zertifikaten hinzugefügt.

Proxy

Der SonarQube MCP Server unterstützt HTTP- und SOCKS5-Proxys über die standardmäßigen Java-Systemeigenschaften für Proxys.

Konfiguration

HTTP/HTTPS-Proxy

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

Gängige Proxy-Eigenschaften:

EigenschaftBeschreibungBeispiel
http.proxyHostHostname des HTTP-Proxysproxy.example.com
http.proxyPortPort des HTTP-Proxys8080
https.proxyHostHostname des HTTPS-Proxysproxy.example.com
https.proxyPortPort des HTTPS-Proxys8443
http.nonProxyHostsHosts, die den Proxy umgehen (durch senkrechte Striche getrennt)localhost|127.0.0.1|*.internal.com

Authentifizierung für HTTP/HTTPS-Proxys:

EigenschaftBeschreibungBeispiel
http.proxyUserBenutzername für den HTTP-Proxymyuser
http.proxyPasswordPasswort für den HTTP-Proxymypassword
https.proxyUserBenutzername für den HTTPS-Proxymyuser
https.proxyPasswordPasswort für den HTTPS-Proxymypassword

SOCKS5-Proxy

SOCKS5-Proxys werden unterstützt.

EigenschaftBeschreibungStandardwertBeispiel
socksProxyHostHostname des SOCKS5-Proxys—localhost
socksProxyPortPort des SOCKS5-Proxys10801080
java.net.socks.usernameSOCKS5-Benutzername (falls Authentifizierung erforderlich)—myuser
java.net.socks.passwordSOCKS5-Passwort (falls Authentifizierung erforderlich)—mypassword

Clientzertifikat (mutuelles TLS)

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

Konfiguration

PKCS12-Keystore verwenden

Binden Sie Ihre Datei .p12 oder .pfx in den Container ein 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. Prü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 Clientzertifikat

{
  "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>"
    }
  }
}

PKCS12-Keystore mit einer eigenständigen JAR-Datei verwenden

Wenn Sie den Server aus einer JAR-Datei 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 Clientzertifikat (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-Zertifikat- und Schlüsseldateien (separate Dateien .crt/.key) müssen zunächst in das PKCS12-Format konvertiert werden. Verwenden Sie openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12, um sie zu konvertieren.

Tools

Analyse

  • analyze_code_snippet – Analysiert den Dateiinhalt mit SonarQube-Analyzern, um Probleme mit der Codequalität und Sicherheit zu erkennen. Analysiert für eine höhere Genauigkeit immer den vollständigen Dateiinhalt. Optional können die Ergebnisse auf einen bestimmten Codeausschnitt beschränkt 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 eingebundenem Workspace (empfohlen): Übergeben Sie filePath (relativ zum Projekt) — der Server liest die Datei direkt ein, sodass der Dateiinhalt nicht im Kontextfenster des Agenten landet
    • Ohne eingebundenen Workspace: Übergeben Sie den vollständigen Inhalt von fileContent für eine vollständige Dateianalyse (meldet alle Probleme)
    • Fügen Sie optional codeSnippet hinzu, um die Ergebnisse zu filtern – es werden nur Probleme innerhalb des Snippets gemeldet (Snippet-Position wird automatisch erkannt)

    Parameter:

    • organization - Organisationsschlüssel von SonarQube Cloud - Optionaler String, nur Cloud
    • projectKey - Der SonarQube-Projektschlüssel - Erforderlicher String (Wird ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • filePath - Relativer Pfad der zu analysierenden Datei zum Projekt (z. B. src/main/java/MyClass.java). Wird verwendet, wenn der Workspace unter /app/mcp-workspace eingebunden ist - String
    • fileContent - Vollständiger Dateiinhalt als String. Erforderlich, wenn der Workspace nicht eingebunden ist - String
    • codeSnippet - Code-Snippet zum Filtern von Problemen (muss mit dem Inhalt in fileContent übereinstimmen) - String
    • language - Sprache des Codes (z. B. 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - String
    • scope - Geltungsbereich der Datei: MAIN oder TEST (Standard: MAIN) - String

    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 Tools sind sowohl dem Toolset analysis als auch dem Toolset ide zugeordnet)

  • analyze_file_list - Analysiert Dateien im aktuellen Arbeitsverzeichnis mit SonarQube for IDE. Dieses Tool stellt eine Verbindung zu einer laufenden SonarQube for IDE-Instanz her, um die Codequalität einer Dateiliste zu analysieren.

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

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

Auf SonarQube Server listet stdio Vortex-Kontexttools und run_advanced_code_analysis auf, wenn sowohl der CAG- als auch der A3S-Hub berechtigt sind.

Wenn die Vortex-Analyse verfügbar ist:

Erfordert, dass der Workspace unter /app/mcp-workspace eingebunden ist

  • run_advanced_code_analysis - Führt eine Vortex-Analyse für eine einzelne Datei aus. SonarQube Server verwendet den nil-UUID-Platzhalter.
    • organization - Organisationsschlüssel von SonarQube Cloud - Optionaler String, nur Cloud
    • projectKey - Der Projektschlüssel - Erforderlicher String (Wird ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • branch - Branchname zum Abrufen des neuesten Analysekontexts - Erforderlicher String
    • filePath - Relativer Pfad der zu analysierenden Datei zum Projekt (z. B. src/main/java/MyClass.java). - Erforderlicher String
    • fileScope - Legt fest, aus welchem Geltungsbereich die Datei stammt: 'MAIN' oder 'TEST' (Standard: MAIN) - String

Abdeckung

  • search_files_by_coverage - Sucht nach Dateien in einem Projekt, sortiert nach Abdeckung (aufsteigend – Dateien mit der geringsten Abdeckung zuerst). Mit diesem Tool lassen sich Dateien ermitteln, deren Testabdeckung verbessert werden muss.

    • projectKey - Der Projektschlüssel, in dem gesucht werden soll - Erforderlicher String (Wird ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • branch - Optionaler Branchname für eine branchbasierte Analyse. Verwenden Sie list_branches, um gültige Namen zu ermitteln - String
    • pullRequest - Optionaler Pull-Request-Schlüssel bzw. optionale ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln - String
    • maxCoverage - Maximaler Abdeckungsschwellenwert (0–100). Gibt nur Dateien mit einer Abdeckung <= diesem Wert zurück - Number
    • pageIndex - Seitenindex (beginnend bei 1, Standard: 1) - Number
    • pageSize - Seitengröße (Standard: 100, maximal: 500) - Number
  • get_file_coverage_details - Ruft zeilenweise Abdeckungsinformationen für eine bestimmte Datei ab, einschließlich der genauen nicht abgedeckten Zeilen und der Zeilen mit teilweise abgedeckten Verzweigungen. Mit diesem Tool lässt sich genau ermitteln, wo Testabdeckung hinzugefügt werden sollte. Verwenden Sie es, nachdem Sie mit search_files_by_coverage Dateien mit geringer Abdeckung ermittelt haben.

    • key - Dateischlüssel (z. B. my_project:src/foo/Bar.java) - Erforderlicher String
    • branch - Optionaler Branchname für eine branchbasierte Analyse. Verwenden Sie list_branches, um gültige Namen zu ermitteln - String
    • pullRequest - Optionaler Pull-Request-Schlüssel bzw. optionale ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln - String
    • from - Erste zu analysierende Zeile (beginnend bei 1, Standard: 1) - Number
    • to - Letzte zu analysierende Zeile (einschließlich). Wenn nicht angegeben, werden alle Zeilen zurückgegeben - Number

Abhängigkeitsrisiken

Hinweis: Für Abhängigkeitsrisiken ist SonarQube Advanced Security erforderlich. Auf SonarQube Server ist Version 2025.4 Enterprise oder höher erforderlich.

  • search_dependency_risks - Sucht nach Problemen der Software Composition Analysis (Abhängigkeitsrisiken) eines SonarQube-Projekts und den Releases, die im analysierten Projekt, in der Anwendung oder im Portfolio vorkommen.
    • organization - Organisationsschlüssel von SonarQube Cloud - Optionaler String, nur Cloud
    • projectKey - Projektschlüssel - Erforderlicher String (Wird ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • branch - Optionaler Branchname für eine branchbasierte Analyse. Verwenden Sie list_branches, um gültige Namen zu ermitteln - String
    • pullRequest - Optionaler Pull-Request-Schlüssel bzw. optionale ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln - String
    • pageIndex - Optionaler Seitenindex (beginnend bei 1, Standard: 1) - Integer
    • pageSize - Optionale Seitengröße. Muss größer als 0 und kleiner oder gleich 500 sein (Standard: 100) - Integer

Unternehmen

Hinweis: Unternehmen sind nur bei einer Verbindung mit SonarQube Cloud verfügbar.

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

Probleme

  • change_sonar_issue_status - Ändert den Status eines SonarQube-Problems in „accept“, „falsepositive“ oder „reopen“.

    • key - Problemschlüssel - Erforderlicher String
    • status - Neuer Status des Problems - Erforderlicher Enum {"accept", "falsepositive", "reopen"}
    • comment - Optionaler Kommentar zur Erläuterung der Statusänderung - String
  • search_sonar_issues_in_projects - Sucht nach SonarQube-Problemen in den Projekten meiner Organisation.

    • organization - Organisationsschlüssel von SonarQube Cloud - Optionaler String, nur Cloud
    • projectKeys - Optionale Liste der SonarQube-Projektschlüssel - String[]
    • branch - Optionaler Branchname für eine branchbasierte Analyse. Verwenden Sie list_branches, um gültige Namen zu ermitteln - String
    • pullRequest - Optionaler Pull-Request-Schlüssel bzw. optionale ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln - String
    • severities - Optionale Liste der Schweregrade, nach denen gefiltert werden soll. Mögliche Werte: INFO, LOW, MEDIUM, HIGH, BLOCKER - String[]
    • impactSoftwareQualities - Optionale Liste der Softwarequalitäten, nach denen gefiltert werden soll. Mögliche Werte: MAINTAINABILITY, RELIABILITY, SECURITY - String[]
    • issueStatuses - Optionale Liste der Problemstatus, nach denen gefiltert werden soll. Mögliche Werte: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - String[]
    • tags - Optionale Liste der Problem-Tags, nach denen gefiltert werden soll. Tags werden kleingeschrieben - String[]
    • inNewCodePeriod - Gibt nur Probleme im Zeitraum für neuen Code zurück. Erfordert genau einen Eintrag in projectKeys und files - Boolean
    • issueKey - Optionaler Problemschlüssel zum Abrufen eines bestimmten Problems - String
    • pageIndex - Optionaler Seitenindex (beginnend bei 1, Standard: 1) - Integer
    • pageSize - Optionale Seitengröße. Muss größer als 0 und kleiner oder gleich 500 sein (Standard: 100) - Integer

Sicherheits-Hotspots

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

    • projectKey - Projekt- oder Anwendungsschlüssel - Erforderlicher String (Wird ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • hotspotKeys - Durch Kommas getrennte Liste bestimmter Sicherheits-Hotspot-Schlüssel, die abgerufen werden sollen - String[]
    • branch - Optionaler Branchname für eine branchbasierte Analyse. Verwenden Sie list_branches, um gültige Namen zu ermitteln - String
    • pullRequest - Optionaler Pull-Request-Schlüssel bzw. optionale ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln - String
    • files - Optionale Liste der Dateipfade, nach denen gefiltert werden soll - String[]
    • status - Optionaler Statusfilter: TO_REVIEW, REVIEWED - String
    • resolution - Optionaler Auflösungsfilter: FIXED, SAFE, ACKNOWLEDGED - String
    • sinceLeakPeriod - Filtert Hotspots, die seit dem Zeitraum für neuen Code erstellt wurden - Boolean
    • onlyMine - Zeigt nur mir zugewiesene Hotspots an - Boolean
    • pageIndex - Optionaler Seitenindex (beginnend bei 1, Standard: 1) - Integer
    • pageSize - Optionale Seitengröße. Muss größer als 0 und kleiner oder gleich 500 sein (Standard: 100) - Integer
  • show_security_hotspot - Ruft detaillierte Informationen zu einem bestimmten Sicherheits-Hotspot ab, einschließlich Regeldetails, Codekontext, Abläufen und Kommentaren.

    • hotspotKey - Sicherheits-Hotspot-Schlüssel - Erforderlicher String
  • change_security_hotspot_status - Überprüft einen Sicherheits-Hotspot, indem sein Status geändert wird. Beim Setzen des Status auf REVIEWED muss eine Auflösung angegeben werden (FIXED, SAFE oder ACKNOWLEDGED).

    • hotspotKey - Sicherheits-Hotspot-Schlüssel - Erforderlicher String
    • status - Neuer Status - Erforderlicher Enum {"TO_REVIEW", "REVIEWED"}
    • resolution - Auflösung, wenn der Status REVIEWED ist - Enum {"FIXED", "SAFE", "ACKNOWLEDGED"}
    • comment - Optionaler Kommentar zur Überprüfung - String

Sprachen

  • list_languages - Listet alle Programmiersprachen auf, die von dieser SonarQube-Instanz unterstützt werden.
    • q - Optionales Muster, mit dem Sprachschlüssel bzw. -namen abgeglichen werden - String

Messwerte

  • get_component_measures - Ruft SonarQube-Messwerte für eine Komponente (Projekt, Verzeichnis, Datei) ab.
    • projectKey - Der Projektschlüssel - Erforderlicher String, wenn SONARQUBE_PROJECT_KEY nicht konfiguriert ist
    • branch - Optionaler Branchname für eine branchbasierte Analyse. Verwenden Sie list_branches, um gültige Namen zu ermitteln - String
    • metricKeys - Optionale abzurufende Metrikschlüssel (z. B. ncloc, complexity, violations, coverage) - String[]
    • pullRequest - Optionaler Pull-Request-Schlüssel bzw. optionale ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln - String

Metriken

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

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 - Bei true werden nur Favoritenportfolios zurückgegeben - Boolean
    • pageIndex - Optionale Seitennummer (beginnend bei 1, 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 wird – String
    • q – Optionale Suchanfrage zum Filtern von Portfolios nach Namen – String
    • favorite – Muss true sein, wenn der Parameter 'enterpriseId' weggelassen wird. Bei true werden nur Portfolios zurückgegeben, die vom angemeldeten Benutzer als Favoriten markiert wurden. Kann nicht true sein, wenn 'draft' true ist – Boolean
    • draft – Bei 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

  • list_organizations – Listet die SonarQube Cloud-Organisationen auf, denen ein Benutzer angehört, einschließlich Schlüssel, Namen, IDs und UUIDs. Verwenden Sie einen zurückgegebenen Schlüssel als organization in nachfolgenden Tools.

  • search_my_sonarqube_projects – Sucht nach SonarQube-Projekten. Die Antwort ist paginiert.

    • organization – SonarQube Cloud-Organisationsschlüssel – Optional String, nur Cloud
    • pageIndex – Optionaler, bei 1 beginnender 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 Namen (Teilübereinstimmung) oder Schlüssel (exakte Übereinstimmung) – String
  • list_branches – Listet analysierte Branches für ein Projekt auf.

    • SonarQube Cloud: Gibt langlebige (LONG) und kurzlebige (SHORT) Branches mit den Feldern type und mergeBranch zurück. Optionaler Filter branchTypes: ALL (Standard), LONG oder SHORT.
    • SonarQube Server: Gibt alle analysierten Branches zurück (Name, Quality Gate, Analysedatum). Kein Filter type, mergeBranch oder branchTypes.
    • 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 – Projektschlüssel (z. B. my_project) – Required String (Wird 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 PR-dekorierte Analysen (Coverage, Issues, Quality Gate) zu ermitteln. Gibt den Pull-Request-Schlüssel bzw. die ID zurück, der bzw. die mit anderen Tools verwendet werden kann. Für branchbasierte Analysen ohne Pull Requests verwenden Sie stattdessen list_branches.

    • projectKey – Projektschlüssel (z. B. my_project) – Required String (Wird ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)

Quality Gates

  • get_project_quality_gate_status – Ruft den Quality-Gate-Status des SonarQube-Projekts ab.

    • analysisId – Optionale Analyse-ID – String
    • branch – Optionaler Branch-Name für branchbasierte Analysen. Verwenden Sie list_branches, um gültige Namen zu ermitteln – String
    • projectId – Optionale Projekt-ID – String
    • projectKey – Optionaler Projektschlüssel – String
    • pullRequest – Optionaler Pull-Request-Schlüssel bzw. optionale Pull-Request-ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln – String
  • list_quality_gates – Listet alle Quality Gates in meinem SonarQube auf.

    • organization – SonarQube Cloud-Organisationsschlüssel – Optional String, nur Cloud

Regeln

  • show_rule – Zeigt detaillierte Informationen zu einer SonarQube-Regel an.
    • organization – SonarQube Cloud-Organisationsschlüssel – Optional String, nur Cloud
    • key – Regelschlüssel – Required String

Duplikate

  • search_duplicated_files – Sucht in einem SonarQube-Projekt nach Dateien mit Code-Duplikaten. Ruft standardmäßig automatisch alle Dateien mit Duplikaten über alle Seiten hinweg ab (maximal 10.000 Dateien). Gibt nur Dateien mit Duplikaten zurück.

    • projectKey – Projektschlüssel – Required String (Wird ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • branch – Optionaler Branch-Name für branchbasierte Analysen. Verwenden Sie list_branches, um gültige Namen zu ermitteln – String
    • pullRequest – Optionaler Pull-Request-Schlüssel bzw. optionale Pull-Request-ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln – String
    • pageSize – Optionale Anzahl der Ergebnisse pro Seite für die manuelle Paginierung (max.: 500). Wenn nicht angegeben, werden automatisch alle Dateien mit Duplikaten abgerufen – Integer
    • pageIndex – Optionale Seitennummer für die manuelle Paginierung (beginnt bei 1). Wenn nicht angegeben, werden automatisch alle Dateien mit Duplikaten abgerufen – Integer
  • get_duplications – Ruft Duplikate für eine Datei ab. Erfordert die Browse-Berechtigung für das Projekt der Datei.

    • key – Dateischlüssel – Required String
    • branch – Optionaler Branch-Name für branchbasierte Analysen. Verwenden Sie list_branches, um gültige Namen zu ermitteln – String
    • pullRequest – Optionaler Pull-Request-Schlüssel bzw. optionale Pull-Request-ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln – String

Quellen

  • get_raw_source – Ruft den Quellcode als Rohtext aus SonarQube ab. Erfordert die Berechtigung 'See Source Code' für die Datei.

    • key – Dateischlüssel – Required String
    • branch – Optionaler Branch-Name für branchbasierte Analysen. Verwenden Sie list_branches, um gültige Namen zu ermitteln – String
    • pullRequest – Optionaler Pull-Request-Schlüssel bzw. optionale Pull-Request-ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln – String
  • get_scm_info – Ruft SCM-Informationen zu SonarQube-Quelldateien ab. Erfordert die Berechtigung See Source Code für das Projekt der Datei.

    • key – Dateischlüssel – Required String
    • commits_by_line – Gruppiert Zeilen nach SCM-Commit, wenn der Wert false ist; andernfalls werden Commits für jede Zeile angezeigt – 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 hergestellt wird.

  • get_system_health – Ruft den Integritätsstatus der SonarQube Server-Instanz ab. Gibt GREEN (voll funktionsfähig), YELLOW (nutzbar, aber Aufmerksamkeit erforderlich) oder RED (nicht funktionsfähig) zurück.

  • get_system_info – Ruft detaillierte Informationen zur Systemkonfiguration von SonarQube Server ab, einschließlich JVM-Status, Datenbank, Suchindizes und Einstellungen. Erfordert die Berechtigung 'Administer'.

  • get_system_logs – Ruft die Systemprotokolle von SonarQube Server im Klartext ab. Erfordert die Systemadministrationsberechtigung.

    • name – Optionaler Name der abzurufenden Protokolle. Mögliche Werte: access, app, ce, deprecation, es, web. Standard: app – String
  • ping_system – Sendet einen Ping an das SonarQube Server-System, um zu prüfen, ob es erreichbar ist. Gibt 'pong' als Klartext zurück.

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

Webhooks

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

    • organization – SonarQube Cloud-Organisationsschlüssel – Optional String, nur Cloud
    • name – Webhook-Name – Required String
    • url – Webhook-URL – Required String
    • projectKey – Optionaler Projektschlüssel für einen projektspezifischen Webhook – String
    • secret – Optionales Webhook-Secret zum Sichern der Webhook-Nutzlast – String
  • list_webhooks – Listet alle Webhooks für die SonarQube-Organisation oder das Projekt auf. Erfordert die Berechtigung 'Administer' für das angegebene Projekt oder die globale Berechtigung 'Administer'.

    • organization – SonarQube Cloud-Organisationsschlüssel – Optional String, nur Cloud
    • projectKey – Optionaler Projektschlüssel zum Auflisten projektspezifischer Webhooks – String

Kontextanreicherung

Architektur-Tools
  • search_by_signature_patterns – Findet Codeelemente (Klassen, Methoden, Schnittstellen usw.) anhand ihrer Deklarationssignaturen mithilfe von Regex-Mustern.

    • include_code_regex_list – Liste von Regex-Mustern, mit denen Signaturen abgeglichen werden – Required String[]
    • exclude_code_regex_list – Liste von Regex-Mustern, die aus den Ergebnissen ausgeschlossen werden sollen – String[]
    • include_glob – Glob-Muster zum Filtern von Dateien (z. B. *.java) – String
    • exclude_glob – Glob-Muster zum Ausschließen von Dateien – String
    • fields – Durch Kommas getrennte Liste der in die Antwort aufzunehmenden Felder – String
    • limit – Maximale Anzahl der zurückzugebenden Ergebnisse (Standard: 10) – Integer
    • regex_lists_operator – Methode zum Kombinieren mehrerer Muster: OR (Standard) oder AND – String
  • search_by_body_patterns – Findet Codeelemente anhand ihres Implementierungskörpers mithilfe von Regex-Mustern. Nützlich, um zu ermitteln, wo APIs oder Muster tatsächlich verwendet werden.

    • include_code_regex_list – Liste von Regex-Mustern, die in Codekörpern abgeglichen werden sollen – Required String[]
    • exclude_code_regex_list – Liste von Regex-Mustern, die aus den Ergebnissen ausgeschlossen werden sollen – String[]
    • include_glob – Glob-Muster zum Filtern von Dateien – String
    • exclude_glob – Glob-Muster zum Ausschließen von Dateien – String
    • fields – Durch Kommas getrennte Liste der in die Antwort aufzunehmenden Felder – String
    • limit – Maximale Anzahl der zurückzugebenden Ergebnisse (Standard: 10) – Integer
    • regex_lists_operator – Methode zum Kombinieren mehrerer Muster: 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 bei einer Änderung der Signatur beeinträchtigt wird.

    • fqn – Vollständig qualifizierter Name der Funktion – Required String
    • depth – Tiefe der Aufrufkette (0=nur Funktion, 1=direkte Aufrufer usw.) – Integer
    • fields – Durch Kommas getrennte Liste der in die Antwort aufzunehmenden Felder – String
  • get_downstream_call_flow – Verfolgt, welche Funktionen eine bestimmte Funktion aufruft. Nützlich für Auswirkungsanalysen und zum Verständnis des Ausführungsablaufs.

    • fqn – Vollständig qualifizierter Name der Funktion – Required String
    • depth – Tiefe der Aufrufkette (0=nur Funktion, 1=direkte Aufgerufene usw.) – Integer
    • fields – Durch Kommas getrennte Liste der in die Antwort aufzunehmenden Felder – String
  • get_source_code – Ruft den vollständigen Quellcode (Signatur und Körper) eines Codeelements anhand seines vollständig qualifizierten Namens ab.

    • fqn – Vollständig qualifizierter Name des Elements – Required String
    • fields – Durch Kommas getrennte Liste der in die Antwort aufzunehmenden Felder – String
  • get_type_hierarchy – Ruft die vollständige Vererbungshierarchie einer klassenähnlichen Struktur ab (Klasse, Schnittstelle, Enum, Record, Exception, Struct). Unverzichtbar, um Vererbungsbäume zu verstehen und Refactorings durchzuführen.

    • fqn – Vollständig qualifizierter Name der klassenähnlichen Struktur – Required String
    • fields – Durch Kommas getrennte Liste der in die Antwort aufzunehmenden Felder – String
  • get_references – Ruft direkte eingehende und ausgehende Codeverweise für eine Klasse oder ein Modul ab. Gibt nur direkte (nicht transitive) Verweise zurück.

    • fqn – Vollständig qualifizierter Name der Klasse oder des Moduls – Required String
    • fields – Durch Kommas getrennte Liste der in die Antwort aufzunehmenden Felder – String
  • get_current_architecture – Ruft einen hierarchischen Architekturgraphen ab, gefiltert nach Pfadpräfix und Tiefe. Nützlich, um die Modulstruktur und übergeordnete Abhängigkeiten zu untersuchen.

    • depth – Hierarchietiefe (0=nur Stamm, 1=Stamm + untergeordnete Elemente usw.) – Required Integer
    • path_prefix – Optionales Pfadpräfix zum Filtern von Knoten (z. B. com.example.service) – String
    • ecosystem – Optionales Ökosystem, nach dem gefiltert werden soll (java, cs, py, js, ts) – String
  • get_intended_architecture – Ruft benutzerdefinierte Architekturvorgaben ab, die festlegen, welche Module von anderen abhängig sein dürfen.

Richtlinien-Tools
  • get_guidelines – Ruft Codierungsrichtlinien ab, die auf SonarQube-Projektproblemen, Katalogkategorien oder einer Kombination aus beidem basieren.
    • mode – Modus zum Abrufen von 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 Repository-Schlüsselformat von SonarQube (erforderlich, wenn categories angegeben ist) – String[]
    • file_paths – Optionale Liste von Dateipfaden, nach denen die Richtlinien gefiltert werden – String[]
Tools für Drittanbieterabhängigkeiten
  • check_dependency – Prüft eine Drittanbieterabhängigkeit vor dem Hinzufügen oder Aktualisieren auf Sicherheitslücken, Malware in der Lieferkette und Lizenzkonformität.
    • 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 zur Kontextanreicherung
VariableBeschreibungErforderlichStandardwert
SONARQUBE_URLSonarQube-Cloud-URLJahttps://sonarcloud.io
SONARQUBE_TOKENAuthentifizierungstokenJaNone
SONARQUBE_ORGCloud-Organisation; wird aus der Startkonfiguration oder durch eindeutige Erkennung an den Proxy übergebenNeinNone
SONARQUBE_PROJECT_KEYProjektschlüssel in SonarQube CloudJaNone
SONAR_SQ_BRANCHExplizite SonarQube-Branch-Überschreibung *NeinNone
SONARQUBE_DEBUG_ENABLEDDebug-Protokollierung aktivieren (zur Fehlerbehebung)NeinFalse
SONAR_LOG_LEVELAusführlichkeit der Protokollierung (TRACE, DEBUG, INFO, WARNING, ERROR)NeinINFO
  • Muss angegeben werden, wenn Git nicht verwendet wird oder der Git-Branchname nicht mit dem Branchnamen 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>}"

Binden Sie anschließend den Projektarbeitsbereich ein, damit der Context Augmentation-Server direkt auf Ihre Quelldateien zugreifen kann:

{
  "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: Fügen Sie in einer projektbezogenen Konfiguration SONARQUBE_TOKEN nicht in den env-Block ein. Exportieren Sie die Variable als Umgebungsvariable (export SONARQUBE_TOKEN=...). Docker leitet sie über -e SONARQUBE_TOKEN an den Container weiter.

Agentische Bereitschaft

Hinweis: Die Tools für agentische Bereitschaft sind nur in SonarQube Cloud verfügbar und setzen voraus, dass die Funktion für Ihre Organisation aktiviert ist.

Im stdio-Modus wird das Feature-Flag beim Start geprüft. Über HTTP/HTTPS fügen Sie agentic-readiness zur SONARQUBE_TOOLSETS des Servers hinzu, um die Tools zu aktivieren.

  • start_agentic_readiness_assessment – Startet eine Bewertung der agentischen Bereitschaft für ein Projekt. Gibt sofort den Status PENDING und eine assessmentId zurück. Verwenden Sie get_agentic_readiness_assessment, um die Ergebnisse abzufragen.

    • projectKey – Der Projektschlüssel – Erforderlicher String (Wird ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • branch – Zu bewertender Branch. Lassen Sie den Wert weg, um den Standard-Branch des Projekts zu verwenden – String
  • get_agentic_readiness_assessment – Ruft das Ergebnis einer Bewertung ab. Rufen Sie das Tool mit derselben assessmentId erneut auf, bis der Status COMPLETED, FAILED oder INTERRUPTED lautet. Nach Abschluss werden die Gesamtstufe und eine Aufschlüsselung nach Säulen mit empfohlenen Maßnahmen und Nachweisen 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, beginnend mit der neuesten. 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 (Wird ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • branch – Bewertungen nach Branchname filtern. Lassen Sie den Wert weg, um Bewertungen für alle Branches aufzulisten – String
    • pageIndex – 1-basierter Seitenindex (Standard: 1) – Number
    • pageSize – Anzahl der Elemente pro Seite, maximal 100 (Standard: 50) – Number

Architektur

Hinweis: Aktivieren Sie diese Tools mit SONARQUBE_TOOLSETS=architecture im stdio- oder HTTP/HTTPS-Modus. SonarQube Cloud erfordert einen Team- oder Enterprise-Plan. SonarQube Server erfordert Version 2026.6 oder höher und mindestens die Developer Edition; die Tools sind in älteren Versionen und im Community Build nicht verfügbar. Siehe Architektur-Workflows und Wiederherstellung.

  • architecture_get – Liest aktuelle Abhängigkeiten, die vorgesehene Architektur, Projektdirektiven oder Findings (Abweichungen, Fehler und Code-Smells).

    • target – current, intended, directives oder findings; die Verfügbarkeit hängt vom MCP- und Server-Build ab – Erforderlicher Enum
    • projectKey – Der Projektschlüssel – Erforderlicher String (Wird ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • organization – Organisationsschlüssel von SonarQube Cloud, wenn keine Organisation konfiguriert ist – Optionaler String, nur Cloud
    • component – Exakter aktueller Knotenschlüssel oder Pfad der vorgesehenen Gruppe; standardmäßig die oberste Ebene, wenn nicht angegeben – String
    • depth – Nur für aktuelle/vorgesehene Architektur: Ebenen unterhalb des Startpunkts; standardmäßig 1 für die aktuelle und alle für die vorgesehene Architektur – Number
    • language – Nur für aktuelle/vorgesehene Architektur/Findings: java, cs, js, ts oder py – Enum
    • directiveId – Vollständige Direktive anhand der UUID, einschließlich Beschreibung; anstelle der Seitennavigation verwenden – String
    • category / type – Nur für Findings: Abweichungen, Fehler oder Code-Smells nach ihrem angegebenen Typ filtern – Enum
    • pageIndex – Nur für Direktiven/Findings: 1-basierter Seitenindex (Standard: 1) – Number
    • pageSize – Direktiven: Zusammenfassungen, Standard/Maximum 50. Findings: Standard 50, Maximum 1000; 0 zählt nur – Number
  • architecture_set – Ersetzt die gesamte vorgesehene Architektur oder erstellt, aktualisiert und löscht Projektdirektiven. Verfügbar in unterstützten Cloud- und Server-Builds, wenn Schreibvorgänge aktiviert sind.

    • target – intended oder directives – Erforderlicher Enum
    • projectKey – Der Projektschlüssel – Erforderlicher String (Wird ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • organization – Organisationsschlüssel von SonarQube Cloud, wenn keine Organisation konfiguriert ist – Optionaler String, nur Cloud
    • model – JSON-String: vollständiger Export der vorgesehenen Architektur oder models-Array (nicht angegebene Inhalte werden entfernt) oder Direktivenänderungen mit den Arrays create, update und delete – Erforderlicher String
    • dryRun – true zur Vorschau, false zum Anwenden – Erforderlicher Boolean
    • revision – Nur für die vorgesehene Architektur: Revision aus architecture_get; standardmäßig die Revision des vollständigen Exports. Beim Anwenden einer Löschung erforderlich – String

Beispiel-Prompts

Nachdem Sie den SonarQube MCP Server eingerichtet haben, finden Sie hier einige Beispiel-Prompts für gängige Szenarien aus der Praxis:

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?
Prüfungen vor der Veröffentlichung und dem Zusammenführen
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?
Codequalität verbessern
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?
Probleme verstehen und beheben
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?
Sicherheit 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 Code-Reviews
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.
Projektzustand überwachen
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

Verwenden Sie vorzugsweise das Container-Image sonarsource/sonarqube-mcp.

Um den Server als eigenständige JAR-Datei ohne Docker auszuführen, laden Sie eine vorgefertigte Version aus dem SonarSource-Binärrepository herunter. Jede veröffentlichte Version wird dort als sonarqube-mcp-server-<version>.jar bereitgestellt (zum Beispiel sonarqube-mcp-server-1.19.0.2785.jar).

Ausführung über JAR

Laden Sie die JAR-Datei für die gewünschte Version aus dem Binärrepository herunter und konfigurieren Sie anschließend Ihren MCP-Client so, dass sie mit Java 21 oder höher ausgeführt wird:

  • 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>"
    }
  }
}
  • 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

Zum Erstellen des SonarQube MCP Servers ist ein Java Development Kit (JDK) der Version 21 oder höher erforderlich.

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.

Generieren Sie nach dem Hinzufügen oder Aktualisieren von Abhängigkeiten die Lock-Dateien neu:

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

Verwenden Sie die obige Konfiguration Ausführung über JAR und setzen Sie <path_to_sonarqube_mcp_server_jar> auf die JAR-Datei in build/libs/.

Fehlerbehebung

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

Häufige Probleme

„Die SonarQube-Serverversion wird nicht unterstützt“

Der MCP-Server prüft beim Start die Version des verbundenen SonarQube Servers. Ist die Instanz älter als 2025.1 (SQS) oder 25.1 (SQCB), schlägt der Start mit folgender Meldung fehl:

SonarQube server version is not supported, minimal version is SQS 2025.1 or SQCB 25.1

Lösung: Aktualisieren Sie SonarQube Server auf eine unterstützte Version. Diese Prüfung gilt nur bei einer Verbindung mit SonarQube Server (SONARQUBE_URL ohne SONARQUBE_ORG), nicht für SonarQube Cloud.

„Funktion funktioniert nicht“ oder „Tools/Funktionalität fehlen“

Möglicherweise verwenden Sie ein veraltetes Docker-Image. Docker speichert Images lokal zwischen, sodass Sie Aktualisierungen nicht automatisch 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, damit die aktualisierte Version verwendet wird.

Optional können Sie Ihrem docker run-Befehl das Flag --pull=always hinzufügen, damit stets geprüft wird, ob eine neuere Version verfügbar ist, und diese gegebenenfalls abgerufen wird:

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

„Ich möchte eine bestimmte Version festlegen“

Sehen Sie sich die verfügbaren Tags unter sonarsource/sonarqube-mcp an und geben Sie die gewünschte Version an:

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 unbemerkt aktualisiert.

Daten und Telemetrie

Dieser Server erfasst anonyme Nutzungsdaten und sendet sie an SonarSource, um zur Verbesserung des Produkts beizutragen. 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 Nutzung des SonarQube MCP Server gemäß dieser Dokumentation gilt als nicht wettbewerbsorientierter Zweck und ist daher gemäß der SSAL zulässig.

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