/ Diretório / Playground / SonarQube MCP
● Oficial SonarSource 🔑 Requer sua chave

SonarQube MCP

por SonarSource · SonarSource/sonarqube-mcp-server

Os apontamentos de análise estática do Sonar nas mãos do Claude — corrija issues por arquivo e regra, não folheando um dashboard.

sonarqube-mcp-server é o MCP oficial para SonarQube e SonarCloud. Expõe issues, hotspots de segurança, quality gates, métricas e histórico de qualidade de código como tools MCP. O Claude lê o issue, consulta a regra e escreve uma correção ancorada na recomendação da regra — não um palpite genérico.

Por que usar

Principais recursos

Demo ao vivo

Como fica na prática

sonarqube-mcp.replay ▶ pronto
0/0

Instalar

Escolha seu cliente

~/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"
      ]
    }
  }
}

Abra Claude Desktop → Settings → Developer → Edit Config. Reinicie após salvar.

~/.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 usa o mesmo esquema mcpServers que o Claude Desktop. Config de projeto vence a global.

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"
      ]
    }
  }
}

Clique no ícone MCP Servers na barra lateral do Cline, depois "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"
      ]
    }
  }
}

Mesmo formato do Claude Desktop. Reinicie o Windsurf para aplicar.

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

O Continue usa um array de objetos de servidor em vez de um 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"
        ]
      }
    }
  }
}

Adicione em context_servers. Zed recarrega automaticamente ao salvar.

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

Uma linha só. Verifique com claude mcp list. Remova com claude mcp remove.

Casos de uso

Usos do mundo real: SonarQube MCP

Corrigir em lote todos os issues de uma única regra em toda a base de código

👤 Desenvolvedores pagando dívida técnica ⏱ ~45 min intermediate

Quando usar: O Sonar sinalizou 47 instâncias da mesma regra e você prefere corrigi-las todas em um só PR.

Pré-requisitos
  • Token do Sonar — Usuário → Segurança → Gerar Token (com escopo de projeto se possível)
  • Docker disponível — Configuração padrão do Docker; a imagem é baixada na primeira execução
Fluxo
  1. Identificar a regra
    Use sonarqube-mcp. Top 5 rules by open-issue count in project 'foo'.✓ Copiado
    → Chave da regra + contagem + severidade
  2. Buscar todas as instâncias de uma delas
    List every open issue for rule java:S2293 (Use Diamond Operator) — file, line, snippet.✓ Copiado
    → 47 issues com arquivo:linha e código ao redor
  3. Aplicar a correção
    For each, apply the rule's recommended fix. Keep changes minimal; don't reformat.✓ Copiado
    → 47 edições pequenas em ~20 arquivos
  4. Re-escanear para verificar
    After my CI runs the next analysis, recheck the issue count for that rule.✓ Copiado
    → Contagem cai para 0

Resultado: Um PR focado fechando toda uma regra, em vez de 47 commits de correção espalhados.

Armadilhas
  • Auto-correção da regra quebra código gerado — Filtre por diretório; pule caminhos gerados/de teste ou audite-os manualmente
Combine com: github · filesystem

Depurar por que o quality gate de um PR está falhando

👤 Desenvolvedor cujo PR foi bloqueado ⏱ ~30 min intermediate

Quando usar: O Sonar bloqueia seu PR e o dashboard é avassalador.

Fluxo
  1. Obter o status do gate
    Use sonarqube-mcp. Show quality gate status for PR 1234 — which conditions failed?✓ Copiado
    → Breakdown do gate: ex., 'New Coverage 67% < 80% threshold'
  2. Investigar a condição que falhou
    For 'New Coverage' below threshold — list new lines added in this PR with no test coverage.✓ Copiado
    → Lista de novas linhas não cobertas por arquivo
  3. Gerar testes
    Write tests covering those uncovered lines.✓ Copiado
    → Novos arquivos de teste adicionados; revisão mental dos casos

Resultado: PR desbloqueado com testes direcionados, não um tapete de cobertura.

Armadilhas
  • Testes escritos para cobertura, não para comportamento — Peça ao Claude para também declarar o que cada teste verifica; rejeite os que não têm uma asserção real
