SonarQube
officielFournit une intégration transparente avec SonarQube Server ou Cloud, et permet l'analyse d'extraits de code directement dans le contexte de l'agent.
Que pouvez-vous faire avec SonarQube MCP ?
- Analyser des extraits de code — Demandez à votre assistant d’exécuter une analyse de code locale sur un extrait ou un fichier via
analyze_code_snippet, avec montage facultatif de l’espace de travail pour éviter l’encombrement du contexte. - Rechercher et gérer les problèmes — Faites en sorte que l’assistant trouve, examine et mette à jour les problèmes SonarQube, y compris en modifiant leur statut lorsqu’il n’est pas en mode lecture seule.
- Vérifier les quality gates et les mesures — Demandez l’état des quality gates, les métriques de projet, la couverture et les risques liés aux dépendances sur vos projets SonarQube.
- Examiner les hotspots de sécurité — Laissez l’assistant rechercher et parcourir les hotspots de sécurité signalés dans votre base de code.
- Parcourir les projets et les règles — Utilisez l’assistant pour explorer les projets, lister les langages pris en charge et consulter les règles de codage directement depuis SonarQube.
Documentation
Serveur MCP SonarQube
Le serveur MCP SonarQube est un serveur Model Context Protocol (MCP) qui permet une intégration transparente avec SonarQube Server ou Cloud pour la qualité et la sécurité du code. Il prend également en charge l'analyse d'extraits de code directement dans le contexte de l'agent.
Configuration rapide
Bonnes pratiques de sécurité
🔒 Important : Votre jeton SonarQube est une information d'identification sensible. Suivez ces pratiques de sécurité :
Lors de l'utilisation de commandes CLI :
- Évitez de coder en dur les jetons dans les arguments de ligne de commande – ils sont enregistrés dans l'historique du shell
- Utilisez des variables d'environnement – définissez les jetons dans les variables d'environnement avant d'exécuter les commandes
Lors de l'utilisation de fichiers de configuration :
- Ne committez jamais les jetons dans le contrôle de version
- Utilisez la substitution de variables d'environnement dans les fichiers de configuration lorsque c'est possible
🚀 Générez votre configuration
Le moyen le plus rapide de commencer est le Générateur de configuration du serveur MCP SonarQube – un outil interactif qui produit une configuration prête à l'emploi pour votre client agent IA préféré.
Configuration manuelle
Si vous préférez configurer les choses vous-même, la méthode la plus simple consiste à utiliser notre image conteneur sur sonarsource/sonarqube-mcp. Utilisez sonarsource/sonarqube-mcp pour les mises à jour automatiques (avec --pull=always), ou épinglez une étiquette de version (par exemple, sonarsource/sonarqube-mcp:1.19.0.2785) pour des déploiements reproductibles. Lisez ci-dessous si vous souhaitez le construire localement.
Remarque : Bien que les exemples ci-dessous utilisent
docker, tout runtime de conteneur compatible OCI fonctionne (par exemple, Podman, nerdctl). Remplacez simplementdockerpar votre outil préféré.
Antigravity
Le serveur MCP SonarQube est disponible dans le MCP Store d'Antigravity. Suivez ces instructions :
- Ouvrez le panneau latéral de l'agent
- Cliquez sur les trois points (...) en haut à droite et sélectionnez Serveurs MCP
- Recherchez
SonarQubeet sélectionnez Installer - Fournissez le jeton utilisateur SonarQube requis. Vous pouvez également fournir votre clé d'organisation pour SonarQube Cloud ou l'URL SonarQube si vous vous connectez à SonarQube Server.
Pour SonarQube Cloud US, définissez l'URL sur https://sonarqube.us.
Alternativement, vous pouvez configurer manuellement le serveur via mcp_config.json :
- Pour vous connecter avec SonarQube Cloud :
Dans le panneau latéral de l'agent, cliquez sur les trois points (...) -> MCP Store -> Gérer les serveurs MCP -> Afficher la configuration brute, et ajoutez ce qui suit :
{
"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>"
}
}
}
}
Pour SonarQube Cloud US, ajoutez manuellement "SONARQUBE_URL": "https://sonarqube.us" à la section env et "-e", "SONARQUBE_URL" au tableau args.
- Pour vous connecter avec 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
- Pour vous connecter avec 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
Pour SonarQube Cloud US, ajoutez --env SONARQUBE_URL=https://sonarqube.us à la commande.
- Pour vous connecter avec 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
Modifiez manuellement le fichier de configuration à ~/.codex/config.toml et ajoutez la configuration suivante :
- Pour vous connecter avec 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>" }
Pour SonarQube Cloud US, ajoutez "SONARQUBE_URL" = "https://sonarqube.us" à la section env et "-e", "SONARQUBE_URL" au tableau args.
- Pour vous connecter avec 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
- Pour vous connecter avec SonarQube Cloud :
Pour SonarQube Cloud US, ajoutez manuellement "SONARQUBE_URL": "https://sonarqube.us" à la section env dans votre configuration MCP après l'installation.
- Pour vous connecter avec SonarQube Server :
Gemini CLI
Remarque : L'extension Gemini CLI a été déplacée vers le dépôt sonarqube-agent-plugins. Veuillez l'installer à partir de là à l'avenir.
Vous pouvez installer notre extension de serveur MCP en utilisant la commande suivante :
gemini extensions install https://github.com/SonarSource/sonarqube-agent-plugins
Vous devrez définir les variables d'environnement requises avant de démarrer Gemini :
Variables d'environnement requises :
-
Pour SonarQube Cloud :
SONARQUBE_TOKEN- Votre jeton SonarQube CloudSONARQUBE_ORG- Votre clé d'organisationSONARQUBE_URL- (Facultatif) Définissez surhttps://sonarqube.uspour SonarQube Cloud US
-
Pour SonarQube Server :
SONARQUBE_TOKEN- Votre jeton UTILISATEUR SonarQube ServerSONARQUBE_URL- Votre URL SonarQube Server
Une fois installée, l'extension sera installée sous <home>/.gemini/extensions/sonarqube/gemini-extension.json.
GitHub Copilot CLI
Après avoir démarré Copilot CLI, exécutez la commande suivante pour ajouter le serveur MCP SonarQube :
/mcp add
Vous devrez fournir différentes informations sur le serveur MCP, vous pouvez utiliser la touche Tab pour naviguer entre les champs.
- Pour vous connecter avec 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: *
Pour SonarQube Cloud US, ajoutez -e, SONARQUBE_URL aux Arguments et SONARQUBE_URL=https://sonarqube.us aux Variables d'environnement.
- Pour vous connecter avec 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: *
Le fichier de configuration est situé à ~/.copilot/mcp-config.json.
Agent de codage GitHub Copilot
L'agent de codage GitHub Copilot peut exploiter le serveur MCP SonarQube directement dans votre CI/CD.
Pour ajouter les secrets à votre environnement Copilot, suivez la documentation de Copilot. Seuls les secrets dont les noms sont préfixés par COPILOT_MCP_ seront disponibles pour votre configuration MCP.
Dans votre dépôt GitHub, naviguez sous Paramètres -> Copilot -> Agent de codage, et ajoutez la configuration suivante dans la section de configuration MCP :
- Pour vous connecter avec 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": ["*"]
}
}
}
Pour SonarQube Cloud US, ajoutez "-e", "SONARQUBE_URL" au tableau args et "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL" à la section env, puis définissez le secret COPILOT_MCP_SONARQUBE_URL=https://sonarqube.us.
- Pour vous connecter avec 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
Créez un fichier .kiro/settings/mcp.json dans votre répertoire de travail (ou modifiez-le s'il existe déjà), ajoutez la configuration suivante :
- Pour vous connecter avec 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": []
}
}
}
Pour SonarQube Cloud US, ajoutez "-e", "SONARQUBE_URL" au tableau args et "SONARQUBE_URL": "https://sonarqube.us" à la section env.
- Pour vous connecter avec 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
Vous pouvez utiliser les boutons suivants pour simplifier le processus d'installation dans VS Code.
Pour SonarQube Cloud US, ajoutez manuellement "SONARQUBE_URL": "https://sonarqube.us" à la section env dans votre configuration MCP après l'installation.
Windsurf
Le serveur MCP SonarQube est disponible en tant que plugin Windsurf. Suivez ces instructions :
- Ouvrez Windsurf Paramètres > Cascade > Serveurs MCP et sélectionnez Ouvrir le MCP Marketplace
- Recherchez
sonarqubesur le Cascade MCP Marketplace - Choisissez le Serveur MCP SonarQube et sélectionnez Installer
- Ajoutez le jeton utilisateur SonarQube requis. Ajoutez ensuite la clé d'organisation si vous souhaitez vous connecter avec SonarQube Cloud, ou l'URL SonarQube si vous souhaitez vous connecter à SonarQube Server ou Community Build.
Pour SonarQube Cloud US, définissez l'URL sur https://sonarqube.us.
Zed
Naviguez vers la vue Extensions dans Zed et recherchez Serveur MCP SonarQube. Lors de l'installation de l'extension, vous serez invité à fournir les variables d'environnement nécessaires :
- Lors de l'utilisation de SonarQube Cloud :
{
"sonarqube_token": "YOUR_SONARQUBE_TOKEN",
"sonarqube_org": "SONARQUBE_ORGANIZATION_KEY",
"docker_path": "DOCKER_PATH"
}
Pour SonarQube Cloud US, ajoutez "sonarqube_url": "https://sonarqube.us" à la configuration.
- Lors de l'utilisation de SonarQube Server :
{
"sonarqube_token": "YOUR_SONARQUBE_USER_TOKEN",
"sonarqube_url": "YOUR_SONARQUBE_SERVER_URL",
"docker_path": "DOCKER_PATH"
}
Le docker_path est le chemin vers un exécutable docker. Exemples :
Linux/macOS : /usr/bin/docker ou /usr/local/bin/docker
Windows : C:\Program Files\Docker\Docker\resources\bin\docker.exe
💡 Astuce : Nous recommandons de tirer régulièrement la dernière image ou avant de signaler des problèmes pour vous assurer d'avoir les fonctionnalités et correctifs les plus récents.
Installation manuelle
Vous pouvez installer manuellement le serveur MCP SonarQube en copiant l'extrait suivant dans le fichier de configuration des serveurs MCP :
- Pour vous connecter avec 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>"
}
}
}
- Pour vous connecter avec 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>"
}
}
}
Intégration avec SonarQube pour IDE
Le serveur MCP SonarQube peut s'intégrer avec SonarQube pour IDE pour améliorer davantage votre flux de travail de développement, en fournissant une meilleure analyse du code et des informations directement dans votre IDE.
Configuration
Lors de l'utilisation de SonarQube pour IDE, la variable d'environnement SONARQUBE_IDE_PORT doit être définie avec le numéro de port correct. SonarQube pour VS Code inclut un bouton d'installation rapide qui définit automatiquement la configuration de port correcte.
Par exemple, avec 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>"
}
}
}
Lors de l'exécution du serveur MCP dans un conteneur sur Linux, le conteneur ne peut pas accéder au serveur intégré SonarQube pour IDE exécuté sur localhost. Pour permettre au conteneur de se connecter au serveur SonarQube pour IDE, ajoutez l'option
--network=hostà votre commande d'exécution de conteneur.
Configuration
Selon votre environnement, vous devez fournir des variables d'environnement spécifiques.
Base
Vous devez ajouter la variable suivante lors de l'exécution du serveur MCP :
| Variable d'environnement | Description |
|---|---|
STORAGE_PATH | Chemin absolu obligatoire vers un répertoire inscriptible où le serveur MCP SonarQube stockera ses fichiers (par exemple, pour la création, les mises à jour et la persistance), il est automatiquement fourni lors de l'utilisation de l'image conteneur |
SONARQUBE_PROJECT_KEY | Clé de projet par défaut facultative. Lorsqu'elle est définie, tous les outils qui nécessitent une clé de projet utiliseront automatiquement cette valeur — le paramètre projectKey est entièrement supprimé de leur schéma. Utile lorsque vous travaillez sur un seul projet. |
SONARQUBE_IDE_PORT | Numéro de port facultatif entre 64120 et 64130 utilisé pour connecter le serveur MCP SonarQube avec SonarQube pour IDE. |
SONARQUBE_DEBUG_ENABLED | Lorsqu'elle est définie sur true, active la journalisation de débogage. Les journaux de débogage sont écrits à la fois dans le fichier journal et sur STDERR. Utile pour résoudre les problèmes de connectivité ou de configuration. Défaut : false. |
SONARQUBE_LOG_TO_FILE_DISABLED | Lorsqu'elle est définie sur true, désactive entièrement l'écriture des journaux sur disque. Aucun fichier journal ne sera créé sous STORAGE_PATH/logs/. Utile dans les environnements conteneurisés ou éphémères où la journalisation de fichiers est indésirable. Défaut : false. |
Montage de l'espace de travail (Réduction de l'encombrement du contexte)
Par défaut, l'outil d'analyse analyze_code_snippet exige que l'agent transmette le contenu complet du fichier comme argument fileContent. Pour les fichiers volumineux ou lors de l'analyse de nombreux fichiers dans une session, cela augmente considérablement l'utilisation de la fenêtre de contexte et les coûts.
Solution : montez votre répertoire de projet dans le conteneur à /app/mcp-workspace. Lorsque ce montage est détecté, le serveur lit les fichiers directement depuis le disque en utilisant l'argument filePath relatif au projet — le contenu des fichiers ne transite jamais par le contexte de l'agent.
{
"args": [
"run", "-i", "--rm", "--init", "--pull=always",
"-e", "SONARQUBE_TOKEN",
"-e", "SONARQUBE_ORG",
"-v", "/path/to/your/project:/app/mcp-workspace",
"sonarsource/sonarqube-mcp"
]
}
Lorsque le montage est actif :
run_advanced_code_analysisdevient disponible si votre organisation y est éligibleanalyze_code_snippet:filePathest requis etfileContentn'est pas utilisé — le serveur résout le fichier de la même manière
Activation sélective des outils
Par défaut, seuls les ensembles d'outils importants sont activés pour réduire la surcharge de contexte. Vous pouvez activer des ensembles d'outils supplémentaires selon vos besoins.
| Variable d'environnement | Description |
|---|---|
SONARQUBE_TOOLSETS | Liste séparée par des virgules des ensembles d'outils à activer. Lorsqu'elle est définie, seuls ces ensembles d'outils seront disponibles. Si elle n'est pas définie, les ensembles d'outils importants par défaut sont activés (analysis, ide, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag). Remarque : L'ensemble d'outils projects est toujours activé car il est nécessaire pour trouver les clés de projet pour d'autres opérations. Les outils de contexte Vortex (ancien nom : Context Augmentation/CAG) et les outils d'analyse Vortex (ancien nom : Advanced Analysis/A3S) sont uniquement disponibles en mode stdio et partagent une seule éligibilité d'organisation combinée — une organisation doit être éligible aux deux pour utiliser l'un ou l'autre. Sur SonarQube Server, stdio liste le contexte Vortex et run_advanced_code_analysis lorsque les hubs CAG et A3S sont tous deux éligibles. Privilégiez la clé unifiée d'ensemble d'outils vortex. Les clés obsolètes cag et analysis fonctionnent toujours ; un avertissement au démarrage et une note d'obsolescence dans les instructions du serveur sont émis lorsqu'elles sont utilisées sans vortex. En mode Streamable HTTP, les clients peuvent envoyer un en-tête HTTP SONARQUBE_TOOLSETS pour affiner davantage cette sélection par requête, mais ne peuvent pas activer des ensembles d'outils au-delà de ceux avec lesquels le serveur a été lancé (voir Transport Streamable HTTP ci-dessous). |
SONARQUBE_READ_ONLY | Lorsqu'elle est définie sur true, active le mode lecture seule qui désactive toutes les opérations d'écriture (changer le statut d'un problème, par exemple). Ce filtre est cumulatif avec SONARQUBE_TOOLSETS si les deux sont définis. Défaut : false. En mode Streamable HTTP, les clients peuvent envoyer un en-tête HTTP SONARQUBE_READ_ONLY pour restreindre davantage les requêtes individuelles en lecture seule, mais ne peuvent pas lever une restriction de lecture seule au niveau du serveur (voir Transport Streamable HTTP ci-dessous). |
Ensembles d'outils disponibles
| Ensemble d'outils | Clé | Description |
|---|---|---|
| Analyse | analysis | Outils d'analyse de code (analyse locale via analyze_code_snippet, obsolète au profit de analyze_file_list/analyse Vortex) |
| IDE | ide | Outils de pont SonarQube for IDE (analyse de fichiers, bascule d'analyse automatique) — actuellement également inclus dans analysis |
| Problèmes | issues | Rechercher et gérer les problèmes SonarQube |
| Points chauds de sécurité | security-hotspots | Rechercher et examiner les points chauds de sécurité |
| Projets | projects | Parcourir et rechercher les projets SonarQube |
| Portes de qualité | quality-gates | Accéder aux portes de qualité et à leur statut |
| Règles | rules | Parcourir et rechercher les règles SonarQube |
| Sources | sources | Accéder au code source et aux informations SCM |
| Duplications | duplications | Trouver les duplications de code entre les projets |
| Mesures | measures | Récupérer les métriques et mesures (inclut les outils de mesures et de métriques) |
| Langages | languages | Lister les langages de programmation pris en charge |
| Portefeuilles | portfolios | Gérer les portefeuilles et les entreprises (Cloud et Server) |
| Système | system | Outils d'administration système (Server uniquement) |
| Webhooks | webhooks | Gérer les webhooks |
| Risques de dépendances | dependency-risks | Analyser les risques de dépendances et les problèmes de sécurité (SCA) |
| Couverture | coverage | Outils d'analyse et d'amélioration de la couverture de tests |
| Contexte Vortex | cag | Outils de contexte Vortex — stdio uniquement. Obsolète au profit de vortex (ancien nom : Context Augmentation/CAG) |
| Vortex | vortex | Ensemble d'outils unifié, recommandé présentant à la fois les outils de contexte Vortex et d'analyse Vortex sous un seul nom (stdio uniquement ; Cloud nécessite une éligibilité d'organisation combinée ; Server nécessite les deux hubs éligibles) |
| Préparation agentique | agentic-readiness | Outils d'évaluation de la préparation agentique (SonarQube Cloud, nécessite une éligibilité d'organisation) |
Exemples
Activer les ensembles d'outils d'analyse, de problèmes et de portes de qualité (avec Docker et 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
Remarque : L'ensemble d'outils projects est toujours activé automatiquement, vous n'avez donc pas besoin de l'inclure dans SONARQUBE_TOOLSETS.
Activer le mode lecture seule (avec Docker et 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
Pour activer toutes les fonctionnalités, les variables d'environnement suivantes doivent être définies avant de démarrer le serveur :
| Variable d'environnement | Description | Requise |
|---|---|---|
SONARQUBE_TOKEN | Votre jeton SonarQube Cloud | Oui |
SONARQUBE_ORG | Votre clé d'organisation SonarQube Cloud | Oui |
SONARQUBE_URL | URL personnalisée SonarQube Cloud (par défaut https://sonarcloud.io). Utilisez ceci pour SonarQube Cloud US : https://sonarqube.us | Non |
Exemples :
- SonarQube Cloud : Seuls
SONARQUBE_TOKENetSONARQUBE_ORGsont nécessaires - SonarQube Cloud US : Définissez
SONARQUBE_TOKEN,SONARQUBE_ORGetSONARQUBE_URL=https://sonarqube.us
SonarQube Server
| Variable d'environnement | Description | Requise |
|---|---|---|
SONARQUBE_TOKEN | Votre jeton UTILISATEUR SonarQube Server | Oui |
SONARQUBE_URL | L'URL de votre SonarQube Server | Oui |
Exigence de version : SonarQube Server 2025.1 (SQS) ou 25.1 (SonarQube Community Build) ou une version ultérieure est requis. Au démarrage, le serveur MCP lit la version de l'instance connectée et se termine avec une erreur si elle est trop ancienne (par exemple, les anciennes versions 9.x/10.x de Server et Community Build 24.x ne sont pas prises en charge). SonarQube Cloud n'est pas soumis à cette vérification.
⚠️ La connexion à SonarQube Server nécessite un jeton de type USER et ne fonctionnera pas correctement si des jetons de projet ou des jetons globaux sont utilisés.
💡 Astuce de configuration (mode stdio) : La présence de
SONARQUBE_ORGdétermine si vous vous connectez à SonarQube Cloud ou Server. SiSONARQUBE_ORGest défini, SonarQube Cloud est utilisé ; sinon, SonarQube Server est utilisé.
Modes de transport
La spécification MCP définit deux mécanismes de transport : Stdio et Streamable HTTP. Le serveur MCP SonarQube prend en charge les deux :
| Transport MCP | Mode serveur | Utilisation typique |
|---|---|---|
| Stdio | Par défaut (pas de SONARQUBE_TRANSPORT) | Clients MCP locaux qui lancent le serveur comme sous-processus (Cursor, Claude Code, VS Code, etc.) |
| Streamable HTTP | SONARQUBE_TRANSPORT=http ou https | Déploiements distants ou multi-utilisateurs ; les clients se connectent à /mcp via HTTP(S) (par ex. Windsurf avec une URL de serveur auto-hébergé) |
Remarque : Streamable HTTP est le transport réseau MCP actuel. L'ancien transport HTTP uniquement SSE des versions MCP antérieures est obsolète et n'est pas pris en charge.
1. Stdio (Par défaut - Recommandé pour le développement local)
Le mode recommandé pour le développement local et les configurations mono-utilisateur, utilisé par la plupart des clients MCP.
Exemple - Docker avec 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)
Transport Streamable HTTP non chiffré. Utilisez HTTPS à la place pour les déploiements multi-utilisateurs.
⚠️ Non recommandé : Utilisez Stdio pour le développement local ou HTTPS (Streamable HTTP) pour les déploiements de production multi-utilisateurs.
| Variable d'environnement | Description | Défaut |
|---|---|---|
SONARQUBE_TRANSPORT | Définir sur http pour activer le transport Streamable HTTP | Non défini (stdio) |
SONARQUBE_HTTP_PORT | Numéro de port (1024-65535) | 8080 |
SONARQUBE_HTTP_HOST | Hôte à lier (par défaut localhost pour la sécurité) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Origines de navigateur séparées par des virgules autorisées pour CORS (par ex. https://my-app.example.com) | Non défini |
SONARQUBE_MCP_IN_CONTAINER | Définir sur true lors de l'exécution dans un conteneur. L'image Docker officielle le définit automatiquement ; définissez-le vous-même lors de l'utilisation d'autres runtimes OCI (Podman, Kubernetes, Nomad, etc.). | false |
Remarque : En mode Streamable HTTP (HTTP ou HTTPS), le serveur est sans état — chaque requête client doit inclure un en-tête Authorization: Bearer <token> contenant le jeton SonarQube propre à l'utilisateur. Pour SonarQube Cloud, l'organisation est résolue comme suit :
- Si
SONARQUBE_ORGest défini au démarrage du serveur, toutes les requêtes sont routées vers cette organisation. Les clients ne doivent pas envoyer d'en-têteSONARQUBE_ORG— cela entraînerait une erreur. - Si
SONARQUBE_ORGn'est pas défini au démarrage du serveur, chaque client doit fournir un en-têteSONARQUBE_ORGsur chaque requête. Les clients peuvent également restreindre les outils visibles par requête en fournissant les en-têtesSONARQUBE_TOOLSETSet/ouSONARQUBE_READ_ONLY; ceux-ci appliquent un filtrage supplémentaire en plus de la configuration au niveau du serveur — ils ne peuvent que réduire la portée, jamais l'étendre. Aucun état de session n'est conservé entre les requêtes.
Obsolète : L'en-tête de requête
SONARQUBE_TOKENest toujours accepté pour la rétrocompatibilité mais sera supprimé dans une version future. Migrez versAuthorization: Bearer <token>.
3. HTTPS (Streamable HTTP sur TLS) (Recommandé pour les déploiements de production multi-utilisateurs)
Transport Streamable HTTP sécurisé avec chiffrement TLS. Nécessite des certificats SSL.
✅ Recommandé pour la production : Utilisez HTTPS lors du déploiement du serveur MCP pour plusieurs utilisateurs via Streamable HTTP. Le serveur se lie à
127.0.0.1(localhost) par défaut pour la sécurité.
| Variable d'environnement | Description | Défaut |
|---|---|---|
SONARQUBE_TRANSPORT | Définir sur https pour activer le transport Streamable HTTP sur TLS | Non défini (stdio) |
SONARQUBE_HTTP_PORT | Numéro de port (généralement 8443 pour HTTPS) | 8080 |
SONARQUBE_HTTP_HOST | Hôte à lier (par défaut localhost pour la sécurité) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Origines de navigateur séparées par des virgules autorisées pour CORS (par ex. https://my-app.example.com) | Non défini |
SONARQUBE_MCP_IN_CONTAINER | Définir sur true lors de l'exécution dans un conteneur. L'image Docker officielle le définit automatiquement ; définissez-le vous-même lors de l'utilisation d'autres runtimes OCI (Podman, Kubernetes, Nomad, etc.). | false |
Configuration du certificat SSL (optionnelle) :
| Variable d'environnement | Description | Défaut |
|---|---|---|
SONARQUBE_HTTPS_KEYSTORE_PATH | Chemin vers le fichier de keystore (.p12 ou .jks) | /etc/ssl/mcp/keystore.p12 |
SONARQUBE_HTTPS_KEYSTORE_PASSWORD | Mot de passe du keystore | sonarlint |
SONARQUBE_HTTPS_KEYSTORE_TYPE | Type de keystore (PKCS12 ou JKS) | PKCS12 |
Exemple - Docker avec SonarQube Cloud :
Remarque : Lors de l'exécution dans un conteneur, définissez
SONARQUBE_HTTP_HOST=0.0.0.0pour que le conteneur écoute sur toutes les interfaces et que le mappage de ports du runtime fonctionne, et définissezSONARQUBE_MCP_IN_CONTAINER=truepour indiquer au serveur qu'il est dans un conteneur. L'image Docker officielle définit ce dernier automatiquement ; définissez-le vous-même lors de l'utilisation d'autres runtimes OCI (Podman, Kubernetes, Nomad, etc.). L'indicateur de port côté hôte contrôle qui peut atteindre le serveur depuis l'extérieur du conteneur.SONARQUBE_HTTP_HOST=0.0.0.0contrôle uniquement l'endroit où le serveur écoute à l'intérieur du conteneur — le CORS du navigateur autorise toujours les origines localhost par défaut.
Pour un serveur exécuté localement sur votre machine (accessible uniquement depuis localhost) :
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
Pour un serveur accessible depuis le réseau (déploiements distants) :
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
Configuration client (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"
}
}
}
}
Configuration client (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"
}
}
}
}
Remarque :
SONARQUBE_TOOLSETSetSONARQUBE_READ_ONLYsont des en-têtes par requête optionnels qui restreignent l'ensemble d'outils au niveau du serveur pour cette requête spécifique. Ils ne peuvent que réduire la portée — ils ne peuvent pas activer des ensembles d'outils ni lever des restrictions au-delà de ce avec quoi le serveur a été lancé.
Remarque : Pour le développement local, utilisez le transport Stdio à la place (le défaut). HTTPS Streamable HTTP est destiné aux déploiements de production multi-utilisateurs avec des certificats SSL appropriés.
Points de terminaison de service
Lors de l'exécution en mode Streamable HTTP (http ou https), le serveur expose quelques points de terminaison de service non authentifiés en plus du point de terminaison MCP à /mcp. Ceux-ci sont destinés à une utilisation de service à service (surveillance, orchestration, vérifications de compatibilité client) et ne nécessitent pas d'en-tête Authorization.
| Point de terminaison | Méthode | Description | Exemple de réponse |
|---|---|---|---|
/health | GET | Sonde de vivacité. Renvoie 200 OK avec un corps vide une fois que le serveur accepte les requêtes. | (corps vide) |
/info | GET | Renvoie la version du serveur MCP au format JSON. Utile pour vérifier la version du serveur déployé. | {"version":"1.16.0"} |
Ces points de terminaison ne sont pas disponibles lors de l'exécution avec le transport Stdio.
Certificats personnalisés
Si votre SonarQube Server utilise un certificat auto-signé ou un certificat d'une autorité de certification (CA) privée, vous pouvez ajouter des certificats personnalisés au conteneur qui seront automatiquement installés.
Configuration
Utilisation du montage de volume
Montez un répertoire contenant vos certificats lors de l'exécution du conteneur :
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
Formats de certificats pris en charge
Le conteneur prend en charge les formats de certificats suivants :
- Fichiers
.crt(encodés PEM ou DER) - Fichiers
.pem(encodés PEM)
Configuration MCP avec certificats
Lors de l'utilisation de certificats personnalisés, vous pouvez modifier votre configuration MCP pour monter les certificats :
{
"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>"
}
}
}
Remarque : Vous exécutez le serveur à partir d'un JAR au lieu du conteneur ? Le montage de volume ci-dessus installe les certificats dans le magasin de confiance du système d'exploitation du conteneur, que le serveur lit également. Si vous ne pouvez pas utiliser le magasin de confiance du système d'exploitation — notamment sur Windows, où il n'est pas consulté — pointez la JVM vers un magasin de confiance Java contenant le certificat CA :
-Djavax.net.ssl.trustStore=/path/to/truststore.p12 -Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.trustStorePassword=<passphrase>. Il est ajouté en plus des certificats de confiance par défaut.
Proxy
Le serveur MCP SonarQube prend en charge les proxys HTTP et SOCKS5 via les propriétés système Java standard de proxy.
Configuration
Proxy HTTP/HTTPS
Vous pouvez configurer les paramètres de proxy à l'aide des propriétés système Java. Celles-ci peuvent être définies comme variables d'environnement ou transmises comme arguments JVM.
Propriétés de proxy courantes :
| Propriété | Description | Exemple |
|---|---|---|
http.proxyHost | Nom d'hôte du proxy HTTP | proxy.example.com |
http.proxyPort | Port du proxy HTTP | 8080 |
https.proxyHost | Nom d'hôte du proxy HTTPS | proxy.example.com |
https.proxyPort | Port du proxy HTTPS | 8443 |
http.nonProxyHosts | Hôtes qui contournent le proxy (séparés par des barres verticales) | localhost|127.0.0.1|*.internal.com |
Authentification du proxy HTTP/HTTPS :
| Propriété | Description | Exemple |
|---|---|---|
http.proxyUser | Nom d'utilisateur du proxy HTTP | myuser |
http.proxyPassword | Mot de passe du proxy HTTP | mypassword |
https.proxyUser | Nom d'utilisateur du proxy HTTPS | myuser |
https.proxyPassword | Mot de passe du proxy HTTPS | mypassword |
Proxy SOCKS5
Les proxys SOCKS5 sont pris en charge.
| Propriété | Description | Par défaut | Exemple |
|---|---|---|---|
socksProxyHost | Nom d'hôte du proxy SOCKS5 | — | localhost |
socksProxyPort | Port du proxy SOCKS5 | 1080 | 1080 |
java.net.socks.username | Nom d'utilisateur SOCKS5 (si authentification requise) | — | myuser |
java.net.socks.password | Mot de passe SOCKS5 (si authentification requise) | — | mypassword |
Certificat client (TLS mutuel)
Si votre serveur SonarQube exige que les clients présentent un certificat lors de la poignée de main TLS (TLS mutuel), vous pouvez fournir un magasin de clés PKCS12 en le montant dans le conteneur et en transmettant son emplacement via JAVA_OPTS.
Configuration
Utilisation d'un magasin de clés PKCS12
Montez votre fichier .p12 ou .pfx dans le conteneur et définissez la variable d'environnement JAVA_OPTS avec les propriétés du magasin de clés :
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
Remarque : Le fichier de certificat doit être lisible par le processus du conteneur. Vérifiez et corrigez les permissions si nécessaire :
ls -la /path/to/client.p12 # recherchez -rw-r--r-- (644) ou plus large chmod 644 /path/to/client.p12 # accordez l'accès en lecture à l'utilisateur du conteneur
Omettez -Djavax.net.ssl.keyStorePassword si le magasin de clés n'a pas de phrase de passe. Notez que la phrase de passe utilisée ici serait visible via docker inspect ou la liste des processus.
Configuration MCP avec un certificat client
{
"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>"
}
}
}
Utilisation d'un magasin de clés PKCS12 avec un JAR autonome
Lors de l'exécution du serveur à partir d'un JAR, transmettez les propriétés du magasin de clés comme arguments JVM avant -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>
Omettez -Djavax.net.ssl.keyStorePassword si le magasin de clés n'a pas de phrase de passe.
Configuration MCP avec un certificat client (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>"
}
}
}
Remarque : Les fichiers de certificat et de clé PEM (fichiers
.crt/.keyséparés) doivent être convertis au format PKCS12 d'abord. Utilisezopenssl pkcs12 -export -in client.crt -inkey client.key -out client.p12pour les convertir.
Outils
Analyse
-
analyze_code_snippet - Analyser le contenu d'un fichier avec les analyseurs SonarQube pour identifier les problèmes de qualité de code et de sécurité. Analyse toujours le contenu complet du fichier pour plus de précision. Filtre éventuellement les résultats sur un extrait de code spécifique.
Obsolète :
analyze_code_snippetsera supprimé dans une version future. Connectez SonarQube for IDE pour utiliseranalyze_file_list, ou activez l'analyse Vortex pour votre organisation afin d'utiliserrun_advanced_code_analysis(voir ci-dessous).Utilisation :
- Avec espace de travail monté (recommandé) : transmettez
filePath(relatif au projet) — le serveur lit le fichier directement, gardant le contenu du fichier hors du contexte de l'agent - Sans montage de l'espace de travail : transmettez le
fileContentcomplet pour une analyse complète du fichier (signale tous les problèmes) - Ajoutez éventuellement
codeSnippetpour filtrer les résultats — seuls les problèmes dans l'extrait seront signalés (emplacement de l'extrait détecté automatiquement)
Paramètres :
projectKey- La clé du projet SonarQube - Chaîne requise (Ignorée lorsqueSONARQUBE_PROJECT_KEYest défini)filePath- Chemin relatif au projet du fichier à analyser (par exemple,src/main/java/MyClass.java). Utilisé lorsque l'espace de travail est monté à/app/mcp-workspace- ChaînefileContent- Contenu complet du fichier sous forme de chaîne. Requis lorsque l'espace de travail n'est pas monté - ChaînecodeSnippet- Extrait de code pour filtrer les problèmes (doit correspondre au contenu de fileContent) - Chaînelanguage- Langage du code (par exemple, 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - Chaînescope- Portée du fichier : MAIN ou TEST (par défaut : MAIN) - Chaîne
Langages pris en charge : Java, Kotlin, Python, Ruby, Go, JavaScript (
js,jsx), TypeScript (ts,tsx), JSP, PHP, XML, HTML, CSS, CloudFormation, Kubernetes, Terraform, Azure Resource Manager, Ansible, Docker, Détection de secrets - Avec espace de travail monté (recommandé) : transmettez
Lorsque l'intégration avec SonarQube for IDE est activée : (ces deux outils sont étiquetés sous les ensembles d'outils analysis et ide)
-
analyze_file_list - Analyser les fichiers du répertoire de travail actuel à l'aide de SonarQube for IDE. Cet outil se connecte à une instance SonarQube for IDE en cours d'exécution pour effectuer une analyse de qualité de code sur une liste de fichiers.
file_absolute_paths- Liste des chemins de fichiers absolus à analyser - String[] requis
-
toggle_automatic_analysis - Activer ou désactiver l'analyse automatique de SonarQube for IDE. Lorsqu'elle est activée, SonarQube for IDE analyse automatiquement les fichiers au fur et à mesure qu'ils sont modifiés dans le répertoire de travail. Lorsqu'elle est désactivée, l'analyse automatique est arrêtée.
enabled- Activer ou désactiver l'analyse automatique - Booléen requis
Sur SonarQube Server, stdio répertorie les outils de contexte Vortex et run_advanced_code_analysis lorsque les hubs CAG et A3S sont tous deux autorisés.
Lorsque l'analyse Vortex est activée :
Nécessite que l'espace de travail soit monté à
/app/mcp-workspace
- run_advanced_code_analysis - Exécuter l'analyse Vortex sur un seul fichier. L'organisation est déduite de la configuration MCP (SonarQube Server utilise l'espace réservé UUID nil).
projectKey- La clé du projet - Chaîne requise (Ignorée lorsqueSONARQUBE_PROJECT_KEYest défini)branch- Nom de branche utilisé pour récupérer le dernier contexte d'analyse - Chaîne requisefilePath- Chemin relatif au projet du fichier à analyser (par exemple,src/main/java/MyClass.java). - Chaîne requisefileScope- Définit la portée d'origine du fichier : 'MAIN' ou 'TEST' (par défaut : MAIN) - Chaîne
Couverture
-
search_files_by_coverage - Rechercher des fichiers dans un projet triés par couverture (croissant - pire couverture en premier). Cet outil aide à identifier les fichiers nécessitant des améliorations de couverture de tests.
projectKey- La clé du projet dans lequel rechercher - Chaîne requise (Ignorée lorsqueSONARQUBE_PROJECT_KEYest défini)branch- Nom de branche facultatif pour l'analyse basée sur les branches. Utilisezlist_branchespour découvrir les noms valides - ChaînepullRequest- Clé/ID de pull request facultatif. Utilisezlist_pull_requestspour découvrir les clés valides - ChaînemaxCoverage- Seuil de couverture maximal (0-100). Ne renvoyer que les fichiers avec une couverture <= cette valeur - NombrepageIndex- Index de page (basé sur 1, par défaut : 1) - NombrepageSize- Taille de page (par défaut : 100, max : 500) - Nombre
-
get_file_coverage_details - Obtenir des informations de couverture ligne par ligne pour un fichier spécifique, y compris les lignes exactes non couvertes et celles avec des branches partiellement couvertes. Cet outil aide à identifier précisément où ajouter la couverture de tests. Utilisez-le après avoir identifié des fichiers à faible couverture via search_files_by_coverage.
key- Clé de fichier (par exemple, my_project:src/foo/Bar.java) - Chaîne requisebranch- Nom de branche facultatif pour l'analyse basée sur les branches. Utilisezlist_branchespour découvrir les noms valides - ChaînepullRequest- Clé/ID de pull request facultatif. Utilisezlist_pull_requestspour découvrir les clés valides - Chaînefrom- Première ligne à analyser (basée sur 1, par défaut : 1) - Nombreto- Dernière ligne à analyser (inclusive). Si non spécifiée, toutes les lignes sont renvoyées - Nombre
Risques de dépendances
Remarque : Les risques de dépendances ne sont disponibles que lors de la connexion à SonarQube Server 2025.4 Enterprise ou supérieur avec SonarQube Advanced Security activé.
- search_dependency_risks - Rechercher les problèmes d'analyse de composition logicielle (risques de dépendances) d'un projet SonarQube, associés aux versions apparaissant dans le projet, l'application ou le portefeuille analysé.
projectKey- Clé de projet - Chaîne requise (Ignorée lorsqueSONARQUBE_PROJECT_KEYest défini)branch- Nom de branche facultatif pour l'analyse basée sur les branches. Utilisezlist_branchespour découvrir les noms valides - ChaînepullRequest- Clé/ID de pull request facultatif. Utilisezlist_pull_requestspour découvrir les clés valides - ChaînepageIndex- Index de page facultatif (basé sur 1, par défaut : 1) - EntierpageSize- Taille de page facultative. Doit être supérieure à 0 et inférieure ou égale à 500 (par défaut : 100) - Entier
Entreprises
Remarque : Les entreprises ne sont disponibles que lors de la connexion à SonarQube Cloud.
- list_enterprises - Lister les entreprises disponibles dans SonarQube Cloud auxquelles vous avez accès. Utilisez cet outil pour découvrir les identifiants d'entreprise pouvant être utilisés avec d'autres outils.
enterpriseKey- Clé d'entreprise facultative pour filtrer les résultats - Chaîne
Problèmes
-
change_sonar_issue_status - Modifier le statut d'un problème SonarQube en "accept", "falsepositive" ou "reopen".
key- Clé du problème - Chaîne requisestatus- Nouveau statut du problème - Énumération requise {"accept", "falsepositive", "reopen"}comment- Commentaire facultatif expliquant le changement de statut - Chaîne
-
search_sonar_issues_in_projects - Rechercher des problèmes SonarQube dans les projets de mon organisation.
projectKeys- Liste facultative de clés de projets SonarQube - String[]branch- Nom de branche facultatif pour l'analyse basée sur les branches. Utilisezlist_branchespour découvrir les noms valides - ChaînepullRequest- Clé/ID de pull request facultatif. Utilisezlist_pull_requestspour découvrir les clés valides - Chaîneseverities- Liste facultative de sévérités pour filtrer. Valeurs possibles : INFO, LOW, MEDIUM, HIGH, BLOCKER - String[]impactSoftwareQualities- Liste facultative de qualités logicielles pour filtrer. Valeurs possibles : MAINTAINABILITY, RELIABILITY, SECURITY - String[]issueStatuses- Liste facultative de statuts de problèmes pour filtrer. Valeurs possibles : OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - String[]tags- Liste facultative de tags de problèmes pour filtrer. Les tags sont en minuscules - String[]inNewCodePeriod- Ne renvoyer que les problèmes de la période de nouveau code. Nécessite exactement une entrée parmiprojectKeysetfiles- BooléenissueKey- Clé de problème facultative pour récupérer un problème spécifique - ChaînepageIndex- Index de page facultatif basé sur 1 (par défaut : 1) - EntierpageSize- Taille de page facultative. Doit être supérieure à 0 et inférieure ou égale à 500 (par défaut : 100) - Entier
Points chauds de sécurité
-
search_security_hotspots - Rechercher des points chauds de sécurité dans un projet SonarQube.
projectKey- Clé de projet ou d'application - Chaîne requise (Ignorée lorsqueSONARQUBE_PROJECT_KEYest défini)hotspotKeys- Liste séparée par des virgules de clés de points chauds de sécurité spécifiques à récupérer - String[]branch- Nom de branche facultatif pour l'analyse basée sur les branches. Utilisezlist_branchespour découvrir les noms valides - ChaînepullRequest- Clé/ID de pull request facultatif. Utilisezlist_pull_requestspour découvrir les clés valides - Chaînefiles- Liste facultative de chemins de fichiers pour filtrer - String[]status- Filtre de statut facultatif : TO_REVIEW, REVIEWED - Chaîneresolution- Filtre de résolution facultatif : FIXED, SAFE, ACKNOWLEDGED - ChaînesinceLeakPeriod- Filtrer les points chauds créés depuis la période de fuite (nouveau code) - BooléenonlyMine- Afficher uniquement les points chauds qui me sont assignés - BooléenpageIndex- Index de page facultatif basé sur 1 (par défaut : 1) - EntierpageSize- Taille de page facultative. Doit être supérieure à 0 et inférieure ou égale à 500 (par défaut : 100) - Entier
-
show_security_hotspot - Obtenir des informations détaillées sur un point chaud de sécurité spécifique, y compris les détails de la règle, le contexte du code, les flux et les commentaires.
hotspotKey- Clé du point chaud de sécurité - Chaîne requise
-
change_security_hotspot_status - Examiner un point de sécurité en modifiant son statut. Lors du marquage comme REVIEWED, vous devez spécifier une résolution (FIXED, SAFE ou ACKNOWLEDGED).
hotspotKey- Clé du point de sécurité - String requisstatus- Nouveau statut - Enum requis {"TO_REVIEW", "REVIEWED"}resolution- Résolution lorsque le statut est REVIEWED - Enum {"FIXED", "SAFE", "ACKNOWLEDGED"}comment- Commentaire de révision facultatif - String
Langages
- list_languages - Liste tous les langages de programmation pris en charge dans cette instance SonarQube.
q- Motif facultatif pour correspondre aux clés/noms de langage - String
Mesures
- get_component_measures - Obtenir les mesures SonarQube pour un composant (projet, répertoire, fichier).
projectKey- La clé du projet - String requis lorsqueSONARQUBE_PROJECT_KEYn'est pas configurébranch- Nom de branche facultatif pour l'analyse basée sur les branches. Utilisezlist_branchespour découvrir les noms valides - StringmetricKeys- Clés de métriques facultatives à récupérer (par ex. ncloc, complexity, violations, coverage) - String[]pullRequest- Clé/ID de pull request facultatif. Utilisezlist_pull_requestspour découvrir les clés valides - String
Métriques
- search_metrics - Rechercher des métriques SonarQube.
pageIndex- Index de page facultatif basé sur 1 (défaut : 1) - IntegerpageSize- Taille de page facultative. Doit être supérieure à 0 et inférieure ou égale à 500 (défaut : 100) - Integer
Portefeuilles
-
list_portfolios - Liste les portefeuilles d'entreprise disponibles dans SonarQube avec des options de filtrage et de pagination.
Pour SonarQube Server :
q- Requête de recherche facultative pour filtrer les portefeuilles par nom ou clé - Stringfavorite- Si vrai, ne renvoie que les portefeuilles favoris - BooleanpageIndex- Numéro de page facultatif basé sur 1 (défaut : 1) - IntegerpageSize- Taille de page facultative, max 500 (défaut : 100) - Integer
Pour SonarQube Cloud :
enterpriseId- UUID d'entreprise. Peut être omis uniquement si le paramètre 'favorite' est fourni avec la valeur true - Stringq- Requête de recherche facultative pour filtrer les portefeuilles par nom - Stringfavorite- Doit être true si le paramètre 'enterpriseId' est omis. Si true, ne renvoie que les portefeuilles favoris de l'utilisateur connecté. Ne peut pas être true lorsque 'draft' est true - Booleandraft- Si true, ne renvoie que les brouillons créés par l'utilisateur connecté. Ne peut pas être true lorsque 'favorite' est true - BooleanpageIndex- Index facultatif de la page à récupérer (défaut : 1) - IntegerpageSize- Taille facultative de la page à récupérer (défaut : 50) - Integer
Projets
-
search_my_sonarqube_projects - Rechercher des projets SonarQube. La réponse est paginée.
pageIndex- Index de page facultatif basé sur 1 (défaut : 1) - IntegerpageSize- Taille de page facultative. Doit être supérieure à 0 et inférieure ou égale à 500 (défaut : 500) - Integerq- Requête de recherche facultative pour filtrer les projets par nom (correspondance partielle) ou clé (correspondance exacte) - String
-
list_branches - Liste les branches analysées pour un projet.
- SonarQube Cloud : renvoie les branches à longue durée de vie (
LONG) et à courte durée de vie (SHORT) avec les champstypeetmergeBranch. Filtre facultatifbranchTypes:ALL(défaut),LONGouSHORT. - SonarQube Server : renvoie toutes les branches analysées (nom, qualité, date d'analyse). Pas de filtre
type,mergeBranchoubranchTypes. - Utilisez les noms de branches renvoyés comme paramètre
branchsur d'autres outils. Pour l'analyse de pull requests, utilisezlist_pull_requestsà la place. projectKey- Clé du projet (par ex. my_project) - String requis (Ignoré lorsqueSONARQUBE_PROJECT_KEYest défini)branchTypes- (SonarQube Cloud uniquement) Filtre facultatif :ALL(défaut),LONGouSHORT- Enum {"ALL", "LONG", "SHORT"}
- SonarQube Cloud : renvoie les branches à longue durée de vie (
-
list_pull_requests - Liste toutes les pull requests pour un projet. Utilisez cet outil pour découvrir les pull requests pour l'analyse décorée par PR (couverture, problèmes, qualité). Renvoie la clé/ID de la pull request qui peut être utilisée avec d'autres outils. Pour l'analyse basée sur les branches sans pull requests, utilisez
list_branchesà la place.projectKey- Clé du projet (par ex. my_project) - String requis (Ignoré lorsqueSONARQUBE_PROJECT_KEYest défini)
Qualité
-
get_project_quality_gate_status - Obtenir le statut de la qualité pour le projet SonarQube.
analysisId- ID d'analyse facultatif - Stringbranch- Nom de branche facultatif pour l'analyse basée sur les branches. Utilisezlist_branchespour découvrir les noms valides - StringprojectId- ID de projet facultatif - StringprojectKey- Clé de projet facultative - StringpullRequest- Clé/ID de pull request facultatif. Utilisezlist_pull_requestspour découvrir les clés valides - String
-
list_quality_gates - Liste toutes les qualités dans mon SonarQube.
Règles
- show_rule - Affiche des informations détaillées sur une règle SonarQube.
key- Clé de la règle - String requis
Duplications
-
search_duplicated_files - Rechercher des fichiers avec des duplications de code dans un projet SonarQube. Par défaut, récupère automatiquement tous les fichiers dupliqués sur toutes les pages (jusqu'à 10 000 fichiers maximum). Ne renvoie que les fichiers avec des duplications.
projectKey- Clé du projet - String requis (Ignoré lorsqueSONARQUBE_PROJECT_KEYest défini)branch- Nom de branche facultatif pour l'analyse basée sur les branches. Utilisezlist_branchespour découvrir les noms valides - StringpullRequest- Clé/ID de pull request facultatif. Utilisezlist_pull_requestspour découvrir les clés valides - StringpageSize- Nombre facultatif de résultats par page pour la pagination manuelle (max : 500). Si non spécifié, récupère automatiquement tous les fichiers dupliqués - IntegerpageIndex- Numéro de page facultatif pour la pagination manuelle (commence à 1). Si non spécifié, récupère automatiquement tous les fichiers dupliqués - Integer
-
get_duplications - Obtenir les duplications pour un fichier. Nécessite la permission Parcourir sur le projet du fichier.
key- Clé du fichier - String requisbranch- Nom de branche facultatif pour l'analyse basée sur les branches. Utilisezlist_branchespour découvrir les noms valides - StringpullRequest- Clé/ID de pull request facultatif. Utilisezlist_pull_requestspour découvrir les clés valides - String
Sources
-
get_raw_source - Obtenir le code source sous forme de texte brut depuis SonarQube. Nécessite la permission 'Voir le code source' sur le fichier.
key- Clé du fichier - String requisbranch- Nom de branche facultatif pour l'analyse basée sur les branches. Utilisezlist_branchespour découvrir les noms valides - StringpullRequest- Clé/ID de pull request facultatif. Utilisezlist_pull_requestspour découvrir les clés valides - String
-
get_scm_info - Obtenir les informations SCM des fichiers source SonarQube. Nécessite la permission Voir le code source sur le projet du fichier.
key- Clé du fichier - String requiscommits_by_line- Grouper les lignes par commit SCM si la valeur est false, sinon afficher les commits pour chaque ligne - Stringfrom- Première ligne à renvoyer. Commence à 1 - Numberto- Dernière ligne à renvoyer (inclus) - Number
Système
Remarque : Les outils système ne sont disponibles que lors de la connexion à SonarQube Server.
-
get_system_health - Obtenir le statut de santé de l'instance SonarQube Server. Renvoie GREEN (pleinement opérationnel), YELLOW (utilisable mais nécessite une attention) ou RED (non opérationnel).
-
get_system_info - Obtenir des informations détaillées sur la configuration système de SonarQube Server, y compris l'état JVM, la base de données, les index de recherche et les paramètres. Nécessite les permissions 'Administer'.
-
get_system_logs - Obtenir les journaux système de SonarQube Server au format texte brut. Nécessite la permission d'administration système.
name- Nom facultatif des journaux à obtenir. Valeurs possibles : access, app, ce, deprecation, es, web. Défaut : app - String
-
ping_system - Envoyer une requête ping au système SonarQube Server pour vérifier s'il est actif. Renvoie 'pong' sous forme de texte brut.
-
get_system_status - Obtenir des informations d'état sur SonarQube Server. Renvoie le statut (STARTING, UP, DOWN, RESTARTING, DB_MIGRATION_NEEDED, DB_MIGRATION_RUNNING), la version et l'ID.
Webhooks
-
create_webhook - Créer un nouveau webhook pour l'organisation ou le projet SonarQube. Nécessite la permission 'Administer' sur le projet spécifié, ou la permission globale 'Administer'.
name- Nom du webhook - String requisurl- URL du webhook - String requisprojectKey- Clé de projet facultative pour un webhook spécifique au projet - Stringsecret- Secret de webhook facultatif pour sécuriser la charge utile du webhook - String
-
list_webhooks - Liste tous les webhooks pour l'organisation ou le projet SonarQube. Nécessite la permission 'Administer' sur le projet spécifié, ou la permission globale 'Administer'.
projectKey- Clé de projet facultative pour lister les webhooks spécifiques au projet - String
Augmentation de contexte
Outils d'architecture
-
search_by_signature_patterns - Trouver des éléments de code (classes, méthodes, interfaces, ...) par leurs signatures de déclaration à l'aide de motifs regex.
include_code_regex_list- Liste de motifs regex à faire correspondre aux signatures - String[] requisexclude_code_regex_list- Liste de motifs regex à exclure des résultats - String[]include_glob- Motif glob de filtre de fichier (par ex.,*.java) - Stringexclude_glob- Motif glob d'exclusion de fichier - Stringfields- Liste séparée par des virgules des champs à inclure dans la réponse - Stringlimit- Nombre maximum de résultats à renvoyer (défaut : 10) - Integerregex_lists_operator- Comment combiner plusieurs motifs :OR(défaut) ouAND- String
-
search_by_body_patterns - Trouver des éléments de code par leur corps d'implémentation à l'aide de motifs regex. Utile pour localiser où les API ou les motifs sont réellement utilisés.
include_code_regex_list- Liste de motifs regex à faire correspondre dans les corps de code - String[] requisexclude_code_regex_list- Liste de motifs regex à exclure des résultats - String[]include_glob- Motif glob de filtre de fichier - Stringexclude_glob- Motif glob d'exclusion de fichier - Stringfields- Liste séparée par des virgules des champs à inclure dans la réponse - Stringlimit- Nombre maximum de résultats à renvoyer (défaut : 10) - Integerregex_lists_operator- Comment combiner plusieurs motifs :OR(défaut) ouAND- String
-
get_upstream_call_flow - Tracer quelles fonctions appellent une fonction donnée. Utile pour trouver tous les appelants et points d'entrée, et comprendre ce qui casse si une signature change.
fqn- Nom complet de la fonction - String requisdepth- Profondeur de la chaîne d'appels (0=fonction uniquement, 1=appelants directs, etc.) - Integerfields- Liste séparée par des virgules des champs à inclure dans la réponse - String
-
get_downstream_call_flow - Tracer quelles fonctions une fonction donnée appelle. Utile pour l'analyse d'impact et la compréhension du flux d'exécution.
fqn- Nom complet de la fonction - String requisdepth- Profondeur de la chaîne d'appels (0=fonction uniquement, 1=appelés directs, etc.) - Integerfields- Liste séparée par des virgules des champs à inclure dans la réponse - String
-
get_source_code - Obtenir le code source complet (signature et corps) pour un élément de code par son nom complet.
fqn- Nom complet de l'élément - String requisfields- Liste séparée par des virgules des champs à inclure dans la réponse - String
-
get_type_hierarchy - Obtenir la hiérarchie d'héritage complète pour une structure de type classe (classe, interface, enum, enregistrement, exception, struct). Essentiel pour comprendre les arbres d'héritage et le refactoring.
fqn- Nom complet de la structure de type classe - String requisfields- Liste de champs séparés par des virgules à inclure dans la réponse - String
-
get_references - Obtenir les références de code entrantes et sortantes directes pour une classe ou un module. Renvoie uniquement les références directes (non transitives).
fqn- Nom complet de la classe ou du module - String requisfields- Liste de champs séparés par des virgules à inclure dans la réponse - String
-
get_current_architecture - Obtenir un graphe d'architecture hiérarchique filtré par préfixe de chemin et profondeur. Utile pour explorer la structure des modules et les dépendances de haut niveau.
depth- Profondeur de la hiérarchie (0=racine uniquement, 1=racine + enfants, etc.) - Integer requispath_prefix- Préfixe de chemin optionnel pour filtrer les nœuds (par exemple,com.example.service) - Stringecosystem- Écosystème optionnel pour filtrer (java,cs,py,js,ts) - String
-
get_intended_architecture - Obtenir les contraintes architecturales définies par l'utilisateur spécifiant quels modules sont autorisés à dépendre d'autres modules.
Outils de directives
- get_guidelines - Obtenir les directives de codage basées sur les problèmes du projet SonarQube, les catégories de catalogue, ou une combinaison des deux.
mode- Mode de récupération des directives :project_based,category_based, oucombined- String requiscategories- Liste des noms de catégories (requis pour les modescategory_basedetcombined) - String[]languages- Liste des langues cibles au format de clé de dépôt SonarQube (requis lorsquecategoriesest fourni) - String[]file_paths- Liste optionnelle de chemins de fichiers pour filtrer les directives - String[]
Outils de dépendances tierces
- check_dependency - Vérifier une dépendance tierce pour les vulnérabilités de sécurité, les logiciels malveillants de la chaîne d'approvisionnement et la conformité des licences avant de l'ajouter ou de la mettre à jour.
purl- URL du package (purl) avec version, selon purl-spec. Format :pkg:<type>/<namespace>/<name>@<version>(par exemplepkg:npm/lodash@4.17.21,pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1,pkg:pypi/django@3.2.0) - String requis
Variables d'environnement d'augmentation de contexte
| Variable | Description | Requis | Défaut |
|---|---|---|---|
SONARQUBE_URL | URL de SonarQube Cloud | Oui | https://sonarcloud.io |
SONARQUBE_TOKEN | Jeton d'authentification | Oui | Aucun |
SONARQUBE_ORG | Clé d'organisation sur SonarQube Cloud | Oui | Aucun |
SONARQUBE_PROJECT_KEY | Clé de projet sur SonarQube Cloud | Oui | Aucun |
SONAR_SQ_BRANCH | Remplacement explicite de la branche SonarQube * | Non | Aucun |
SONARQUBE_DEBUG_ENABLED | Activer la journalisation de débogage (pour le dépannage) | Non | False |
SONAR_LOG_LEVEL | Verbeux de journalisation (TRACE, DEBUG, INFO, WARNING, ERROR) | Non | INFO |
- À fournir lorsque vous n'utilisez pas git, ou lorsque le nom de la branche git ne correspond pas au nom de la branche dans SonarQube.
Configuration spécifique au projet (recommandé)
Tout d'abord, exportez la variable d'environnement SONARQUBE_TOKEN avec un jeton d'accès personnel (PAT) valide pour votre projet.
# macOS/Linux (Bash/Zsh)
export SONARQUBE_TOKEN="{<YourUserToken>}"
Ensuite, montez l'espace de travail du projet pour donner au serveur d'augmentation de contexte un accès direct à vos fichiers source :
{
"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"
}
}
}
}
Important : Dans une configuration limitée au projet, ne placez pas SONARQUBE_TOKEN dans le bloc env. Exportez-le comme variable d'environnement (export SONARQUBE_TOKEN=...). Docker le transmettra dans le conteneur via -e SONARQUBE_TOKEN.
Préparation agentique
Remarque : Les outils de préparation agentique sont uniquement disponibles sur SonarQube Cloud et nécessitent que la fonctionnalité soit activée pour votre organisation.
-
start_agentic_readiness_assessment - Démarrer une évaluation de préparation agentique pour un projet. Renvoie immédiatement avec le statut
PENDINGet unassessmentId. Utilisezget_agentic_readiness_assessmentpour interroger les résultats.projectKey- La clé du projet - String requis (Ignoré lorsqueSONARQUBE_PROJECT_KEYest défini)branch- Branche à évaluer. Omettre pour utiliser la branche par défaut du projet - String
-
get_agentic_readiness_assessment - Récupérer le résultat d'une évaluation. Rappelez avec le même
assessmentIdjusqu'à ce que le statut soitCOMPLETED,FAILED, ouINTERRUPTED. Une fois terminé, renvoie le niveau global et une ventilation par pilier avec les actions recommandées et les preuves.assessmentId- L'ID d'évaluation renvoyé parstart_agentic_readiness_assessment- String requis
-
list_agentic_readiness_assessments - Lister toutes les évaluations pour un projet, les plus récentes en premier. Utilisez
get_agentic_readiness_assessmentpour les résultats complets au niveau du pilier.projectKey- La clé du projet pour lister les évaluations - String requis (Ignoré lorsqueSONARQUBE_PROJECT_KEYest défini)branch- Filtrer les évaluations par nom de branche. Omettre pour lister les évaluations pour toutes les branches - StringpageIndex- Index de page basé sur 1 (défaut : 1) - NumberpageSize- Nombre d'éléments par page, max 100 (défaut : 50) - Number
Exemples de prompts
Une fois que vous avez configuré le serveur MCP SonarQube, voici quelques exemples de prompts pour des scénarios courants du monde réel :
Correction d'un quality gate en échec
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?
Vérifications avant publication et avant fusion
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?
Amélioration de la qualité du code
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?
Comprendre et corriger les problèmes
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?
Gestion de la sécurité et des dépendances
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.
Assistance à la revue de code
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.
Surveillance de la santé du projet
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?
Collaboration d'équipe
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?
Construction
Préférez l'image conteneur sonarsource/sonarqube-mcp.
Pour exécuter le serveur comme un JAR autonome sans Docker, téléchargez une version pré-construite depuis le dépôt de binaires SonarSource. Chaque version publiée y est publiée sous le nom sonarqube-mcp-server-<version>.jar (par exemple, sonarqube-mcp-server-1.19.0.2785.jar).
Exécution depuis le JAR
Téléchargez le JAR pour la version souhaitée depuis le dépôt de binaires, puis configurez votre client MCP pour l'exécuter avec Java 21 ou version ultérieure :
- Pour se connecter avec 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>"
}
}
}
- Pour se connecter avec 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>"
}
}
}
Construction à partir des sources
Le serveur MCP SonarQube nécessite un kit de développement Java (JDK) version 21 ou ultérieure pour être construit.
Exécutez la commande Gradle suivante pour nettoyer le projet et construire l'application :
./gradlew clean build -x test
Le fichier JAR sera créé dans build/libs/.
Après avoir ajouté ou mis à jour des dépendances, régénérez les fichiers de verrouillage :
./gradlew :dependencies --write-locks
./gradlew :its:dependencies --write-locks
Utilisez la configuration Exécution depuis le JAR ci-dessus, en pointant <path_to_sonarqube_mcp_server_jar> vers le JAR dans build/libs/.
Dépannage
Les journaux d'application sont écrits dans le fichier STORAGE_PATH/logs/mcp.log par défaut. Pour désactiver complètement la journalisation des fichiers, définissez SONARQUBE_LOG_TO_FILE_DISABLED=true.
Problèmes courants
« La version du serveur SonarQube n'est pas prise en charge »
Le serveur MCP vérifie la version du serveur SonarQube connecté au démarrage. Si l'instance est plus ancienne que 2025.1 (SQS) ou 25.1 (SQCB), le démarrage échoue avec :
SonarQube server version is not supported, minimal version is SQS 2025.1 or SQCB 25.1
Solution : Mettez à niveau SonarQube Server vers une version prise en charge. Cette vérification s'applique uniquement lors de la connexion à SonarQube Server (SONARQUBE_URL sans SONARQUBE_ORG), pas à SonarQube Cloud.
« La fonctionnalité ne fonctionne pas » ou « Outils/fonctionnalités manquants »
Vous exécutez peut-être une image Docker obsolète. Docker met en cache les images localement, donc vous ne recevrez pas automatiquement les mises à jour.
Solution : Mettez à jour vers la dernière version :
docker pull sonarsource/sonarqube-mcp
Après avoir récupéré la dernière image, redémarrez votre client MCP pour utiliser la version mise à jour.
Optionnellement, ajoutez le drapeau --pull=always à votre commande docker run pour toujours vérifier et récupérer la dernière version :
docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG sonarsource/sonarqube-mcp
« Je veux épingler une version spécifique »
Parcourez les balises disponibles sur sonarsource/sonarqube-mcp et référencez la version souhaitée :
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
Dans votre configuration client MCP, utilisez sonarsource/sonarqube-mcp:<version> au lieu de sonarsource/sonarqube-mcp et supprimez --pull=always afin que Docker ne mette pas à niveau l'image silencieusement.
Données et télémétrie
Ce serveur collecte des données d'utilisation anonymes et les envoie à SonarSource pour aider à améliorer le produit. Aucun code source ni adresse IP n'est collecté, et SonarSource ne partage les données avec personne d'autre. La collecte de télémétrie peut être désactivée avec la propriété système ou la variable d'environnement suivante : TELEMETRY_DISABLED=true. Cliquez ici pour voir un échantillon des données collectées.
Licence
Copyright 2025 SonarSource.
Sous licence SONAR Source-Available License v1.0. L'utilisation du serveur MCP SonarQube conformément à cette documentation constitue un objectif non compétitif et est donc autorisée sous la SSAL.
Votre utilisation de SonarQube via MCP est régie par les Conditions d'utilisation de SonarQube Cloud ou les Conditions générales de SonarQube Server, y compris l'utilisation des données de résultats uniquement pour vos besoins internes de développement logiciel.