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?

  • Code-Snippets analysieren — Bitten Sie Ihren Assistenten, eine lokale Code-Analyse für ein Snippet oder eine Datei über analyze_code_snippet auszuführen, optional mit Workspace-Mounting, um Kontextblähung zu vermeiden.
  • Issues suchen und verwalten — Lassen Sie den Assistenten SonarQube-Issues finden, überprüfen und aktualisieren, einschließlich der Änderung ihres Status, wenn nicht im Nur-Lese-Modus.
  • Qualitäts-Gates und Messwerte prüfen — Fragen Sie nach Qualitäts-Gate-Status, Projektmetriken, Abdeckung und Abhängigkeitsrisiken in Ihren SonarQube-Projekten.
  • Sicherheits-Hotspots überprüfen — Lassen Sie den Assistenten Sicherheits-Hotspots suchen und durchgehen, die in Ihrer Codebasis markiert wurden.
  • Projekte und Regeln durchsuchen — Nutzen Sie den Assistenten, um Projekte zu erkunden, unterstützte Sprachen aufzulisten und Codierungsregeln direkt aus SonarQube nachzuschlagen.

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.

Schnelleinrichtung

Sicherheitsempfehlungen

🔒 Wichtig: Ihr SonarQube-Token ist eine sensible Zugangsberechtigung. Beachten Sie folgende Sicherheitspraktiken:

Bei Verwendung von CLI-Befehlen:

  • Vermeiden Sie das Hartkodieren von Tokens in Befehlszeilenargumenten – diese 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 an die Versionskontrolle
  • Nutzen Sie Umgebungsvariablen-Substitution in Konfigurationsdateien, wenn möglich

🚀 Generieren Sie Ihre Konfiguration

Der schnellste Weg zum Start ist der SonarQube MCP Server Konfigurationsgenerator – ein interaktives Tool, das eine gebrauchsfertige Konfiguration für Ihren bevorzugten KI-Agenten-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 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: Obwohl die Beispiele unten docker verwenden, funktioniert jede OCI-kompatible Container-Laufzeitumgebung (z. B. Podman, nerdctl). Ersetzen Sie einfach docker durch Ihr bevorzugtes Werkzeug.

Antigravity

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

  1. Öffnen Sie das Agent Side Panel
  2. Klicken Sie auf die drei Punkte (...) oben rechts 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 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 "SONARQUBE_URL": "https://sonarqube.us" zum Abschnitt env und "-e", "SONARQUBE_URL" zum Array args manuell 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 "SONARQUBE_URL": "https://sonarqube.us" nach der Installation manuell 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 sie von dort aus.

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-BENUTZER-Token
    • 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 zu 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 "SONARQUBE_URL": "https://sonarqube.us" nach der Installation manuell zum Abschnitt env in Ihrer MCP-Konfiguration hinzu.

Install for SonarQube Server

Windsurf

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

  1. Öffnen Sie 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 SonarQube MCP Server und klicken Sie auf Install
  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"
}

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 zu ziehen oder vor der Meldung von Problemen, um sicherzustellen, dass 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 MCP-Server-Konfigurationsdatei 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 für IDE

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

Konfiguration

Bei Verwendung von SonarQube für IDE sollte die Umgebungsvariable SONARQUBE_IDE_PORT mit der korrekten Portnummer gesetzt werden. SonarQube für VS Code enthält eine Quick-Install-Schaltfläche, die die korrekte Portkonfiguration automatisch 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-für-IDE-Server zugreifen, der auf localhost läuft. Um dem Container die Verbindung zum SonarQube-für-IDE-Server zu ermöglichen, fügen Sie die Option --network=host zu Ihrem Container-Ausführungsbefehl hinzu.

Konfiguration

