/ Annuaire / Playground / SonarQube MCP
● Officiel SonarSource 🔑 Nécessite votre clé

SonarQube MCP

par SonarSource · SonarSource/sonarqube-mcp-server

Les résultats d'analyse statique de Sonar, entre les mains de Claude — corrigez les issues par fichier et règle, sans parcourir un tableau de bord.

sonarqube-mcp-server est le MCP officiel pour SonarQube et SonarCloud. Il expose les issues, points chauds de sécurité, portes qualité, métriques et historique de qualité du code comme outils MCP. Claude lit l'issue, consulte la règle et écrit un correctif ancré dans la recommandation officielle — pas une supposition générique.

Pourquoi l'utiliser

Fonctionnalités clés

Démo en direct

Aperçu en pratique

sonarqube-mcp.replay ▶ prêt
0/0

Installer

Choisissez votre client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

Ouvrez Claude Desktop → Settings → Developer → Edit Config. Redémarrez après avoir enregistré.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

Cursor utilise le même schéma mcpServers que Claude Desktop. La config projet l'emporte sur la globale.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

Cliquez sur l'icône MCP Servers dans la barre latérale Cline, puis "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

Même format que Claude Desktop. Redémarrez Windsurf pour appliquer.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "sonarqube-mcp",
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  ]
}

Continue utilise un tableau d'objets serveur plutôt qu'une map.

~/.config/zed/settings.json
{
  "context_servers": {
    "sonarqube-mcp": {
      "command": {
        "path": "docker",
        "args": [
          "run",
          "--init",
          "--pull=always",
          "-i",
          "--rm",
          "-e",
          "SONARQUBE_TOKEN",
          "-e",
          "SONARQUBE_ORG",
          "mcp/sonarqube"
        ]
      }
    }
  }
}

Ajoutez dans context_servers. Zed recharge à chaud à la sauvegarde.

claude mcp add sonarqube-mcp -- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG mcp/sonarqube

Une seule ligne. Vérifiez avec claude mcp list. Supprimez avec claude mcp remove.

Cas d'usage

Usages concrets : SonarQube MCP

Corriger en lot toutes les issues pour une règle unique dans le code

👤 Développeurs qui remboursent la dette technique ⏱ ~45 min intermediate

Quand l'utiliser : Sonar a signalé 47 instances de la même règle et vous préférez tout corriger en une seule PR.

Prérequis
  • Token Sonar — Utilisateur → Sécurité → Générer un token (limité au projet si possible)
  • Docker disponible — Installation Docker standard ; l'image est téléchargée au premier lancement
Déroulement
  1. Identifier la règle
    Use sonarqube-mcp. Top 5 rules by open-issue count in project 'foo'.✓ Copié
    → Clé de règle + nombre + sévérité
  2. Récupérer toutes les instances
    List every open issue for rule java:S2293 (Use Diamond Operator) — file, line, snippet.✓ Copié
    → 47 issues avec fichier:ligne et code environnant
  3. Appliquer le correctif
    For each, apply the rule's recommended fix. Keep changes minimal; don't reformat.✓ Copié
    → 47 petites modifications dans ~20 fichiers
  4. Re-scanner pour vérifier
    After my CI runs the next analysis, recheck the issue count for that rule.✓ Copié
    → Le nombre tombe à 0

Résultat : Une PR ciblée fermant une règle entière, au lieu de 47 commits de correction éparpillés.

Pièges
  • L'auto-correction de règle casse du code généré — Filtrer par répertoire ; ignorer les chemins générés/test ou les auditer manuellement
Combiner avec : github · filesystem

Déboguer pourquoi la porte qualité d'une PR échoue

👤 Développeur dont la PR est bloquée ⏱ ~30 min intermediate

Quand l'utiliser : Sonar échoue votre PR et le tableau de bord est accablant.

Déroulement
  1. Obtenir le statut de la porte
    Use sonarqube-mcp. Show quality gate status for PR 1234 — which conditions failed?✓ Copié
    → Détail de la porte : ex. «Nouvelle couverture 67% < seuil 80%»
  2. Approfondir la condition en échec
    For 'New Coverage' below threshold — list new lines added in this PR with no test coverage.✓ Copié
    → Liste par fichier des nouvelles lignes non couvertes
  3. Générer des tests
    Write tests covering those uncovered lines.✓ Copié
    → Nouveaux fichiers de test ajoutés ; revue mentale des cas

Résultat : PR débloquée avec des tests ciblés, pas un tapis de couverture.

Pièges
  • Tests écrits pour la couverture, pas pour le comportement — Demander à Claude de préciser ce que chaque test vérifie ; rejeter ceux sans vraie assertion