Combine com: github

Revisar e resolver hotspots de segurança

👤 Engenheiros preocupados com segurança ⏱ ~40 min advanced

Quando usar: Hotspots foram acumulando e precisam de triagem como 'revisado seguro' ou 'corrigido'.

Fluxo
  1. Listar hotspots não resolvidos
    Use sonarqube-mcp. List all unreviewed security hotspots in project 'foo' grouped by category.✓ Copiado
    → Hotspots agrupados por categoria (ex., 'Criptografia Fraca', 'Auth')
  2. Explicar os riscos
    For each, summarize the risk in 1 line. Mark which are clearly safe-to-acknowledge vs need-fix.✓ Copiado
    → Lista de triagem anotada
  3. Corrigir ou reconhecer
    For need-fix ones, apply the rule's safe pattern. For safe ones, give me the comment to leave on the hotspot review.✓ Copiado
    → Correções aplicadas + comentários de revisão redigidos

Resultado: Hotspots resolvidos com trilha de auditoria, não silenciosamente ignorados.

Armadilhas
  • Marcar coisas como 'seguro' sem pensar — Exija que o Claude cite *por que* é seguro no comentário — isso cria uma trilha auditável
Combine com: github

Combinações

Combine com outros MCPs para 10× de alavancagem

sonarqube-mcp + github

Anotar PRs com apontamentos do Sonar ou criar issues automaticamente para novas violações

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

Aplicar correções de regras localmente e fazer commit

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

Ferramentas

O que este MCP expõe

FerramentaEntradasQuando chamarCusto
search_issues project, rules?, severities?, types?, branch? Filtrar issues por regra/severidade/tipo 1 chamada à API do SonarQube
get_rule rule_key Ler a orientação oficial antes de corrigir 1 chamada de API
get_quality_gate project, branch_or_pr Diagnosticar falhas de gate em PR/branch 1 chamada de API
search_hotspots project, status? Revisão de segurança 1 chamada de API
get_metrics project, metric_keys[] Verificações de tendência/deriva (cobertura, duplicações) 1 chamada de API

Custo e limites

O que custa rodar

Cota de API
Rate limit da API do Sonar varia por edição — seja conservador com loops em massa
Tokens por chamada
Issues vêm em páginas de 100; cada issue ~200 tokens
Monetário
Gratuito para projetos públicos no SonarCloud; licença Enterprise para SonarQube
Dica
Filtre agressivamente no search_issues — percorrer tudo é desperdício

Segurança

Permissões, segredos, alcance

Escopos mínimos: Browse See Source Code
Armazenamento de credenciais: Variável de ambiente SONARQUBE_TOKEN com escopo de projeto
Saída de dados: Para a sua instância Sonar (sonarcloud.io ou self-hosted)
Nunca conceda: Permissões de Administrar a um agente controlado por chat

Solução de problemas

Erros comuns e correções

401 Unauthorized

Regenere o token; verifique se o token não tem escopo apenas de usuário quando o escopo de projeto é necessário

Verificar: curl -u $SONARQUBE_TOKEN: $SONAR_HOST/api/projects/search
Organização errada

A variável SONARQUBE_ORG deve corresponder exatamente ao slug da sua org no Sonar (minúsculas)

Container Docker não consegue alcançar SonarQube self-hosted

Passe --network host ou exponha seu SonarQube em um hostname acessível; defina SONAR_HOST_URL dentro do container

Verificar: docker run ... curl $SONAR_HOST_URL/api/system/status
Lista de issues parece desatualizada

O Sonar reflete a última análise concluída — re-execute a análise ou verifique o timestamp da última análise do projeto

Alternativas

SonarQube MCP vs. outros

AlternativaQuando usarTroca
CodeQL via GitHub MCPVocê já usa GitHub Advanced Security e quer os apontamentos na mesma superfícieConjunto de regras diferente; sem conceito de quality gate
Semgrep MCPVocê quer análise baseada em padrões leve sem a infraestrutura do SonarMenor cobertura de code smells / métricas de manutenibilidade

Mais

Recursos

📖 Leia o README oficial no GitHub

🐙 Ver issues abertas

🔍 Ver todos os 400+ servidores MCP e Skills