Abhängig von Ihrer Umgebung sollten Sie spezifische 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); wird automatisch bereitgestellt, wenn das Container-Image verwendet wird
SONARQUBE_PROJECT_KEYOptionaler Standard-Projektschlüssel. Wenn gesetzt, verwenden alle Tools, die einen Projektschlüssel erfordern, 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 für IDE zu verbinden.
SONARQUBE_DEBUG_ENABLEDWenn auf true gesetzt, aktiviert die Debug-Protokollierung. Debug-Protokolle werden sowohl in die Protokolldatei als auch nach STDERR geschrieben. Nützlich zur Fehlerbehebung bei Konnektivitäts- oder Konfigurationsproblemen. Standard: false.
SONARQUBE_LOG_TO_FILE_DISABLEDWenn auf true gesetzt, deaktiviert das Schreiben von Protokollen auf die Festplatte vollständig. Es werden keine Protokolldateien unter STORAGE_PATH/logs/ erstellt. Nützlich in containerisierten oder ephemeren Umgebungen, in denen Dateiprotokollierung unerwünscht ist. Standard: false.

Workspace-Mount (Reduzierung des Kontextaufblähens)

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 die Nutzung des Kontextfensters und die Kosten erheblich. Lösung: Binden Sie Ihr Projektverzeichnis in den Container unter /app/mcp-workspace ein. Wenn dieser Mount erkannt wird, liest der Server Dateien direkt von der Festplatte über das projektrelative filePath-Argument — Dateiinhalte gelangen nie über 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 weitere 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 zum Auffinden von Projekt-Schlüsseln für andere Operationen erforderlich ist. 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 zu nutzen. Auf SonarQube Server listet stdio Vortex-Kontext und run_advanced_code_analysis auf, wenn sowohl die CAG- als auch die A3S-Hubs berechtigt sind. Bevorzugen Sie den einheitlichen vortex-Toolset-Schlüssel. Die veralteten cag- und analysis-Schlüssel funktionieren weiterhin; eine Startwarnung und ein Veraltungshinweis in den Server-Anweisungen werden ausgegeben, wenn sie ohne vortex verwendet werden. Im Streamable-HTTP-Modus können Clients einen SONARQUBE_TOOLSETS-HTTP-Header senden, um dies pro Anfrage weiter einzuschränken, können aber keine Toolsets aktivieren, die über das hinausgehen, womit der Server gestartet wurde (siehe Streamable-HTTP-Transport unten).
SONARQUBE_READ_ONLYWenn auf true gesetzt, aktiviert dies den Nur-Lese-Modus, der alle Schreiboperationen deaktiviert (z. B. Ä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-Lesen 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-Brücken-Tools (Dateianalyse, automatische Analyse-Umschaltung) — derzeit auch in analysis enthalten
IssuesissuesSonarQube-Issues suchen und verwalten
Security Hotspotssecurity-hotspotsSecurity Hotspots suchen und überprüfen
ProjekteprojectsSonarQube-Projekte durchsuchen und suchen
Qualitäts-Gatesquality-gatesAuf Qualitäts-Gates und deren Status zugreifen
RegelnrulesSonarQube-Regeln durchsuchen und suchen
QuellensourcesAuf Quellcode und SCM-Informationen zugreifen
DuplikationenduplicationsCodeduplikationen über Projekte hinweg 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 bündelt (nur stdio; Cloud benötigt kombinierte Organisationsberechtigung; Server benötigt beide Hubs berechtigt)
Agentic Readinessagentic-readinessAgentic Readiness Assessment-Tools (SonarQube Cloud, erfordert Organisationsberechtigung)

Beispiele

Analyse-, Issues- und Qualitäts-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 projects-Toolset ist 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). Verwenden Sie dies für SonarQube Cloud US: https://sonarqube.usNein

Beispiele:

  • SonarQube Cloud: Nur SONARQUBE_TOKEN und SONARQUBE_ORG sind erforderlich
  • SonarQube Cloud US: Setzen Sie SONARQUBE_TOKEN, SONARQUBE_ORG und SONARQUBE_URL=https://sonarqube.us

SonarQube Server

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

