SonarQube

officiel

Fournit 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

Build Quality Gate Status

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 simplement docker par votre outil préféré.

Antigravity

Le serveur MCP SonarQube est disponible dans le MCP Store d'Antigravity. Suivez ces instructions :

  1. Ouvrez le panneau latéral de l'agent
  2. Cliquez sur les trois points (...) en haut à droite et sélectionnez Serveurs MCP
  3. Recherchez SonarQube et sélectionnez Installer
  4. 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 :

Install for 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 :

Install for 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 Cloud
    • SONARQUBE_ORG - Votre clé d'organisation
    • SONARQUBE_URL - (Facultatif) Définissez sur https://sonarqube.us pour SonarQube Cloud US
  • Pour SonarQube Server :

    • SONARQUBE_TOKEN - Votre jeton UTILISATEUR SonarQube Server
    • SONARQUBE_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.

Install for SonarQube Cloud

Pour SonarQube Cloud US, ajoutez manuellement "SONARQUBE_URL": "https://sonarqube.us" à la section env dans votre configuration MCP après l'installation.

Install for SonarQube Server

Windsurf

Le serveur MCP SonarQube est disponible en tant que plugin Windsurf. Suivez ces instructions :

  1. Ouvrez Windsurf Paramètres > Cascade > Serveurs MCP et sélectionnez Ouvrir le MCP Marketplace
  2. Recherchez sonarqube sur le Cascade MCP Marketplace
  3. Choisissez le Serveur MCP SonarQube et sélectionnez Installer
  4. 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'environnementDescription
STORAGE_PATHChemin 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_KEYClé 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_PORTNuméro de port facultatif entre 64120 et 64130 utilisé pour connecter le serveur MCP SonarQube avec SonarQube pour IDE.
SONARQUBE_DEBUG_ENABLEDLorsqu'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_DISABLEDLorsqu'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_analysis devient disponible si votre organisation y est éligible
  • analyze_code_snippet : filePath est requis et fileContent n'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'environnementDescription
