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?
- Code-Snippets analysieren — Bitten Sie Ihren Assistenten, eine lokale Code-Analyse für ein Snippet oder eine Datei über
analyze_code_snippetauszuführen, optional mit Workspace-Mounting, um Kontextblähung zu vermeiden. - Issues suchen und verwalten — Lassen Sie den Assistenten SonarQube-Issues finden, überprüfen und aktualisieren, einschließlich der Änderung ihres Status, wenn nicht im Nur-Lese-Modus.
- Qualitäts-Gates und Messwerte prüfen — Fragen Sie nach Qualitäts-Gate-Status, Projektmetriken, Abdeckung und Abhängigkeitsrisiken in Ihren SonarQube-Projekten.
- Sicherheits-Hotspots überprüfen — Lassen Sie den Assistenten Sicherheits-Hotspots suchen und durchgehen, die in Ihrer Codebasis markiert wurden.
- Projekte und Regeln durchsuchen — Nutzen Sie den Assistenten, um Projekte zu erkunden, unterstützte Sprachen aufzulisten und Codierungsregeln direkt aus SonarQube nachzuschlagen.
Dokumentation
SonarQube MCP Server
Der SonarQube MCP Server ist ein Model Context Protocol (MCP) Server, der eine nahtlose Integration mit SonarQube Server oder Cloud für Codequalität und Sicherheit ermöglicht. Er unterstützt auch die Analyse von Codeausschnitten direkt im Agentenkontext.
Schnelleinrichtung
Sicherheitsempfehlungen
🔒 Wichtig: Ihr SonarQube-Token ist eine sensible Zugangsberechtigung. Beachten Sie folgende Sicherheitspraktiken:
Bei Verwendung von CLI-Befehlen:
- Vermeiden Sie das Hartkodieren von Tokens in Befehlszeilenargumenten – diese werden in der Shell-Historie gespeichert
- Verwenden Sie Umgebungsvariablen – setzen Sie Tokens in Umgebungsvariablen, bevor Sie Befehle ausführen
Bei Verwendung von Konfigurationsdateien:
- Übertragen Sie Tokens niemals an die Versionskontrolle
- Nutzen Sie Umgebungsvariablen-Substitution in Konfigurationsdateien, wenn möglich
🚀 Generieren Sie Ihre Konfiguration
Der schnellste Weg zum Start ist der SonarQube MCP Server Konfigurationsgenerator – ein interaktives Tool, das eine gebrauchsfertige Konfiguration für Ihren bevorzugten KI-Agenten-Client erstellt.
Manuelle Einrichtung
Wenn Sie die Konfiguration lieber selbst vornehmen möchten, ist die einfachste Methode die Verwendung unseres Container-Images unter sonarsource/sonarqube-mcp. Verwenden Sie sonarsource/sonarqube-mcp für automatische Updates (mit --pull=always) oder binden Sie eine Versionskennung (z. B. sonarsource/sonarqube-mcp:1.19.0.2785) für reproduzierbare Bereitstellungen an. Lesen Sie unten, wenn Sie es lokal erstellen möchten.
Hinweis: Obwohl die Beispiele unten
dockerverwenden, funktioniert jede OCI-kompatible Container-Laufzeitumgebung (z. B. Podman, nerdctl). Ersetzen Sie einfachdockerdurch Ihr bevorzugtes Werkzeug.
Antigravity
Der SonarQube MCP Server ist im Antigravity MCP Store verfügbar. Befolgen Sie diese Anweisungen:
- Öffnen Sie das Agent Side Panel
- Klicken Sie auf die drei Punkte (...) oben rechts 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 setzen Sie die URL auf https://sonarqube.us.
Alternativ können Sie den Server manuell über mcp_config.json konfigurieren:
- Für die Verbindung mit SonarQube Cloud:
Klicken Sie im Agent Side Panel auf die drei Punkte (...) -> MCP Store -> Manage MCP Servers -> View raw config und fügen Sie Folgendes hinzu:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"],
"env": {
"SONARQUBE_TOKEN": "<YOUR_TOKEN>",
"SONARQUBE_ORG": "<YOUR_ORG>"
}
}
}
}
Für SonarQube Cloud US fügen Sie "SONARQUBE_URL": "https://sonarqube.us" zum Abschnitt env und "-e", "SONARQUBE_URL" zum Array args manuell hinzu.
- Für die Verbindung mit SonarQube Server:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_URL", "sonarsource/sonarqube-mcp"],
"env": {
"SONARQUBE_TOKEN": "<YOUR_USER_TOKEN>",
"SONARQUBE_URL": "<YOUR_SERVER_URL>"
}
}
}
}
Claude Code
- Für die Verbindung mit SonarQube Cloud:
claude mcp add sonarqube \
--env SONARQUBE_TOKEN=$SONAR_TOKEN \
--env SONARQUBE_ORG=$SONAR_ORG \
-- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG sonarsource/sonarqube-mcp
Für SonarQube Cloud US fügen Sie --env SONARQUBE_URL=https://sonarqube.us zum Befehl hinzu.
- Für die Verbindung mit SonarQube Server:
claude mcp add sonarqube \
--env SONARQUBE_TOKEN=$SONAR_USER_TOKEN \
--env SONARQUBE_URL=$SONAR_URL \
-- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_URL sonarsource/sonarqube-mcp
Codex CLI
Bearbeiten Sie die Konfigurationsdatei unter ~/.codex/config.toml manuell und fügen Sie die folgende Konfiguration hinzu:
- Für die Verbindung mit SonarQube Cloud:
[mcp_servers.sonarqube]
command = "docker"
args = ["run", "--init", "--pull=always", "--rm", "-i", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"]
env = { "SONARQUBE_TOKEN" = "<YOUR_USER_TOKEN>", "SONARQUBE_ORG" = "<YOUR_ORG>" }
Für SonarQube Cloud US fügen Sie "SONARQUBE_URL" = "https://sonarqube.us" zum Abschnitt env und "-e", "SONARQUBE_URL" zum Array args hinzu.
- Für die Verbindung mit SonarQube Server:
[mcp_servers.sonarqube]
command = "docker"
args = ["run", "--init", "--pull=always", "--rm", "-i", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_URL", "sonarsource/sonarqube-mcp"]
env = { "SONARQUBE_TOKEN" = "<YOUR_TOKEN>", "SONARQUBE_URL" = "<YOUR_SERVER_URL>" }
Cursor
- Für die Verbindung mit SonarQube Cloud:
Für SonarQube Cloud US fügen Sie "SONARQUBE_URL": "https://sonarqube.us" nach der Installation manuell zum Abschnitt env in Ihrer MCP-Konfiguration hinzu.
- Für die Verbindung mit SonarQube Server:
Gemini CLI
Hinweis: Die Gemini CLI-Erweiterung wurde in das Repository sonarqube-agent-plugins verschoben. Bitte installieren Sie sie von dort aus.
Sie können unsere MCP-Server-Erweiterung mit dem folgenden Befehl installieren:
gemini extensions install https://github.com/SonarSource/sonarqube-agent-plugins
Sie müssen die erforderlichen Umgebungsvariablen festlegen, bevor Sie Gemini starten:
Erforderliche Umgebungsvariablen:
-
Für SonarQube Cloud:
SONARQUBE_TOKEN- Ihr SonarQube Cloud-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-BENUTZER-TokenSONARQUBE_URL- Ihre SonarQube Server-URL
Nach der Installation wird die Erweiterung unter <home>/.gemini/extensions/sonarqube/gemini-extension.json installiert.
GitHub Copilot CLI
Nach dem Start von Copilot CLI führen Sie den folgenden Befehl aus, um den SonarQube MCP-Server hinzuzufügen:
/mcp add
Sie müssen verschiedene Informationen über den MCP-Server angeben; Sie können die Tabulatortaste verwenden, um zwischen den Feldern zu navigieren.
- Für die Verbindung mit SonarQube Cloud:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_ORG, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_TOKEN>,SONARQUBE_ORG=<YOUR_ORG>
Tools: *
Für SonarQube Cloud US fügen Sie -e, SONARQUBE_URL zu Argumenten und SONARQUBE_URL=https://sonarqube.us zu Umgebungsvariablen hinzu.
- Für die Verbindung mit SonarQube Server:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_URL, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_USER_TOKEN>,SONARQUBE_URL=<YOUR_SERVER_URL>
Tools: *
Die Konfigurationsdatei befindet sich unter ~/.copilot/mcp-config.json.
GitHub Copilot Coding-Agent
Der GitHub Copilot Coding-Agent kann den SonarQube MCP-Server direkt in Ihrer CI/CD nutzen.
Um die Geheimnisse zu Ihrer Copilot-Umgebung hinzuzufügen, folgen Sie der Copilot-Dokumentation. Nur Geheimnisse mit Namen, die mit COPILOT_MCP_ beginnen, sind für Ihre MCP-Konfiguration verfügbar.
Navigieren Sie in Ihrem GitHub-Repository zu Settings -> Copilot -> Coding agent und fügen Sie die folgende Konfiguration im MCP-Konfigurationsabschnitt hinzu:
- Für die Verbindung mit SonarQube Cloud:
{
"mcpServers": {
"sonarqube": {
"type": "local",
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"--rm",
"-i",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "COPILOT_MCP_SONARQUBE_TOKEN",
"SONARQUBE_ORG": "COPILOT_MCP_SONARQUBE_ORG"
},
"tools": ["*"]
}
}
}
Für SonarQube Cloud US fügen Sie "-e", "SONARQUBE_URL" zum Array args und "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL" zum Abschnitt env hinzu, und setzen Sie dann das Geheimnis COPILOT_MCP_SONARQUBE_URL=https://sonarqube.us.
- Für die Verbindung mit SonarQube Server:
{
"mcpServers": {
"sonarqube": {
"type": "local",
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"--rm",
"-i",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "COPILOT_MCP_SONARQUBE_USER_TOKEN",
"SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL"
},
"tools": ["*"]
}
}
}
Kiro
Erstellen Sie eine .kiro/settings/mcp.json-Datei in Ihrem Arbeitsverzeichnis (oder bearbeiten Sie sie, falls sie bereits existiert) und fügen Sie die folgende Konfiguration hinzu:
- Für die Verbindung mit SonarQube Cloud:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<YOUR_TOKEN>",
"SONARQUBE_ORG": "<YOUR_ORG>"
},
"disabled": false,
"autoApprove": []
}
}
}
Für SonarQube Cloud US fügen Sie "-e", "SONARQUBE_URL" zum Array args und "SONARQUBE_URL": "https://sonarqube.us" zum Abschnitt env hinzu.
- Für die Verbindung mit SonarQube Server:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<YOUR_USER_TOKEN>",
"SONARQUBE_URL": "<YOUR_SERVER_URL>"
},
"disabled": false,
"autoApprove": []
}
}
}
VS Code
Sie können die folgenden Schaltflächen verwenden, um den Installationsprozess in VS Code zu vereinfachen.
Für SonarQube Cloud US fügen Sie "SONARQUBE_URL": "https://sonarqube.us" nach der Installation manuell zum Abschnitt env in Ihrer MCP-Konfiguration hinzu.
Windsurf
Der SonarQube MCP Server ist als Windsurf-Plugin verfügbar. Befolgen Sie diese Anweisungen:
- Öffnen Sie Windsurf Settings > Cascade > MCP Servers und wählen Sie Open MCP Marketplace
- Suchen Sie nach
sonarqubeim Cascade MCP Marketplace - Wählen Sie SonarQube MCP Server und klicken Sie auf Install
- Fügen Sie das erforderliche SonarQube-Benutzertoken hinzu. Fügen Sie dann den Organisationsschlüssel hinzu, wenn Sie eine Verbindung mit SonarQube Cloud herstellen möchten, oder die SonarQube-URL, wenn Sie eine Verbindung zu SonarQube Server oder Community Build herstellen möchten.
Für SonarQube Cloud US setzen Sie die URL auf https://sonarqube.us.
Zed
Navigieren Sie in Zed zur Ansicht Extensions und suchen Sie nach SonarQube MCP Server. Bei der Installation der Erweiterung werden Sie aufgefordert, die erforderlichen Umgebungsvariablen anzugeben:
- Bei Verwendung von SonarQube Cloud:
{
"sonarqube_token": "YOUR_SONARQUBE_TOKEN",
"sonarqube_org": "SONARQUBE_ORGANIZATION_KEY",
"docker_path": "DOCKER_PATH"
}
Für SonarQube Cloud US fügen Sie "sonarqube_url": "https://sonarqube.us" zur Konfiguration hinzu.
- Bei Verwendung von SonarQube Server:
{
"sonarqube_token": "YOUR_SONARQUBE_USER_TOKEN",
"sonarqube_url": "YOUR_SONARQUBE_SERVER_URL",
"docker_path": "DOCKER_PATH"
}
docker_path ist der Pfad zu einer Docker-Ausführungsdatei. Beispiele:
Linux/macOS: /usr/bin/docker oder /usr/local/bin/docker
Windows: C:\Program Files\Docker\Docker\resources\bin\docker.exe
💡 Tipp: Wir empfehlen, das neueste Image regelmäßig zu ziehen oder vor der Meldung von Problemen, um sicherzustellen, dass Sie über die aktuellsten Funktionen und Fehlerbehebungen verfügen.
Manuelle Installation
Sie können den SonarQube MCP-Server manuell installieren, indem Sie den folgenden Ausschnitt in die MCP-Server-Konfigurationsdatei kopieren:
- Für die Verbindung mit SonarQube Cloud:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_ORG": "<org>"
}
}
}
- Für die Verbindung mit SonarQube Server:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Integration mit SonarQube für IDE
Der SonarQube MCP Server kann mit SonarQube für IDE integriert werden, um Ihren Entwicklungsworkflow weiter zu verbessern und bessere Codeanalyse und Einblicke direkt in Ihrer IDE zu bieten.
Konfiguration
Bei Verwendung von SonarQube für IDE sollte die Umgebungsvariable SONARQUBE_IDE_PORT mit der korrekten Portnummer gesetzt werden. SonarQube für VS Code enthält eine Quick-Install-Schaltfläche, die die korrekte Portkonfiguration automatisch festlegt.
Zum Beispiel mit SonarQube Cloud:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"-e",
"SONARQUBE_IDE_PORT",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_ORG": "<org>",
"SONARQUBE_IDE_PORT": "<64120-64130>"
}
}
}
Wenn der MCP-Server in einem Container unter Linux ausgeführt wird, kann der Container nicht auf den eingebetteten SonarQube-für-IDE-Server zugreifen, der auf localhost läuft. Um dem Container die Verbindung zum SonarQube-für-IDE-Server zu ermöglichen, fügen Sie die Option
--network=hostzu Ihrem Container-Ausführungsbefehl hinzu.
Konfiguration
Abhängig von Ihrer Umgebung sollten Sie spezifische Umgebungsvariablen angeben.
Basis
Sie sollten die folgende Variable hinzufügen, wenn Sie den MCP-Server ausführen:
| 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); 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 erfordern, diesen Wert automatisch – der Parameter projectKey wird vollständig aus ihrem Schema entfernt. Nützlich, wenn Sie an einem einzelnen Projekt arbeiten. |
SONARQUBE_IDE_PORT | Optionale Portnummer zwischen 64120 und 64130, die verwendet wird, um den SonarQube MCP Server mit SonarQube für IDE zu verbinden. |
SONARQUBE_DEBUG_ENABLED | Wenn auf true gesetzt, aktiviert die Debug-Protokollierung. Debug-Protokolle werden sowohl in die Protokolldatei als auch nach STDERR geschrieben. Nützlich zur Fehlerbehebung bei Konnektivitäts- oder Konfigurationsproblemen. Standard: false. |
SONARQUBE_LOG_TO_FILE_DISABLED | Wenn auf true gesetzt, deaktiviert das Schreiben von Protokollen auf die Festplatte vollständig. Es werden keine Protokolldateien unter STORAGE_PATH/logs/ erstellt. Nützlich in containerisierten oder ephemeren Umgebungen, in denen Dateiprotokollierung unerwünscht ist. Standard: false. |
Workspace-Mount (Reduzierung des Kontextaufblähens)
Standardmäßig erfordert das Analysetool analyze_code_snippet, dass der Agent den vollständigen Dateiinhalt als fileContent-Argument übergibt. Bei großen Dateien oder bei der Analyse vieler Dateien in einer Sitzung erhöht dies die Nutzung des Kontextfensters und die Kosten erheblich.
Lösung: Binden Sie Ihr Projektverzeichnis in den Container unter /app/mcp-workspace ein. Wenn dieser Mount erkannt wird, liest der Server Dateien direkt von der Festplatte über das projektrelative filePath-Argument — Dateiinhalte gelangen nie über den Agent-Kontext.
{
"args": [
"run", "-i", "--rm", "--init", "--pull=always",
"-e", "SONARQUBE_TOKEN",
"-e", "SONARQUBE_ORG",
"-v", "/path/to/your/project:/app/mcp-workspace",
"sonarsource/sonarqube-mcp"
]
}
Wenn der Mount aktiv ist:
run_advanced_code_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 weitere 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 zum Auffinden von Projekt-Schlüsseln für andere Operationen erforderlich ist. Vortex-Kontext-Tools (veralteter Name: Context Augmentation/CAG) und Vortex-Analyse-Tools (veralteter Name: Advanced Analysis/A3S) sind nur im stdio-Modus verfügbar und teilen sich eine einzige kombinierte Organisationsberechtigung — eine Organisation muss für beide berechtigt sein, um eines davon zu nutzen. Auf SonarQube Server listet stdio Vortex-Kontext und run_advanced_code_analysis auf, wenn sowohl die CAG- als auch die A3S-Hubs berechtigt sind. Bevorzugen Sie den einheitlichen vortex-Toolset-Schlüssel. Die veralteten cag- und analysis-Schlüssel funktionieren weiterhin; eine Startwarnung und ein Veraltungshinweis in den Server-Anweisungen werden ausgegeben, wenn sie ohne vortex verwendet werden. Im Streamable-HTTP-Modus können Clients einen SONARQUBE_TOOLSETS-HTTP-Header senden, um dies pro Anfrage weiter einzuschränken, können aber keine Toolsets aktivieren, die über das hinausgehen, womit der Server gestartet wurde (siehe Streamable-HTTP-Transport unten). |
SONARQUBE_READ_ONLY | Wenn auf true gesetzt, aktiviert dies den Nur-Lese-Modus, der alle Schreiboperationen deaktiviert (z. B. Ändern des Issue-Status). Dieser Filter ist kumulativ mit SONARQUBE_TOOLSETS, wenn beide gesetzt sind. Standard: false. Im Streamable-HTTP-Modus können Clients einen SONARQUBE_READ_ONLY-HTTP-Header senden, um einzelne Anfragen weiter auf Nur-Lesen einzuschränken, können aber eine serverseitige Nur-Lese-Einschränkung nicht aufheben (siehe Streamable-HTTP-Transport unten). |
Verfügbare Toolsets
| 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-Brücken-Tools (Dateianalyse, automatische Analyse-Umschaltung) — 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 |
| Qualitäts-Gates | quality-gates | Auf Qualitäts-Gates und deren Status zugreifen |
| Regeln | rules | SonarQube-Regeln durchsuchen und suchen |
| Quellen | sources | Auf Quellcode und SCM-Informationen zugreifen |
| Duplikationen | duplications | Codeduplikationen über Projekte hinweg 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 bündelt (nur stdio; Cloud benötigt kombinierte Organisationsberechtigung; Server benötigt beide Hubs berechtigt) |
| Agentic Readiness | agentic-readiness | Agentic Readiness Assessment-Tools (SonarQube Cloud, erfordert Organisationsberechtigung) |
Beispiele
Analyse-, Issues- und Qualitäts-Gates-Toolsets aktivieren (mit Docker und SonarQube Cloud):
docker run --init --pull=always -i --rm \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_ORG="<org>" \
-e SONARQUBE_TOOLSETS="analysis,issues,quality-gates" \
sonarsource/sonarqube-mcp
Hinweis: Das projects-Toolset ist immer automatisch aktiviert, daher müssen Sie es nicht in SONARQUBE_TOOLSETS aufnehmen.
Nur-Lese-Modus aktivieren (mit Docker und SonarQube Cloud):
docker run --init --pull=always -i --rm \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_ORG="<org>" \
-e SONARQUBE_READ_ONLY="true" \
sonarsource/sonarqube-mcp
SonarQube Cloud
Um die volle Funktionalität zu aktivieren, müssen die folgenden Umgebungsvariablen vor dem Start des Servers gesetzt werden:
| 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). Verwenden Sie dies für SonarQube Cloud US: https://sonarqube.us | Nein |
Beispiele:
- SonarQube Cloud: Nur
SONARQUBE_TOKENundSONARQUBE_ORGsind erforderlich - SonarQube Cloud US: Setzen Sie
SONARQUBE_TOKEN,SONARQUBE_ORGundSONARQUBE_URL=https://sonarqube.us
SonarQube Server
| Umgebungsvariable | Beschreibung | Erforderlich |
|---|---|---|
SONARQUBE_TOKEN | Ihr SonarQube-Server-BENUTZER-Token | Ja |
SONARQUBE_URL | Ihre SonarQube-Server-URL | Ja |
Versionsanforderung: SonarQube Server 2025.1 (SQS) oder 25.1 (SonarQube Community Build) oder neuer ist erforderlich. Beim Start liest der MCP-Server die Version der verbundenen Instanz und beendet sich mit einem Fehler, wenn diese zu alt ist (z. B. werden ältere 9.x/10.x Server-Releases und Community Build 24.x nicht unterstützt). SonarQube Cloud unterliegt dieser Prüfung nicht.
⚠️ Die Verbindung zu SonarQube Server erfordert ein Token vom Typ USER und funktioniert nicht ordnungsgemäß, wenn Projekt-Tokens oder globale Tokens verwendet werden.
💡 Konfigurationstipp (Stdio-Modus): Das Vorhandensein von
SONARQUBE_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 Mehrbenutzerbereitstellungen; Clients verbinden sich über HTTP(S) mit /mcp (z. B. Windsurf mit einer selbst gehosteten Server-URL) |
Hinweis: Streamable HTTP ist der aktuelle MCP-Netzwerktransport. Der ältere reine SSE-HTTP-Transport aus früheren MCP-Versionen ist veraltet und wird nicht unterstützt.
1. Stdio (Standard – für lokale Entwicklung empfohlen)
Der empfohlene Modus für lokale Entwicklung und Einzelbenutzereinrichtungen, der von den meisten MCP-Clients verwendet wird.
Beispiel – Docker mit SonarQube Cloud:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"],
"env": {
"SONARQUBE_TOKEN": "<your-token>",
"SONARQUBE_ORG": "<your-org>"
}
}
}
}
2. HTTP (Streamable HTTP)
Unverschlüsselter Streamable-HTTP-Transport. Verwenden Sie für Mehrbenutzerbereitstellungen stattdessen HTTPS.
⚠️ Nicht empfohlen: Verwenden Sie Stdio für die lokale Entwicklung oder HTTPS (Streamable HTTP) für Mehrbenutzer-Produktionsbereitstellungen.
| 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 | Host, an den gebunden wird (standardmäßig localhost aus Sicherheitsgründen) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Kommagetrennte 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 verwenden (Podman, Kubernetes, Nomad usw.). | false |
Hinweis: Im Streamable-HTTP-Modus (HTTP oder HTTPS) ist der Server zustandslos – jede Client-Anfrage muss einen Authorization: Bearer <token>-Header mit dem eigenen SonarQube-Token des Benutzers enthalten. Für SonarQube Cloud wird die Organisation wie folgt aufgelöst:
- Wenn
SONARQUBE_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 bereitstellen. Clients können die sichtbaren Tools pro Anfrage auch eingrenzen, indem sieSONARQUBE_TOOLSETS- und/oderSONARQUBE_READ_ONLY-Header bereitstellen; diese wenden zusätzliche Filterung auf der Grundlage der Serverkonfiguration an – sie können den Umfang nur reduzieren, niemals erweitern. Zwischen Anfragen wird kein Sitzungsstatus aufrechterhalten.
Veraltet: Der
SONARQUBE_TOKEN-Anfrageheader wird aus Gründen der Abwärtskompatibilität weiterhin akzeptiert, aber in einer zukünftigen Version entfernt. Migrieren Sie 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 aus Sicherheitsgründen standardmäßig 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 (normalerweise 8443 für HTTPS) | 8080 |
SONARQUBE_HTTP_HOST | Host, an den gebunden wird (standardmäßig localhost aus Sicherheitsgründen) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Kommagetrennte 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 verwenden (Podman, Kubernetes, Nomad usw.). | false |
SSL-Zertifikatkonfiguration (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: Wenn in einem Container ausgeführt, setzen Sie
SONARQUBE_HTTP_HOST=0.0.0.0, damit der Container auf allen Schnittstellen lauscht und das Port-Mapping der Laufzeit funktioniert, und setzen 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 verwenden (Podman, Kubernetes, Nomad usw.). Das Port-Flag auf der Hostseite steuert, wer den Server von außerhalb des Containers erreichen kann.SONARQUBE_HTTP_HOST=0.0.0.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 spezifische Anfrage eingrenzen. Sie können den Umfang nur reduzieren – sie können keine Toolsets aktivieren oder Einschränkungen aufheben, die über den Start des Servers hinausgehen.
Hinweis: Verwenden Sie für die lokale Entwicklung stattdessen den Stdio-Transport (Standard). HTTPS Streamable HTTP ist für Mehrbenutzer-Produktionsbereitstellungen mit ordnungsgemäßen SSL-Zertifikaten gedacht.
Dienst-Endpunkte
Wenn im Streamable-HTTP-Modus ausgeführt (http oder https), stellt der Server zusätzlich zum MCP-Endpunkt unter /mcp einige nicht authentifizierte Dienst-Endpunkte bereit. Diese sind für die Dienst-zu-Dienst-Nutzung gedacht (Überwachung, Orchestrierung, Client-Kompatibilitätsprüfungen) und erfordern keinen Authorization-Header.
| Endpunkt | Methode | Beschreibung | Beispielantwort |
|---|---|---|---|
/health | GET | Liveness-Probe. Gibt 200 OK mit leerem Textkörper zurück, sobald der Server Anfragen akzeptiert. | (leerer Textkörper) |
/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 nicht verfügbar, wenn der Stdio-Transport verwendet wird.
Benutzerdefinierte Zertifikate
Wenn Ihr SonarQube Server ein selbstsigniertes Zertifikat oder ein Zertifikat von einer privaten Zertifizierungsstelle (CA) verwendet, können Sie dem Container benutzerdefinierte Zertifikate hinzufügen, die automatisch installiert werden.
Konfiguration
Verwenden eines Volume-Mounts
Mounten Sie ein Verzeichnis mit Ihren Zertifikaten, wenn Sie den Container ausführen:
docker run --init --pull=always -i --rm \
-v /path/to/your/certificates/:/usr/local/share/ca-certificates/:ro \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_URL="<url>" \
sonarsource/sonarqube-mcp
Unterstützte Zertifikatsformate
Der Container unterstützt die folgenden Zertifikatsformate:
.crt-Dateien (PEM- oder DER-codiert).pem-Dateien (PEM-codiert)
MCP-Konfiguration mit Zertifikaten
Bei Verwendung benutzerdefinierter Zertifikate können Sie Ihre MCP-Konfiguration ändern, um die Zertifikate zu mounten:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-v",
"/path/to/your/certificates/:/usr/local/share/ca-certificates/:ro",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Hinweis: Führen Sie den Server aus einer JAR-Datei statt aus dem Container aus? Das obige Volume-Mount installiert Zertifikate im OS-Vertrauensspeicher des Containers, den der Server ebenfalls liest. Wenn Sie den OS-Vertrauensspeicher nicht verwenden können – insbesondere unter Windows, wo er nicht berücksichtigt wird – weisen Sie die JVM auf einen Java-Truststore hin, der das CA-Zertifikat enthält:
-Djavax.net.ssl.trustStore=/path/to/truststore.p12 -Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.trustStorePassword=<passphrase>. Er wird zusätzlich zu den standardmäßig vertrauenswürdigen Zertifikaten hinzugefügt.
Proxy
Der SonarQube MCP-Server unterstützt HTTP- und SOCKS5-Proxys über standardmäßige Java-Proxy-Systemeigenschaften.
Konfiguration
HTTP/HTTPS-Proxy
Sie können Proxy-Einstellungen mithilfe von Java-Systemeigenschaften konfigurieren. Diese können als Umgebungsvariablen festgelegt oder als JVM-Argumente übergeben werden.
Allgemeine Proxy-Eigenschaften:
| 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 einhängen und seinen Speicherort über JAVA_OPTS übergeben.
Konfiguration
Verwenden eines PKCS12-Keystores
Hängen Sie Ihre .p12- oder .pfx-Datei in den Container ein und setzen Sie die Umgebungsvariable JAVA_OPTS mit den Keystore-Eigenschaften:
docker run --init --pull=always -i --rm \
-v /path/to/client.p12:/etc/ssl/mcp/client.p12:ro \
-e JAVA_OPTS="-Djavax.net.ssl.keyStore=/etc/ssl/mcp/client.p12 -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=<passphrase>" \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_URL="<url>" \
sonarsource/sonarqube-mcp
Hinweis: Die Zertifikatsdatei muss für den Containerprozess lesbar sein. Überprüfen und korrigieren Sie die Berechtigungen bei Bedarf:
ls -la /path/to/client.p12 # nach -rw-r--r-- (644) oder breiter suchen chmod 644 /path/to/client.p12 # Lesezugriff für den Container-Benutzer gewähren
Lassen Sie -Djavax.net.ssl.keyStorePassword weg, wenn der Keystore keine Passphrase hat. Beachten Sie, dass die hier verwendete Passphrase über docker inspect oder die Prozessliste sichtbar wäre.
MCP-Konfiguration mit einem Client-Zertifikat
{
"sonarqube": {
"command": "docker",
"args": [
"run", "--init", "--pull=always", "-i", "--rm",
"-v", "/path/to/client.p12:/etc/ssl/mcp/client.p12:ro",
"-e", "JAVA_OPTS",
"-e", "SONARQUBE_TOKEN",
"-e", "SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"JAVA_OPTS": "-Djavax.net.ssl.keyStore=/etc/ssl/mcp/client.p12 -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=<passphrase>",
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Verwenden eines PKCS12-Keystores mit einem eigenständigen JAR
Wenn Sie den Server aus einem JAR ausführen, übergeben Sie die Keystore-Eigenschaften als JVM-Argumente vor -jar:
java \
-Djavax.net.ssl.keyStore=/path/to/client.p12 \
-Djavax.net.ssl.keyStoreType=PKCS12 \
-Djavax.net.ssl.keyStorePassword=<passphrase> \
-jar <path_to_sonarqube_mcp_server_jar>
Lassen Sie -Djavax.net.ssl.keyStorePassword weg, wenn der Keystore keine Passphrase hat.
MCP-Konfiguration mit einem Client-Zertifikat (JAR)
{
"sonarqube": {
"command": "java",
"args": [
"-Djavax.net.ssl.keyStore=/path/to/client.p12",
"-Djavax.net.ssl.keyStoreType=PKCS12",
"-Djavax.net.ssl.keyStorePassword=<passphrase>",
"-jar",
"<path_to_sonarqube_mcp_server_jar>"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Hinweis: PEM-Zertifikats- und Schlüsseldateien (separate
.crt/.key-Dateien) müssen zuerst in das PKCS12-Format konvertiert werden. Verwenden Sieopenssl pkcs12 -export -in client.crt -inkey client.key -out client.p12, um sie zu konvertieren.
Tools
Analyse
-
analyze_code_snippet - Analysiert Dateiinhalte mit SonarQube-Analysatoren, um Codequalitäts- und Sicherheitsprobleme zu identifizieren. Analysiert für Genauigkeit immer den vollständigen Dateiinhalt. Optional können Ergebnisse auf einen bestimmten Codeausschnitt gefiltert werden.
Veraltet:
analyze_code_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 eingehängtem Arbeitsbereich (empfohlen): übergeben Sie
filePath(projektrelativ) – der Server liest die Datei direkt und hält den Dateiinhalt aus dem Agenten-Kontextfenster heraus - Ohne eingehängten Arbeitsbereich: übergeben Sie den vollständigen
fileContentfür die vollständige Dateianalyse (meldet alle Probleme) - Fügen Sie optional
codeSnippethinzu, um Ergebnisse zu filtern – nur Probleme innerhalb des Ausschnitts werden gemeldet (Ausschnittspeicherort wird automatisch erkannt)
Parameter:
projectKey- Der SonarQube-Projektschlüssel - Erforderliche Zeichenfolge (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-workspaceeingehängt ist - ZeichenfolgefileContent- Vollständiger Dateiinhalt als Zeichenfolge. Erforderlich, wenn der Arbeitsbereich nicht eingehängt ist - ZeichenfolgecodeSnippet- Codeausschnitt zum Filtern von Problemen (muss mit dem Inhalt in fileContent übereinstimmen) - Zeichenfolgelanguage- Sprache des Codes (z. B. 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - Zeichenfolgescope- Geltungsbereich der Datei: MAIN oder TEST (Standard: MAIN) - Zeichenfolge
Unterstützte Sprachen: Java, Kotlin, Python, Ruby, Go, JavaScript (
js,jsx), TypeScript (ts,tsx), JSP, PHP, XML, HTML, CSS, CloudFormation, Kubernetes, Terraform, Azure Resource Manager, Ansible, Docker, Erkennung von Geheimnissen - Mit eingehängtem Arbeitsbereich (empfohlen): übergeben Sie
Wenn die Integration mit SonarQube for IDE aktiviert ist: (diese beiden Tools sind sowohl unter dem analysis- als auch unter dem ide-Toolset gekennzeichnet)
-
analyze_file_list - Analysiert Dateien im aktuellen Arbeitsverzeichnis mit SonarQube for IDE. Dieses Tool verbindet sich mit einer laufenden SonarQube for IDE-Instanz, um eine Codequalitätsanalyse für eine Liste von Dateien durchzuführen.
file_absolute_paths- Liste der absoluten Dateipfade zur Analyse - Erforderliches String[]
-
toggle_automatic_analysis - Aktiviert oder deaktiviert die automatische Analyse von SonarQube for IDE. Wenn aktiviert, analysiert SonarQube for IDE Dateien automatisch, wenn sie im Arbeitsverzeichnis geändert werden. Wenn deaktiviert, ist die automatische Analyse ausgeschaltet.
enabled- Aktiviert oder deaktiviert die automatische Analyse - Erforderlicher boolescher Wert
Auf dem SonarQube-Server listet stdio Vortex-Kontexttools und run_advanced_code_analysis auf, wenn sowohl die CAG- als auch die A3S-Hubs lizenziert sind.
Wenn die Vortex-Analyse aktiviert ist:
Erfordert, dass der Arbeitsbereich unter
/app/mcp-workspaceeingehängt ist
- run_advanced_code_analysis - Führt eine Vortex-Analyse für eine einzelne Datei durch. Die Organisation wird aus der MCP-Konfiguration abgeleitet (SonarQube-Server verwendet den Nil-UUID-Platzhalter).
projectKey- Der Schlüssel des Projekts - Erforderliche Zeichenfolge (Ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)branch- Zweigname, der zum Abrufen des neuesten Analysekontexts verwendet wird - Erforderliche ZeichenfolgefilePath- Projektrelativer Pfad der zu analysierenden Datei (z. B.src/main/java/MyClass.java). - Erforderliche ZeichenfolgefileScope- Definiert, aus welchem Geltungsbereich die Datei stammt: 'MAIN' oder 'TEST' (Standard: MAIN) - Zeichenfolge
Abdeckung
-
search_files_by_coverage - Sucht nach Dateien in einem Projekt, sortiert nach Abdeckung (aufsteigend – schlechteste Abdeckung zuerst). Dieses Tool hilft, Dateien zu identifizieren, die Verbesserungen der Testabdeckung benötigen.
projectKey- Der Projektschlüssel, in dem gesucht werden soll - Erforderliche Zeichenfolge (Ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)branch- Optionaler Zweigname für die zweigbasierte Analyse. Verwenden Sielist_branches, um gültige Namen zu ermitteln - ZeichenfolgepullRequest- Optionaler Pull-Request-Schlüssel/ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln - ZeichenfolgemaxCoverage- Maximaler Abdeckungsschwellenwert (0-100). Nur Dateien mit Abdeckung <= diesem Wert zurückgeben - 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 Tool hilft, genau zu identifizieren, wo Testabdeckung hinzugefügt werden sollte. Verwenden Sie es, nachdem Sie Dateien mit geringer Abdeckung über search_files_by_coverage identifiziert haben.
key- Dateischlüssel (z. B. my_project:src/foo/Bar.java) - Erforderliche Zeichenfolgebranch- Optionaler Zweigname für die zweigbasierte Analyse. Verwenden Sielist_branches, um gültige Namen zu ermitteln - ZeichenfolgepullRequest- Optionaler Pull-Request-Schlüssel/ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln - Zeichenfolgefrom- 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 hergestellt wird.
- search_dependency_risks - Sucht nach Software-Composition-Analyse-Problemen (Abhängigkeitsrisiken) eines SonarQube-Projekts, zusammen mit Releases, die im analysierten Projekt, in der Anwendung oder im Portfolio erscheinen.
projectKey- Projektschlüssel - Erforderliche Zeichenfolge (Ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)branch- Optionaler Zweigname für die zweigbasierte Analyse. Verwenden Sielist_branches, um gültige Namen zu ermitteln - ZeichenfolgepullRequest- Optionaler Pull-Request-Schlüssel/ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln - ZeichenfolgepageIndex- 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 hergestellt wird.
- list_enterprises - Listet die Unternehmen in SonarQube Cloud auf, auf die Sie Zugriff haben. Verwenden Sie dieses Tool, um Unternehmens-IDs zu ermitteln, die mit anderen Tools verwendet werden können.
enterpriseKey- Optionaler Unternehmensschlüssel zum Filtern der Ergebnisse - Zeichenfolge
Probleme
-
change_sonar_issue_status - Ändert den Status eines SonarQube-Problems auf "accept", "falsepositive" oder "reopen".
key- Problemschlüssel - Erforderliche Zeichenfolgestatus- Neuer Status des Problems - Erforderliche Aufzählung {"accept", "falsepositive", "reopen"}comment- Optionaler Kommentar, der die Statusänderung erklärt - Zeichenfolge
-
search_sonar_issues_in_projects - Sucht nach SonarQube-Problemen in den Projekten meiner Organisation.
projectKeys- Optionale Liste von SonarQube-Projektschlüsseln - String[]branch- Optionaler Zweigname für die zweigbasierte Analyse. Verwenden Sielist_branches, um gültige Namen zu ermitteln - ZeichenfolgepullRequest- Optionaler Pull-Request-Schlüssel/ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln - Zeichenfolgeseverities- Optionale Liste von Schweregraden zum Filtern. Mögliche Werte: INFO, LOW, MEDIUM, HIGH, BLOCKER - String[]impactSoftwareQualities- Optionale Liste von Softwarequalitäten zum Filtern. Mögliche Werte: MAINTAINABILITY, RELIABILITY, SECURITY - String[]issueStatuses- Optionale Liste von Problemstatus zum Filtern. Mögliche Werte: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - String[]tags- Optionale Liste von Problem-Tags zum Filtern. Tags sind kleingeschrieben - String[]inNewCodePeriod- Nur Probleme im Zeitraum des neuen Codes zurückgeben. Erfordert genau einen Eintrag inprojectKeysundfiles- Boolescher WertissueKey- Optionaler Problemschlüssel zum Abrufen eines bestimmten Problems - ZeichenfolgepageIndex- 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 Zeichenfolge (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 - ZeichenfolgepullRequest- Optionaler Pull-Request-Schlüssel/ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln - Zeichenfolgefiles- Optionale Liste von Dateipfaden zum Filtern - String[]status- Optionaler Statusfilter: TO_REVIEW, REVIEWED - Zeichenfolgeresolution- Optionaler Auflösungsfilter: FIXED, SAFE, ACKNOWLEDGED - ZeichenfolgesinceLeakPeriod- Hotspots filtern, die seit dem Leak-Zeitraum (neuer Code) erstellt wurden - Boolescher WertonlyMine- Nur Hotspots anzeigen, die mir zugewiesen sind - Boolescher WertpageIndex- 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- Sicherheits-Hotspot-Schlüssel - Erforderliche Zeichenfolge
-
change_security_hotspot_status - Ein Security Hotspot überprüfen, indem sein Status geändert wird. Wenn als REVIEWED markiert wird, muss eine Auflösung (FIXED, SAFE oder ACKNOWLEDGED) angegeben werden.
hotspotKey- Security-Hotspot-Schlüssel - Erforderliche 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 - Alle in dieser SonarQube-Instanz unterstützten Programmiersprachen auflisten.
q- Optionales Muster, gegen das Sprachschlüssel/-namen abgeglichen werden - Zeichenkette
Messwerte
- get_component_measures - SonarQube-Messwerte für eine Komponente (Projekt, Verzeichnis, Datei) abrufen.
projectKey- Der Projekt-Schlüssel - Erforderliche Zeichenkette, wennSONARQUBE_PROJECT_KEYnicht konfiguriert istbranch- Optionaler Branchname für die branchbasierte Analyse. Verwenden Sielist_branches, um gültige Namen zu ermitteln - ZeichenkettemetricKeys- Optionale Metrikschlüssel zum Abrufen (z. B. ncloc, complexity, violations, coverage) - Zeichenkette[]pullRequest- Optionaler Pull-Request-Schlüssel/-ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln - Zeichenkette
Metriken
- search_metrics - Nach SonarQube-Metriken suchen.
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 - Verfügbare Enterprise-Portfolios in SonarQube mit Filter- und Paginierungsoptionen auflisten.
Für SonarQube Server:
q- Optionale Suchanfrage zum Filtern von Portfolios nach Name oder Schlüssel - Zeichenkettefavorite- Wenn true, werden nur Favoriten-Portfolios zurückgegeben - Boolescher WertpageIndex- Optionale 1-basierte Seitennummer (Standard: 1) - GanzzahlpageSize- Optionale Seitengröße, maximal 500 (Standard: 100) - Ganzzahl
Für SonarQube Cloud:
enterpriseId- Enterprise-UUID. Kann nur weggelassen werden, wenn der Parameter 'favorite' mit dem Wert true angegeben wird - Zeichenketteq- Optionale Suchanfrage zum Filtern von Portfolios nach Name - Zeichenkettefavorite- Muss true sein, wenn der Parameter 'enterpriseId' weggelassen wird. Wenn true, werden nur Portfolios zurückgegeben, die vom angemeldeten Benutzer als Favorit markiert wurden. Kann nicht true sein, wenn 'draft' true ist - Boolescher Wertdraft- Wenn true, werden nur Entwürfe zurückgegeben, die vom angemeldeten Benutzer erstellt wurden. Kann nicht true sein, wenn 'favorite' true ist - Boolescher WertpageIndex- Optionaler Index der abzurufenden Seite (Standard: 1) - GanzzahlpageSize- Optionale Größe der abzurufenden Seite (Standard: 50) - Ganzzahl
Projekte
-
search_my_sonarqube_projects - SonarQube-Projekte finden. Die Antwort ist paginiert.
pageIndex- Optionaler 1-basierter Seitenindex (Standard: 1) - GanzzahlpageSize- Optionale Seitengröße. Muss größer als 0 und kleiner oder gleich 500 sein (Standard: 500) - Ganzzahlq- Optionale Suchanfrage zum Filtern von Projekten nach Name (Teilübereinstimmung) oder Schlüssel (exakte Übereinstimmung) - Zeichenkette
-
list_branches - Analysierte Branches für ein Projekt auflisten.
- SonarQube Cloud: gibt langlebige (
LONG) und kurzlebige (SHORT) Branches 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 Branchnamen als
branch-Parameter für andere Tools. Verwenden Sie für die Pull-Request-Analyse stattdessenlist_pull_requests. projectKey- Projekt-Schlüssel (z. B. my_project) - Erforderliche Zeichenkette (Ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)branchTypes- (Nur SonarQube Cloud) Optionaler Filter:ALL(Standard),LONGoderSHORT- Aufzählung {"ALL", "LONG", "SHORT"}
- SonarQube Cloud: gibt langlebige (
-
list_pull_requests - Alle Pull-Requests für ein Projekt auflisten. Verwenden Sie dieses Tool, um Pull-Requests für die PR-dekorierte Analyse (Abdeckung, Probleme, Qualitätsgate) zu ermitteln. Gibt den Pull-Request-Schlüssel/-ID zurück, der/die mit anderen Tools verwendet werden kann. Verwenden Sie für die branchbasierte Analyse ohne Pull-Requests stattdessen
list_branches.projectKey- Projekt-Schlüssel (z. B. my_project) - Erforderliche Zeichenkette (Ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)
Qualitätsgates
-
get_project_quality_gate_status - Den Qualitätsgate-Status für das SonarQube-Projekt abrufen.
analysisId- Optionale Analyse-ID - Zeichenkettebranch- Optionaler Branchname für die branchbasierte Analyse. Verwenden Sielist_branches, um gültige Namen zu ermitteln - ZeichenketteprojectId- Optionale Projekt-ID - ZeichenketteprojectKey- Optionaler Projekt-Schlüssel - ZeichenkettepullRequest- Optionaler Pull-Request-Schlüssel/-ID. Verwenden Sielist_pull_requests, um gültige Schlüssel zu ermitteln - Zeichenkette
-
list_quality_gates - Alle Qualitätsgates in meinem SonarQube auflisten.
Regeln
- show_rule - Zeigt detaillierte Informationen zu einer SonarQube-Regel an.
key- Regelschlüssel - Erforderliche Zeichenkette
Duplikate
-
search_duplicated_files - Nach Dateien mit Codeduplikaten in einem SonarQube-Projekt suchen. Standardmäßig werden automatisch alle duplizierten Dateien über alle Seiten abgerufen (maximal 10.000 Dateien). Gibt nur Dateien mit Duplikaten zurück.
projectKey- Projekt-Schlüssel - Erforderliche Zeichenkette (Ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)branch- Optionaler Branchname für die branchbasierte 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 - ZeichenkettepageSize- Optionale Anzahl der Ergebnisse pro Seite für die manuelle Paginierung (maximal: 500). Wenn nicht angegeben, werden automatisch alle duplizierten Dateien abgerufen - GanzzahlpageIndex- Optionale Seitennummer für die manuelle Paginierung (beginnt bei 1). Wenn nicht angegeben, werden automatisch alle duplizierten Dateien abgerufen - Ganzzahl
-
get_duplications - Duplikate für eine Datei abrufen. Erfordert die Berechtigung 'Browse' für das Projekt der Datei.
key- Dateischlüssel - Erforderliche Zeichenkettebranch- Optionaler Branchname für die branchbasierte 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 - Zeichenkette
Quellen
-
get_raw_source - Quellcode als Rohtext von SonarQube abrufen. Erfordert die Berechtigung 'See Source Code' für die Datei.
key- Dateischlüssel - Erforderliche Zeichenkettebranch- Optionaler Branchname für die branchbasierte 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 - Zeichenkette
-
get_scm_info - SCM-Informationen von SonarQube-Quelldateien abrufen. Erfordert die Berechtigung 'See Source Code' für das Projekt der Datei.
key- Dateischlüssel - Erforderliche Zeichenkettecommits_by_line- Zeilen nach SCM-Commit gruppieren, wenn der Wert false ist, andernfalls Commits für jede Zeile anzeigen - Zeichenkettefrom- Erste zurückzugebende Zeile. Beginnt bei 1 - Zahlto- Letzte zurückzugebende Zeile (einschließlich) - Zahl
System
Hinweis: System-Tools sind nur verfügbar, wenn eine Verbindung zu SonarQube Server besteht.
-
get_system_health - Den Gesundheitsstatus der SonarQube-Serverinstanz abrufen. Gibt GREEN (voll funktionsfähig), YELLOW (nutzbar, aber Aufmerksamkeit erforderlich) oder RED (nicht betriebsbereit) zurück.
-
get_system_info - Detaillierte Informationen zur Systemkonfiguration des SonarQube-Servers abrufen, einschließlich JVM-Zustand, Datenbank, Suchindizes und Einstellungen. Erfordert die Berechtigung 'Administer'.
-
get_system_logs - Systemprotokolle des SonarQube-Servers im Klartextformat abrufen. Erfordert die Systemadministrationsberechtigung.
name- Optionaler Name der abzurufenden Protokolle. Mögliche Werte: access, app, ce, deprecation, es, web. Standard: app - Zeichenkette
-
ping_system - Das SonarQube-Serversystem anpingen, um zu prüfen, ob es aktiv ist. Gibt 'pong' als Klartext zurück.
-
get_system_status - Zustandsinformationen über den SonarQube-Server abrufen. Gibt Status (STARTING, UP, DOWN, RESTARTING, DB_MIGRATION_NEEDED, DB_MIGRATION_RUNNING), Version und ID zurück.
Webhooks
-
create_webhook - Einen neuen Webhook für die SonarQube-Organisation oder das Projekt erstellen. Erfordert die Berechtigung 'Administer' für das angegebene Projekt oder die globale Berechtigung 'Administer'.
name- Webhook-Name - Erforderliche Zeichenketteurl- Webhook-URL - Erforderliche ZeichenketteprojectKey- Optionaler Projekt-Schlüssel für projektspezifische Webhooks - Zeichenkettesecret- Optionales Webhook-Geheimnis zum Sichern der Webhook-Nutzlast - Zeichenkette
-
list_webhooks - Alle Webhooks für die SonarQube-Organisation oder das Projekt auflisten. Erfordert die Berechtigung 'Administer' für das angegebene Projekt oder die globale Berechtigung 'Administer'.
projectKey- Optionaler Projekt-Schlüssel zum Auflisten projektspezifischer Webhooks - Zeichenkette
Kontextanreicherung
Architektur-Tools
-
search_by_signature_patterns - Codeelemente (Klassen, Methoden, Schnittstellen, ...) anhand ihrer Deklarationssignaturen mit Regex-Mustern finden.
include_code_regex_list- Liste von Regex-Mustern, die gegen Signaturen abgeglichen werden - Erforderliche Zeichenkette[]exclude_code_regex_list- Liste von Regex-Mustern, die von den Ergebnissen ausgeschlossen werden - Zeichenkette[]include_glob- Dateifilter-Glob-Muster (z. B.*.java) - Zeichenketteexclude_glob- Dateiausschluss-Glob-Muster - Zeichenkettefields- Kommagetrennte Liste von Feldern, die in die Antwort aufgenommen werden - Zeichenkettelimit- Maximale Anzahl der zurückzugebenden Ergebnisse (Standard: 10) - Ganzzahlregex_lists_operator- Wie mehrere Muster kombiniert werden:OR(Standard) oderAND- Zeichenkette
-
search_by_body_patterns - Codeelemente anhand ihres Implementierungsrumpfs mit Regex-Mustern finden. Nützlich, um zu lokalisieren, wo APIs oder Muster tatsächlich verwendet werden.
include_code_regex_list- Liste von Regex-Mustern, die in Code-Rümpfen abgeglichen werden - Erforderliche Zeichenkette[]exclude_code_regex_list- Liste von Regex-Mustern, die von den Ergebnissen ausgeschlossen werden - Zeichenkette[]include_glob- Dateifilter-Glob-Muster - Zeichenketteexclude_glob- Dateiausschluss-Glob-Muster - Zeichenkettefields- Kommagetrennte Liste von Feldern, die in die Antwort aufgenommen werden - Zeichenkettelimit- Maximale Anzahl der zurückzugebenden Ergebnisse (Standard: 10) - Ganzzahlregex_lists_operator- Wie mehrere Muster kombiniert werden:OR(Standard) oderAND- Zeichenkette
-
get_upstream_call_flow - Verfolgen, welche Funktionen eine bestimmte Funktion aufrufen. Nützlich, um alle Aufrufer und Einstiegspunkte zu finden und zu verstehen, was bricht, wenn sich eine Signatur ändert.
fqn- Vollständig qualifizierter Name der Funktion - Erforderliche Zeichenkettedepth- Aufrufketten-Tiefe (0=nur Funktion, 1=direkte Aufrufer, usw.) - Ganzzahlfields- Kommagetrennte Liste von Feldern, die in die Antwort aufgenommen werden - Zeichenkette
-
get_downstream_call_flow - Verfolgen, welche Funktionen eine bestimmte Funktion aufruft. Nützlich für die Auswirkungsanalyse und das Verständnis des Ausführungsflusses.
fqn- Vollständig qualifizierter Name der Funktion - Erforderliche Zeichenkettedepth- Aufrufketten-Tiefe (0=nur Funktion, 1=direkte Aufgerufene, usw.) - Ganzzahlfields- Kommagetrennte Liste von Feldern, die in die Antwort aufgenommen werden - Zeichenkette
-
get_source_code - Vollständigen Quellcode (Signatur und Rumpf) für ein Codeelement anhand seines vollständig qualifizierten Namens abrufen.
fqn- Vollständig qualifizierter Name des Elements - Erforderliche Zeichenkettefields- Kommagetrennte Liste von Feldern, die in die Antwort aufgenommen werden - Zeichenkette
-
get_type_hierarchy – Ruft die vollständige Vererbungshierarchie für eine klassenähnliche Struktur ab (Klasse, Schnittstelle, Enum, Datensatz, Ausnahme, Struktur). Unverzichtbar zum Verständnis von Vererbungsbäumen und für Refactoring.
fqn– Vollständig qualifizierter Name der klassenähnlichen Struktur – Erforderliche Zeichenfolgefields– Kommagetrennte Liste der Felder, die in die Antwort aufgenommen werden sollen – Zeichenfolge
-
get_references – Ruft direkte eingehende und ausgehende Codeverweise für eine Klasse oder ein Modul ab. Gibt nur direkte (nicht transitive) Verweise zurück.
fqn– Vollständig qualifizierter Name der Klasse oder des Moduls – Erforderliche Zeichenfolgefields– Kommagetrennte Liste der Felder, die in die Antwort aufgenommen werden sollen – Zeichenfolge
-
get_current_architecture – Ruft einen hierarchischen Architekturgraphen ab, der nach Pfadpräfix und Tiefe gefiltert ist. Nützlich zum Erkunden der Modulstruktur und hochrangiger Abhängigkeiten.
depth– Hierarchietiefe (0=nur Stamm, 1=Stamm + Kinder usw.) – Erforderliche Ganzzahlpath_prefix– Optionales Pfadpräfix zum Filtern von Knoten (z. B.com.example.service) – Zeichenfolgeecosystem– Optionales Ökosystem zum Filtern (java,cs,py,js,ts) – Zeichenfolge
-
get_intended_architecture – Ruft benutzerdefinierte Architekturbeschränkungen ab, die festlegen, welche Module von anderen abhängen dürfen.
Richtlinien-Tools
- get_guidelines – Ruft Codierungsrichtlinien basierend auf SonarQube-Projektproblemen, Katalogkategorien oder einer Kombination aus beidem ab.
mode– Abrufmodus für Richtlinien:project_based,category_basedodercombined– Erforderliche Zeichenfolgecategories– Liste der Kategorienamen (erforderlich für die Modicategory_basedundcombined) – Zeichenfolge[]languages– Liste der Zielsprachen im SonarQube-Repository-Schlüsselformat (erforderlich, wenncategoriesangegeben ist) – Zeichenfolge[]file_paths– Optionale Liste von Dateipfaden zum Filtern der Richtlinien – Zeichenfolge[]
Tools für Drittanbieter-Abhängigkeiten
- check_dependency – Überprüft eine Drittanbieter-Abhängigkeit auf Sicherheitslücken, Supply-Chain-Malware und Lizenzkonformität, bevor sie hinzugefügt oder aktualisiert wird.
purl– Paket-URL (purl) mit Version, gemäß purl-Spezifikation. Format:pkg:<type>/<namespace>/<name>@<version>(z. B.pkg:npm/lodash@4.17.21,pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1,pkg:pypi/django@3.2.0) – Erforderliche Zeichenfolge
Umgebungsvariablen für die Kontextanreicherung
| Variable | Beschreibung | Erforderlich | Standard |
|---|---|---|---|
SONARQUBE_URL | SonarQube-Cloud-URL | Ja | https://sonarcloud.io |
SONARQUBE_TOKEN | Authentifizierungstoken | Ja | Keine |
SONARQUBE_ORG | Organisationsschlüssel in der SonarQube-Cloud | Ja | Keine |
SONARQUBE_PROJECT_KEY | Projektschlüssel in der SonarQube-Cloud | Ja | Keine |
SONAR_SQ_BRANCH | Explizite SonarQube-Zweigü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-Zweigname nicht mit dem Zweignamen in SonarQube übereinstimmt.
Projektspezifische Konfiguration (empfohlen)
Exportieren Sie zunächst die Umgebungsvariable SONARQUBE_TOKEN mit einem gültigen Persönlichen Zugriffstoken (PAT) für Ihr Projekt.
# macOS/Linux (Bash/Zsh)
export SONARQUBE_TOKEN="{<YourUserToken>}"
Mounten Sie dann den Projektarbeitsbereich, um dem Kontextanreicherungs-Server direkten Zugriff auf Ihre Quelldateien zu geben:
{
"mcpServers": {
"sonarqube-mcp-server": {
"command": "docker",
"args": [
"run", "-i", "--rm", "--pull=always",
"-e", "SONARQUBE_URL",
"-e", "SONARQUBE_TOKEN",
"-e", "SONARQUBE_ORG",
"-e", "SONARQUBE_PROJECT_KEY",
"-e", "SONARQUBE_TOOLSETS",
"-v", "/ABSOLUTE/PATH/TO/YOUR/PROJECT:/app/mcp-workspace:rw",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_URL": "https://sonarcloud.io",
"SONARQUBE_ORG": "<YourOrganizationKey>",
"SONARQUBE_PROJECT_KEY": "<YourProjectKey>",
"SONARQUBE_TOOLSETS": "cag"
}
}
}
}
Wichtig: In einer projektspezifischen Konfiguration setzen Sie SONARQUBE_TOKEN nicht in den env-Block. Exportieren Sie es als Umgebungsvariable (export SONARQUBE_TOKEN=...). Docker leitet es über -e SONARQUBE_TOKEN in den Container weiter.
Agentische Bereitschaft
Hinweis: Die Tools für die agentische Bereitschaft sind nur in der SonarQube-Cloud verfügbar und erfordern, dass die Funktion für Ihre Organisation aktiviert ist.
-
start_agentic_readiness_assessment – Startet eine Bewertung der agentischen Bereitschaft für ein Projekt. Gibt sofort mit Status
PENDINGund einerassessmentIdzurück. Verwenden Sieget_agentic_readiness_assessment, um auf Ergebnisse zu warten.projectKey– Der Projektschlüssel – Erforderliche Zeichenfolge (Ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)branch– Zu bewertender Zweig. Weglassen, um den Standardzweig des Projekts zu verwenden – Zeichenfolge
-
get_agentic_readiness_assessment – Ruft das Ergebnis einer Bewertung ab. Rufen Sie erneut mit derselben
assessmentIdauf, bis der StatusCOMPLETED,FAILEDoderINTERRUPTEDist. Bei 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 – Erforderliche Zeichenfolge
-
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 – Erforderliche Zeichenfolge (Ignoriert, wennSONARQUBE_PROJECT_KEYdefiniert ist)branch– Bewertungen nach Zweignamen filtern. Weglassen, um Bewertungen für alle Zweige aufzulisten – ZeichenfolgepageIndex– 1-basierter Seitenindex (Standard: 1) – ZahlpageSize– Anzahl der Elemente pro Seite, maximal 100 (Standard: 50) – Zahl
Beispielaufforderungen
Nachdem Sie den SonarQube-MCP-Server eingerichtet haben, finden Sie hier einige Beispielaufforderungen für häufige reale Szenarien:
Beheben eines fehlgeschlagenen Qualitätsgates
My quality gate is failing for my project. Can you help me understand why and fix the most critical issues?
The quality gate on my feature branch is red. What do I need to fix to get it passing before I can merge to main?
Vorab- und Pre-Merge-Prüfungen
I'm about to merge my pull request <#247> for the <web-app> project. Can you check if there are any quality issues I should address first?
We're deploying to production tomorrow. Can you check the quality gate status and alert me to any critical issues in this branch?
Verbesserung der Codequalität
I want to reduce technical debt in my project. What are the top issues I should prioritize?
Our code coverage dropped below 70%. Can you identify which files have the lowest coverage and help me improve it?
Verstehen und Beheben von Problemen
I have 15 new code smells in my latest commit. Can you explain what they are and help me fix them?
SonarQube flagged a critical security vulnerability in <AuthController.java>. What's the issue and how do I fix it?
Sicherheits- und Abhängigkeitsverwaltung
We need to pass a security audit. Can you check all our projects for security vulnerabilities and create a prioritized list of what needs to be fixed?
Are there any known vulnerabilities in our dependencies? Check this project for dependency risks.
Unterstützung bei der Codeüberprüfung
I just wrote this authentication function. Can you analyze it for security issues and code quality problems before I commit?
Review the changes in <src/database/migrations> for any potential bugs or security issues.
Überwachung der Projektgesundheit
Give me a health report for my project: quality gate status, number of bugs, Security Hotspots, and code coverage.
Compare code quality between our main branch and the develop branch. Are we introducing new issues?
Teamzusammenarbeit
What are the most common rule violations across all our projects? We might need to update our coding standards.
Show me all the issues that were marked as false positives in the last month. Are we seeing patterns that suggest our rules need adjustment?
Build
Bevorzugen Sie das Container-Image sonarsource/sonarqube-mcp.
Um den Server als eigenständiges JAR ohne Docker auszuführen, laden Sie einen vorgefertigten Release aus dem SonarSource-Binärdatei-Repository herunter. Jede veröffentlichte Version wird dort als sonarqube-mcp-server-<version>.jar veröffentlicht (z. B. sonarqube-mcp-server-1.19.0.2785.jar).
Aus JAR ausführen
Laden Sie das JAR für die gewünschte Version aus dem Binärdatei-Repository herunter und konfigurieren Sie dann Ihren MCP-Client, um es mit Java 21 oder höher auszuführen:
- Für die Verbindung mit der SonarQube-Cloud:
{
"sonarqube": {
"command": "java",
"args": [
"-jar",
"<path_to_sonarqube_mcp_server_jar>"
],
"env": {
"STORAGE_PATH": "<path_to_your_mcp_storage>",
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_ORG": "<org>"
}
}
}
- Für die Verbindung mit dem SonarQube-Server:
{
"sonarqube": {
"command": "java",
"args": [
"-jar",
"<path_to_sonarqube_mcp_server_jar>"
],
"env": {
"STORAGE_PATH": "<path_to_your_mcp_storage>",
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Aus dem Quellcode erstellen
Der SonarQube-MCP-Server erfordert ein Java Development Kit (JDK) Version 21 oder höher zum Erstellen.
Führen Sie den folgenden Gradle-Befehl aus, um das Projekt zu bereinigen und die Anwendung zu erstellen:
./gradlew clean build -x test
Die JAR-Datei wird in build/libs/ erstellt.
Nach dem Hinzufügen oder Aktualisieren von Abhängigkeiten generieren Sie die Sperrdateien neu:
./gradlew :dependencies --write-locks
./gradlew :its:dependencies --write-locks
Verwenden Sie die obige Konfiguration Aus JAR ausführen und zeigen Sie mit <path_to_sonarqube_mcp_server_jar> auf das JAR in build/libs/.
Fehlerbehebung
Anwendungsprotokolle werden standardmäßig in die Datei STORAGE_PATH/logs/mcp.log geschrieben. Um die Dateiprotokollierung vollständig zu deaktivieren, setzen Sie SONARQUBE_LOG_TO_FILE_DISABLED=true.
Häufige Probleme
„SonarQube-Serverversion wird nicht unterstützt“
Der MCP-Server überprüft beim Start die Version des verbundenen SonarQube-Servers. Wenn die Instanz älter als 2025.1 (SQS) oder 25.1 (SQCB) ist, schlägt der Start mit folgendem Fehler fehl:
SonarQube server version is not supported, minimal version is SQS 2025.1 or SQCB 25.1
Lösung: Aktualisieren Sie den SonarQube-Server auf eine unterstützte Version. Diese Prüfung gilt nur bei der Verbindung mit dem SonarQube-Server (SONARQUBE_URL ohne SONARQUBE_ORG), nicht für die SonarQube-Cloud.
„Funktion funktioniert nicht“ oder „Fehlende Tools/Funktionen“
Möglicherweise führen Sie ein veraltetes Docker-Image aus. Docker speichert Images lokal zwischen, sodass Sie keine automatischen Updates erhalten.
Lösung: Aktualisieren Sie auf die neueste Version:
docker pull sonarsource/sonarqube-mcp
Starten Sie nach dem Abrufen des neuesten Images Ihren MCP-Client neu, um die aktualisierte Version zu verwenden.
Optional können Sie das Flag --pull=always zu Ihrem docker-run-Befehl hinzufügen, um immer die neueste Version zu prüfen und abzurufen:
docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG sonarsource/sonarqube-mcp
„Ich möchte eine bestimmte Version festlegen“
Durchsuchen Sie verfügbare Tags unter sonarsource/sonarqube-mcp und referenzieren Sie die gewünschte Version:
docker pull sonarsource/sonarqube-mcp:1.19.0.2785
docker run --init -i --rm \
-e SONARQUBE_TOKEN -e SONARQUBE_ORG \
sonarsource/sonarqube-mcp:1.19.0.2785
Verwenden Sie in Ihrer MCP-Client-Konfiguration sonarsource/sonarqube-mcp:<version> anstelle von sonarsource/sonarqube-mcp und entfernen Sie --pull=always, damit Docker das Image nicht stillschweigend aktualisiert.
Daten und Telemetrie
Dieser Server sammelt anonyme Nutzungsdaten und sendet sie an SonarSource, um das Produkt zu verbessern. Es werden weder Quellcode noch IP-Adressen gesammelt, und SonarSource gibt die Daten nicht an Dritte weiter. Die Erfassung von Telemetrie kann mit der folgenden Systemeigenschaft oder Umgebungsvariable deaktiviert werden: TELEMETRY_DISABLED=true. Klicken Sie hier, um ein Beispiel der gesammelten Daten zu sehen.
Lizenz
Copyright 2025 SonarSource.
Lizenziert unter der SONAR Source-Available License v1.0. Die Nutzung des SonarQube-MCP-Servers in Übereinstimmung mit dieser Dokumentation ist ein nicht wettbewerbsbezogener Zweck und daher im Rahmen der SSAL zulässig.
Ihre Nutzung von SonarQube über MCP unterliegt den SonarQube-Cloud-Nutzungsbedingungen oder den SonarQube-Server-Geschäftsbedingungen, einschließlich der Nutzung der Ergebnisdaten ausschließlich für Ihre internen Softwareentwicklungszwecke.