Versionsanforderung: SonarQube Server 2025.1 (SQS) oder 25.1 (SonarQube Community Build) oder neuer ist erforderlich. Beim Start liest der MCP-Server die Version der verbundenen Instanz und beendet sich mit einem Fehler, wenn diese zu alt ist (z. B. werden ältere 9.x/10.x Server-Releases und Community Build 24.x nicht unterstützt). SonarQube Cloud unterliegt dieser Prüfung nicht.

⚠️ Die Verbindung zu SonarQube Server erfordert ein Token vom Typ USER 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 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 reine SSE-HTTP-Transport aus früheren MCP-Versionen ist veraltet und wird nicht unterstützt.

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

Der empfohlene Modus für lokale Entwicklung und Einzelbenutzereinrichtungen, 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)8080
SONARQUBE_HTTP_HOSTHost, an den gebunden wird (standardmäßig localhost aus Sicherheitsgründen)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSKommagetrennte 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 verwenden (Podman, Kubernetes, Nomad usw.).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 bereitstellen. Clients können die sichtbaren Tools pro Anfrage auch eingrenzen, indem sie SONARQUBE_TOOLSETS- und/oder SONARQUBE_READ_ONLY-Header bereitstellen; diese wenden zusätzliche Filterung auf der Grundlage der Serverkonfiguration an – sie können den Umfang nur reduzieren, niemals erweitern. Zwischen Anfragen wird kein Sitzungsstatus aufrechterhalten.