SONARQUBE_TOOLSETSListe 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_ONLYLorsqu'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'outilsCléDescription
AnalyseanalysisOutils d'analyse de code (analyse locale via analyze_code_snippet, obsolète au profit de analyze_file_list/analyse Vortex)
IDEideOutils de pont SonarQube for IDE (analyse de fichiers, bascule d'analyse automatique) — actuellement également inclus dans analysis
ProblèmesissuesRechercher et gérer les problèmes SonarQube
Points chauds de sécuritésecurity-hotspotsRechercher et examiner les points chauds de sécurité
ProjetsprojectsParcourir et rechercher les projets SonarQube
Portes de qualitéquality-gatesAccéder aux portes de qualité et à leur statut
RèglesrulesParcourir et rechercher les règles SonarQube
SourcessourcesAccéder au code source et aux informations SCM
DuplicationsduplicationsTrouver les duplications de code entre les projets
MesuresmeasuresRécupérer les métriques et mesures (inclut les outils de mesures et de métriques)
LangageslanguagesLister les langages de programmation pris en charge
PortefeuillesportfoliosGérer les portefeuilles et les entreprises (Cloud et Server)
SystèmesystemOutils d'administration système (Server uniquement)
WebhookswebhooksGérer les webhooks
Risques de dépendancesdependency-risksAnalyser les risques de dépendances et les problèmes de sécurité (SCA)
CouverturecoverageOutils d'analyse et d'amélioration de la couverture de tests
Contexte VortexcagOutils de contexte Vortex — stdio uniquement. Obsolète au profit de vortex (ancien nom : Context Augmentation/CAG)
VortexvortexEnsemble 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 agentiqueagentic-readinessOutils 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'environnementDescriptionRequise
SONARQUBE_TOKENVotre jeton SonarQube CloudOui
SONARQUBE_ORGVotre clé d'organisation SonarQube CloudOui
SONARQUBE_URLURL personnalisée SonarQube Cloud (par défaut https://sonarcloud.io). Utilisez ceci pour SonarQube Cloud US : https://sonarqube.usNon

Exemples :

  • SonarQube Cloud : Seuls SONARQUBE_TOKEN et SONARQUBE_ORG sont nécessaires
  • SonarQube Cloud US : Définissez SONARQUBE_TOKEN, SONARQUBE_ORG et SONARQUBE_URL=https://sonarqube.us

SonarQube Server

Variable d'environnementDescriptionRequise
SONARQUBE_TOKENVotre jeton UTILISATEUR SonarQube ServerOui
SONARQUBE_URLL'URL de votre SonarQube ServerOui

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_ORG détermine si vous vous connectez à SonarQube Cloud ou Server. Si SONARQUBE_ORG est 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 MCPMode serveurUtilisation typique
StdioPar défaut (pas de SONARQUBE_TRANSPORT)Clients MCP locaux qui lancent le serveur comme sous-processus (Cursor, Claude Code, VS Code, etc.)
Streamable HTTPSONARQUBE_TRANSPORT=http ou httpsDé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'environnementDescriptionDéfaut
SONARQUBE_TRANSPORTDéfinir sur http pour activer le transport Streamable HTTPNon défini (stdio)
SONARQUBE_HTTP_PORTNuméro de port (1024-65535)8080
SONARQUBE_HTTP_HOSTHôte à lier (par défaut localhost pour la sécurité)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSOrigines 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_CONTAINERDé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_ORG est 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ête SONARQUBE_ORG — cela entraînerait une erreur.
  • Si SONARQUBE_ORG n'est pas défini au démarrage du serveur, chaque client doit fournir un en-tête SONARQUBE_ORG sur chaque requête. Les clients peuvent également restreindre les outils visibles par requête en fournissant les en-têtes SONARQUBE_TOOLSETS et/ou SONARQUBE_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_TOKEN est toujours accepté pour la rétrocompatibilité mais sera supprimé dans une version future. Migrez vers Authorization: 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'environnementDescriptionDéfaut
SONARQUBE_TRANSPORTDéfinir sur https pour activer le transport Streamable HTTP sur TLSNon défini (stdio)
SONARQUBE_HTTP_PORTNuméro de port (généralement 8443 pour HTTPS)8080
SONARQUBE_HTTP_HOSTHôte à lier (par défaut localhost pour la sécurité)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSOrigines 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_CONTAINERDé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'environnementDescriptionDéfaut
SONARQUBE_HTTPS_KEYSTORE_PATHChemin vers le fichier de keystore (.p12 ou .jks)/etc/ssl/mcp/keystore.p12
SONARQUBE_HTTPS_KEYSTORE_PASSWORDMot de passe du keystoresonarlint
SONARQUBE_HTTPS_KEYSTORE_TYPEType 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.0 pour que le conteneur écoute sur toutes les interfaces et que le mappage de ports du runtime fonctionne, et définissez SONARQUBE_MCP_IN_CONTAINER=true pour 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.0 contrô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_TOOLSETS et SONARQUBE_READ_ONLY sont 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 terminaisonMéthodeDescriptionExemple de réponse
/healthGETSonde de vivacité. Renvoie 200 OK avec un corps vide une fois que le serveur accepte les requêtes.(corps vide)
/infoGETRenvoie 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éDescriptionExemple
http.proxyHostNom d'hôte du proxy HTTPproxy.example.com
http.proxyPortPort du proxy HTTP8080
https.proxyHostNom d'hôte du proxy HTTPSproxy.example.com
https.proxyPortPort du proxy HTTPS8443
http.nonProxyHostsHô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éDescriptionExemple
http.proxyUserNom d'utilisateur du proxy HTTPmyuser
http.proxyPasswordMot de passe du proxy HTTPmypassword
https.proxyUserNom d'utilisateur du proxy HTTPSmyuser
https.proxyPasswordMot de passe du proxy HTTPSmypassword

Proxy SOCKS5

Les proxys SOCKS5 sont pris en charge.

PropriétéDescriptionPar défautExemple
socksProxyHostNom d'hôte du proxy SOCKS5—localhost
socksProxyPortPort du proxy SOCKS510801080
java.net.socks.usernameNom d'utilisateur SOCKS5 (si authentification requise)—myuser
java.net.socks.passwordMot 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/.key séparés) doivent être convertis au format PKCS12 d'abord. Utilisez openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 pour 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_snippet sera supprimé dans une version future. Connectez SonarQube for IDE pour utiliser analyze_file_list, ou activez l'analyse Vortex pour votre organisation afin d'utiliser run_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 fileContent complet pour une analyse complète du fichier (signale tous les problèmes)
    • Ajoutez éventuellement codeSnippet pour 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 lorsque SONARQUBE_PROJECT_KEY est 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îne
    • fileContent - Contenu complet du fichier sous forme de chaîne. Requis lorsque l'espace de travail n'est pas monté - Chaîne
    • codeSnippet - Extrait de code pour filtrer les problèmes (doit correspondre au contenu de fileContent) - Chaîne
    • language - Langage du code (par exemple, 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - Chaîne
    • scope - 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

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 lorsque SONARQUBE_PROJECT_KEY est défini)
    • branch - Nom de branche utilisé pour récupérer le dernier contexte d'analyse - Chaîne requise
    • filePath - Chemin relatif au projet du fichier à analyser (par exemple, src/main/java/MyClass.java). - Chaîne requise
    • fileScope - 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 lorsque SONARQUBE_PROJECT_KEY est défini)
    • branch - Nom de branche facultatif pour l'analyse basée sur les branches. Utilisez list_branches pour découvrir les noms valides - Chaîne
    • pullRequest - Clé/ID de pull request facultatif. Utilisez list_pull_requests pour découvrir les clés valides - Chaîne
    • maxCoverage - Seuil de couverture maximal (0-100). Ne renvoyer que les fichiers avec une couverture <= cette valeur - Nombre
    • pageIndex - Index de page (basé sur 1, par défaut : 1) - Nombre
    • pageSize - 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 requise
    • branch - Nom de branche facultatif pour l'analyse basée sur les branches. Utilisez list_branches pour découvrir les noms valides - Chaîne
    • pullRequest - Clé/ID de pull request facultatif. Utilisez list_pull_requests pour découvrir les clés valides - Chaîne
    • from - Première ligne à analyser (basée sur 1, par défaut : 1) - Nombre
    • to - 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 lorsque SONARQUBE_PROJECT_KEY est défini)
    • branch - Nom de branche facultatif pour l'analyse basée sur les branches. Utilisez list_branches pour découvrir les noms valides - Chaîne
    • pullRequest - Clé/ID de pull request facultatif. Utilisez list_pull_requests pour découvrir les clés valides - Chaîne
    • pageIndex - Index de page facultatif (basé sur 1, par défaut : 1) - Entier
    • pageSize - 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 requise
    • status - 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. Utilisez list_branches pour découvrir les noms valides - Chaîne
    • pullRequest - Clé/ID de pull request facultatif. Utilisez list_pull_requests pour découvrir les clés valides - Chaîne
    • severities - 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 parmi projectKeys et files - Booléen
    • issueKey - Clé de problème facultative pour récupérer un problème spécifique - Chaîne
    • pageIndex - Index de page facultatif basé sur 1 (par défaut : 1) - Entier
    • pageSize - 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 lorsque SONARQUBE_PROJECT_KEY est 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. Utilisez list_branches pour découvrir les noms valides - Chaîne
    • pullRequest - Clé/ID de pull request facultatif. Utilisez list_pull_requests pour découvrir les clés valides - Chaîne
    • files - Liste facultative de chemins de fichiers pour filtrer - String[]
    • status - Filtre de statut facultatif : TO_REVIEW, REVIEWED - Chaîne
    • resolution - Filtre de résolution facultatif : FIXED, SAFE, ACKNOWLEDGED - Chaîne
    • sinceLeakPeriod - Filtrer les points chauds créés depuis la période de fuite (nouveau code) - Booléen
    • onlyMine - Afficher uniquement les points chauds qui me sont assignés - Booléen
    • pageIndex - Index de page facultatif basé sur 1 (par défaut : 1) - Entier
    • pageSize - 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 requis
    • status - 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 lorsque SONARQUBE_PROJECT_KEY n'est pas configuré
    • branch - Nom de branche facultatif pour l'analyse basée sur les branches. Utilisez list_branches pour découvrir les noms valides - String
    • metricKeys - Clés de métriques facultatives à récupérer (par ex. ncloc, complexity, violations, coverage) - String[]
    • pullRequest - Clé/ID de pull request facultatif. Utilisez list_pull_requests pour 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) - Integer
    • pageSize - 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é - String
    • favorite - Si vrai, ne renvoie que les portefeuilles favoris - Boolean
    • pageIndex - Numéro de page facultatif basé sur 1 (défaut : 1) - Integer
    • pageSize - 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 - String
    • q - Requête de recherche facultative pour filtrer les portefeuilles par nom - String
    • favorite - 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 - Boolean
    • draft - Si true, ne renvoie que les brouillons créés par l'utilisateur connecté. Ne peut pas être true lorsque 'favorite' est true - Boolean
    • pageIndex - Index facultatif de la page à récupérer (défaut : 1) - Integer
    • pageSize - 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) - Integer
    • pageSize - Taille de page facultative. Doit être supérieure à 0 et inférieure ou égale à 500 (défaut : 500) - Integer
    • q - 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 champs type et mergeBranch. Filtre facultatif branchTypes : ALL (défaut), LONG ou SHORT.
    • SonarQube Server : renvoie toutes les branches analysées (nom, qualité, date d'analyse). Pas de filtre type, mergeBranch ou branchTypes.
    • Utilisez les noms de branches renvoyés comme paramètre branch sur d'autres outils. Pour l'analyse de pull requests, utilisez list_pull_requests à la place.
    • projectKey - Clé du projet (par ex. my_project) - String requis (Ignoré lorsque SONARQUBE_PROJECT_KEY est défini)
    • branchTypes - (SonarQube Cloud uniquement) Filtre facultatif : ALL (défaut), LONG ou SHORT - Enum {"ALL", "LONG", "SHORT"}
  • 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é lorsque SONARQUBE_PROJECT_KEY est défini)