Combiner avec : github

Réviser et résoudre les hotspots de sécurité

👤 Ingénieurs soucieux de la sécurité ⏱ ~40 min advanced

Quand l'utiliser : Les hotspots s'accumulent et ont besoin d'un triage «confirmé sûr» ou «à corriger».

Déroulement
  1. Lister les hotspots non résolus
    Use sonarqube-mcp. List all unreviewed security hotspots in project 'foo' grouped by category.✓ Copié
    → Hotspots regroupés par catégorie (ex. «Cryptographie faible», «Auth»)
  2. Expliquer les risques
    For each, summarize the risk in 1 line. Mark which are clearly safe-to-acknowledge vs need-fix.✓ Copié
    → Liste de triage annotée
  3. Corriger ou reconnaître
    For need-fix ones, apply the rule's safe pattern. For safe ones, give me the comment to leave on the hotspot review.✓ Copié
    → Correctifs appliqués + commentaires de revue rédigés

Résultat : Hotspots traités avec piste d'audit, pas ignorés silencieusement.

Pièges
  • Marquer des choses «sûres» sans réfléchir — Exiger que Claude cite *pourquoi* c'est sûr dans le commentaire — cela crée une trace auditables
Combiner avec : github

Combinaisons

Associez-le à d'autres MCPs pour un effet X10

sonarqube-mcp + github

Annoter les PRs avec les résultats Sonar ou créer automatiquement des issues pour de nouvelles violations

On every PR, comment Sonar's gate result and any new issues it added.✓ Copié
sonarqube-mcp + filesystem

Appliquer les corrections de règles localement et committer

Fix all java:S2293 instances; write the diffs locally for review before commit.✓ Copié

Outils

Ce que ce MCP expose

OutilEntréesQuand appelerCoût
search_issues project, rules?, severities?, types?, branch? Filtrer les issues par règle/sévérité/type 1 appel API SonarQube
get_rule rule_key Lire les recommandations officielles avant de corriger 1 appel API
get_quality_gate project, branch_or_pr Diagnostiquer les échecs de porte sur PR/branche 1 appel API
search_hotspots project, status? Revue de sécurité 1 appel API
get_metrics project, metric_keys[] Vérifications de tendance/dérive (couverture, duplications) 1 appel API

Coût et limites

Coût d'exécution

Quota d'API
La limite de taux de l'API Sonar varie selon l'édition — être conservateur avec les boucles en masse
Tokens par appel
Les issues arrivent par pages de 100 ; chaque issue ~200 tokens
Monétaire
Gratuit pour les projets publics SonarCloud ; licence Enterprise pour SonarQube
Astuce
Filtrer agressivement à search_issues — paginer tout est coûteux

Sécurité

Permissions, secrets, portée

Portées minimales : Browse See Source Code
Stockage des identifiants : Variable d'env SONARQUBE_TOKEN, limitée au projet
Sortie de données : Vers votre instance Sonar (sonarcloud.io ou auto-hébergé)
Ne jamais accorder : Permissions d'administration à un agent piloté par chat

Dépannage

Erreurs courantes et correctifs

401 Unauthorized

Regénérer le token ; vérifier que le token n'est pas limité au périmètre utilisateur quand le périmètre projet est nécessaire

Vérifier : curl -u $SONARQUBE_TOKEN: $SONAR_HOST/api/projects/search
Mauvaise organisation

La variable d'env SONARQUBE_ORG doit correspondre exactement au slug de votre org Sonar (minuscules)

Le container Docker ne peut pas atteindre SonarQube auto-hébergé

Passer --network host ou exposer votre SonarQube sur un nom d'hôte accessible ; définir SONAR_HOST_URL dans le container

Vérifier : docker run ... curl $SONAR_HOST_URL/api/system/status
La liste d'issues semble périmée

Sonar reflète la dernière analyse complétée — relancer l'analyse ou vérifier l'horodatage de la dernière analyse du projet

Alternatives

SonarQube MCP vs autres

AlternativeQuand l'utiliserCompromis
CodeQL via GitHub MCPVous êtes déjà sur GitHub Advanced Security et voulez les résultats dans la même surfaceEnsemble de règles différent ; pas de concept de porte qualité
Semgrep MCPVous voulez une analyse légère par motifs sans infrastructure SonarMoins de couverture des code smells / métriques de maintenabilité

Plus

Ressources

📖 Lire le README officiel sur GitHub

🐙 Voir les issues ouvertes

🔍 Parcourir les 400+ serveurs MCP et Skills