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?
- Codeausschnitte analysieren — Bitten Sie Ihren Assistenten,
analyze_code_snippetauf einem Codebeispiel auszuführen, um sofort Qualitäts- und Sicherheitsbefunde zu erhalten. - Issues verwalten — Verwenden Sie das
issues-Toolset, um SonarQube-Issues nach Schweregrad, Status oder Projekt zu suchen, zu filtern und zu aktualisieren. - Sicherheits-Hotspots überprüfen — Fragen Sie das
security-hotspots-Toolset ab, um Hotspots aufzulisten, die überprüft werden müssen, und verstehen Sie deren Risiko. - Qualitäts-Gates prüfen — Fragen Sie nach dem
quality-gates-Status eines Projekts, um zu sehen, ob es seine Qualitätsschwelle erfüllt. - Projektmetriken abrufen — Rufen Sie
measureswie Abdeckung und Duplikate ab, oder durchsuchen Sie Projekte über dasprojects-Toolset.
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 auch die Analyse von Codeausschnitten direkt im Agentenkontext.
Schnellstart
Security best practices
🔒 Wichtig: Ihr SonarQube-Token ist eine sensible Anmeldeinformation. Befolgen Sie diese Sicherheitspraktiken:
Bei Verwendung von CLI-Befehlen:
- Vermeiden Sie das Hartkodieren von Tokens in Befehlszeilenargumenten – sie werden in der Shell-Historie gespeichert
- Verwenden Sie Umgebungsvariablen – setzen Sie Tokens in Umgebungsvariablen, bevor Sie Befehle ausführen
Bei Verwendung von Konfigurationsdateien:
- Übertragen Sie Tokens niemals in die Versionskontrolle
- Verwenden Sie nach Möglichkeit die Substitution von Umgebungsvariablen in Konfigurationsdateien
🚀 Konfiguration generieren
Der schnellste Weg, um zu starten, ist der SonarQube MCP Server Configuration Generator – ein interaktives Tool, das eine einsatzbereite Konfiguration für Ihren bevorzugten KI-Agenten-Client erstellt.
Manuelle Einrichtung
Wenn Sie die Konfiguration lieber selbst vornehmen, ist die einfachste Methode die Verwendung unseres Container-Images unter sonarsource/sonarqube-mcp. Verwenden Sie sonarsource/sonarqube-mcp für automatische Updates (mit --pull=always) oder binden Sie eine Versionskennung (z. B. sonarsource/sonarqube-mcp:1.19.0.2785) für reproduzierbare Bereitstellungen an. Lesen Sie unten, wenn Sie es lokal erstellen möchten.
Hinweis: Während die Beispiele unten
dockerverwenden, funktioniert jede OCI-kompatible Container-Laufzeit (z. B. Podman, nerdctl). Ersetzen Sie einfachdockerdurch Ihr bevorzugtes Werkzeug.
Antigravity
SonarQube MCP Server ist im Antigravity MCP Store verfügbar. Befolgen Sie diese Anweisungen:
- Öffnen Sie das Agent Side Panel
- Klicken Sie oben rechts auf die drei Punkte (...) und wählen Sie MCP Servers
- Suchen Sie nach
SonarQubeund wählen Sie Installieren - Geben Sie das erforderliche SonarQube-Benutzertoken an. Sie können auch Ihren Organisationsschlüssel für SonarQube Cloud oder die SonarQube-URL angeben, wenn Sie eine Verbindung zu SonarQube Server herstellen.
Für SonarQube Cloud US setzen Sie die URL auf https://sonarqube.us.
Alternativ können Sie den Server manuell über mcp_config.json konfigurieren:
- Für die Verbindung mit SonarQube Cloud:
Klicken Sie im Agent Side Panel auf die drei Punkte (...) -> MCP Store -> Manage MCP Servers -> View raw config und fügen Sie Folgendes hinzu:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"],
"env": {
"SONARQUBE_TOKEN": "<YOUR_TOKEN>",
"SONARQUBE_ORG": "<YOUR_ORG>"
}
}
}
}
Für SonarQube Cloud US fügen Sie manuell "SONARQUBE_URL": "https://sonarqube.us" zum Abschnitt env und "-e", "SONARQUBE_URL" zum Array args hinzu.
- Für die Verbindung mit SonarQube Server:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_URL", "sonarsource/sonarqube-mcp"],
"env": {
"SONARQUBE_TOKEN": "<YOUR_USER_TOKEN>",
"SONARQUBE_URL": "<YOUR_SERVER_URL>"
}
}
}
}
Claude Code
- Für die Verbindung mit SonarQube Cloud:
claude mcp add sonarqube \
--env SONARQUBE_TOKEN=$SONAR_TOKEN \
--env SONARQUBE_ORG=$SONAR_ORG \
-- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG sonarsource/sonarqube-mcp
Für SonarQube Cloud US fügen Sie --env SONARQUBE_URL=https://sonarqube.us zum Befehl hinzu.
- Für die Verbindung mit SonarQube Server:
claude mcp add sonarqube \
--env SONARQUBE_TOKEN=$SONAR_USER_TOKEN \
--env SONARQUBE_URL=$SONAR_URL \
-- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_URL sonarsource/sonarqube-mcp
Codex CLI
Bearbeiten Sie die Konfigurationsdatei unter ~/.codex/config.toml manuell und fügen Sie die folgende Konfiguration hinzu:
- Für die Verbindung mit SonarQube Cloud:
[mcp_servers.sonarqube]
command = "docker"
args = ["run", "--init", "--pull=always", "--rm", "-i", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"]
env = { "SONARQUBE_TOKEN" = "<YOUR_USER_TOKEN>", "SONARQUBE_ORG" = "<YOUR_ORG>" }
Für SonarQube Cloud US fügen Sie "SONARQUBE_URL" = "https://sonarqube.us" zum Abschnitt env und "-e", "SONARQUBE_URL" zum Array args hinzu.
- Für die Verbindung mit SonarQube Server:
[mcp_servers.sonarqube]
command = "docker"
args = ["run", "--init", "--pull=always", "--rm", "-i", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_URL", "sonarsource/sonarqube-mcp"]
env = { "SONARQUBE_TOKEN" = "<YOUR_TOKEN>", "SONARQUBE_URL" = "<YOUR_SERVER_URL>" }
Cursor
- Für die Verbindung mit SonarQube Cloud:
Für SonarQube Cloud US fügen Sie nach der Installation manuell "SONARQUBE_URL": "https://sonarqube.us" zum Abschnitt env in Ihrer MCP-Konfiguration hinzu.
- Für die Verbindung mit SonarQube Server:
Gemini CLI
Hinweis: Die Gemini CLI-Erweiterung wurde in das Repository sonarqube-agent-plugins verschoben. Bitte installieren Sie es von dort aus in Zukunft.
Sie können unsere MCP-Server-Erweiterung mit dem folgenden Befehl installieren:
gemini extensions install https://github.com/SonarSource/sonarqube-agent-plugins
Sie müssen die erforderlichen Umgebungsvariablen festlegen, bevor Sie Gemini starten:
Erforderliche Umgebungsvariablen:
-
Für SonarQube Cloud:
SONARQUBE_TOKEN- Ihr SonarQube Cloud-TokenSONARQUBE_ORG- Ihr OrganisationsschlüsselSONARQUBE_URL- (Optional) Setzen Sie aufhttps://sonarqube.usfür SonarQube Cloud US
-
Für SonarQube Server:
SONARQUBE_TOKEN- Ihr SonarQube Server-BenutzertokenSONARQUBE_URL- Ihre SonarQube Server-URL
Nach der Installation wird die Erweiterung unter <home>/.gemini/extensions/sonarqube/gemini-extension.json installiert.
GitHub Copilot CLI
Nach dem Start von Copilot CLI führen Sie den folgenden Befehl aus, um den SonarQube MCP-Server hinzuzufügen:
/mcp add
Sie müssen verschiedene Informationen über den MCP-Server angeben. Sie können die Tabulatortaste verwenden, um zwischen den Feldern zu navigieren.
- Für die Verbindung mit SonarQube Cloud:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_ORG, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_TOKEN>,SONARQUBE_ORG=<YOUR_ORG>
Tools: *
Für SonarQube Cloud US fügen Sie -e, SONARQUBE_URL zu Argumenten und SONARQUBE_URL=https://sonarqube.us zu Umgebungsvariablen hinzu.
- Für die Verbindung mit SonarQube Server:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_URL, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_USER_TOKEN>,SONARQUBE_URL=<YOUR_SERVER_URL>
Tools: *
Die Konfigurationsdatei befindet sich unter ~/.copilot/mcp-config.json.
GitHub Copilot coding agent
Der GitHub Copilot Coding Agent kann den SonarQube MCP-Server direkt in Ihrer CI/CD nutzen.
Um die Geheimnisse zu Ihrer Copilot-Umgebung hinzuzufügen, folgen Sie der Copilot-Dokumentation. Nur Geheimnisse mit Namen, die mit COPILOT_MCP_ beginnen, sind für Ihre MCP-Konfiguration verfügbar.
Navigieren Sie in Ihrem GitHub-Repository unter Settings -> Copilot -> Coding agent und fügen Sie die folgende Konfiguration im MCP-Konfigurationsabschnitt hinzu:
- Für die Verbindung mit SonarQube Cloud:
{
"mcpServers": {
"sonarqube": {
"type": "local",
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"--rm",
"-i",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "COPILOT_MCP_SONARQUBE_TOKEN",
"SONARQUBE_ORG": "COPILOT_MCP_SONARQUBE_ORG"
},
"tools": ["*"]
}
}
}
Für SonarQube Cloud US fügen Sie "-e", "SONARQUBE_URL" zum Array args und "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL" zum Abschnitt env hinzu, und setzen Sie dann das Geheimnis COPILOT_MCP_SONARQUBE_URL=https://sonarqube.us.
- Für die Verbindung mit SonarQube Server:
{
"mcpServers": {
"sonarqube": {
"type": "local",
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"--rm",
"-i",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "COPILOT_MCP_SONARQUBE_USER_TOKEN",
"SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL"
},
"tools": ["*"]
}
}
}
Kiro
Erstellen Sie eine .kiro/settings/mcp.json-Datei in Ihrem Arbeitsverzeichnis (oder bearbeiten Sie sie, falls sie bereits existiert) und fügen Sie die folgende Konfiguration hinzu:
- Für die Verbindung mit SonarQube Cloud:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<YOUR_TOKEN>",
"SONARQUBE_ORG": "<YOUR_ORG>"
},
"disabled": false,
"autoApprove": []
}
}
}
Für SonarQube Cloud US fügen Sie "-e", "SONARQUBE_URL" zum Array args und "SONARQUBE_URL": "https://sonarqube.us" zum Abschnitt env hinzu.
- Für die Verbindung mit SonarQube Server:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<YOUR_USER_TOKEN>",
"SONARQUBE_URL": "<YOUR_SERVER_URL>"
},
"disabled": false,
"autoApprove": []
}
}
}
VS Code
Sie können die folgenden Schaltflächen verwenden, um den Installationsprozess in VS Code zu vereinfachen.
Für SonarQube Cloud US fügen Sie nach der Installation manuell "SONARQUBE_URL": "https://sonarqube.us" zum Abschnitt env in Ihrer MCP-Konfiguration hinzu.
Windsurf
SonarQube MCP Server ist als Windsurf-Plugin verfügbar. Befolgen Sie diese Anweisungen:
- Öffnen Sie in Windsurf Settings > Cascade > MCP Servers und wählen Sie Open MCP Marketplace
- Suchen Sie nach
sonarqubeim Cascade MCP Marketplace - Wählen Sie den SonarQube MCP Server und wählen Sie Installieren
- Fügen Sie das erforderliche SonarQube-Benutzertoken hinzu. Fügen Sie dann den Organisationsschlüssel hinzu, wenn Sie eine Verbindung mit SonarQube Cloud herstellen möchten, oder die SonarQube-URL, wenn Sie eine Verbindung zu SonarQube Server oder Community Build herstellen möchten.
Für SonarQube Cloud US setzen Sie die URL auf https://sonarqube.us.
Zed
Navigieren Sie in Zed zur Ansicht Extensions und suchen Sie nach SonarQube MCP Server. Bei der Installation der Erweiterung werden Sie aufgefordert, die erforderlichen Umgebungsvariablen anzugeben:
- Bei Verwendung von SonarQube Cloud:
{
"sonarqube_token": "YOUR_SONARQUBE_TOKEN",
"sonarqube_org": "SONARQUBE_ORGANIZATION_KEY",
"docker_path": "DOCKER_PATH"
}
Für SonarQube Cloud US fügen Sie "sonarqube_url": "https://sonarqube.us" zur Konfiguration hinzu.
- Bei Verwendung von SonarQube Server:
{
"sonarqube_token": "YOUR_SONARQUBE_USER_TOKEN",
"sonarqube_url": "YOUR_SONARQUBE_SERVER_URL",
"docker_path": "DOCKER_PATH"
}
Der docker_path ist der Pfad zu einer Docker-Ausführungsdatei. Beispiele:
Linux/macOS: /usr/bin/docker oder /usr/local/bin/docker
Windows: C:\Program Files\Docker\Docker\resources\bin\docker.exe
💡 Tipp: Wir empfehlen, das neueste Image regelmäßig oder vor der Meldung von Problemen zu ziehen, um sicherzustellen, dass Sie die aktuellsten Funktionen und Fehlerbehebungen haben.
Manuelle Installation
Sie können den SonarQube MCP-Server manuell installieren, indem Sie den folgenden Ausschnitt in die Konfigurationsdatei der MCP-Server kopieren:
- Für die Verbindung mit SonarQube Cloud:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_ORG": "<org>"
}
}
}
- Für die Verbindung mit SonarQube Server:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Integration mit SonarQube for IDE
Der SonarQube MCP-Server kann mit SonarQube for IDE integriert werden, um Ihren Entwicklungsworkflow weiter zu verbessern und bessere Codeanalyse und Einblicke direkt in Ihrer IDE zu bieten.
Configuration
Bei Verwendung von SonarQube for IDE sollte die Umgebungsvariable SONARQUBE_IDE_PORT mit der korrekten Portnummer gesetzt werden. SonarQube for VS Code enthält eine Schaltfläche für die Schnellinstallation, die automatisch die korrekte Portkonfiguration festlegt.
Zum Beispiel mit SonarQube Cloud:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"-e",
"SONARQUBE_IDE_PORT",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_ORG": "<org>",
"SONARQUBE_IDE_PORT": "<64120-64130>"
}
}
}
Wenn der MCP-Server in einem Container unter Linux ausgeführt wird, kann der Container nicht auf den eingebetteten SonarQube for IDE-Server zugreifen, der auf localhost läuft. Um dem Container die Verbindung zum SonarQube for IDE-Server zu ermöglichen, fügen Sie die Option
--network=hostzu Ihrem Container-Run-Befehl hinzu.
Konfiguration
Abhängig von Ihrer Umgebung sollten Sie bestimmte Umgebungsvariablen angeben.
Basis
Sie sollten die folgende Variable hinzufügen, wenn Sie den MCP-Server ausführen:
| Umgebungsvariable | Beschreibung |
|---|---|
STORAGE_PATH | Erforderlicher absoluter Pfad zu einem beschreibbaren Verzeichnis, in dem der SonarQube MCP Server seine Dateien speichert (z. B. für Erstellung, Aktualisierungen und Persistenz). Er wird automatisch bereitgestellt, wenn das Container-Image verwendet wird. |
SONARQUBE_PROJECT_KEY | Optionaler Standard-Projektschlüssel. Wenn gesetzt, verwenden alle Tools, die einen Projektschlüssel benötigen, diesen Wert automatisch – der Parameter projectKey wird vollständig aus ihrem Schema entfernt. Nützlich, wenn Sie an einem einzelnen Projekt arbeiten. |
SONARQUBE_IDE_PORT | Optionale Portnummer zwischen 64120 und 64130, die verwendet wird, um den SonarQube MCP Server mit SonarQube for IDE zu verbinden. |
SONARQUBE_DEBUG_ENABLED | Wenn auf true gesetzt, wird Debug-Logging aktiviert. Debug-Logs werden sowohl in die Logdatei als auch nach STDERR geschrieben. Nützlich zur Fehlerbehebung von Konnektivitäts- oder Konfigurationsproblemen. Standard: false. |
SONARQUBE_LOG_TO_FILE_DISABLED | Wenn auf true gesetzt, wird das Schreiben von Logs auf die Festplatte vollständig deaktiviert. Es werden keine Logdateien unter STORAGE_PATH/logs/ erstellt. Nützlich in containerisierten oder ephemeren Umgebungen, in denen Datei-Logging unerwünscht ist. Standard: false. |
Workspace-Mount (Reduzierung des Kontextumfangs)
Standardmäßig erfordert das Analysetool analyze_code_snippet, dass der Agent den vollständigen Dateiinhalt als fileContent-Argument übergibt. Bei großen Dateien oder bei der Analyse vieler Dateien in einer Sitzung erhöht dies erheblich die Nutzung des Kontextfensters und die Kosten.
Lösung: Binden Sie Ihr Projektverzeichnis in den Container bei /app/mcp-workspace ein. Wenn dieser Mount erkannt wird, liest der Server Dateien direkt von der Festplatte mithilfe des projektrelativen filePath-Arguments — Dateiinhalte laufen niemals durch den Agent-Kontext.
{
"args": [
"run", "-i", "--rm", "--init", "--pull=always",
"-e", "SONARQUBE_TOKEN",
"-e", "SONARQUBE_ORG",
"-v", "/path/to/your/project:/app/mcp-workspace",
"sonarsource/sonarqube-mcp"
]
}
Wenn der Mount aktiv ist:
run_advanced_code_analysiswird verfügbar, wenn Ihre Organisation dafür berechtigt istanalyze_code_snippet:filePathist erforderlich undfileContentwird nicht verwendet — der Server löst die Datei auf dieselbe Weise auf
Selektive Toolset-Aktivierung
Standardmäßig sind nur wichtige Toolsets aktiviert, um den Kontext-Overhead zu reduzieren. Sie können bei Bedarf zusätzliche Toolsets aktivieren.
| Umgebungsvariable | Beschreibung |
|---|---|
SONARQUBE_TOOLSETS | Kommagetrennte Liste der zu aktivierenden Toolsets. Wenn gesetzt, sind nur diese Toolsets verfügbar. Wenn nicht gesetzt, sind die standardmäßig wichtigen Toolsets aktiviert (analysis, ide, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag). Hinweis: Das projects-Toolset ist immer aktiviert, da es erforderlich ist, um Projektschlüssel für andere Operationen zu finden. Vortex-Kontext-Tools (veralteter Name: Context Augmentation/CAG) und Vortex-Analyse-Tools (veralteter Name: Advanced Analysis/A3S) sind nur im stdio-Modus verfügbar und teilen sich eine einzige kombinierte Organisationsberechtigung — eine Organisation muss für beide berechtigt sein, um eines davon nutzen zu können. Der Zugriff über die cag- oder analysis-Toolset-Schlüssel ist zugunsten des einheitlichen vortex-Toolset-Schlüssels veraltet; die alten Schlüssel funktionieren weiterhin aus Gründen der Abwärtskompatibilität, aber eine Startwarnung und ein Veraltet-Hinweis in den Server-Anweisungen werden ausgegeben, wann immer sie ohne vortex verwendet werden. Im Streamable-HTTP-Modus können Clients einen SONARQUBE_TOOLSETS-HTTP-Header senden, um dies pro Anfrage weiter einzugrenzen, können aber keine Toolsets über das hinaus aktivieren, mit denen der Server gestartet wurde (siehe Streamable-HTTP-Transport unten). |
SONARQUBE_READ_ONLY | Wenn auf true gesetzt, wird der Nur-Lese-Modus aktiviert, der alle Schreiboperationen deaktiviert (z. B. das Ändern des Issue-Status). Dieser Filter ist kumulativ mit SONARQUBE_TOOLSETS, wenn beide gesetzt sind. Standard: false. Im Streamable-HTTP-Modus können Clients einen SONARQUBE_READ_ONLY-HTTP-Header senden, um einzelne Anfragen weiter auf Nur-Lese einzuschränken, können aber eine serverseitige Nur-Lese-Einschränkung nicht aufheben (siehe Streamable-HTTP-Transport unten). |
Verfügbare Toolsets
| Toolset | Schlüssel | Beschreibung |
|---|---|---|
| Analyse | analysis | Code-Analyse-Tools (lokale Analyse über analyze_code_snippet, veraltet zugunsten von analyze_file_list/Vortex-Analyse) |
| IDE | ide | SonarQube für IDE-Bridge-Tools (Dateianalyse, automatischer Analyse-Umschalter) — derzeit auch in analysis enthalten |
| Issues | issues | SonarQube-Issues suchen und verwalten |
| Sicherheits-Hotspots | security-hotspots | Sicherheits-Hotspots suchen und überprüfen |
| Projekte | projects | SonarQube-Projekte durchsuchen und finden |
| Qualitäts-Gates | quality-gates | Auf Qualitäts-Gates und deren Status zugreifen |
| Regeln | rules | SonarQube-Regeln durchsuchen und finden |
| Quellen | sources | Auf Quellcode und SCM-Informationen zugreifen |
| Duplikationen | duplications | Codeduplikationen in Projekten finden |
| Kennzahlen | measures | Metriken und Kennzahlen abrufen (umfasst sowohl Kennzahlen- als auch Metrik-Tools) |
| Sprachen | languages | Unterstützte Programmiersprachen auflisten |
| Portfolios | portfolios | Portfolios und Unternehmen verwalten (Cloud und Server) |
| System | system | Systemverwaltungs-Tools (nur Server) |
| Webhooks | webhooks | Webhooks verwalten |
| Abhängigkeitsrisiken | dependency-risks | Abhängigkeitsrisiken und Sicherheitsprobleme analysieren (SCA) |
| Abdeckung | coverage | Testabdeckungsanalyse- und Verbesserungs-Tools |
| Vortex-Kontext | cag | Vortex-Kontext-Tools — nur stdio. Veraltet zugunsten von vortex (alter Name: Context Augmentation/CAG) |
| Vortex | vortex | Einheitliches, empfohlenes Toolset, das sowohl Vortex-Kontext- als auch Vortex-Analyse-Tools unter einem Namen bereitstellt (nur stdio, erfordert die kombinierte Organisationsberechtigung) |
| Agentic Readiness | agentic-readiness | Agentic-Readiness-Bewertungs-Tools (SonarQube Cloud, erfordert Organisationsberechtigung) |
Beispiele
Toolsets für Analyse, Issues und Qualitäts-Gates aktivieren (mit Docker und SonarQube Cloud):
docker run --init --pull=always -i --rm \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_ORG="<org>" \
-e SONARQUBE_TOOLSETS="analysis,issues,quality-gates" \
sonarsource/sonarqube-mcp
Hinweis: Das projects-Toolset wird immer automatisch aktiviert, daher müssen Sie es nicht in SONARQUBE_TOOLSETS aufnehmen.
Nur-Lese-Modus aktivieren (mit Docker und SonarQube Cloud):
docker run --init --pull=always -i --rm \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_ORG="<org>" \
-e SONARQUBE_READ_ONLY="true" \
sonarsource/sonarqube-mcp
SonarQube Cloud
Um die volle Funktionalität zu aktivieren, müssen die folgenden Umgebungsvariablen vor dem Start des Servers gesetzt werden:
| Umgebungsvariable | Beschreibung | Erforderlich |
|---|---|---|
SONARQUBE_TOKEN | Ihr SonarQube-Cloud-Token | Ja |
SONARQUBE_ORG | Ihr SonarQube-Cloud-Organisations-Schlüssel | Ja |
SONARQUBE_URL | Benutzerdefinierte SonarQube-Cloud-URL (Standard: https://sonarcloud.io). Für SonarQube Cloud US verwenden: https://sonarqube.us | Nein |
Beispiele:
- SonarQube Cloud: Nur
SONARQUBE_TOKENundSONARQUBE_ORGwerden benötigt - SonarQube Cloud US:
SONARQUBE_TOKEN,SONARQUBE_ORGundSONARQUBE_URL=https://sonarqube.ussetzen
SonarQube Server
| Umgebungsvariable | Beschreibung | Erforderlich |
|---|---|---|
SONARQUBE_TOKEN | Ihr SonarQube-Server-BENUTZER-Token | Ja |
SONARQUBE_URL | Ihre SonarQube-Server-URL | Ja |
⚠️ Die Verbindung zu SonarQube Server erfordert ein Token vom Typ BENUTZER und funktioniert nicht ordnungsgemäß, wenn Projekt-Tokens oder globale Tokens verwendet werden. 💡 Konfigurationstipp (stdio-Modus): Das Vorhandensein von
SONARQUBE_ORGbestimmt, ob Sie eine Verbindung zu SonarQube Cloud oder Server herstellen. WennSONARQUBE_ORGgesetzt 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-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 Mehrbenutzer-Bereitstellungen; Clients verbinden sich über HTTP(S) mit /mcp (z. B. Windsurf mit einer selbst gehosteten Server-URL) |
Hinweis: Streamable HTTP ist der aktuelle MCP-Netzwerktransport. Der ältere reine SSE-HTTP-Transport aus früheren MCP-Versionen ist veraltet und wird nicht unterstützt.
1. Stdio (Standard – für die lokale Entwicklung empfohlen)
Der empfohlene Modus für die lokale Entwicklung und Einzelbenutzer-Setups, der von den meisten MCP-Clients verwendet wird.
Beispiel – Docker mit SonarQube Cloud:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"],
"env": {
"SONARQUBE_TOKEN": "<your-token>",
"SONARQUBE_ORG": "<your-org>"
}
}
}
}
2. HTTP (Streamable HTTP)
Unverschlüsselter Streamable-HTTP-Transport. Verwenden Sie für Mehrbenutzer-Bereitstellungen stattdessen HTTPS.
⚠️ Nicht empfohlen: Verwenden Sie Stdio für die lokale Entwicklung oder HTTPS (Streamable HTTP) für Mehrbenutzer-Produktionsbereitstellungen.
| Umgebungsvariable | Beschreibung | Standard |
|---|---|---|
SONARQUBE_TRANSPORT | Auf http setzen, um den Streamable-HTTP-Transport zu aktivieren | Nicht gesetzt (stdio) |
SONARQUBE_HTTP_PORT | Portnummer (1024-65535) | 8080 |
SONARQUBE_HTTP_HOST | Zu bindender Host (standardmäßig localhost aus Sicherheitsgründen) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Durch Kommas getrennte Browser-Ursprünge, die für CORS erlaubt sind (z. B. https://my-app.example.com) | Nicht gesetzt |
SONARQUBE_MCP_IN_CONTAINER | Auf true setzen, wenn in einem Container ausgeführt. Das offizielle Docker-Image setzt dies automatisch; setzen Sie es selbst, wenn Sie andere OCI-Laufzeiten (Podman, Kubernetes, Nomad usw.) verwenden. | false |
Hinweis: Im Streamable-HTTP-Modus (HTTP oder HTTPS) ist der Server zustandslos – jede Client-Anfrage muss einen Authorization: Bearer <token>-Header mit dem eigenen SonarQube-Token des Benutzers enthalten. Für SonarQube Cloud wird die Organisation wie folgt aufgelöst:
- Wenn
SONARQUBE_ORGbeim Serverstart gesetzt ist, werden alle Anfragen an diese Organisation weitergeleitet. Clients dürfen keinenSONARQUBE_ORG-Header senden – dies führt zu einem Fehler. - Wenn
SONARQUBE_ORGbeim Serverstart nicht gesetzt ist, muss jeder Client bei jeder Anfrage einenSONARQUBE_ORG-Header angeben. Clients können die sichtbaren Tools auch pro Anfrage eingrenzen, indem sieSONARQUBE_TOOLSETS- und/oderSONARQUBE_READ_ONLY-Header angeben; diese wenden zusätzliche Filter auf die Serverkonfiguration an – sie können den Umfang nur reduzieren, niemals erweitern. Zwischen Anfragen wird kein Sitzungszustand beibehalten.
Veraltet: Der
SONARQUBE_TOKEN-Anfrageheader wird aus Gründen der Abwärtskompatibilität weiterhin akzeptiert, wird jedoch in einer zukünftigen Version entfernt. Migrieren Sie zuAuthorization: Bearer <token>.
3. HTTPS (Streamable HTTP über TLS) (für Mehrbenutzer-Produktionsbereitstellungen empfohlen)
Sicherer Streamable-HTTP-Transport mit TLS-Verschlüsselung. Erfordert SSL-Zertifikate.
✅ Für die Produktion empfohlen: Verwenden Sie HTTPS, wenn Sie den MCP-Server für mehrere Benutzer über Streamable HTTP bereitstellen. Der Server bindet standardmäßig aus Sicherheitsgründen an
127.0.0.1(localhost).
| Umgebungsvariable | Beschreibung | Standard |
|---|---|---|
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) | 8080 |
SONARQUBE_HTTP_HOST | Zu bindender Host (standardmäßig localhost aus Sicherheitsgründen) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Durch Kommas getrennte Browser-Ursprünge, die für CORS erlaubt sind (z. B. https://my-app.example.com) | Nicht gesetzt |
SONARQUBE_MCP_IN_CONTAINER | Auf true setzen, wenn in einem Container ausgeführt. Das offizielle Docker-Image setzt dies automatisch; setzen Sie es selbst, wenn Sie andere OCI-Laufzeiten (Podman, Kubernetes, Nomad usw.) verwenden. | false |
SSL-Zertifikatskonfiguration (optional):
| Umgebungsvariable | Beschreibung | Standard |
|---|---|---|
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: Beim Ausführen in einem Container setzen Sie
SONARQUBE_HTTP_HOST=0.0.0.0, damit der Container auf allen Schnittstellen lauscht und die Portzuordnung der Laufzeit funktioniert, und setzen SieSONARQUBE_MCP_IN_CONTAINER=true, um dem Server mitzuteilen, dass er sich in einem Container befindet. Das offizielle Docker-Image setzt Letzteres automatisch; setzen Sie es selbst, wenn Sie andere OCI-Laufzeiten (Podman, Kubernetes, Nomad usw.) verwenden. Das hostseitige Port-Flag steuert, wer den Server von außerhalb des Containers erreichen kann.SONARQUBE_HTTP_HOST=0.0.0.0steuert 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_TOOLSETSundSONARQUBE_READ_ONLYsind optionale Pro-Anfrage-Header, die den serverseitigen Tool-Satz für diese bestimmte Anfrage eingrenzen. Sie können den Umfang nur reduzieren – sie können keine Toolsets aktivieren oder Einschränkungen über das hinaus aufheben, womit der Server gestartet wurde.
Hinweis: Verwenden Sie für die lokale Entwicklung stattdessen den Stdio-Transport (den Standard). HTTPS Streamable HTTP ist für Mehrbenutzer-Produktionsbereitstellungen mit ordnungsgemäßen SSL-Zertifikaten vorgesehen.
Service-Endpunkte
Wenn der Server im Streamable-HTTP-Modus (http oder https) ausgeführt wird, stellt er zusätzlich zum MCP-Endpunkt unter /mcp einige nicht authentifizierte Service-Endpunkte bereit. Diese sind für die Service-zu-Service-Nutzung vorgesehen (Überwachung, Orchestrierung, Client-Kompatibilitätsprüfungen) und erfordern keinen Authorization-Header.
| Endpunkt | Methode | Beschreibung | Beispielantwort |
|---|---|---|---|
/health | GET | Liveness-Sonde. Gibt 200 OK mit leerem Body zurück, sobald der Server Anfragen annimmt. | (leerer Body) |
/info | GET | Gibt die MCP-Serverversion als JSON zurück. Nützlich zur Überprüfung der bereitgestellten Serverversion. | {"version":"1.16.0"} |
Diese Endpunkte sind beim Ausführen mit dem Stdio-Transport nicht verfügbar.
Benutzerdefinierte Zertifikate
Wenn Ihr SonarQube Server ein selbstsigniertes Zertifikat oder ein Zertifikat einer privaten Zertifizierungsstelle (CA) verwendet, können Sie dem Container benutzerdefinierte Zertifikate hinzufügen, die automatisch installiert werden.
Konfiguration
Verwendung von Volume-Mount
Mounten Sie ein Verzeichnis mit Ihren Zertifikaten, wenn Sie den Container ausführen:
docker run --init --pull=always -i --rm \
-v /path/to/your/certificates/:/usr/local/share/ca-certificates/:ro \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_URL="<url>" \
sonarsource/sonarqube-mcp
Unterstützte Zertifikatsformate
Der Container unterstützt die folgenden Zertifikatsformate:
.crt-Dateien (PEM- oder DER-kodiert).pem-Dateien (PEM-kodiert)
MCP-Konfiguration mit Zertifikaten
Bei Verwendung benutzerdefinierter Zertifikate können Sie Ihre MCP-Konfiguration ändern, um die Zertifikate zu mounten:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-v",
"/path/to/your/certificates/:/usr/local/share/ca-certificates/:ro",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Hinweis: Führen Sie den Server aus einer JAR statt aus dem Container aus? Der Volume-Mount oben installiert Zertifikate in den Betriebssystem-Truststore des Containers, den der Server ebenfalls liest. Wenn Sie den Betriebssystem-Truststore nicht verwenden können – insbesondere unter Windows, wo er nicht berücksichtigt wird – weisen Sie die JVM auf einen Java-Truststore, der das CA-Zertifikat enthält:
-Djavax.net.ssl.trustStore=/path/to/truststore.p12 -Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.trustStorePassword=<passphrase>. Er wird zusätzlich zu den standardmäßig vertrauenswürdigen Zertifikaten hinzugefügt.
Proxy
Der SonarQube MCP Server unterstützt HTTP- und SOCKS5-Proxys über standardmäßige Java-Proxy-Systemeigenschaften.
Konfiguration
HTTP/HTTPS-Proxy
Sie können Proxy-Einstellungen mithilfe von Java-Systemeigenschaften konfigurieren. Diese können als Umgebungsvariablen festgelegt oder als JVM-Argumente übergeben werden.
Häufige Proxy-Eigenschaften:
| Eigenschaft | Beschreibung | Beispiel |
|---|---|---|
http.proxyHost | HTTP-Proxy-Hostname | proxy.example.com |
http.proxyPort | HTTP-Proxy-Port | 8080 |
https.proxyHost | HTTPS-Proxy-Hostname | proxy.example.com |
https.proxyPort | HTTPS-Proxy-Port | 8443 |
http.nonProxyHosts | Hosts, die den Proxy umgehen (durch senkrechte Striche getrennt) | localhost|127.0.0.1|*.internal.com |
HTTP/HTTPS-Proxy-Authentifizierung:
| Eigenschaft | Beschreibung | Beispiel |
|---|---|---|
http.proxyUser | HTTP-Proxy-Benutzername | myuser |
http.proxyPassword | HTTP-Proxy-Passwort | mypassword |
https.proxyUser | HTTPS-Proxy-Benutzername | myuser |
https.proxyPassword | HTTPS-Proxy-Passwort | mypassword |
SOCKS5-Proxy
SOCKS5-Proxys werden unterstützt.
| Eigenschaft | Beschreibung | Standard | Beispiel |
|---|---|---|---|
socksProxyHost | SOCKS5-Proxy-Hostname | — | localhost |
socksProxyPort | SOCKS5-Proxy-Port | 1080 | 1080 |
java.net.socks.username | SOCKS5-Benutzername (falls Authentifizierung erforderlich) | — | myuser |
java.net.socks.password | SOCKS5-Passwort (falls Authentifizierung erforderlich) | — | mypassword |
Client-Zertifikat (Gegenseitiges TLS)
Wenn Ihr SonarQube Server verlangt, dass Clients während des TLS-Handshakes ein Zertifikat vorlegen (gegenseitiges TLS), können Sie einen PKCS12-Keystore bereitstellen, indem Sie ihn in den Container mounten und seinen Speicherort über JAVA_OPTS übergeben.
Konfiguration
Verwenden eines PKCS12-Keystores
Mounten Sie Ihre .p12- oder .pfx-Datei in den Container und setzen Sie die Umgebungsvariable JAVA_OPTS mit den Keystore-Eigenschaften:
docker run --init --pull=always -i --rm \
-v /path/to/client.p12:/etc/ssl/mcp/client.p12:ro \
-e JAVA_OPTS="-Djavax.net.ssl.keyStore=/etc/ssl/mcp/client.p12 -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=<passphrase>" \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_URL="<url>" \
sonarsource/sonarqube-mcp
Hinweis: Die Zertifikatsdatei muss für den Containerprozess lesbar sein. Überprüfen und korrigieren Sie bei Bedarf die Berechtigungen:
ls -la /path/to/client.p12 # look for -rw-r--r-- (644) or wider chmod 644 /path/to/client.p12 # grant read access to the container user
Lassen Sie -Djavax.net.ssl.keyStorePassword weg, wenn der Keystore keine Passphrase hat. Beachten Sie, dass die hier verwendete Passphrase über docker inspect oder die Prozessliste sichtbar wäre.
MCP-Konfiguration mit einem Client-Zertifikat
{
"sonarqube": {
"command": "docker",
"args": [
"run", "--init", "--pull=always", "-i", "--rm",
"-v", "/path/to/client.p12:/etc/ssl/mcp/client.p12:ro",
"-e", "JAVA_OPTS",
"-e", "SONARQUBE_TOKEN",
"-e", "SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"JAVA_OPTS": "-Djavax.net.ssl.keyStore=/etc/ssl/mcp/client.p12 -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=<passphrase>",
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Verwenden eines PKCS12-Keystores mit einer eigenständigen JAR
Wenn Sie den Server aus einer JAR ausführen, übergeben Sie die Keystore-Eigenschaften als JVM-Argumente vor -jar:
java \
-Djavax.net.ssl.keyStore=/path/to/client.p12 \
-Djavax.net.ssl.keyStoreType=PKCS12 \
-Djavax.net.ssl.keyStorePassword=<passphrase> \
-jar <path_to_sonarqube_mcp_server_jar>
Lassen Sie -Djavax.net.ssl.keyStorePassword weg, wenn der Keystore keine Passphrase hat.
MCP-Konfiguration mit einem Client-Zertifikat (JAR)
{
"sonarqube": {
"command": "java",
"args": [
"-Djavax.net.ssl.keyStore=/path/to/client.p12",
"-Djavax.net.ssl.keyStoreType=PKCS12",
"-Djavax.net.ssl.keyStorePassword=<passphrase>",
"-jar",
"<path_to_sonarqube_mcp_server_jar>"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Hinweis: PEM-Zertifikats- und Schlüsseldateien (separate
.crt-/.key-Dateien) müssen zuerst in das PKCS12-Format konvertiert werden. Verwenden Sieopenssl pkcs12 -export -in client.crt -inkey client.key -out client.p12zur Konvertierung.
Werkzeuge
Analyse
-
analyze_code_snippet – Analysiert Dateiinhalte mit SonarQube-Analysatoren, um Codequalitäts- und Sicherheitsprobleme zu identifizieren. Analysiert für genaue Ergebnisse immer den vollständigen Dateiinhalt. Optional können Ergebnisse auf einen bestimmten Code-Ausschnitt gefiltert werden.
Veraltet:
analyze_code_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 gemountetem Arbeitsbereich (empfohlen): Übergeben Sie
filePath(projektrelativ) – der Server liest die Datei direkt und hält den Dateiinhalt aus dem Agenten-Kontextfenster heraus - Ohne Arbeitsbereich-Mount: Übergeben Sie den vollständigen
fileContentfür eine vollständige Dateianalyse (meldet alle Probleme) - Fügen Sie optional
codeSnippethinzu, um Ergebnisse zu filtern – nur Probleme innerhalb des Ausschnitts werden gemeldet (Ausschnittposition wird automatisch erkannt)
Parameter:
projectKey– Der SonarQube-Projektschlüssel – Erforderliche Zeichenkette (Ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)filePath– Projektrelativer Pfad der zu analysierenden Datei (z. B.src/main/java/MyClass.java). Wird verwendet, wenn der Arbeitsbereich unter/app/mcp-workspacegemountet ist – ZeichenkettefileContent– Vollständiger Dateiinhalt als Zeichenkette. Erforderlich, wenn der Arbeitsbereich nicht gemountet ist – ZeichenkettecodeSnippet– Code-Ausschnitt zum Filtern von Problemen (muss mit dem Inhalt in fileContent übereinstimmen) – Zeichenkettelanguage– Sprache des Codes (z. B. „java", „python", „js", „ts", „tsx", „jsx") – Zeichenkettescope– Geltungsbereich der Datei: MAIN oder TEST (Standard: MAIN) – Zeichenkette
Unterstützte Sprachen: Java, Kotlin, Python, Ruby, Go, JavaScript (
js,jsx), TypeScript (ts,tsx), JSP, PHP, XML, HTML, CSS, CloudFormation, Kubernetes, Terraform, Azure Resource Manager, Ansible, Docker, Erkennung von Geheimnissen - Mit gemountetem Arbeitsbereich (empfohlen): Übergeben Sie
Wenn die Integration mit SonarQube for IDE aktiviert ist: (diese beiden Werkzeuge sind sowohl im analysis- als auch im ide-Werkzeugsatz gekennzeichnet)
-
analyze_file_list – Analysiert Dateien im aktuellen Arbeitsverzeichnis mithilfe von SonarQube for IDE. Dieses Werkzeug verbindet sich mit einer laufenden SonarQube-for-IDE-Instanz, um eine Codequalitätsanalyse für eine Liste von Dateien durchzuführen.
file_absolute_paths– Liste der absoluten Dateipfade zur Analyse – Erforderliches String[]
-
toggle_automatic_analysis – Aktiviert oder deaktiviert die automatische Analyse von SonarQube for IDE. Wenn aktiviert, analysiert SonarQube for IDE Dateien automatisch, wenn sie im Arbeitsverzeichnis geändert werden. Wenn deaktiviert, ist die automatische Analyse ausgeschaltet.
enabled– Aktiviert oder deaktiviert die automatische Analyse – Erforderlicher Boolean
Wenn die Vortex-Analyse für Ihre SonarQube-Cloud-Organisation aktiviert ist:
Voraussetzung: Der Arbeitsbereich muss unter
/app/mcp-workspacegemountet sein
- run_advanced_code_analysis – Führt eine Vortex-Analyse in SonarQube Cloud für eine einzelne Datei durch. Die Organisation wird aus der MCP-Konfiguration abgeleitet.
projectKey– Der Schlüssel des Projekts – Erforderliche Zeichenkette (Ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)branch– Zweigname, der zum Abrufen des letzten Analysekontexts verwendet wird – Erforderliche ZeichenkettefilePath– Projektrelativer Pfad der zu analysierenden Datei (z. B.src/main/java/MyClass.java) – Erforderliche ZeichenkettefileScope– Definiert, aus welchem Geltungsbereich die Datei stammt: ‚MAIN' oder ‚TEST' (Standard: MAIN) – Zeichenkette
Abdeckung
-
search_files_by_coverage – Sucht nach Dateien in einem Projekt, sortiert nach Abdeckung (aufsteigend – schlechteste Abdeckung zuerst). Dieses Werkzeug hilft dabei, Dateien zu identifizieren, die Verbesserungen der Testabdeckung benötigen.
projectKey– Der Projektschlüssel, in dem gesucht werden soll – Erforderliche Zeichenkette (Ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)branch– Optionaler Zweigname für die zweigbasierte Analyse. Verwenden Sielist_branches, um gültige Namen zu ermitteln – ZeichenkettepullRequest– Optionaler Pull-Request-Schlüssel/ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln – ZeichenkettemaxCoverage– Maximaler Abdeckungsschwellenwert (0–100). Gibt nur Dateien mit einer Abdeckung <= diesem Wert zurück – ZahlpageIndex– Seitenindex (1-basiert, Standard: 1) – ZahlpageSize– Seitengröße (Standard: 100, max: 500) – Zahl
-
get_file_coverage_details – Ruft zeilenweise Abdeckungsinformationen für eine bestimmte Datei ab, einschließlich der genauen Zeilen, die nicht abgedeckt sind, und der Zeilen mit teilweise abgedeckten Zweigen. Dieses Werkzeug hilft dabei, genau zu identifizieren, wo Testabdeckung hinzugefügt werden sollte. Verwenden Sie es nach der Identifizierung von Dateien mit geringer Abdeckung über search_files_by_coverage.
key– Dateischlüssel (z. B. my_project:src/foo/Bar.java) – Erforderliche Zeichenkettebranch– Optionaler Zweigname für die zweigbasierte Analyse. Verwenden Sielist_branches, um gültige Namen zu ermitteln – ZeichenkettepullRequest– Optionaler Pull-Request-Schlüssel/ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln – Zeichenkettefrom– Erste zu analysierende Zeile (1-basiert, Standard: 1) – Zahlto– Letzte zu analysierende Zeile (einschließlich). Wenn nicht angegeben, werden alle Zeilen zurückgegeben – Zahl
Abhängigkeitsrisiken
Hinweis: Abhängigkeitsrisiken sind nur verfügbar, wenn eine Verbindung zu SonarQube Server 2025.4 Enterprise oder höher mit aktiviertem SonarQube Advanced Security besteht.
- search_dependency_risks – Sucht nach Problemen der Software-Zusammensetzungsanalyse (Abhängigkeitsrisiken) eines SonarQube-Projekts, zusammen mit Versionen, die im analysierten Projekt, in der Anwendung oder im Portfolio vorkommen.
projectKey– Projektschlüssel – Erforderliche Zeichenkette (Ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)branch– Optionaler Zweigname für die zweigbasierte Analyse. Verwenden Sielist_branches, um gültige Namen zu ermitteln – ZeichenkettepullRequest– Optionaler Pull-Request-Schlüssel/ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln – ZeichenkettepageIndex– Optionaler Seitenindex (1-basiert, Standard: 1) – GanzzahlpageSize– Optionale Seitengröße. Muss größer als 0 und kleiner oder gleich 500 sein (Standard: 100) – Ganzzahl
Unternehmen
Hinweis: Unternehmen sind nur verfügbar, wenn eine Verbindung zu SonarQube Cloud besteht.
- list_enterprises – Listet die Unternehmen in SonarQube Cloud auf, auf die Sie Zugriff haben. Verwenden Sie dieses Werkzeug, um Unternehmens-IDs zu ermitteln, die mit anderen Werkzeugen verwendet werden können.
enterpriseKey– Optionaler Unternehmensschlüssel zum Filtern der Ergebnisse – Zeichenkette
Probleme
-
change_sonar_issue_status – Ändert den Status eines SonarQube-Problems auf „accept", „falsepositive" oder um ein Problem wieder zu öffnen („reopen").
key– Problemschlüssel – Erforderliche Zeichenkettestatus– Neuer Status des Problems – Erforderliche Aufzählung {"accept", "falsepositive", "reopen"}_
-
search_sonar_issues_in_projects – Sucht nach SonarQube-Problemen in den Projekten meiner Organisation.
projectKeys– Optionale Liste von SonarQube-Projektschlüsseln – String[]branch– Optionaler Zweigname für die zweigbasierte Analyse. Verwenden Sielist_branches, um gültige Namen zu ermitteln – ZeichenkettepullRequest– Optionaler Pull-Request-Schlüssel/ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln – Zeichenketteseverities– Optionale Liste von Schweregraden zum Filtern. Mögliche Werte: INFO, LOW, MEDIUM, HIGH, BLOCKER – String[]impactSoftwareQualities– Optionale Liste von Softwarequalitäten zum Filtern. Mögliche Werte: MAINTAINABILITY, RELIABILITY, SECURITY – String[]issueStatuses– Optionale Liste von Problemstatus zum Filtern. Mögliche Werte: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX – String[]issueKey– Optionaler Problemschlüssel zum Abrufen eines bestimmten Problems – ZeichenkettepageIndex– Optionaler 1-basierter Seitenindex (Standard: 1) – GanzzahlpageSize– Optionale Seitengröße. Muss größer als 0 und kleiner oder gleich 500 sein (Standard: 100) – Ganzzahl
Sicherheits-Hotspots
-
search_security_hotspots – Sucht nach Sicherheits-Hotspots in einem SonarQube-Projekt.
projectKey– Projekt- oder Anwendungsschlüssel – Erforderliche Zeichenkette (Ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)hotspotKeys– Kommagetrennte Liste spezifischer Sicherheits-Hotspot-Schlüssel zum Abrufen – String[]branch– Optionaler Zweigname für die zweigbasierte Analyse. Verwenden Sielist_branches, um gültige Namen zu ermitteln – ZeichenkettepullRequest– Optionaler Pull-Request-Schlüssel/ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln – Zeichenkettefiles– Optionale Liste von Dateipfaden zum Filtern – String[]status– Optionaler Statusfilter: TO_REVIEW, REVIEWED – Zeichenketteresolution– Optionaler Auflösungsfilter: FIXED, SAFE, ACKNOWLEDGED – ZeichenkettesinceLeakPeriod– Filtert Hotspots, die seit dem Leak-Zeitraum (neuer Code) erstellt wurden – BooleanonlyMine– Nur Hotspots anzeigen, die mir zugewiesen sind – BooleanpageIndex– Optionaler 1-basierter Seitenindex (Standard: 1) – GanzzahlpageSize– Optionale Seitengröße. Muss größer als 0 und kleiner oder gleich 500 sein (Standard: 100) – Ganzzahl
-
show_security_hotspot – Ruft detaillierte Informationen zu einem bestimmten Sicherheits-Hotspot ab, einschließlich Regeldetails, Codekontext, Abläufen und Kommentaren.
hotspotKey– Schlüssel des Sicherheits-Hotspots – Erforderliche Zeichenkette
-
change_security_hotspot_status – Überprüft einen Sicherheits-Hotspot, indem sein Status geändert wird. Beim Markieren als REVIEWED müssen Sie eine Auflösung angeben (FIXED, SAFE oder ACKNOWLEDGED).
hotspotKey– Schlüssel des Sicherheits-Hotspots – Erforderliche Zeichenkettestatus– Neuer Status – Erforderliche Aufzählung {"TO_REVIEW", "REVIEWED"}resolution– Auflösung, wenn der Status REVIEWED ist – Aufzählung {"FIXED", "SAFE", "ACKNOWLEDGED"}comment– Optionaler Überprüfungskommentar – Zeichenkette
Sprachen
- list_languages – Listet alle in dieser SonarQube-Instanz unterstützten Programmiersprachen auf.
q– Optionales Muster, mit dem Sprachschlüssel/-namen abgeglichen werden – Zeichenkette
Messwerte
- get_component_measures – Ruft SonarQube-Messwerte für eine Komponente ab (Projekt, Verzeichnis, Datei).
projectKey– Der Projektschlüssel – Erforderliche Zeichenkette, wennSONARQUBE_PROJECT_KEYnicht konfiguriert istbranch– Optionaler Zweigname für die zweigbasierte Analyse. Verwenden Sielist_branches, um gültige Namen zu ermitteln – ZeichenkettemetricKeys– Optionale Metrikschlüssel zum Abrufen (z. B. ncloc, complexity, violations, coverage) – String[]pullRequest– Optionaler Pull-Request-Schlüssel/ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln – Zeichenkette
Metriken
- search_metrics – Sucht nach SonarQube-Metriken.
pageIndex– Optionaler 1-basierter Seitenindex (Standard: 1) – GanzzahlpageSize– Optionale Seitengröße. Muss größer als 0 und kleiner oder gleich 500 sein (Standard: 100) – Ganzzahl
Portfolios
-
list_portfolios - Listet Unternehmensportfolios in SonarQube mit Filter- und Paginierungsoptionen auf.
Für SonarQube Server:
q- Optionale Suchanfrage zum Filtern von Portfolios nach Name oder Schlüssel - Stringfavorite- Wenn true, werden nur favorisierte Portfolios zurückgegeben - BooleanpageIndex- Optionale 1-basierte Seitennummer (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 ist - Stringq- Optionale Suchanfrage zum Filtern von Portfolios nach Name - Stringfavorite- Muss true sein, wenn der Parameter 'enterpriseId' weggelassen wird. Wenn true, werden nur Portfolios zurückgegeben, die vom angemeldeten Benutzer favorisiert wurden. Kann nicht true sein, wenn 'draft' true ist - Booleandraft- Wenn 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
-
search_my_sonarqube_projects - Findet SonarQube-Projekte. Die Antwort ist paginiert.
pageIndex- Optionaler 1-basierter 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 Name (Teilübereinstimmung) oder Schlüssel (genaue Übereinstimmung) - String
-
list_branches - Listet analysierte Branches für ein Projekt auf.
- SonarQube Cloud: gibt langlebige (
LONG) und kurzlebige (SHORT) Branches mittype- undmergeBranch-Feldern zurück. OptionalerbranchTypes-Filter:ALL(Standard),LONGoderSHORT. - SonarQube Server: gibt alle analysierten Branches zurück (Name, Qualitätsgate, Analysedatum). Kein
type-,mergeBranch- oderbranchTypes-Filter. - Verwenden Sie die zurückgegebenen Branch-Namen als Parameter
branchfür andere Tools. Für Pull-Request-Analysen verwenden Sie stattdessenlist_pull_requests. projectKey- Projekt-Schlüssel (z. B. my_project) - Erforderlicher String (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 die mit Pull Requests versehene Analyse (Abdeckung, Issues, Qualitätsgate) zu ermitteln. Gibt den Pull-Request-Schlüssel/die Pull-Request-ID zurück, der/die mit anderen Tools verwendet werden kann. Für eine analyse auf Branch-Basis ohne Pull Requests verwenden Sie stattdessen
list_branches.projectKey- Projekt-Schlüssel (z. B. my_project) - Erforderlicher String (Ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)
Qualitätsgates
-
get_project_quality_gate_status - Ruft den Qualitätsgate-Status für das SonarQube-Projekt ab.
analysisId- Optionale Analyse-ID - Stringbranch- Optionaler Branch-Name für die Analyse auf Branch-Basis. Verwenden Sielist_branches, um gültige Namen zu ermitteln - StringprojectId- Optionale Projekt-ID - StringprojectKey- Optionaler Projekt-Schlüssel - StringpullRequest- Optionaler Pull-Request-Schlüssel/-ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln - String
-
list_quality_gates - Listet alle Qualitätsgates in meinem SonarQube auf.
Regeln
- show_rule - Zeigt detaillierte Informationen zu einer SonarQube-Regel an.
key- Regelschlüssel - Erforderlicher String
Duplikate
-
search_duplicated_files - Sucht nach Dateien mit Codeduplikaten in einem SonarQube-Projekt. Standardmäßig werden automatisch alle duplizierten Dateien über alle Seiten abgerufen (maximal 10.000 Dateien). Gibt nur Dateien mit Duplikaten zurück.
projectKey- Projekt-Schlüssel - Erforderlicher String (Ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)branch- Optionaler Branch-Name für die Analyse auf Branch-Basis. Verwenden Sielist_branches, um gültige Namen zu ermitteln - StringpullRequest- Optionaler Pull-Request-Schlüssel/-ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln - StringpageSize- Optionale Anzahl von Ergebnissen pro Seite für manuelle Paginierung (maximal 500). Wenn nicht angegeben, werden automatisch alle duplizierten Dateien abgerufen - IntegerpageIndex- Optionale Seitennummer für manuelle Paginierung (beginnt bei 1). Wenn nicht angegeben, werden automatisch alle duplizierten Dateien abgerufen - Integer
-
get_duplications - Ruft Duplikate für eine Datei ab. Erfordert die Berechtigung "Browse" für das Projekt der Datei.
key- Dateischlüssel - Erforderlicher Stringbranch- Optionaler Branch-Name für die Analyse auf Branch-Basis. Verwenden Sielist_branches, um gültige Namen zu ermitteln - StringpullRequest- Optionaler Pull-Request-Schlüssel/-ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln - String
Quellen
-
get_raw_source - Ruft Quellcode als Rohtext von SonarQube ab. Erfordert die Berechtigung "Quellcode anzeigen" für die Datei.
key- Dateischlüssel - Erforderlicher Stringbranch- Optionaler Branch-Name für die Analyse auf Branch-Basis. Verwenden Sielist_branches, um gültige Namen zu ermitteln - StringpullRequest- Optionaler Pull-Request-Schlüssel/-ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln - String
-
get_scm_info - Ruft SCM-Informationen von SonarQube-Quelldateien ab. Erfordert die Berechtigung "Quellcode anzeigen" für das Projekt der Datei.
key- Dateischlüssel - Erforderlicher Stringcommits_by_line- Zeilen nach SCM-Commit gruppieren, wenn der Wert false ist, andernfalls Commits für jede Zeile anzeigen - 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 besteht.
-
get_system_health - Ruft den Gesundheitsstatus der SonarQube-Serverinstanz ab. Gibt GREEN (voll funktionsfähig), YELLOW (verwendbar, aber Aufmerksamkeit erforderlich) oder RED (nicht betriebsbereit) zurück.
-
get_system_info - Ruft detaillierte Informationen zur SonarQube-Serversystemkonfiguration ab, einschließlich JVM-Zustand, Datenbank, Suchindizes und Einstellungen. Erfordert die Berechtigung "Administrieren".
-
get_system_logs - Ruft SonarQube-Server-Systemprotokolle im Klartextformat ab. Erfordert die Systemadministratorberechtigung.
name- Optionaler Name der abzurufenden Protokolle. Mögliche Werte: access, app, ce, deprecation, es, web. Standard: app - String
-
ping_system - Pingt das SonarQube-Serversystem, um zu prüfen, ob es aktiv ist. Gibt 'pong' als Klartext zurück.
-
get_system_status - Ruft Statusinformationen zu SonarQube Server ab. Gibt Status (STARTING, UP, DOWN, RESTARTING, DB_MIGRATION_NEEDED, DB_MIGRATION_RUNNING), Version und ID zurück.
Webhooks
-
create_webhook - Erstellt einen neuen Webhook für die SonarQube-Organisation oder das SonarQube-Projekt. Erfordert die Berechtigung "Administrieren" für das angegebene Projekt oder die globale Berechtigung "Administrieren".
name- Webhook-Name - Erforderlicher Stringurl- Webhook-URL - Erforderlicher StringprojectKey- Optionaler Projekt-Schlüssel für projektspezifische Webhooks - Stringsecret- Optionales Webhook-Geheimnis zur Sicherung der Webhook-Nutzlast - String
-
list_webhooks - Listet alle Webhooks für die SonarQube-Organisation oder das SonarQube-Projekt auf. Erfordert die Berechtigung "Administrieren" für das angegebene Projekt oder die globale Berechtigung "Administrieren".
projectKey- Optionaler Projekt-Schlüssel zum Auflisten projektspezifischer Webhooks - String
Kontextanreicherung
Architektur-Tools
-
search_by_signature_patterns - Findet Codeelemente (Klassen, Methoden, Schnittstellen, ...) anhand ihrer Deklarationssignaturen mit Regex-Mustern.
include_code_regex_list- Liste von Regex-Mustern zum Abgleichen von Signaturen - Erforderliches String[]exclude_code_regex_list- Liste von Regex-Mustern, die von den Ergebnissen ausgeschlossen werden sollen - String[]include_glob- Glob-Muster für den Dateifilter (z. B.*.java) - Stringexclude_glob- Glob-Muster für Dateiausschluss - Stringfields- Kommagetrennte Liste der Felder, die in die Antwort aufgenommen werden sollen - Stringlimit- Maximale Anzahl der zurückzugebenden Ergebnisse (Standard: 10) - Integerregex_lists_operator- Wie mehrere Muster kombiniert werden:OR(Standard) oderAND- String
-
search_by_body_patterns - Findet Codeelemente anhand ihres Implementierungsrumpfs mit Regex-Mustern. Nützlich, um herauszufinden, wo APIs oder Muster tatsächlich verwendet werden.
include_code_regex_list- Liste von Regex-Mustern zum Abgleichen von Coderümpfen - Erforderliches String[]exclude_code_regex_list- Liste von Regex-Mustern, die von den Ergebnissen ausgeschlossen werden sollen - String[]include_glob- Glob-Muster für den Dateifilter - Stringexclude_glob- Glob-Muster für Dateiausschluss - Stringfields- Kommagetrennte Liste der Felder, die in die Antwort aufgenommen werden sollen - Stringlimit- Maximale Anzahl der zurückzugebenden Ergebnisse (Standard: 10) - Integerregex_lists_operator- Wie mehrere Muster kombiniert werden: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 bricht, wenn sich eine Signatur ändert.
fqn- Vollqualifizierter Name der Funktion - Erforderlicher Stringdepth- Tiefe der Aufrufkette (0= nur Funktion, 1= direkte Aufrufer, usw.) - Integerfields- Kommagetrennte Liste der Felder, die in die Antwort aufgenommen werden sollen - String
-
get_downstream_call_flow - Verfolgt, welche Funktionen eine bestimmte Funktion aufruft. Nützlich für Auswirkungsanalysen und das Verständnis des Ausführungsflusses.
fqn- Vollqualifizierter Name der Funktion - Erforderlicher Stringdepth- Tiefe der Aufrufkette (0= nur Funktion, 1= direkte Aufgerufene, usw.) - Integerfields- Kommagetrennte Liste der Felder, die in die Antwort aufgenommen werden sollen - String
-
get_source_code - Ruft den vollständigen Quellcode (Signatur und Rumpf) für ein Codeelement anhand seines vollqualifizierten Namens ab.
fqn- Vollqualifizierter Name des Elements - Erforderlicher Stringfields- Kommagetrennte Liste der Felder, die in die Antwort aufgenommen werden sollen - String
-
get_type_hierarchy - Ruft die vollständige Vererbungshierarchie für eine klassenähnliche Struktur ab (Klasse, Schnittstelle, Enum, Record, Ausnahme, Struct). Unverzichtbar für das Verständnis von Vererbungsbäumen und Refactoring.
fqn- Vollqualifizierter Name der klassenähnlichen Struktur - Erforderlicher Stringfields- Kommagetrennte Liste der Felder, die in die Antwort aufgenommen werden sollen - String
-
get_references - Ruft direkte eingehende und ausgehende Codereferenzen für eine Klasse oder ein Modul ab. Gibt nur direkte (nicht transitive) Referenzen zurück.
fqn- Vollqualifizierter Name der Klasse oder des Moduls - Erforderlicher Stringfields- Kommagetrennte Liste der Felder, die in die Antwort aufgenommen werden sollen - String
-
get_current_architecture - Ruft einen hierarchischen Architekturgraphen ab, der nach Pfadpräfix und Tiefe gefiltert ist. Nützlich zum Erkunden der Modulstruktur und von Abhängigkeiten auf hoher Ebene.
depth- Hierarchietiefe (0= nur Stamm, 1= Stamm + Kinder, usw.) - Erforderlicher Integerpath_prefix- Optionales Pfadpräfix zum Filtern von Knoten (z. B.com.example.service) - Stringecosystem- Optionales Ökosystem zum Filtern (java,cs,py,js,ts) - String
-
get_intended_architecture - Ruft benutzerdefinierte Architekturbeschränkungen ab, die festlegen, welche Module von anderen abhängen dürfen.
Richtlinien-Tools
- **get_guidelines** - Ruft Codierungsrichtlinien basierend auf SonarQube-Projektproblemen, Katalogkategorien oder einer Kombination aus beidem ab. - `mode` - Abrufmodus für Richtlinien: `project_based`, `category_based` oder `combined` - _Erforderlicher String_ - `categories` - Liste der Kategorienamen (erforderlich für die Modi `category_based` und `combined`) - _String[]_ - `languages` - Liste der Zielsprachen im SonarQube-Repository-Schlüsselformat (erforderlich, wenn `categories` angegeben ist) - _String[]_ - `file_paths` - Optionale Liste von Dateipfaden zum Filtern der Richtlinien - _String[]_Drittanbieter-Abhängigkeitstools
- check_dependency - Prüft eine Drittanbieter-Abhängigkeit auf Sicherheitslücken, Supply-Chain-Malware und Lizenzkonformität, bevor Sie sie hinzufügen oder aktualisieren.
purl- Package-URL (purl) mit Version, gemäß purl-spec. Format:pkg:<type>/<namespace>/<name>@<version>(z. B.pkg:npm/lodash@4.17.21,pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1,pkg:pypi/django@3.2.0) - Erforderlicher String
Umgebungsvariablen für Context Augmentation
| Variable | Beschreibung | Erforderlich | Standard |
|---|---|---|---|
SONARQUBE_URL | SonarQube-Cloud-URL | Ja | https://sonarcloud.io |
SONARQUBE_TOKEN | Authentifizierungstoken | Ja | Keine |
SONARQUBE_ORG | Organisationsschlüssel in SonarQube Cloud | Ja | Keine |
SONARQUBE_PROJECT_KEY | Projektschlüssel in SonarQube Cloud | Ja | Keine |
SONAR_SQ_BRANCH | Explizite SonarQube-Branch-Überschreibung * | Nein | Keine |
SONARQUBE_DEBUG_ENABLED | Debug-Protokollierung aktivieren (zur Fehlerbehebung) | Nein | False |
SONAR_LOG_LEVEL | Protokollierungsausführlichkeit (TRACE, DEBUG, INFO, WARNING, ERROR) | Nein | INFO |
- Anzugeben, wenn git nicht verwendet wird oder wenn der git-Branch-Name nicht mit dem Branch-Namen in SonarQube übereinstimmt.
Projektspezifische Konfiguration (empfohlen)
Exportieren Sie zunächst die SONARQUBE_TOKEN Umgebungsvariable mit einem gültigen Personal Access Token (PAT) für Ihr Projekt.
# macOS/Linux (Bash/Zsh)
export SONARQUBE_TOKEN="{<YourUserToken>}"
Mounten Sie dann den Projektarbeitsbereich, um dem Context-Augmentation-Server direkten Zugriff auf Ihre Quelldateien zu geben:
{
"mcpServers": {
"sonarqube-mcp-server": {
"command": "docker",
"args": [
"run", "-i", "--rm", "--pull=always",
"-e", "SONARQUBE_URL",
"-e", "SONARQUBE_TOKEN",
"-e", "SONARQUBE_ORG",
"-e", "SONARQUBE_PROJECT_KEY",
"-e", "SONARQUBE_TOOLSETS",
"-v", "/ABSOLUTE/PATH/TO/YOUR/PROJECT:/app/mcp-workspace:rw",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_URL": "https://sonarcloud.io",
"SONARQUBE_ORG": "<YourOrganizationKey>",
"SONARQUBE_PROJECT_KEY": "<YourProjectKey>",
"SONARQUBE_TOOLSETS": "cag"
}
}
}
}
Wichtig: In einer projektspezifischen Konfiguration setzen Sie SONARQUBE_TOKEN nicht in den env-Block. Exportieren Sie es als Umgebungsvariable (export SONARQUBE_TOKEN=...). Docker leitet es über -e SONARQUBE_TOKEN in den Container weiter.
Agentic Readiness
Hinweis: Agentic-Readiness-Tools sind nur in SonarQube Cloud verfügbar und erfordern, dass die Funktion für Ihre Organisation aktiviert ist.
-
start_agentic_readiness_assessment - Startet eine Agentic-Readiness-Bewertung für ein Projekt. Gibt sofort mit Status
PENDINGund einerassessmentIdzurück. Verwenden Sieget_agentic_readiness_assessment, um auf Ergebnisse zu warten.projectKey- Der Projektschlüssel - Erforderlicher String (Ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)branch- Zu bewertender Branch. Weglassen, um den Standard-Branch des Projekts zu verwenden - String
-
get_agentic_readiness_assessment - Ruft das Ergebnis einer Bewertung ab. Rufen Sie erneut mit derselben
assessmentIdauf, bis der StatusCOMPLETED,FAILEDoderINTERRUPTEDist. Wenn abgeschlossen, werden die Gesamtstufe und eine Aufschlüsselung nach Säulen mit empfohlenen Maßnahmen und Belegen 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, neueste zuerst. 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 (Ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)branch- Bewertungen nach Branch-Namen filtern. Weglassen, um Bewertungen für alle Branches aufzulisten - StringpageIndex- 1-basierter Seitenindex (Standard: 1) - NumberpageSize- Anzahl der Elemente pro Seite, max. 100 (Standard: 50) - Number
Beispiel-Prompts
Nachdem Sie den SonarQube-MCP-Server eingerichtet haben, finden Sie hier einige Beispiel-Prompts für häufige reale Szenarien:
Beheben eines fehlgeschlagenen Quality Gates
My quality gate is failing for my project. Can you help me understand why and fix the most critical issues?
The quality gate on my feature branch is red. What do I need to fix to get it passing before I can merge to main?
Pre-Release- und Pre-Merge-Prüfungen
I'm about to merge my pull request <#247> for the <web-app> project. Can you check if there are any quality issues I should address first?
We're deploying to production tomorrow. Can you check the quality gate status and alert me to any critical issues in this branch?
Verbesserung der Codequalität
I want to reduce technical debt in my project. What are the top issues I should prioritize?
Our code coverage dropped below 70%. Can you identify which files have the lowest coverage and help me improve it?
Verstehen und Beheben von Problemen
I have 15 new code smells in my latest commit. Can you explain what they are and help me fix them?
SonarQube flagged a critical security vulnerability in <AuthController.java>. What's the issue and how do I fix it?
Sicherheits- und Abhängigkeitsverwaltung
We need to pass a security audit. Can you check all our projects for security vulnerabilities and create a prioritized list of what needs to be fixed?
Are there any known vulnerabilities in our dependencies? Check this project for dependency risks.
Unterstützung bei der Code-Überprüfung
I just wrote this authentication function. Can you analyze it for security issues and code quality problems before I commit?
Review the changes in <src/database/migrations> for any potential bugs or security issues.
Überwachung der Projektgesundheit
Give me a health report for my project: quality gate status, number of bugs, Security Hotspots, and code coverage.
Compare code quality between our main branch and the develop branch. Are we introducing new issues?
Teamzusammenarbeit
What are the most common rule violations across all our projects? We might need to update our coding standards.
Show me all the issues that were marked as false positives in the last month. Are we seeing patterns that suggest our rules need adjustment?
Build
Bevorzugen Sie das Container-Image sonarsource/sonarqube-mcp.
Um den Server als eigenständiges JAR ohne Docker auszuführen, laden Sie ein vorgefertigtes Release aus dem SonarSource-Binärrepository herunter. Jede veröffentlichte Version wird dort als sonarqube-mcp-server-<version>.jar veröffentlicht (z. B. sonarqube-mcp-server-1.19.0.2785.jar).
Aus JAR ausführen
Laden Sie das JAR für die gewünschte Version aus dem Binärrepository herunter und konfigurieren Sie dann Ihren MCP-Client, um es mit Java 21 oder höher auszuführen:
- Zur Verbindung mit SonarQube Cloud:
{
"sonarqube": {
"command": "java",
"args": [
"-jar",
"<path_to_sonarqube_mcp_server_jar>"
],
"env": {
"STORAGE_PATH": "<path_to_your_mcp_storage>",
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_ORG": "<org>"
}
}
}
- Zur Verbindung mit SonarQube Server:
{
"sonarqube": {
"command": "java",
"args": [
"-jar",
"<path_to_sonarqube_mcp_server_jar>"
],
"env": {
"STORAGE_PATH": "<path_to_your_mcp_storage>",
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Aus dem Quellcode erstellen
Der SonarQube-MCP-Server erfordert zum Erstellen ein Java Development Kit (JDK) in Version 21 oder höher.
Führen Sie den folgenden Gradle-Befehl aus, um das Projekt zu bereinigen und die Anwendung zu erstellen:
./gradlew clean build -x test
Die JAR-Datei wird in build/libs/ erstellt.
Nach dem Hinzufügen oder Aktualisieren von Abhängigkeiten generieren Sie die Sperrdateien neu:
./gradlew :dependencies --write-locks
./gradlew :its:dependencies --write-locks
Verwenden Sie die obige Konfiguration Aus JAR ausführen und zeigen Sie mit <path_to_sonarqube_mcp_server_jar> auf das JAR in build/libs/.
Fehlerbehebung
Anwendungsprotokolle werden standardmäßig in die Datei STORAGE_PATH/logs/mcp.log geschrieben. Um die Dateiprotokollierung vollständig zu deaktivieren, setzen Sie SONARQUBE_LOG_TO_FILE_DISABLED=true.
Häufige Probleme
„Feature funktioniert nicht" oder „Fehlende Tools/Funktionalität"
Möglicherweise führen Sie ein veraltetes Docker-Image aus. Docker speichert Images lokal zwischen, sodass Sie keine automatischen Updates erhalten.
Lösung: Aktualisieren Sie auf die neueste Version:
docker pull sonarsource/sonarqube-mcp
Starten Sie nach dem Abrufen des neuesten Images Ihren MCP-Client neu, um die aktualisierte Version zu verwenden.
Optional können Sie das Flag --pull=always zu Ihrem docker-run-Befehl hinzufügen, um immer nach der neuesten Version zu suchen und sie abzurufen:
docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG sonarsource/sonarqube-mcp
„Ich möchte eine bestimmte Version festlegen"
Durchsuchen Sie die verfügbaren Tags unter sonarsource/sonarqube-mcp und referenzieren Sie die gewünschte Version:
docker pull sonarsource/sonarqube-mcp:1.19.0.2785
docker run --init -i --rm \
-e SONARQUBE_TOKEN -e SONARQUBE_ORG \
sonarsource/sonarqube-mcp:1.19.0.2785
Verwenden Sie in Ihrer MCP-Client-Konfiguration sonarsource/sonarqube-mcp:<version> anstelle von sonarsource/sonarqube-mcp und entfernen Sie --pull=always, damit Docker das Image nicht stillschweigend aktualisiert.
Daten und Telemetrie
Dieser Server erfasst anonyme Nutzungsdaten und sendet sie an SonarSource, um das Produkt zu verbessern. Es werden weder Quellcode noch IP-Adressen erfasst, und SonarSource gibt die Daten nicht an Dritte weiter. Die Erfassung von Telemetriedaten kann mit der folgenden Systemeigenschaft oder Umgebungsvariable deaktiviert werden: TELEMETRY_DISABLED=true. Klicken Sie hier, um ein Beispiel der erfassten Daten zu sehen.
Lizenz
Copyright 2025 SonarSource.
Lizenziert unter der SONAR Source-Available License v1.0. Die Verwendung des SonarQube-MCP-Servers in Übereinstimmung mit dieser Dokumentation ist ein nicht-wettbewerblicher Zweck und daher unter der SSAL zulässig.
Ihre Nutzung von SonarQube über MCP unterliegt den SonarQube-Cloud-Nutzungsbedingungen oder den SonarQube-Server-Geschäftsbedingungen, einschließlich der Nutzung der Ergebnisdaten ausschließlich für Ihre internen Softwareentwicklungszwecke.