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
analyze_code_snippetsur un échantillon de code pour obtenir instantanément des résultats de qualité et de sécurité. - Gérer les problèmes — Utilisez l'ensemble d'outils
issuespour rechercher, filtrer et mettre à jour les problèmes SonarQube par gravité, statut ou projet. - Examiner les points chauds de sécurité — Interrogez l'ensemble d'outils
security-hotspotspour lister les points chauds nécessitant un examen et comprendre leur risque. - Vérifier les portes de qualité — Demandez le statut
quality-gatesd'un projet pour voir s'il respecte son seuil de qualité. - Extraire les métriques du projet — Récupérez des
measurescomme la couverture et les duplications, ou parcourez les projets via l'ensemble d'outilsprojects.
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 bonnes 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 commettez jamais les jetons dans le système de 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 vous-même, la méthode la plus simple consiste à utiliser notre image conteneur à sonarsource/sonarqube-mcp. Utilisez sonarsource/sonarqube-mcp pour les mises à jour automatiques (avec --pull=always), ou épinglez un tag 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 conteneur compatible OCI fonctionne (par exemple, Podman, nerdctl). Remplacez simplementdockerpar votre outil préféré.
Antigravity
Le serveur MCP SonarQube est disponible dans la boutique MCP 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 se connecter à SonarQube Cloud :
Dans le panneau latéral de l'agent, cliquez sur les trois points (...) -> Boutique MCP -> 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 se connecter à 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 se connecter à 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 se connecter à 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
CLI Codex
Modifiez manuellement le fichier de configuration à ~/.codex/config.toml et ajoutez la configuration suivante :
- Pour se connecter à 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 se connecter à 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 se connecter à SonarQube Cloud :
Pour SonarQube Cloud US, ajoutez manuellement "SONARQUBE_URL": "https://sonarqube.us" à la section env de votre configuration MCP après l'installation.
- Pour se connecter à 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 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 se connecter à 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 se connecter à 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 se trouve à ~/.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 vers Paramètres -> Copilot -> Agent de codage, et ajoutez la configuration suivante dans la section de configuration MCP :
- Pour se connecter à 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 se connecter à 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 se connecter à 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 se connecter à 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 de 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 la boutique MCP
- Recherchez
sonarqubesur la boutique MCP Cascade - 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 à 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
Accédez à 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 vous recommandons de tirer régulièrement la dernière image ou avant de signaler des problèmes pour vous assurer de disposer des 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 se connecter à 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 se connecter à 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 for IDE
Le serveur MCP SonarQube peut s'intégrer à SonarQube for IDE pour améliorer davantage votre flux de développement, en fournissant une meilleure analyse du code et des informations directement dans votre IDE.
Configuration
Lors de l'utilisation de SonarQube for IDE, la variable d'environnement SONARQUBE_IDE_PORT doit être définie avec le numéro de port correct. SonarQube for 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 sous Linux, le conteneur ne peut pas accéder au serveur intégré SonarQube for IDE exécuté sur localhost. Pour permettre au conteneur de se connecter au serveur SonarQube for 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 nécessitant 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 à SonarQube for 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. Par 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 sur fichier n'est pas souhaitable. Par 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 à l'aide de l'argument filePath relatif au projet — le contenu des fichiers ne passe 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 a droitanalyze_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 du contexte. Vous pouvez activer des ensembles d'outils supplémentaires selon vos besoins.
| Variable d'environnement | Description |
|---|---|
SONARQUBE_TOOLSETS | Liste d'ensembles d'outils séparés par des virgules à 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) ne sont disponibles qu'en mode stdio et partagent un droit d'organisation combiné unique — une organisation doit avoir droit aux deux pour utiliser l'un ou l'autre. L'accès via les clés d'ensemble d'outils cag ou analysis est déprécié au profit de la clé d'ensemble d'outils unifiée vortex ; les anciennes clés fonctionnent toujours pour la rétrocompatibilité, mais un avertissement au démarrage et une note de dépréciation 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 cela par requête, mais ne peuvent pas activer des ensembles d'outils au-delà de ceux avec lesquels le serveur a été lancé (voir Streamable HTTP transport 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 Streamable HTTP transport ci-dessous). |
Ensembles d'outils disponibles
| Ensemble d'outils | Clé | Description |
|---|---|---|
| Analyse | analysis | Outils d'analyse de code (analyse locale via analyze_code_snippet, déprécié 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 |
| Qualité Gates | quality-gates | Accéder aux quality gates 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 dans les projets |
| Mesures | measures | Récupérer les métriques et mesures (inclut les outils mesures et métriques) |
| Langages | languages | Lister les langages de programmation pris en charge |
| Portefeuilles | portfolios | Gérer les portefeuilles et 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. Déprécié au profit de vortex (ancien nom : Context Augmentation/CAG) |
| Vortex | vortex | Ensemble d'outils unifié et recommandé présentant à la fois les outils de contexte Vortex et d'analyse Vortex sous un seul nom (stdio uniquement, nécessite le droit d'organisation combiné) |
| Préparation agentique | agentic-readiness | Outils d'évaluation de préparation agentique (SonarQube Cloud, nécessite un droit d'organisation) |
Exemples
Activer les ensembles d'outils d'analyse, de problèmes et de quality gates (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 | La clé d'organisation de votre SonarQube Cloud | Oui |
SONARQUBE_URL | URL personnalisée de 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 de SonarQube Server | Oui |
SONARQUBE_URL | L'URL de votre SonarQube Server | Oui |
⚠️ La connexion à SonarQube Server nécessite un jeton de type UTILISATEUR et ne fonctionnera pas correctement si des jetons de projet ou des jetons globaux sont utilisés. 💡 Conseil 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 en tant que 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 exemple 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 antérieures de MCP est obsolète et non 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 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éfinissez 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 exemple https://my-app.example.com) | Non défini |
SONARQUBE_MCP_IN_CONTAINER | Définissez 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 de 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éfinissez 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 exemple https://my-app.example.com) | Non défini |
SONARQUBE_MCP_IN_CONTAINER | Définissez 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 (optionnel) :
| 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.). Le drapeau 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 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 optionnels par requête qui réduisent 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 d'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 plutôt le transport Stdio (par 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. Ils 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 serveur SonarQube 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 standard de proxy Java.
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 passées 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 | 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 keystore PKCS12 en le montant dans le conteneur et en transmettant son emplacement via JAVA_OPTS.
Here is the French translation of the provided Markdown chunk:
Configuration
Utilisation d'un keystore 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 keystore :
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 # look for -rw-r--r-- (644) or wider chmod 644 /path/to/client.p12 # grant read access to the container user
Omettez -Djavax.net.ssl.keyStorePassword si le keystore 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 keystore PKCS12 avec un JAR autonome
Lors de l'exécution du serveur depuis un JAR, transmettez les propriétés du keystore 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 keystore 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 d'abord être convertis au format PKCS12. 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 afin d'identifier les problèmes de qualité de code et de sécurité. Analyse toujours le contenu complet du fichier pour plus de précision. Filtrer optionnellement 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, ce qui évite de charger le contenu du fichier dans le 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 le
codeSnippetoptionnel pour filtrer les résultats — seuls les problèmes situés dans l'extrait seront signalés (emplacement de l'extrait détecté automatiquement)
Paramètres :
projectKey- La clé du projet SonarQube - Requis String (Ignoré lorsqueSONARQUBE_PROJECT_KEYest défini)filePath- Chemin relatif au projet du fichier à analyser (par ex.,src/main/java/MyClass.java). Utilisé lorsque l'espace de travail est monté à/app/mcp-workspace- StringfileContent- Contenu complet du fichier sous forme de chaîne. Requis lorsque l'espace de travail n'est pas monté - StringcodeSnippet- Extrait de code pour filtrer les problèmes (doit correspondre au contenu de fileContent) - Stringlanguage- Langage du code (par ex., 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - Stringscope- Périmètre du fichier : MAIN ou TEST (défaut : MAIN) - String
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 dans 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 qualité du code sur une liste de fichiers.
file_absolute_paths- Liste des chemins absolus des fichiers à analyser - Requis String[]
-
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 lorsqu'ils sont modifiés dans le répertoire de travail. Lorsqu'elle est désactivée, l'analyse automatique est coupée.
enabled- Activer ou désactiver l'analyse automatique - Requis Boolean
Lorsque l'analyse Vortex est activée pour votre organisation SonarQube Cloud :
Nécessite que l'espace de travail soit monté à
/app/mcp-workspace
- run_advanced_code_analysis - Exécuter une analyse Vortex sur SonarQube Cloud pour un fichier unique. L'organisation est déduite de la configuration MCP.
projectKey- La clé du projet - Requis String (Ignoré lorsqueSONARQUBE_PROJECT_KEYest défini)branch- Nom de la branche utilisé pour récupérer le contexte d'analyse le plus récent - Requis StringfilePath- Chemin relatif au projet du fichier à analyser (par ex.,src/main/java/MyClass.java). - Requis StringfileScope- Définit le périmètre d'origine du fichier : 'MAIN' ou 'TEST' (défaut : MAIN) - String
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 - Requis String (Ignoré lorsqueSONARQUBE_PROJECT_KEYest défini)branch- Nom de branche optionnel pour l'analyse par branche. Utilisezlist_branchespour découvrir les noms valides - StringpullRequest- Clé/ID de pull request optionnel. Utilisezlist_pull_requestspour découvrir les clés valides - StringmaxCoverage- Seuil de couverture maximal (0-100). Ne renvoyer que les fichiers avec une couverture <= à cette valeur - NumberpageIndex- Index de page (base 1, défaut : 1) - NumberpageSize- Taille de page (défaut : 100, max : 500) - Number
-
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 comportant des branches partiellement couvertes. Cet outil aide à identifier précisément où ajouter la couverture de test. À utiliser après avoir identifié les fichiers à faible couverture via search_files_by_coverage.
key- Clé de fichier (par ex. my_project:src/foo/Bar.java) - Requis Stringbranch- Nom de branche optionnel pour l'analyse par branche. Utilisezlist_branchespour découvrir les noms valides - StringpullRequest- Clé/ID de pull request optionnel. Utilisezlist_pull_requestspour découvrir les clés valides - Stringfrom- Première ligne à analyser (base 1, défaut : 1) - Numberto- Dernière ligne à analyser (inclusive). Si non spécifiée, toutes les lignes sont renvoyées - Number
Risques de dépendances
Remarque : Les risques de dépendances sont uniquement disponibles 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 qui apparaissent dans le projet, l'application ou le portefeuille analysé.
projectKey- Clé du projet - Requis String (Ignoré lorsqueSONARQUBE_PROJECT_KEYest défini)branch- Nom de branche optionnel pour l'analyse par branche. Utilisezlist_branchespour découvrir les noms valides - StringpullRequest- Clé/ID de pull request optionnel. Utilisezlist_pull_requestspour découvrir les clés valides - StringpageIndex- Index de page optionnel (base 1, défaut : 1) - IntegerpageSize- Taille de page optionnelle. Doit être supérieure à 0 et inférieure ou égale à 500 (défaut : 100) - Integer
Entreprises
Remarque : Les entreprises sont uniquement disponibles 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 ID d'entreprise utilisables avec d'autres outils.
enterpriseKey- Clé d'entreprise optionnelle pour filtrer les résultats - String
Problèmes
-
change_sonar_issue_status - Modifier le statut d'un problème SonarQube en "accept", "falsepositive" ou pour "reopen" un problème.
key- Clé du problème - Requis Stringstatus- Nouveau statut du problème - Requis Enum {"accept", "falsepositive", "reopen"}
-
search_sonar_issues_in_projects - Rechercher des problèmes SonarQube dans les projets de mon organisation.
projectKeys- Liste optionnelle de clés de projets SonarQube - String[]branch- Nom de branche optionnel pour l'analyse par branche. Utilisezlist_branchespour découvrir les noms valides - StringpullRequest- Clé/ID de pull request optionnel. Utilisezlist_pull_requestspour découvrir les clés valides - Stringseverities- Liste optionnelle de sévérités pour filtrer. Valeurs possibles : INFO, LOW, MEDIUM, HIGH, BLOCKER - String[]impactSoftwareQualities- Liste optionnelle de qualités logicielles pour filtrer. Valeurs possibles : MAINTAINABILITY, RELIABILITY, SECURITY - String[]issueStatuses- Liste optionnelle de statuts de problèmes pour filtrer. Valeurs possibles : OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - String[]issueKey- Clé de problème optionnelle pour récupérer un problème spécifique - StringpageIndex- Index de page optionnel (base 1, défaut : 1) - IntegerpageSize- Taille de page optionnelle. Doit être supérieure à 0 et inférieure ou égale à 500 (défaut : 100) - Integer
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 - Requis String (Ignoré 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 optionnel pour l'analyse par branche. Utilisezlist_branchespour découvrir les noms valides - StringpullRequest- Clé/ID de pull request optionnel. Utilisezlist_pull_requestspour découvrir les clés valides - Stringfiles- Liste optionnelle de chemins de fichiers pour filtrer - String[]status- Filtre de statut optionnel : TO_REVIEW, REVIEWED - Stringresolution- Filtre de résolution optionnel : FIXED, SAFE, ACKNOWLEDGED - StringsinceLeakPeriod- Filtrer les points chauds créés depuis la période de fuite (nouveau code) - BooleanonlyMine- Afficher uniquement les points chauds qui me sont assignés - BooleanpageIndex- Index de page optionnel (base 1, défaut : 1) - IntegerpageSize- Taille de page optionnelle. Doit être supérieure à 0 et inférieure ou égale à 500 (défaut : 100) - Integer
-
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é - Requis String
-
change_security_hotspot_status - Examiner un point chaud 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 chaud de sécurité - Requis Stringstatus- Nouveau statut - Requis Enum {"TO_REVIEW", "REVIEWED"}resolution- Résolution lorsque le statut est REVIEWED - Enum {"FIXED", "SAFE", "ACKNOWLEDGED"}comment- Commentaire d'examen optionnel - String
Langages
- list_languages - Lister tous les langages de programmation pris en charge dans cette instance SonarQube.
q- Motif optionnel pour comparer les clés/noms de langages - String
Mesures
- get_component_measures - Obtenir les mesures SonarQube pour un composant (projet, répertoire, fichier).
projectKey- La clé du projet - Requis String lorsqueSONARQUBE_PROJECT_KEYn'est pas configurébranch- Nom de branche optionnel pour l'analyse par branche. Utilisezlist_branchespour découvrir les noms valides - StringmetricKeys- Clés de métriques optionnelles à récupérer (par ex. ncloc, complexity, violations, coverage) - String[]pullRequest- Clé/ID de pull request optionnel. Utilisezlist_pull_requestspour découvrir les clés valides - String
Métriques
- search_metrics - Rechercher des métriques SonarQube.
pageIndex- Index de page optionnel (base 1, défaut : 1) - IntegerpageSize- Taille de page optionnelle. 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 par clé - Stringfavorite- Si true, ne renvoie que les portefeuilles favoris - BooleanpageIndex- Numéro de page facultatif commençant à 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 - Recherche des projets SonarQube. La réponse est paginée.
pageIndex- Index de page facultatif commençant à 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 par 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). Aucun filtre
type,mergeBranchoubranchTypes. - Utilisez les noms de branches renvoyés comme paramètre
branchsur les autres outils. Pour l'analyse des pull requests, utilisezlist_pull_requestsà la place. projectKey- Clé du projet (par ex. my_project) - String requise (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 d'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 requise (Ignoré lorsqueSONARQUBE_PROJECT_KEYest défini)
Quality Gates
-
get_project_quality_gate_status - Obtient le statut du Quality Gate 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 tous les quality gates 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 requise
Duplications
-
search_duplicated_files - Recherche les fichiers présentant 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 requise (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). S'il n'est pas spécifié, récupère automatiquement tous les fichiers dupliqués - IntegerpageIndex- Numéro de page facultatif pour la pagination manuelle (commence à 1). S'il n'est pas spécifié, récupère automatiquement tous les fichiers dupliqués - Integer
-
get_duplications - Obtient les duplications d'un fichier. Nécessite la permission Browse sur le projet du fichier.
key- Clé du fichier - String requisebranch- 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 - Obtient le code source sous forme de texte brut depuis SonarQube. Nécessite la permission 'See Source Code' sur le fichier.
key- Clé du fichier - String requisebranch- 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 - Obtient les informations SCM des fichiers source SonarQube. Nécessite la permission See Source Code sur le projet du fichier.
key- Clé du fichier - String requisecommits_by_line- Regroupe les lignes par commit SCM si la valeur est false, sinon affiche 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 - Obtient l'état 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 - Obtient 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 - Obtient 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 - Ping le système SonarQube Server pour vérifier s'il est actif. Renvoie 'pong' sous forme de texte brut.
-
get_system_status - Obtient des informations sur l'état de SonarQube Server. Renvoie le statut (STARTING, UP, DOWN, RESTARTING, DB_MIGRATION_NEEDED, DB_MIGRATION_RUNNING), la version et l'identifiant.
Webhooks
-
create_webhook - Crée 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 requiseurl- URL du webhook - String requiseprojectKey- 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 - Trouve les é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[] requiseexclude_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 de champs séparés par des virgules à 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 - Trouve les é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[] requiseexclude_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 de champs séparés par des virgules à 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 - Trace les fonctions qui 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 requisedepth- Profondeur de la chaîne d'appels (0=fonction uniquement, 1=appelants directs, etc.) - Integerfields- Liste de champs séparés par des virgules à inclure dans la réponse - String
-
get_downstream_call_flow - Trace les fonctions qu'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 requisedepth- Profondeur de la chaîne d'appels (0=fonction uniquement, 1=appelés directs, etc.) - Integerfields- Liste de champs séparés par des virgules à inclure dans la réponse - String
-
get_source_code - Obtient le code source complet (signature et corps) d'un élément de code par son nom complet.
fqn- Nom complet de l'élément - String requisefields- Liste de champs séparés par des virgules à inclure dans la réponse - String
-
get_type_hierarchy - Obtient la hiérarchie d'héritage complète pour une structure de type classe (classe, interface, enum, record, exception, struct). Essentiel pour comprendre les arbres d'héritage et le refactoring.
fqn- Nom complet de la structure de type classe - String requisefields- Liste de champs séparés par des virgules à inclure dans la réponse - String
-
get_references - Obtient les références de code entrantes et sortantes directes pour une classe ou un module. Ne renvoie que les références directes (non transitives).
fqn- Nom complet de la classe ou du module - String requisefields- Liste de champs séparés par des virgules à inclure dans la réponse - String
-
get_current_architecture - Obtient 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 hiérarchie (0=racine uniquement, 1=racine + enfants, etc.) - Integer requispath_prefix- Préfixe de chemin facultatif pour filtrer les nœuds (par ex.,com.example.service) - Stringecosystem- Écosystème facultatif pour filtrer (java,cs,py,js,ts) - String
-
get_intended_architecture - Obtient 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** - Obtenez des 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` ou `combined` - _Required String_ - `categories` - Liste des noms de catégories (requis pour les modes `category_based` et `combined`) - _String[]_ - `languages` - Liste des langues cibles au format de clé de dépôt SonarQube (requis lorsque `categories` est fourni) - _String[]_ - `file_paths` - Liste facultative de chemins de fichiers pour filtrer les directives - _String[]_Outils de dépendances tierces
- check_dependency - Vérifiez 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 de 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) - Required String
Variables d'environnement Context Augmentation
| Variable | Description | Requis | Défaut |
|---|---|---|---|
SONARQUBE_URL | URL 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 | Faux |
SONAR_LOG_LEVEL | Niveau de verbosité de la 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ée)
Tout d'abord, exportez la SONARQUBE_TOKEN variable d'environnement 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 Context Augmentation un accès direct à vos fichiers sources :
{
"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 au conteneur via -e SONARQUBE_TOKEN.
Agentic Readiness
Remarque : les outils Agentic Readiness ne sont disponibles que sur SonarQube Cloud et nécessitent que la fonctionnalité soit activée pour votre organisation.
-
start_agentic_readiness_assessment - Démarre une évaluation de préparation agentique pour un projet. Renvoie immédiatement le statut
PENDINGet unassessmentId. Utilisezget_agentic_readiness_assessmentpour interroger les résultats.projectKey- La clé du projet - Required String (Ignoré lorsqueSONARQUBE_PROJECT_KEYest défini)branch- Branche à évaluer. Omettez pour utiliser la branche par défaut du projet - String
-
get_agentic_readiness_assessment - Récupère le résultat d'une évaluation. Rappelez avec le même
assessmentIdjusqu'à ce que le statut soitCOMPLETED,FAILEDouINTERRUPTED. Une fois terminée, renvoie le niveau global et une répartition par pilier avec les actions recommandées et les preuves.assessmentId- L'ID d'évaluation renvoyé parstart_agentic_readiness_assessment- Required String
-
list_agentic_readiness_assessments - Liste toutes les évaluations d'un projet, de la plus récente à la plus ancienne. Utilisez
get_agentic_readiness_assessmentpour des résultats complets au niveau des piliers.projectKey- La clé du projet pour lequel lister les évaluations - Required String (Ignoré lorsqueSONARQUBE_PROJECT_KEYest défini)branch- Filtrer les évaluations par nom de branche. Omettez pour lister les évaluations de 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 d'invites
Une fois que vous avez configuré le serveur MCP SonarQube, voici quelques exemples d'invites 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?
Sécurité et gestion 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?
Compilation
Privilégiez l'image conteneur sonarsource/sonarqube-mcp.
Pour exécuter le serveur comme JAR autonome sans Docker, téléchargez une version précompilée depuis le dépôt de binaires SonarSource. Chaque version publiée y est publiée sous la forme 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 de 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 vous connecter à 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 vous connecter à 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>"
}
}
}
Compilation depuis les sources
Le serveur MCP SonarQube nécessite un kit de développement Java (JDK) version 21 ou ultérieure pour être compilé.
Exécutez la commande Gradle suivante pour nettoyer le projet et compiler 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 dans un fichier, définissez SONARQUBE_LOG_TO_FILE_DISABLED=true.
Problèmes courants
« "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, vous ne recevrez donc 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.
En option, 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 la configuration de votre client MCP, utilisez sonarsource/sonarqube-mcp:<version> au lieu de sonarsource/sonarqube-mcp et supprimez --pull=always afin que Docker ne mette pas silencieusement à niveau l'image.
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 pas les données avec qui que ce soit. 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 concurrentiel et est donc autorisée en vertu de 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 à des fins de développement logiciel interne.