SonarQube
offiziellErmö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-mcpmit 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_TOOLSETSundSONARQUBE_READ_ONLY, um zu steuern, welche Tools geladen werden, und Schreibvorgänge zu blockieren.
Dokumentation
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 Siedockereinfach durch Ihr bevorzugtes Tool.
Antigravity
Der SonarQube MCP Server ist im Antigravity MCP Store verfügbar. Folgen Sie diesen Anweisungen:
- Öffnen Sie das Agent-Seitenpanel
- Klicken Sie oben rechts auf die drei Punkte (...) und wählen Sie MCP Servers
- Suchen Sie nach
SonarQubeund wählen Sie Install - 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:
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:
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-TokenSONARQUBE_ORG– Ihr OrganisationsschlüsselSONARQUBE_URL– (Optional) Aufhttps://sonarqube.ussetzen für SonarQube Cloud US
-
Für SonarQube Server:
SONARQUBE_TOKEN– Ihr SonarQube-Server-BENUTZERTOKENSONARQUBE_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.
Für SonarQube Cloud US fügen Sie nach der Installation manuell "SONARQUBE_URL": "https://sonarqube.us" zum Abschnitt env Ihrer MCP-Konfiguration hinzu.
Windsurf
Der SonarQube MCP Server ist als Windsurf-Plugin verfügbar. Folgen Sie diesen Anweisungen:
- Öffnen Sie in Windsurf Settings > Cascade > MCP Servers und wählen Sie Open MCP Marketplace
- Suchen Sie im Cascade MCP Marketplace nach
sonarqube - Wählen Sie SonarQube MCP Server und anschließend Install
- 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=hostzum 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:
| Umgebungsvariable | Beschreibung |
|---|---|
STORAGE_PATH | Obligatorischer 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_KEY | Optionaler 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_PORT | Optionale Portnummer zwischen 64120 und 64130, die für die Verbindung des SonarQube MCP Server mit SonarQube for IDE verwendet wird. |
SONARQUBE_FORCE_LOCAL_ANALYSIS | Auf 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_ENABLED | Wenn 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_DISABLED | Wenn 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.
| Umgebungsvariable | Beschreibung |
|---|---|
SONARQUBE_TOOLSETS | Durch 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_ONLY | Wenn 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:
| Umgebungsvariable | Beschreibung | Erforderlich |
|---|---|---|
SONARQUBE_TOKEN | Ihr SonarQube-Cloud-Token | Ja |
SONARQUBE_ORG | Optionaler fester SonarQube-Cloud-Organisationsschlüssel | Nein |
SONARQUBE_URL | Benutzerdefinierte SonarQube-Cloud-URL (Standard: https://sonarcloud.io). Verwenden Sie diese für SonarQube Cloud US: https://sonarqube.us | Nein |
Beispiele:
- SonarQube Cloud: Nur
SONARQUBE_TOKENist erforderlich.SONARQUBE_ORGlegt die Organisation fest, wenn angegeben. - SonarQube Cloud US: Setzen Sie
SONARQUBE_TOKENundSONARQUBE_URL=https://sonarqube.us;SONARQUBE_ORGist optional.
SonarQube Server
| Umgebungsvariable | Beschreibung | Erforderlich |
|---|---|---|
SONARQUBE_TOKEN | Ihr SonarQube-Server-USER-Token | Ja |
SONARQUBE_URL | Ihre SonarQube-Server-URL | Ja |
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_URLfür SonarQube Server oder eine andere Cloud-Region.SONARQUBE_ORGlegt 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-Transport | Servermodus | Typische Verwendung |
|---|---|---|
| Stdio | Standard (kein SONARQUBE_TRANSPORT) | Lokale MCP-Clients, die den Server als Unterprozess starten (Cursor, Claude Code, VS Code usw.) |
| Streamable HTTP | SONARQUBE_TRANSPORT=http oder https | Remote- 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.
| Umgebungsvariable | Beschreibung | Standard |
|---|---|---|
SONARQUBE_TRANSPORT | Auf http setzen, um den Streamable-HTTP-Transport zu aktivieren | Nicht gesetzt (stdio) |
SONARQUBE_HTTP_PORT | Portnummer (1024–65535) oder 0 für einen vom Betriebssystem zugewiesenen Port | 8080 |
SONARQUBE_HTTP_HOST | Host, an den gebunden werden soll (aus Sicherheitsgründen standardmäßig localhost) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Durch Kommas getrennte Browser-Ursprünge, die für CORS zugelassen sind (z. B. https://my-app.example.com) | Nicht gesetzt |
SONARQUBE_MCP_IN_CONTAINER | Auf 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_ORGist 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_organizationsaufrufen 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_TOKENaus Gründen der Abwärtskompatibilität weiterhin akzeptiert, aber in einer zukünftigen Version entfernt. Migrieren Sie zuAuthorization: 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).
| Umgebungsvariable | Beschreibung | Standardwert |
|---|---|---|
SONARQUBE_TRANSPORT | Auf https setzen, um den Streamable-HTTP-Transport über TLS zu aktivieren | Nicht gesetzt (stdio) |
SONARQUBE_HTTP_PORT | Portnummer (typischerweise 8443 für HTTPS) oder 0 für einen vom Betriebssystem zugewiesenen Port | 8080 |
SONARQUBE_HTTP_HOST | Host, an den gebunden wird (aus Sicherheitsgründen standardmäßig localhost) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Durch Kommas getrennte Browser-Ursprünge, die für CORS zugelassen sind (z. B. https://my-app.example.com) | Nicht gesetzt |
SONARQUBE_MCP_IN_CONTAINER | Auf 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):
| Umgebungsvariable | Beschreibung | Standardwert |
|---|---|---|
SONARQUBE_HTTPS_KEYSTORE_PATH | Pfad zur Keystore-Datei (.p12 oder .jks) | /etc/ssl/mcp/keystore.p12 |
SONARQUBE_HTTPS_KEYSTORE_PASSWORD | Keystore-Passwort | sonarlint |
SONARQUBE_HTTPS_KEYSTORE_TYPE | Keystore-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ßerdemSONARQUBE_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.0steuert 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_TOOLSETSundSONARQUBE_READ_ONLYsind 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.
| Endpunkt | Methode | Beschreibung | Beispielantwort |
|---|---|---|---|
/health | GET | Liveness-Prüfung. Gibt 200 OK mit einem leeren Antworttext zurück, sobald der Server Anfragen annimmt. | (leerer Antworttext) |
/info | GET | Gibt 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:
| Eigenschaft | Beschreibung | Beispiel |
|---|---|---|
http.proxyHost | Hostname des HTTP-Proxys | proxy.example.com |
http.proxyPort | Port des HTTP-Proxys | 8080 |
https.proxyHost | Hostname des HTTPS-Proxys | proxy.example.com |
https.proxyPort | Port des HTTPS-Proxys | 8443 |
http.nonProxyHosts | Hosts, die den Proxy umgehen (durch senkrechte Striche getrennt) | localhost|127.0.0.1|*.internal.com |
Authentifizierung für HTTP/HTTPS-Proxys:
| Eigenschaft | Beschreibung | Beispiel |
|---|---|---|
http.proxyUser | Benutzername für den HTTP-Proxy | myuser |
http.proxyPassword | Passwort für den HTTP-Proxy | mypassword |
https.proxyUser | Benutzername für den HTTPS-Proxy | myuser |
https.proxyPassword | Passwort für den HTTPS-Proxy | mypassword |
SOCKS5-Proxy
SOCKS5-Proxys werden unterstützt.
| Eigenschaft | Beschreibung | Standardwert | Beispiel |
|---|---|---|---|
socksProxyHost | Hostname des SOCKS5-Proxys | — | localhost |
socksProxyPort | Port des SOCKS5-Proxys | 1080 | 1080 |
java.net.socks.username | SOCKS5-Benutzername (falls Authentifizierung erforderlich) | — | myuser |
java.net.socks.password | SOCKS5-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 Sieopenssl 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_snippetwird in einer zukünftigen Version entfernt. Verbinden Sie SonarQube for IDE, umanalyze_file_listzu verwenden, oder aktivieren Sie die Vortex-Analyse für Ihre Organisation, umrun_advanced_code_analysiszu 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
fileContentfür eine vollständige Dateianalyse (meldet alle Probleme) - Fügen Sie optional
codeSnippethinzu, 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 CloudprojectKey- Der SonarQube-Projektschlüssel - Erforderlicher String (Wird ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert 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-workspaceeingebunden ist - StringfileContent- Vollständiger Dateiinhalt als String. Erforderlich, wenn der Workspace nicht eingebunden ist - StringcodeSnippet- Code-Snippet zum Filtern von Problemen (muss mit dem Inhalt in fileContent übereinstimmen) - Stringlanguage- Sprache des Codes (z. B. 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - Stringscope- 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 - Mit eingebundenem Workspace (empfohlen): Übergeben Sie
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-workspaceeingebunden 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 CloudprojectKey- Der Projektschlüssel - Erforderlicher String (Wird ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)branch- Branchname zum Abrufen des neuesten Analysekontexts - Erforderlicher StringfilePath- Relativer Pfad der zu analysierenden Datei zum Projekt (z. B.src/main/java/MyClass.java). - Erforderlicher StringfileScope- 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, wennSONARQUBE_PROJECT_KEYdefiniert ist)branch- Optionaler Branchname für eine branchbasierte Analyse. Verwenden Sielist_branches, um gültige Namen zu ermitteln - StringpullRequest- Optionaler Pull-Request-Schlüssel bzw. optionale ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln - StringmaxCoverage- Maximaler Abdeckungsschwellenwert (0–100). Gibt nur Dateien mit einer Abdeckung <= diesem Wert zurück - NumberpageIndex- Seitenindex (beginnend bei 1, Standard: 1) - NumberpageSize- 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 Stringbranch- Optionaler Branchname für eine branchbasierte Analyse. Verwenden Sielist_branches, um gültige Namen zu ermitteln - StringpullRequest- Optionaler Pull-Request-Schlüssel bzw. optionale ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln - Stringfrom- Erste zu analysierende Zeile (beginnend bei 1, Standard: 1) - Numberto- 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 CloudprojectKey- Projektschlüssel - Erforderlicher String (Wird ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)branch- Optionaler Branchname für eine branchbasierte Analyse. Verwenden Sielist_branches, um gültige Namen zu ermitteln - StringpullRequest- Optionaler Pull-Request-Schlüssel bzw. optionale ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln - StringpageIndex- Optionaler Seitenindex (beginnend bei 1, Standard: 1) - IntegerpageSize- 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 Stringstatus- 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 CloudprojectKeys- Optionale Liste der SonarQube-Projektschlüssel - String[]branch- Optionaler Branchname für eine branchbasierte Analyse. Verwenden Sielist_branches, um gültige Namen zu ermitteln - StringpullRequest- Optionaler Pull-Request-Schlüssel bzw. optionale ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln - Stringseverities- 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 inprojectKeysundfiles- BooleanissueKey- Optionaler Problemschlüssel zum Abrufen eines bestimmten Problems - StringpageIndex- Optionaler Seitenindex (beginnend bei 1, Standard: 1) - IntegerpageSize- 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, wennSONARQUBE_PROJECT_KEYdefiniert 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 Sielist_branches, um gültige Namen zu ermitteln - StringpullRequest- Optionaler Pull-Request-Schlüssel bzw. optionale ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln - Stringfiles- Optionale Liste der Dateipfade, nach denen gefiltert werden soll - String[]status- Optionaler Statusfilter: TO_REVIEW, REVIEWED - Stringresolution- Optionaler Auflösungsfilter: FIXED, SAFE, ACKNOWLEDGED - StringsinceLeakPeriod- Filtert Hotspots, die seit dem Zeitraum für neuen Code erstellt wurden - BooleanonlyMine- Zeigt nur mir zugewiesene Hotspots an - BooleanpageIndex- Optionaler Seitenindex (beginnend bei 1, Standard: 1) - IntegerpageSize- 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 Stringstatus- 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, wennSONARQUBE_PROJECT_KEYnicht konfiguriert istbranch- Optionaler Branchname für eine branchbasierte Analyse. Verwenden Sielist_branches, um gültige Namen zu ermitteln - StringmetricKeys- Optionale abzurufende Metrikschlüssel (z. B. ncloc, complexity, violations, coverage) - String[]pullRequest- Optionaler Pull-Request-Schlüssel bzw. optionale ID. Verwenden Sielist_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) - IntegerpageSize- 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 - Stringfavorite- Bei true werden nur Favoritenportfolios zurückgegeben - BooleanpageIndex- Optionale Seitennummer (beginnend bei 1, Standard: 1) - IntegerpageSize- 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 – Stringq– Optionale Suchanfrage zum Filtern von Portfolios nach Namen – Stringfavorite– 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 – Booleandraft– Bei true werden nur Entwürfe zurückgegeben, die vom angemeldeten Benutzer erstellt wurden. Kann nicht true sein, wenn 'favorite' true ist – BooleanpageIndex– Optionaler Index der abzurufenden Seite (Standard: 1) – IntegerpageSize– 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
organizationin nachfolgenden Tools. -
search_my_sonarqube_projects – Sucht nach SonarQube-Projekten. Die Antwort ist paginiert.
organization– SonarQube Cloud-Organisationsschlüssel – Optional String, nur CloudpageIndex– Optionaler, bei 1 beginnender Seitenindex (Standard: 1) – IntegerpageSize– Optionale Seitengröße. Muss größer als 0 und kleiner oder gleich 500 sein (Standard: 500) – Integerq– 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 FelderntypeundmergeBranchzurück. Optionaler FilterbranchTypes:ALL(Standard),LONGoderSHORT. - SonarQube Server: Gibt alle analysierten Branches zurück (Name, Quality Gate, Analysedatum). Kein Filter
type,mergeBranchoderbranchTypes. - Verwenden Sie die zurückgegebenen Branch-Namen als Parameter
branchfür andere Tools. Für Pull-Request-Analysen verwenden Sie stattdessenlist_pull_requests. projectKey– Projektschlüssel (z. B. my_project) – Required String (Wird ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)branchTypes– (nur SonarQube Cloud) Optionaler Filter:ALL(Standard),LONGoderSHORT– Enum {"ALL", "LONG", "SHORT"}
- SonarQube Cloud: Gibt langlebige (
-
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, wennSONARQUBE_PROJECT_KEYdefiniert ist)
Quality Gates
-
get_project_quality_gate_status – Ruft den Quality-Gate-Status des SonarQube-Projekts ab.
analysisId– Optionale Analyse-ID – Stringbranch– Optionaler Branch-Name für branchbasierte Analysen. Verwenden Sielist_branches, um gültige Namen zu ermitteln – StringprojectId– Optionale Projekt-ID – StringprojectKey– Optionaler Projektschlüssel – StringpullRequest– Optionaler Pull-Request-Schlüssel bzw. optionale Pull-Request-ID. Verwenden Sielist_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 Cloudkey– 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, wennSONARQUBE_PROJECT_KEYdefiniert ist)branch– Optionaler Branch-Name für branchbasierte Analysen. Verwenden Sielist_branches, um gültige Namen zu ermitteln – StringpullRequest– Optionaler Pull-Request-Schlüssel bzw. optionale Pull-Request-ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln – StringpageSize– Optionale Anzahl der Ergebnisse pro Seite für die manuelle Paginierung (max.: 500). Wenn nicht angegeben, werden automatisch alle Dateien mit Duplikaten abgerufen – IntegerpageIndex– 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 Stringbranch– Optionaler Branch-Name für branchbasierte Analysen. Verwenden Sielist_branches, um gültige Namen zu ermitteln – StringpullRequest– Optionaler Pull-Request-Schlüssel bzw. optionale Pull-Request-ID. Verwenden Sielist_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 Stringbranch– Optionaler Branch-Name für branchbasierte Analysen. Verwenden Sielist_branches, um gültige Namen zu ermitteln – StringpullRequest– Optionaler Pull-Request-Schlüssel bzw. optionale Pull-Request-ID. Verwenden Sielist_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 Stringcommits_by_line– Gruppiert Zeilen nach SCM-Commit, wenn der Wert false ist; andernfalls werden Commits für jede Zeile angezeigt – Stringfrom– Erste zurückzugebende Zeile. Beginnt bei 1 – Numberto– 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 Cloudname– Webhook-Name – Required Stringurl– Webhook-URL – Required StringprojectKey– Optionaler Projektschlüssel für einen projektspezifischen Webhook – Stringsecret– 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 CloudprojectKey– 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) – Stringexclude_glob– Glob-Muster zum Ausschließen von Dateien – Stringfields– Durch Kommas getrennte Liste der in die Antwort aufzunehmenden Felder – Stringlimit– Maximale Anzahl der zurückzugebenden Ergebnisse (Standard: 10) – Integerregex_lists_operator– Methode zum Kombinieren mehrerer Muster:OR(Standard) oderAND– 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 – Stringexclude_glob– Glob-Muster zum Ausschließen von Dateien – Stringfields– Durch Kommas getrennte Liste der in die Antwort aufzunehmenden Felder – Stringlimit– Maximale Anzahl der zurückzugebenden Ergebnisse (Standard: 10) – Integerregex_lists_operator– Methode zum Kombinieren mehrerer Muster:OR(Standard) oderAND– 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 Stringdepth– Tiefe der Aufrufkette (0=nur Funktion, 1=direkte Aufrufer usw.) – Integerfields– 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 Stringdepth– Tiefe der Aufrufkette (0=nur Funktion, 1=direkte Aufgerufene usw.) – Integerfields– 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 Stringfields– 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 Stringfields– 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 Stringfields– 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 Integerpath_prefix– Optionales Pfadpräfix zum Filtern von Knoten (z. B.com.example.service) – Stringecosystem– 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_basedodercombined– Erforderlicher Stringcategories– Liste der Kategorienamen (erforderlich für die Modicategory_basedundcombined) – String[]languages– Liste der Zielsprachen im Repository-Schlüsselformat von SonarQube (erforderlich, wenncategoriesangegeben 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
| Variable | Beschreibung | Erforderlich | Standardwert |
|---|---|---|---|
SONARQUBE_URL | SonarQube-Cloud-URL | Ja | https://sonarcloud.io |
SONARQUBE_TOKEN | Authentifizierungstoken | Ja | None |
SONARQUBE_ORG | Cloud-Organisation; wird aus der Startkonfiguration oder durch eindeutige Erkennung an den Proxy übergeben | Nein | None |
SONARQUBE_PROJECT_KEY | Projektschlüssel in SonarQube Cloud | Ja | None |
SONAR_SQ_BRANCH | Explizite SonarQube-Branch-Überschreibung * | Nein | None |
SONARQUBE_DEBUG_ENABLED | Debug-Protokollierung aktivieren (zur Fehlerbehebung) | Nein | False |
SONAR_LOG_LEVEL | Ausführlichkeit der Protokollierung (TRACE, DEBUG, INFO, WARNING, ERROR) | Nein | INFO |
- 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
PENDINGund eineassessmentIdzurück. Verwenden Sieget_agentic_readiness_assessment, um die Ergebnisse abzufragen.projectKey– Der Projektschlüssel – Erforderlicher String (Wird ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert 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
assessmentIderneut auf, bis der StatusCOMPLETED,FAILEDoderINTERRUPTEDlautet. Nach Abschluss werden die Gesamtstufe und eine Aufschlüsselung nach Säulen mit empfohlenen Maßnahmen und Nachweisen zurückgegeben.assessmentId– Die vonstart_agentic_readiness_assessmentzurü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_assessmentfür vollständige Ergebnisse auf Säulenebene.projectKey– Der Projektschlüssel, für den Bewertungen aufgelistet werden sollen – Erforderlicher String (Wird ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)branch– Bewertungen nach Branchname filtern. Lassen Sie den Wert weg, um Bewertungen für alle Branches aufzulisten – StringpageIndex– 1-basierter Seitenindex (Standard: 1) – NumberpageSize– 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,directivesoderfindings; die Verfügbarkeit hängt vom MCP- und Server-Build ab – Erforderlicher EnumprojectKey– Der Projektschlüssel – Erforderlicher String (Wird ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)organization– Organisationsschlüssel von SonarQube Cloud, wenn keine Organisation konfiguriert ist – Optionaler String, nur Cloudcomponent– Exakter aktueller Knotenschlüssel oder Pfad der vorgesehenen Gruppe; standardmäßig die oberste Ebene, wenn nicht angegeben – Stringdepth– Nur für aktuelle/vorgesehene Architektur: Ebenen unterhalb des Startpunkts; standardmäßig 1 für die aktuelle und alle für die vorgesehene Architektur – Numberlanguage– Nur für aktuelle/vorgesehene Architektur/Findings:java,cs,js,tsoderpy– EnumdirectiveId– Vollständige Direktive anhand der UUID, einschließlich Beschreibung; anstelle der Seitennavigation verwenden – Stringcategory/type– Nur für Findings: Abweichungen, Fehler oder Code-Smells nach ihrem angegebenen Typ filtern – EnumpageIndex– Nur für Direktiven/Findings: 1-basierter Seitenindex (Standard: 1) – NumberpageSize– 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–intendedoderdirectives– Erforderlicher EnumprojectKey– Der Projektschlüssel – Erforderlicher String (Wird ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)organization– Organisationsschlüssel von SonarQube Cloud, wenn keine Organisation konfiguriert ist – Optionaler String, nur Cloudmodel– JSON-String: vollständiger Export der vorgesehenen Architektur odermodels-Array (nicht angegebene Inhalte werden entfernt) oder Direktivenänderungen mit den Arrayscreate,updateunddelete– Erforderlicher StringdryRun–truezur Vorschau,falsezum Anwenden – Erforderlicher Booleanrevision– Nur für die vorgesehene Architektur: Revision ausarchitecture_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.