Qualité

  • get_project_quality_gate_status - Obtenir le statut de la qualité pour le projet SonarQube.

    • analysisId - ID d'analyse facultatif - String
    • branch - Nom de branche facultatif pour l'analyse basée sur les branches. Utilisez list_branches pour découvrir les noms valides - String
    • projectId - ID de projet facultatif - String
    • projectKey - Clé de projet facultative - String
    • pullRequest - Clé/ID de pull request facultatif. Utilisez list_pull_requests pour 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é lorsque SONARQUBE_PROJECT_KEY est défini)
    • branch - Nom de branche facultatif pour l'analyse basée sur les branches. Utilisez list_branches pour découvrir les noms valides - String
    • pullRequest - Clé/ID de pull request facultatif. Utilisez list_pull_requests pour découvrir les clés valides - String
    • pageSize - 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 - Integer
    • pageIndex - 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 requis
    • branch - Nom de branche facultatif pour l'analyse basée sur les branches. Utilisez list_branches pour découvrir les noms valides - String
    • pullRequest - Clé/ID de pull request facultatif. Utilisez list_pull_requests pour 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 requis
    • branch - Nom de branche facultatif pour l'analyse basée sur les branches. Utilisez list_branches pour découvrir les noms valides - String
    • pullRequest - Clé/ID de pull request facultatif. Utilisez list_pull_requests pour 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 requis
    • commits_by_line - Grouper les lignes par commit SCM si la valeur est false, sinon afficher les commits pour chaque ligne - String
    • from - Première ligne à renvoyer. Commence à 1 - Number
    • to - 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 requis
    • url - URL du webhook - String requis
    • projectKey - Clé de projet facultative pour un webhook spécifique au projet - String
    • secret - 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[] requis
    • exclude_code_regex_list - Liste de motifs regex à exclure des résultats - String[]
    • include_glob - Motif glob de filtre de fichier (par ex., *.java) - String
    • exclude_glob - Motif glob d'exclusion de fichier - String
    • fields - Liste séparée par des virgules des champs à inclure dans la réponse - String
    • limit - Nombre maximum de résultats à renvoyer (défaut : 10) - Integer
    • regex_lists_operator - Comment combiner plusieurs motifs : OR (défaut) ou AND - 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[] requis
    • exclude_code_regex_list - Liste de motifs regex à exclure des résultats - String[]
    • include_glob - Motif glob de filtre de fichier - String
    • exclude_glob - Motif glob d'exclusion de fichier - String
    • fields - Liste séparée par des virgules des champs à inclure dans la réponse - String
    • limit - Nombre maximum de résultats à renvoyer (défaut : 10) - Integer
    • regex_lists_operator - Comment combiner plusieurs motifs : OR (défaut) ou AND - 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 requis
    • depth - Profondeur de la chaîne d'appels (0=fonction uniquement, 1=appelants directs, etc.) - Integer
    • fields - 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 requis
    • depth - Profondeur de la chaîne d'appels (0=fonction uniquement, 1=appelés directs, etc.) - Integer
    • fields - 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 requis
    • fields - 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 requis
    • fields - 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 requis
    • fields - 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 requis
    • path_prefix - Préfixe de chemin optionnel pour filtrer les nœuds (par exemple, com.example.service) - String
    • ecosystem - É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, ou combined - String requis
    • 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 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 exemple pkg: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