Veraltet: Der SONARQUBE_TOKEN-Anfrageheader wird 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) (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 aus Sicherheitsgründen standardmäßig 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 (normalerweise 8443 für HTTPS)8080
SONARQUBE_HTTP_HOSTHost, an den gebunden wird (standardmäßig localhost aus Sicherheitsgründen)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSKommagetrennte 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 verwenden (Podman, Kubernetes, Nomad usw.).false

SSL-Zertifikatkonfiguration (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: Wenn in einem Container ausgeführt, setzen Sie SONARQUBE_HTTP_HOST=0.0.0.0, damit der Container auf allen Schnittstellen lauscht und das Port-Mapping 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 verwenden (Podman, Kubernetes, Nomad usw.). Das Port-Flag auf der Hostseite 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 spezifische Anfrage eingrenzen. Sie können den Umfang nur reduzieren – sie können keine Toolsets aktivieren oder Einschränkungen aufheben, die über den Start des Servers hinausgehen.

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

Dienst-Endpunkte

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

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

Diese Endpunkte sind nicht verfügbar, wenn der Stdio-Transport verwendet wird.

Benutzerdefinierte Zertifikate

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

Konfiguration

Verwenden eines Volume-Mounts

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-codiert)
  • .pem-Dateien (PEM-codiert)

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-Datei statt aus dem Container aus? Das obige Volume-Mount installiert Zertifikate im OS-Vertrauensspeicher des Containers, den der Server ebenfalls liest. Wenn Sie den OS-Vertrauensspeicher nicht verwenden können – insbesondere unter Windows, wo er nicht berücksichtigt wird – weisen Sie die JVM auf einen Java-Truststore hin, 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.

Allgemeine 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-Hostname—localhost
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 einhängen und seinen Speicherort über JAVA_OPTS übergeben.

Konfiguration

Verwenden eines PKCS12-Keystores

Hängen Sie Ihre .p12- oder .pfx-Datei 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. Überprüfen und korrigieren Sie die Berechtigungen bei Bedarf:

ls -la /path/to/client.p12       # nach -rw-r--r-- (644) oder breiter suchen
chmod 644 /path/to/client.p12    # Lesezugriff für den Container-Benutzer gewähren

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 einem eigenständigen JAR

Wenn Sie den Server aus einem 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, um sie zu konvertieren.

Tools

Analyse

  • analyze_code_snippet - Analysiert Dateiinhalte mit SonarQube-Analysatoren, um Codequalitäts- und Sicherheitsprobleme zu identifizieren. Analysiert für Genauigkeit immer den vollständigen Dateiinhalt. Optional können Ergebnisse auf einen bestimmten Codeausschnitt 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 eingehängtem Arbeitsbereich (empfohlen): übergeben Sie filePath (projektrelativ) – der Server liest die Datei direkt und hält den Dateiinhalt aus dem Agenten-Kontextfenster heraus
    • Ohne eingehängten Arbeitsbereich: übergeben Sie den vollständigen fileContent für die vollständige Dateianalyse (meldet alle Probleme)
    • Fügen Sie optional codeSnippet hinzu, um Ergebnisse zu filtern – nur Probleme innerhalb des Ausschnitts werden gemeldet (Ausschnittspeicherort wird automatisch erkannt)

    Parameter:

    • projectKey - Der SonarQube-Projektschlüssel - Erforderliche Zeichenfolge (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 eingehängt ist - Zeichenfolge
    • fileContent - Vollständiger Dateiinhalt als Zeichenfolge. Erforderlich, wenn der Arbeitsbereich nicht eingehängt ist - Zeichenfolge
    • codeSnippet - Codeausschnitt zum Filtern von Problemen (muss mit dem Inhalt in fileContent übereinstimmen) - Zeichenfolge
    • language - Sprache des Codes (z. B. 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - Zeichenfolge
    • scope - Geltungsbereich der Datei: MAIN oder TEST (Standard: MAIN) - Zeichenfolge

    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 unter dem analysis- als auch unter dem ide-Toolset gekennzeichnet)

  • analyze_file_list - Analysiert Dateien im aktuellen Arbeitsverzeichnis mit SonarQube for IDE. Dieses Tool 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 boolescher Wert

Auf dem SonarQube-Server listet stdio Vortex-Kontexttools und run_advanced_code_analysis auf, wenn sowohl die CAG- als auch die A3S-Hubs lizenziert sind.

Wenn die Vortex-Analyse aktiviert ist:

Erfordert, dass der Arbeitsbereich unter /app/mcp-workspace eingehängt ist

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

Abdeckung

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

    • projectKey - Der Projektschlüssel, in dem gesucht werden soll - Erforderliche Zeichenfolge (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 - Zeichenfolge
    • pullRequest - Optionaler Pull-Request-Schlüssel/ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln - Zeichenfolge
    • maxCoverage - Maximaler Abdeckungsschwellenwert (0-100). Nur Dateien mit Abdeckung <= diesem Wert zurückgeben - 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 Tool hilft, genau zu identifizieren, wo Testabdeckung hinzugefügt werden sollte. Verwenden Sie es, nachdem Sie Dateien mit geringer Abdeckung über search_files_by_coverage identifiziert haben.

    • key - Dateischlüssel (z. B. my_project:src/foo/Bar.java) - Erforderliche Zeichenfolge
    • branch - Optionaler Zweigname für die zweigbasierte Analyse. Verwenden Sie list_branches, um gültige Namen zu ermitteln - Zeichenfolge
    • pullRequest - Optionaler Pull-Request-Schlüssel/ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln - Zeichenfolge
    • 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 hergestellt wird.

  • search_dependency_risks - Sucht nach Software-Composition-Analyse-Problemen (Abhängigkeitsrisiken) eines SonarQube-Projekts, zusammen mit Releases, die im analysierten Projekt, in der Anwendung oder im Portfolio erscheinen.
    • projectKey - Projektschlüssel - Erforderliche Zeichenfolge (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 - Zeichenfolge
    • pullRequest - Optionaler Pull-Request-Schlüssel/ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln - Zeichenfolge
    • 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 hergestellt wird.

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

Probleme

  • change_sonar_issue_status - Ändert den Status eines SonarQube-Problems auf "accept", "falsepositive" oder "reopen".

    • key - Problemschlüssel - Erforderliche Zeichenfolge
    • status - Neuer Status des Problems - Erforderliche Aufzählung {"accept", "falsepositive", "reopen"}
    • comment - Optionaler Kommentar, der die Statusänderung erklärt - Zeichenfolge
  • 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 - Zeichenfolge
    • pullRequest - Optionaler Pull-Request-Schlüssel/ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln - Zeichenfolge
    • 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[]
    • tags - Optionale Liste von Problem-Tags zum Filtern. Tags sind kleingeschrieben - String[]
    • inNewCodePeriod - Nur Probleme im Zeitraum des neuen Codes zurückgeben. Erfordert genau einen Eintrag in projectKeys und files - Boolescher Wert
    • issueKey - Optionaler Problemschlüssel zum Abrufen eines bestimmten Problems - Zeichenfolge
    • 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 Zeichenfolge (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 - Zeichenfolge
    • pullRequest - Optionaler Pull-Request-Schlüssel/ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln - Zeichenfolge
    • files - Optionale Liste von Dateipfaden zum Filtern - String[]
    • status - Optionaler Statusfilter: TO_REVIEW, REVIEWED - Zeichenfolge
    • resolution - Optionaler Auflösungsfilter: FIXED, SAFE, ACKNOWLEDGED - Zeichenfolge
    • sinceLeakPeriod - Hotspots filtern, die seit dem Leak-Zeitraum (neuer Code) erstellt wurden - Boolescher Wert
    • onlyMine - Nur Hotspots anzeigen, die mir zugewiesen sind - Boolescher Wert
    • 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 - Sicherheits-Hotspot-Schlüssel - Erforderliche Zeichenfolge
  • change_security_hotspot_status - Ein Security Hotspot überprüfen, indem sein Status geändert wird. Wenn als REVIEWED markiert wird, muss eine Auflösung (FIXED, SAFE oder ACKNOWLEDGED) angegeben werden.

    • hotspotKey - Security-Hotspot-Schlüssel - 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 - Alle in dieser SonarQube-Instanz unterstützten Programmiersprachen auflisten.
    • q - Optionales Muster, gegen das Sprachschlüssel/-namen abgeglichen werden - Zeichenkette

Messwerte

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

Metriken

  • search_metrics - Nach SonarQube-Metriken suchen.
    • 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 - Verfügbare Enterprise-Portfolios in SonarQube mit Filter- und Paginierungsoptionen auflisten.

    Für SonarQube Server:

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

    Für SonarQube Cloud:

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

Projekte

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

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

    • 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 Branchnamen als branch-Parameter für andere Tools. Verwenden Sie für die Pull-Request-Analyse stattdessen list_pull_requests.
    • projectKey - Projekt-Schlüssel (z. B. my_project) - Erforderliche Zeichenkette (Ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • branchTypes - (Nur SonarQube Cloud) Optionaler Filter: ALL (Standard), LONG oder SHORT - Aufzählung {"ALL", "LONG", "SHORT"}
  • list_pull_requests - Alle Pull-Requests für ein Projekt auflisten. Verwenden Sie dieses Tool, um Pull-Requests für die PR-dekorierte Analyse (Abdeckung, Probleme, Qualitätsgate) zu ermitteln. Gibt den Pull-Request-Schlüssel/-ID zurück, der/die mit anderen Tools verwendet werden kann. Verwenden Sie für die branchbasierte Analyse ohne Pull-Requests stattdessen list_branches.

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

Qualitätsgates

  • get_project_quality_gate_status - Den Qualitätsgate-Status für das SonarQube-Projekt abrufen.

    • analysisId - Optionale Analyse-ID - Zeichenkette
    • branch - Optionaler Branchname für die branchbasierte Analyse. Verwenden Sie list_branches, um gültige Namen zu ermitteln - Zeichenkette
    • projectId - Optionale Projekt-ID - Zeichenkette
    • projectKey - Optionaler Projekt-Schlüssel - Zeichenkette
    • pullRequest - Optionaler Pull-Request-Schlüssel/-ID. Verwenden Sie list_pull_requests, um gültige Schlüssel zu ermitteln - Zeichenkette
  • list_quality_gates - Alle Qualitätsgates in meinem SonarQube auflisten.

Regeln

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

Duplikate

  • search_duplicated_files - Nach Dateien mit Codeduplikaten in einem SonarQube-Projekt suchen. 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 - Erforderliche Zeichenkette (Ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • branch - Optionaler Branchname für die branchbasierte 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
    • pageSize - Optionale Anzahl der Ergebnisse pro Seite für die manuelle Paginierung (maximal: 500). Wenn nicht angegeben, werden automatisch alle duplizierten Dateien abgerufen - Ganzzahl
    • pageIndex - Optionale Seitennummer für die manuelle Paginierung (beginnt bei 1). Wenn nicht angegeben, werden automatisch alle duplizierten Dateien abgerufen - Ganzzahl
  • get_duplications - Duplikate für eine Datei abrufen. Erfordert die Berechtigung 'Browse' für das Projekt der Datei.

    • key - Dateischlüssel - Erforderliche Zeichenkette
    • branch - Optionaler Branchname für die branchbasierte 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

Quellen

  • get_raw_source - Quellcode als Rohtext von SonarQube abrufen. Erfordert die Berechtigung 'See Source Code' für die Datei.

    • key - Dateischlüssel - Erforderliche Zeichenkette
    • branch - Optionaler Branchname für die branchbasierte 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
  • get_scm_info - SCM-Informationen von SonarQube-Quelldateien abrufen. Erfordert die Berechtigung 'See Source Code' für das Projekt der Datei.

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

System

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

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

  • get_system_info - Detaillierte Informationen zur Systemkonfiguration des SonarQube-Servers abrufen, einschließlich JVM-Zustand, Datenbank, Suchindizes und Einstellungen. Erfordert die Berechtigung 'Administer'.

  • get_system_logs - Systemprotokolle des SonarQube-Servers im Klartextformat abrufen. Erfordert die Systemadministrationsberechtigung.

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

  • get_system_status - Zustandsinformationen über den SonarQube-Server abrufen. Gibt Status (STARTING, UP, DOWN, RESTARTING, DB_MIGRATION_NEEDED, DB_MIGRATION_RUNNING), Version und ID zurück.

Webhooks

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

    • name - Webhook-Name - Erforderliche Zeichenkette
    • url - Webhook-URL - Erforderliche Zeichenkette
    • projectKey - Optionaler Projekt-Schlüssel für projektspezifische Webhooks - Zeichenkette
    • secret - Optionales Webhook-Geheimnis zum Sichern der Webhook-Nutzlast - Zeichenkette
  • list_webhooks - Alle Webhooks für die SonarQube-Organisation oder das Projekt auflisten. Erfordert die Berechtigung 'Administer' für das angegebene Projekt oder die globale Berechtigung 'Administer'.

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

Kontextanreicherung

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

    • include_code_regex_list - Liste von Regex-Mustern, die gegen Signaturen abgeglichen werden - Erforderliche Zeichenkette[]
    • exclude_code_regex_list - Liste von Regex-Mustern, die von den Ergebnissen ausgeschlossen werden - Zeichenkette[]
    • include_glob - Dateifilter-Glob-Muster (z. B. *.java) - Zeichenkette
    • exclude_glob - Dateiausschluss-Glob-Muster - Zeichenkette
    • fields - Kommagetrennte Liste von Feldern, die in die Antwort aufgenommen werden - Zeichenkette
    • limit - Maximale Anzahl der zurückzugebenden Ergebnisse (Standard: 10) - Ganzzahl
    • regex_lists_operator - Wie mehrere Muster kombiniert werden: OR (Standard) oder AND - Zeichenkette
  • search_by_body_patterns - Codeelemente anhand ihres Implementierungsrumpfs mit Regex-Mustern finden. Nützlich, um zu lokalisieren, wo APIs oder Muster tatsächlich verwendet werden.

    • include_code_regex_list - Liste von Regex-Mustern, die in Code-Rümpfen abgeglichen werden - Erforderliche Zeichenkette[]
    • exclude_code_regex_list - Liste von Regex-Mustern, die von den Ergebnissen ausgeschlossen werden - Zeichenkette[]
    • include_glob - Dateifilter-Glob-Muster - Zeichenkette
    • exclude_glob - Dateiausschluss-Glob-Muster - Zeichenkette
    • fields - Kommagetrennte Liste von Feldern, die in die Antwort aufgenommen werden - Zeichenkette
    • limit - Maximale Anzahl der zurückzugebenden Ergebnisse (Standard: 10) - Ganzzahl
    • regex_lists_operator - Wie mehrere Muster kombiniert werden: OR (Standard) oder AND - Zeichenkette
  • get_upstream_call_flow - Verfolgen, 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 - Vollständig qualifizierter Name der Funktion - Erforderliche Zeichenkette
    • depth - Aufrufketten-Tiefe (0=nur Funktion, 1=direkte Aufrufer, usw.) - Ganzzahl
    • fields - Kommagetrennte Liste von Feldern, die in die Antwort aufgenommen werden - Zeichenkette
  • get_downstream_call_flow - Verfolgen, welche Funktionen eine bestimmte Funktion aufruft. Nützlich für die Auswirkungsanalyse und das Verständnis des Ausführungsflusses.

    • fqn - Vollständig qualifizierter Name der Funktion - Erforderliche Zeichenkette
    • depth - Aufrufketten-Tiefe (0=nur Funktion, 1=direkte Aufgerufene, usw.) - Ganzzahl
    • fields - Kommagetrennte Liste von Feldern, die in die Antwort aufgenommen werden - Zeichenkette
  • get_source_code - Vollständigen Quellcode (Signatur und Rumpf) für ein Codeelement anhand seines vollständig qualifizierten Namens abrufen.

    • fqn - Vollständig qualifizierter Name des Elements - Erforderliche Zeichenkette
    • fields - Kommagetrennte Liste von Feldern, die in die Antwort aufgenommen werden - Zeichenkette
  • get_type_hierarchy – Ruft die vollständige Vererbungshierarchie für eine klassenähnliche Struktur ab (Klasse, Schnittstelle, Enum, Datensatz, Ausnahme, Struktur). Unverzichtbar zum Verständnis von Vererbungsbäumen und für Refactoring.

    • fqn – Vollständig qualifizierter Name der klassenähnlichen Struktur – Erforderliche Zeichenfolge
    • fields – Kommagetrennte Liste der Felder, die in die Antwort aufgenommen werden sollen – Zeichenfolge
  • 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 – Erforderliche Zeichenfolge
    • fields – Kommagetrennte Liste der Felder, die in die Antwort aufgenommen werden sollen – Zeichenfolge
  • get_current_architecture – Ruft einen hierarchischen Architekturgraphen ab, der nach Pfadpräfix und Tiefe gefiltert ist. Nützlich zum Erkunden der Modulstruktur und hochrangiger Abhängigkeiten.

    • depth – Hierarchietiefe (0=nur Stamm, 1=Stamm + Kinder usw.) – Erforderliche Ganzzahl
    • path_prefix – Optionales Pfadpräfix zum Filtern von Knoten (z. B. com.example.service) – Zeichenfolge
    • ecosystem – Optionales Ökosystem zum Filtern (java, cs, py, js, ts) – Zeichenfolge
  • 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 – Erforderliche Zeichenfolge
    • categories – Liste der Kategorienamen (erforderlich für die Modi category_based und combined) – Zeichenfolge[]
    • languages – Liste der Zielsprachen im SonarQube-Repository-Schlüsselformat (erforderlich, wenn categories angegeben ist) – Zeichenfolge[]
    • file_paths – Optionale Liste von Dateipfaden zum Filtern der Richtlinien – Zeichenfolge[]
Tools für Drittanbieter-Abhängigkeiten
  • check_dependency – Überprüft eine Drittanbieter-Abhängigkeit auf Sicherheitslücken, Supply-Chain-Malware und Lizenzkonformität, bevor sie hinzugefügt oder aktualisiert wird.
    • purl – Paket-URL (purl) mit Version, gemäß purl-Spezifikation. 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) – Erforderliche Zeichenfolge
Umgebungsvariablen für die Kontextanreicherung
VariableBeschreibungErforderlichStandard
SONARQUBE_URLSonarQube-Cloud-URLJahttps://sonarcloud.io
SONARQUBE_TOKENAuthentifizierungstokenJaKeine
SONARQUBE_ORGOrganisationsschlüssel in der SonarQube-CloudJaKeine
SONARQUBE_PROJECT_KEYProjektschlüssel in der SonarQube-CloudJaKeine
SONAR_SQ_BRANCHExplizite SonarQube-Zweigü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-Zweigname nicht mit dem Zweignamen in SonarQube übereinstimmt.
Projektspezifische Konfiguration (empfohlen)

Exportieren Sie zunächst die Umgebungsvariable SONARQUBE_TOKEN mit einem gültigen Persönlichen Zugriffstoken (PAT) für Ihr Projekt.

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

Mounten Sie dann den Projektarbeitsbereich, um dem Kontextanreicherungs-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.

Agentische Bereitschaft

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

  • start_agentic_readiness_assessment – Startet eine Bewertung der agentischen Bereitschaft 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 – Erforderliche Zeichenfolge (Ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • branch – Zu bewertender Zweig. Weglassen, um den Standardzweig des Projekts zu verwenden – Zeichenfolge
  • 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. Bei 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 – Erforderliche Zeichenfolge
  • 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 – Erforderliche Zeichenfolge (Ignoriert, wenn SONARQUBE_PROJECT_KEY definiert ist)
    • branch – Bewertungen nach Zweignamen filtern. Weglassen, um Bewertungen für alle Zweige aufzulisten – Zeichenfolge
    • pageIndex – 1-basierter Seitenindex (Standard: 1) – Zahl
    • pageSize – Anzahl der Elemente pro Seite, maximal 100 (Standard: 50) – Zahl

Beispielaufforderungen

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

Beheben eines fehlgeschlagenen Qualitätsgates
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?
Vorab- 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 einen vorgefertigten Release aus dem SonarSource-Binärdatei-Repository 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ärdatei-Repository herunter und konfigurieren Sie dann Ihren MCP-Client, um es mit Java 21 oder höher auszuführen:

  • Für die Verbindung mit der 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>"
    }
  }
}
  • Für die Verbindung mit dem 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 ein Java Development Kit (JDK) Version 21 oder höher zum Erstellen.

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

„SonarQube-Serverversion wird nicht unterstützt“

Der MCP-Server überprüft beim Start die Version des verbundenen SonarQube-Servers. Wenn die Instanz älter als 2025.1 (SQS) oder 25.1 (SQCB) ist, schlägt der Start mit folgendem Fehler fehl:

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

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

„Funktion funktioniert nicht“ oder „Fehlende Tools/Funktionen“

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 die neueste Version zu prüfen und 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 verfügbare 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 sammelt anonyme Nutzungsdaten und sendet sie an SonarSource, um das Produkt zu verbessern. Es werden weder Quellcode noch IP-Adressen gesammelt, und SonarSource gibt die Daten nicht an Dritte weiter. Die Erfassung von Telemetrie kann mit der folgenden Systemeigenschaft oder Umgebungsvariable deaktiviert werden: TELEMETRY_DISABLED=true. Klicken Sie hier, um ein Beispiel der gesammelten Daten zu sehen.

Lizenz

Copyright 2025 SonarSource.

Lizenziert unter der SONAR Source-Available License v1.0. Die Nutzung des SonarQube-MCP-Servers in Übereinstimmung mit dieser Dokumentation ist ein nicht wettbewerbsbezogener Zweck und daher im Rahmen 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.