VariableDescriptionRequisDéfaut
SONARQUBE_URLURL de SonarQube CloudOuihttps://sonarcloud.io
SONARQUBE_TOKENJeton d'authentificationOuiAucun
SONARQUBE_ORGClé d'organisation sur SonarQube CloudOuiAucun
SONARQUBE_PROJECT_KEYClé de projet sur SonarQube CloudOuiAucun
SONAR_SQ_BRANCHRemplacement explicite de la branche SonarQube *NonAucun
SONARQUBE_DEBUG_ENABLEDActiver la journalisation de débogage (pour le dépannage)NonFalse
SONAR_LOG_LEVELVerbeux de journalisation (TRACE, DEBUG, INFO, WARNING, ERROR)NonINFO
  • À 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 PENDING et un assessmentId. Utilisez get_agentic_readiness_assessment pour interroger les résultats.

    • projectKey - La clé du projet - String requis (Ignoré lorsque SONARQUBE_PROJECT_KEY est 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 assessmentId jusqu'à ce que le statut soit COMPLETED, FAILED, ou INTERRUPTED. 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é par start_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_assessment pour les résultats complets au niveau du pilier.

    • projectKey - La clé du projet pour lister les évaluations - String requis (Ignoré lorsque SONARQUBE_PROJECT_KEY est défini)
    • branch - Filtrer les évaluations par nom de branche. Omettre pour lister les évaluations pour toutes les branches - String
    • pageIndex - Index de page basé sur 1 (défaut : 1) - Number
    • pageSize - 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.