SonarQube

oficial

Fornece integração perfeita com o SonarQube Server ou Cloud, e permite a análise de trechos de código diretamente no contexto do agente.

O que você pode fazer com SonarQube MCP?

  • Analisar trechos de código — Peça ao seu assistente para executar análise local de código em um trecho ou arquivo via analyze_code_snippet, com montagem opcional de workspace para evitar sobrecarga de contexto.
  • Pesquisar e gerenciar issues — Faça o assistente encontrar, revisar e atualizar issues do SonarQube, incluindo a alteração de status quando não estiver no modo somente leitura.
  • Verificar quality gates e medidas — Solicite o status do quality gate, métricas do projeto, cobertura e riscos de dependências em seus projetos SonarQube.
  • Revisar hotspots de segurança — Deixe o assistente pesquisar e percorrer os hotspots de segurança sinalizados no seu código.
  • Navegar por projetos e regras — Use o assistente para explorar projetos, listar linguagens suportadas e consultar regras de codificação diretamente do SonarQube.

Documentação

Servidor MCP do SonarQube

Build Quality Gate Status

O Servidor MCP do SonarQube é um servidor de Protocolo de Contexto de Modelo (MCP) que permite integração perfeita com o SonarQube Server ou Cloud para qualidade e segurança de código. Ele também suporta a análise de trechos de código diretamente no contexto do agente.

Configuração rápida

Práticas recomendadas de segurança

🔒 Importante: Seu token do SonarQube é uma credencial sensível. Siga estas práticas de segurança:

Ao usar comandos CLI:

  • Evite codificar tokens em argumentos de linha de comando – eles são salvos no histórico do shell
  • Use variáveis de ambiente – defina tokens em variáveis de ambiente antes de executar comandos

Ao usar arquivos de configuração:

  • Nunca envie tokens para o controle de versão
  • Use substituição de variáveis de ambiente em arquivos de configuração quando possível

🚀 Gere sua configuração

A maneira mais rápida de começar é o Gerador de Configuração do Servidor MCP do SonarQube – uma ferramenta interativa que produz uma configuração pronta para uso no seu cliente de agente de IA preferido.

Configuração manual

Se você preferir configurar as coisas manualmente, o método mais simples é usar nossa imagem de contêiner em sonarsource/sonarqube-mcp. Use sonarsource/sonarqube-mcp para atualizações automáticas (com --pull=always), ou fixe em uma tag de versão (ex.: sonarsource/sonarqube-mcp:1.19.0.2785) para implantações reproduzíveis. Leia abaixo se quiser compilar localmente.

Nota: Embora os exemplos abaixo usem docker, qualquer runtime de contêiner compatível com OCI funciona (ex.: Podman, nerdctl). Basta substituir docker pela sua ferramenta preferida.

Antigravity

O Servidor MCP do SonarQube está disponível na MCP Store do Antigravity. Siga estas instruções:

  1. Abra o Painel Lateral do Agente
  2. Clique nos três pontos (...) no canto superior direito e selecione Servidores MCP
  3. Pesquise por SonarQube e selecione Instalar
  4. Forneça o token de usuário do SonarQube necessário. Você também pode fornecer sua chave de organização para o SonarQube Cloud ou a URL do SonarQube se estiver conectando ao SonarQube Server.

Para SonarQube Cloud US, defina a URL como https://sonarqube.us.

Alternativamente, você pode configurar manualmente o servidor via mcp_config.json:

  • Para conectar com o SonarQube Cloud:

No Painel Lateral do Agente, clique nos três pontos (...) -> MCP Store -> Gerenciar Servidores MCP -> Ver configuração bruta e adicione o seguinte:

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

Para SonarQube Cloud US, adicione manualmente "SONARQUBE_URL": "https://sonarqube.us" à seção env e "-e", "SONARQUBE_URL" ao array args.

  • Para conectar com o 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
  • Para conectar com o 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

Para SonarQube Cloud US, adicione --env SONARQUBE_URL=https://sonarqube.us ao comando.

  • Para conectar com o 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

Edite manualmente o arquivo de configuração em ~/.codex/config.toml e adicione a seguinte configuração:

  • Para conectar com o 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>" }

Para SonarQube Cloud US, adicione "SONARQUBE_URL" = "https://sonarqube.us" à seção env e "-e", "SONARQUBE_URL" ao array args.

  • Para conectar com o 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
  • Para conectar com o SonarQube Cloud:

Install for SonarQube Cloud

Para SonarQube Cloud US, adicione manualmente "SONARQUBE_URL": "https://sonarqube.us" à seção env na sua configuração MCP após a instalação.

  • Para conectar com o SonarQube Server:

Install for SonarQube Server

Gemini CLI

Nota: A extensão do Gemini CLI foi movida para o repositório sonarqube-agent-plugins. Instale-a a partir de lá daqui em diante.

Você pode instalar nossa extensão de servidor MCP usando o seguinte comando:

gemini extensions install https://github.com/SonarSource/sonarqube-agent-plugins

Você precisará definir as variáveis de ambiente necessárias antes de iniciar o Gemini:

Variáveis de ambiente necessárias:

  • Para SonarQube Cloud:

    • SONARQUBE_TOKEN - Seu token do SonarQube Cloud
    • SONARQUBE_ORG - Sua chave de organização
    • SONARQUBE_URL - (Opcional) Defina como https://sonarqube.us para SonarQube Cloud US
  • Para SonarQube Server:

    • SONARQUBE_TOKEN - Seu token de USUÁRIO do SonarQube Server
    • SONARQUBE_URL - Sua URL do SonarQube Server

Após a instalação, a extensão será instalada em <home>/.gemini/extensions/sonarqube/gemini-extension.json.

GitHub Copilot CLI

Após iniciar o Copilot CLI, execute o seguinte comando para adicionar o servidor MCP do SonarQube:

/mcp add

Você precisará fornecer diferentes informações sobre o servidor MCP; use a tecla Tab para navegar entre os campos.

  • Para conectar com o 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: *

Para SonarQube Cloud US, adicione -e, SONARQUBE_URL aos Argumentos e SONARQUBE_URL=https://sonarqube.us às Variáveis de Ambiente.

  • Para conectar com o 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: *

O arquivo de configuração está localizado em ~/.copilot/mcp-config.json.

Agente de codificação do GitHub Copilot

O agente de codificação do GitHub Copilot pode aproveitar o servidor MCP do SonarQube diretamente no seu CI/CD.

Para adicionar os segredos ao seu ambiente do Copilot, siga a documentação do Copilot. Apenas segredos com nomes prefixados com COPILOT_MCP_ estarão disponíveis para sua configuração MCP.

No seu repositório do GitHub, navegue até Configurações -> Copilot -> Agente de codificação e adicione a seguinte configuração na seção de configuração MCP:

  • Para conectar com o 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": ["*"]
    }
  }
}

Para SonarQube Cloud US, adicione "-e", "SONARQUBE_URL" ao array args e "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL" à seção env, depois defina o segredo COPILOT_MCP_SONARQUBE_URL=https://sonarqube.us.

  • Para conectar com o 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

Crie um arquivo .kiro/settings/mcp.json no diretório do seu workspace (ou edite se já existir) e adicione a seguinte configuração:

  • Para conectar com o 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": []
    }
  }
}

Para SonarQube Cloud US, adicione "-e", "SONARQUBE_URL" ao array args e "SONARQUBE_URL": "https://sonarqube.us" à seção env.

  • Para conectar com o 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

Você pode usar os seguintes botões para simplificar o processo de instalação no VS Code.

Install for SonarQube Cloud

Para SonarQube Cloud US, adicione manualmente "SONARQUBE_URL": "https://sonarqube.us" à seção env na sua configuração MCP após a instalação.

Install for SonarQube Server

Windsurf

O Servidor MCP do SonarQube está disponível como um plugin do Windsurf. Siga estas instruções:

  1. Abra as Configurações do Windsurf > Cascade > Servidores MCP e selecione Abrir MCP Marketplace
  2. Pesquise por sonarqube no Cascade MCP Marketplace
  3. Escolha o Servidor MCP do SonarQube e selecione Instalar
  4. Adicione o token de usuário do SonarQube necessário. Em seguida, adicione a chave de organização se quiser conectar com o SonarQube Cloud, ou a URL do SonarQube se quiser conectar ao SonarQube Server ou Community Build.

Para SonarQube Cloud US, defina a URL como https://sonarqube.us.

Zed

Navegue até a visualização Extensões no Zed e pesquise por Servidor MCP do SonarQube. Ao instalar a extensão, você será solicitado a fornecer as variáveis de ambiente necessárias:

  • Ao usar o SonarQube Cloud:
{
  "sonarqube_token": "YOUR_SONARQUBE_TOKEN",
  "sonarqube_org": "SONARQUBE_ORGANIZATION_KEY",
  "docker_path": "DOCKER_PATH"
}

Para SonarQube Cloud US, adicione "sonarqube_url": "https://sonarqube.us" à configuração.

  • Ao usar o SonarQube Server:
{
  "sonarqube_token": "YOUR_SONARQUBE_USER_TOKEN",
  "sonarqube_url": "YOUR_SONARQUBE_SERVER_URL",
  "docker_path": "DOCKER_PATH"
}

O docker_path é o caminho para um executável docker. Exemplos:

Linux/macOS: /usr/bin/docker ou /usr/local/bin/docker

Windows: C:\Program Files\Docker\Docker\resources\bin\docker.exe

💡 Dica: Recomendamos puxar a imagem mais recente regularmente ou antes de relatar problemas para garantir que você tenha os recursos e correções mais atualizados.

Instalação manual

Você pode instalar manualmente o servidor MCP do SonarQube copiando o seguinte trecho no arquivo de configuração dos servidores MCP:

  • Para conectar com o 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>"
    }
  }
}
  • Para conectar com o 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>"
    }
  }
}

Integração com o SonarQube para IDE

O Servidor MCP do SonarQube pode se integrar ao SonarQube para IDE para aprimorar ainda mais seu fluxo de trabalho de desenvolvimento, fornecendo melhor análise de código e insights diretamente no seu IDE.

Configuração

Ao usar o SonarQube para IDE, a variável de ambiente SONARQUBE_IDE_PORT deve ser definida com o número de porta correto. O SonarQube para VS Code inclui um botão de Instalação Rápida, que define automaticamente a configuração de porta correta.

Por exemplo, com o 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>"
    }
  }
}

Ao executar o servidor MCP em um contêiner no Linux, o contêiner não pode acessar o servidor incorporado do SonarQube para IDE em execução em localhost. Para permitir que o contêiner se conecte ao servidor do SonarQube para IDE, adicione a opção --network=host ao seu comando de execução do contêiner.

Configuração

Dependendo do seu ambiente, você deve fornecer variáveis de ambiente específicas.

Base

Você deve adicionar a seguinte variável ao executar o Servidor MCP:

Variável de ambienteDescrição
STORAGE_PATHCaminho absoluto obrigatório para um diretório gravável onde o Servidor MCP do SonarQube armazenará seus arquivos (ex.: para criação, atualizações e persistência); é fornecido automaticamente ao usar a imagem de contêiner
SONARQUBE_PROJECT_KEYChave de projeto padrão opcional. Quando definida, todas as ferramentas que exigem uma chave de projeto usarão este valor automaticamente — o parâmetro projectKey é removido completamente do esquema delas. Útil ao trabalhar em um único projeto.
SONARQUBE_IDE_PORTNúmero de porta opcional entre 64120 e 64130 usado para conectar o Servidor MCP do SonarQube ao SonarQube para IDE.
SONARQUBE_DEBUG_ENABLEDQuando definido como true, ativa o registro de depuração. Os logs de depuração são gravados tanto no arquivo de log quanto no STDERR. Útil para solucionar problemas de conectividade ou configuração. Padrão: false.
SONARQUBE_LOG_TO_FILE_DISABLEDQuando definido como true, desativa completamente a gravação de logs em disco. Nenhum arquivo de log será criado em STORAGE_PATH/logs/. Útil em ambientes conteinerizados ou efêmeros onde o registro em arquivo é indesejável. Padrão: false.

Montagem do Workspace (Reduzindo o Inchaço do Contexto)

Por padrão, a ferramenta de análise analyze_code_snippet exige que o agente passe o conteúdo completo do arquivo como um argumento fileContent. Para arquivos grandes ou ao analisar muitos arquivos em uma sessão, isso aumenta significativamente o uso da janela de contexto e o custo. Solução: monte seu diretório de projeto no contêiner em /app/mcp-workspace. Quando essa montagem for detectada, o servidor lê os arquivos diretamente do disco usando o argumento filePath relativo ao projeto — o conteúdo do arquivo nunca passa pelo contexto do agente.

{
  "args": [
    "run", "-i", "--rm", "--init", "--pull=always",
    "-e", "SONARQUBE_TOKEN",
    "-e", "SONARQUBE_ORG",
    "-v", "/path/to/your/project:/app/mcp-workspace",
    "sonarsource/sonarqube-mcp"
  ]
}

Quando a montagem está ativa:

  • run_advanced_code_analysis fica disponível se sua organização tiver direito a ele
  • analyze_code_snippet: filePath é obrigatório e fileContent não é usado — o servidor resolve o arquivo da mesma forma

Ativação Seletiva de Ferramentas

Por padrão, apenas conjuntos de ferramentas importantes são habilitados para reduzir a sobrecarga de contexto. Você pode habilitar conjuntos adicionais conforme necessário.

Variável de ambienteDescrição
SONARQUBE_TOOLSETSLista separada por vírgulas de conjuntos de ferramentas a habilitar. Quando definida, apenas esses conjuntos estarão disponíveis. Se não definida, os conjuntos importantes padrão são habilitados (analysis, ide, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag). Nota: O conjunto de ferramentas projects está sempre habilitado, pois é necessário para encontrar chaves de projeto para outras operações. As ferramentas de contexto Vortex (nome antigo: Context Augmentation/CAG) e as ferramentas de análise Vortex (nome antigo: Advanced Analysis/A3S) estão disponíveis apenas no modo stdio e compartilham um único direito de organização combinado — uma organização deve ter direito a ambos para usar qualquer um deles. No SonarQube Server, o stdio lista o contexto Vortex e run_advanced_code_analysis quando ambos os hubs CAG e A3S têm direito. Prefira a chave unificada do conjunto de ferramentas vortex. As chaves obsoletas cag e analysis ainda funcionam; um aviso de inicialização e uma nota de depreciação nas instruções do servidor são emitidos quando elas são usadas sem vortex. No modo Streamable HTTP, os clientes podem enviar um cabeçalho HTTP SONARQUBE_TOOLSETS para restringir ainda mais isso por solicitação, mas não podem habilitar conjuntos de ferramentas além daqueles com os quais o servidor foi iniciado (veja Streamable HTTP transport abaixo).
SONARQUBE_READ_ONLYQuando definido como true, habilita o modo somente leitura que desativa todas as operações de escrita (por exemplo, alterar o status de um problema). Esse filtro é cumulativo com SONARQUBE_TOOLSETS se ambos forem definidos. Padrão: false. No modo Streamable HTTP, os clientes podem enviar um cabeçalho HTTP SONARQUBE_READ_ONLY para restringir ainda mais solicitações individuais a somente leitura, mas não podem remover uma restrição de somente leitura no nível do servidor (veja Streamable HTTP transport abaixo).
Conjuntos de Ferramentas Disponíveis
Conjunto de ferramentasChaveDescrição
AnáliseanalysisFerramentas de análise de código (análise local via analyze_code_snippet, obsoleto em favor de analyze_file_list/análise Vortex)
IDEideFerramentas de ponte SonarQube para IDE (análise de arquivo, alternância de análise automática) — atualmente também incluídas em analysis
ProblemasissuesPesquisar e gerenciar problemas do SonarQube
Security Hotspotssecurity-hotspotsPesquisar e revisar Security Hotspots
ProjetosprojectsNavegar e pesquisar projetos do SonarQube
Quality Gatesquality-gatesAcessar quality gates e seu status
RegrasrulesNavegar e pesquisar regras do SonarQube
FontessourcesAcessar código-fonte e informações de SCM
DuplicaçõesduplicationsEncontrar duplicações de código entre projetos
MedidasmeasuresRecuperar métricas e medidas (inclui ferramentas de medidas e métricas)
LinguagenslanguagesListar linguagens de programação suportadas
PortfóliosportfoliosGerenciar portfólios e empresas (Cloud e Server)
SistemasystemFerramentas de administração do sistema (apenas Server)
WebhookswebhooksGerenciar webhooks
Riscos de Dependênciasdependency-risksAnalisar riscos de dependências e problemas de segurança (SCA)
CoberturacoverageFerramentas de análise e melhoria de cobertura de testes
Contexto VortexcagFerramentas de contexto Vortex — apenas stdio. Obsoleto em favor de vortex (nome antigo: Context Augmentation/CAG)
VortexvortexConjunto de ferramentas unificado, recomendado, que apresenta ferramentas de contexto Vortex e análise Vortex sob um único nome (apenas stdio; Cloud precisa de direito de organização combinado; Server precisa de ambos os hubs com direito)
Prontidão Agênticaagentic-readinessFerramentas de Avaliação de Prontidão Agêntica (SonarQube Cloud, requer direito de organização)

Exemplos

Habilitar conjuntos de ferramentas de análise, problemas e quality gates (usando Docker com 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

Nota: O conjunto de ferramentas projects está sempre habilitado automaticamente, então você não precisa incluí-lo em SONARQUBE_TOOLSETS.

Habilitar modo somente leitura (usando Docker com 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

Para habilitar a funcionalidade completa, as seguintes variáveis de ambiente devem ser definidas antes de iniciar o servidor:

Variável de ambienteDescriçãoObrigatória
SONARQUBE_TOKENSeu token do SonarQube CloudSim
SONARQUBE_ORGSua chave de organização do SonarQube CloudSim
SONARQUBE_URLURL personalizada do SonarQube Cloud (padrão: https://sonarcloud.io). Use isso para SonarQube Cloud US: https://sonarqube.usNão

Exemplos:

  • SonarQube Cloud: Apenas SONARQUBE_TOKEN e SONARQUBE_ORG são necessários
  • SonarQube Cloud US: Defina SONARQUBE_TOKEN, SONARQUBE_ORG e SONARQUBE_URL=https://sonarqube.us

SonarQube Server

Variável de ambienteDescriçãoObrigatória
SONARQUBE_TOKENSeu token de USUÁRIO do SonarQube ServerSim
SONARQUBE_URLURL do seu SonarQube ServerSim

Requisito de versão: SonarQube Server 2025.1 (SQS) ou 25.1 (SonarQube Community Build) ou posterior é necessário. Na inicialização, o servidor MCP lê a versão da instância conectada e encerra com erro se ela for muito antiga (por exemplo, versões legadas 9.x/10.x do Server e Community Build 24.x não são suportadas). O SonarQube Cloud não está sujeito a essa verificação.

⚠️ A conexão com o SonarQube Server requer um token do tipo USER e não funcionará corretamente se tokens de projeto ou tokens globais forem usados.

💡 Dica de configuração (modo stdio): A presença de SONARQUBE_ORG determina se você está se conectando ao SonarQube Cloud ou ao Server. Se SONARQUBE_ORG estiver definido, o SonarQube Cloud é usado; caso contrário, o SonarQube Server é usado.

Modos de Transporte

A especificação MCP define dois mecanismos de transporte: Stdio e Streamable HTTP. O SonarQube MCP Server suporta ambos:

Transporte MCPModo do servidorUso típico
StdioPadrão (sem SONARQUBE_TRANSPORT)Clientes MCP locais que iniciam o servidor como subprocesso (Cursor, Claude Code, VS Code, etc.)
Streamable HTTPSONARQUBE_TRANSPORT=http ou httpsImplantações remotas ou multiusuário; clientes se conectam a /mcp via HTTP(S) (ex.: Windsurf com URL de servidor auto-hospedado)

Nota: Streamable HTTP é o transporte de rede MCP atual. O transporte HTTP somente SSE de versões anteriores do MCP está obsoleto e não é suportado.

1. Stdio (Padrão - Recomendado para Desenvolvimento Local)

O modo recomendado para desenvolvimento local e configurações de usuário único, usado pela maioria dos clientes MCP.

Exemplo - Docker com 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)

Transporte Streamable HTTP não criptografado. Use HTTPS para implantações multiusuário.

⚠️ Não recomendado: Use Stdio para desenvolvimento local ou HTTPS (Streamable HTTP) para implantações de produção multiusuário.

Variável de ambienteDescriçãoPadrão
SONARQUBE_TRANSPORTDefina como http para habilitar o transporte Streamable HTTPNão definido (stdio)
SONARQUBE_HTTP_PORTNúmero da porta (1024-65535)8080
SONARQUBE_HTTP_HOSTHost para vincular (padrão é localhost por segurança)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSOrigens de navegador separadas por vírgula permitidas para CORS (ex.: https://my-app.example.com)Não definido
SONARQUBE_MCP_IN_CONTAINERDefina como true ao executar dentro de um contêiner. A imagem Docker oficial define isso automaticamente; defina você mesmo ao usar outros runtimes OCI (Podman, Kubernetes, Nomad, etc.).false

Nota: No modo Streamable HTTP (HTTP ou HTTPS), o servidor é sem estado — cada solicitação do cliente deve incluir um cabeçalho Authorization: Bearer <token> com o token SonarQube do próprio usuário. Para o SonarQube Cloud, a organização é resolvida da seguinte forma:

  • Se SONARQUBE_ORG estiver definido na inicialização do servidor, todas as solicitações serão roteadas para essa organização. Os clientes não devem enviar um cabeçalho SONARQUBE_ORG — fazer isso resultará em erro.
  • Se SONARQUBE_ORG não estiver definido na inicialização do servidor, cada cliente deve fornecer um cabeçalho SONARQUBE_ORG em cada solicitação. Os clientes também podem restringir as ferramentas visíveis por solicitação fornecendo cabeçalhos SONARQUBE_TOOLSETS e/ou SONARQUBE_READ_ONLY; eles aplicam filtragem adicional além da configuração no nível do servidor — eles só podem reduzir o escopo, nunca expandi-lo. Nenhum estado de sessão é mantido entre solicitações.

Obsoleto: O cabeçalho de solicitação SONARQUBE_TOKEN ainda é aceito para compatibilidade retroativa, mas será removido em uma versão futura. Migre para Authorization: Bearer <token>.

3. HTTPS (Streamable HTTP sobre TLS) (Recomendado para Implantações de Produção Multiusuário)

Transporte Streamable HTTP seguro com criptografia TLS. Requer certificados SSL.

✅ Recomendado para Produção: Use HTTPS ao implantar o servidor MCP para vários usuários via Streamable HTTP. O servidor vincula-se a 127.0.0.1 (localhost) por padrão por segurança.

Variável de ambienteDescriçãoPadrão
SONARQUBE_TRANSPORTDefina como https para habilitar o transporte Streamable HTTP sobre TLSNão definido (stdio)
SONARQUBE_HTTP_PORTNúmero da porta (normalmente 8443 para HTTPS)8080
SONARQUBE_HTTP_HOSTHost para vincular (padrão é localhost por segurança)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSOrigens de navegador separadas por vírgula permitidas para CORS (ex.: https://my-app.example.com)Não definido
SONARQUBE_MCP_IN_CONTAINERDefina como true ao executar dentro de um contêiner. A imagem Docker oficial define isso automaticamente; defina você mesmo ao usar outros runtimes OCI (Podman, Kubernetes, Nomad, etc.).false

Configuração de Certificado SSL (Opcional):

Variável de ambienteDescriçãoPadrão
SONARQUBE_HTTPS_KEYSTORE_PATHCaminho para o arquivo de keystore (.p12 ou .jks)/etc/ssl/mcp/keystore.p12
SONARQUBE_HTTPS_KEYSTORE_PASSWORDSenha do keystoresonarlint
SONARQUBE_HTTPS_KEYSTORE_TYPETipo de keystore (PKCS12 ou JKS)PKCS12

Exemplo - Docker com SonarQube Cloud:

Nota: Ao executar em um contêiner, defina SONARQUBE_HTTP_HOST=0.0.0.0 para que o contêiner escute em todas as interfaces e o mapeamento de portas do runtime funcione, e defina SONARQUBE_MCP_IN_CONTAINER=true para informar ao servidor que ele está dentro de um contêiner. A imagem Docker oficial define o último automaticamente; defina você mesmo ao usar outros runtimes OCI (Podman, Kubernetes, Nomad, etc.). O sinalizador de porta do lado do host controla quem pode alcançar o servidor de fora do contêiner. SONARQUBE_HTTP_HOST=0.0.0.0 controla apenas onde o servidor escuta dentro do contêiner — o CORS do navegador ainda permite origens localhost por padrão.

Para um servidor executando localmente na sua máquina (acessível apenas a partir de 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

Para um servidor acessível a partir da rede (implantações remotas):

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

Configuração do Cliente (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"
      }
    }
  }
}

Configuração do Cliente (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"
      }
    }
  }
}

Nota: SONARQUBE_TOOLSETS e SONARQUBE_READ_ONLY são cabeçalhos opcionais por solicitação que restringem o conjunto de ferramentas no nível do servidor para aquela solicitação específica. Eles só podem reduzir o escopo — não podem habilitar conjuntos de ferramentas ou remover restrições além do que o servidor foi iniciado.

Nota: Para desenvolvimento local, use o transporte Stdio (o padrão). HTTPS Streamable HTTP é destinado a implantações de produção multiusuário com certificados SSL adequados.

Endpoints de Serviço

Ao executar no modo Streamable HTTP (http ou https), o servidor expõe alguns endpoints de serviço não autenticados além do endpoint MCP em /mcp. Eles são destinados ao uso serviço a serviço (monitoramento, orquestração, verificações de compatibilidade do cliente) e não exigem um cabeçalho Authorization.

EndpointMétodoDescriçãoExemplo de resposta
/healthGETSonda de atividade. Retorna 200 OK com corpo vazio assim que o servidor estiver aceitando solicitações.(corpo vazio)
/infoGETRetorna a versão do servidor MCP como JSON. Útil para verificar a versão do servidor implantado.{"version":"1.16.0"}

Esses endpoints não estão disponíveis ao executar com o transporte Stdio.

Certificados Personalizados

Se o seu SonarQube Server usar um certificado autoassinado ou um certificado de uma Autoridade Certificadora (CA) privada, você pode adicionar certificados personalizados ao contêiner que serão instalados automaticamente.

Configuração

Usando Montagem de Volume

Monte um diretório contendo seus certificados ao executar o contêiner:

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

Formatos de Certificado Suportados

O contêiner suporta os seguintes formatos de certificado:

  • Arquivos .crt (codificados em PEM ou DER)
  • Arquivos .pem (codificados em PEM)

Configuração MCP com Certificados

Ao usar certificados personalizados, você pode modificar sua configuração MCP para montar os certificados:

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

Nota: Executando o servidor a partir de um JAR em vez do contêiner? A montagem de volume acima instala certificados no armazenamento de confiança do SO do contêiner, que o servidor também lê. Se você não puder usar o armazenamento de confiança do SO — notavelmente no Windows, onde ele não é consultado — aponte a JVM para um truststore Java contendo o certificado da CA: -Djavax.net.ssl.trustStore=/path/to/truststore.p12 -Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.trustStorePassword=<passphrase>. Ele é adicionado além dos certificados confiáveis padrão.

Proxy

O SonarQube MCP Server suporta proxies HTTP e SOCKS5 por meio das propriedades padrão de proxy do sistema Java.

Configuração

Proxy HTTP/HTTPS

Você pode configurar as definições de proxy usando propriedades do sistema Java. Elas podem ser definidas como variáveis de ambiente ou passadas como argumentos da JVM.

Propriedades Comuns de Proxy:

PropriedadeDescriçãoExemplo
http.proxyHostNome do host do proxy HTTPproxy.example.com
http.proxyPortPorta do proxy HTTP8080
https.proxyHostNome do host do proxy HTTPSproxy.example.com
https.proxyPortPorta do proxy HTTPS8443
http.nonProxyHostsHosts que ignoram o proxy (separados por pipe)localhost|127.0.0.1|*.internal.com

Autenticação de Proxy HTTP/HTTPS:

PropriedadeDescriçãoExemplo
http.proxyUserNome de usuário do proxy HTTPmyuser
http.proxyPasswordSenha do proxy HTTPmypassword
https.proxyUserNome de usuário do proxy HTTPSmyuser
https.proxyPasswordSenha do proxy HTTPSmypassword

Proxy SOCKS5

Proxies SOCKS5 são suportados.

PropriedadeDescriçãoPadrãoExemplo
socksProxyHostHostname do proxy SOCKS5—localhost
socksProxyPortPorta do proxy SOCKS510801080
java.net.socks.usernameNome de usuário do SOCKS5 (se autenticação for necessária)—myuser
java.net.socks.passwordSenha do SOCKS5 (se autenticação for necessária)—mypassword

Certificado do Cliente (Mutual TLS)

Se o seu servidor SonarQube exigir que os clientes apresentem um certificado durante o handshake TLS (mutual TLS), você pode fornecer um keystore PKCS12 montando-o no contêiner e passando sua localização via JAVA_OPTS.

Configuração

Usando um keystore PKCS12

Monte seu arquivo .p12 ou .pfx no contêiner e defina a variável de ambiente JAVA_OPTS com as propriedades do keystore:

docker run --init --pull=always -i --rm \
  -v /path/to/client.p12:/etc/ssl/mcp/client.p12:ro \
  -e JAVA_OPTS="-Djavax.net.ssl.keyStore=/etc/ssl/mcp/client.p12 -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=<passphrase>" \
  -e SONARQUBE_TOKEN="<token>" \
  -e SONARQUBE_URL="<url>" \
  sonarsource/sonarqube-mcp

Nota: O arquivo de certificado deve ser legível pelo processo do contêiner. Verifique e corrija as permissões se necessário:

ls -la /path/to/client.p12       # procure por -rw-r--r-- (644) ou mais amplo
chmod 644 /path/to/client.p12    # conceda acesso de leitura ao usuário do contêiner

Omita -Djavax.net.ssl.keyStorePassword se o keystore não tiver senha. Observe que a senha usada aqui ficaria visível através de docker inspect ou da lista de processos.

Configuração do MCP com um Certificado do Cliente

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

Usando um keystore PKCS12 com um JAR independente

Ao executar o servidor a partir de um JAR, passe as propriedades do keystore como argumentos JVM antes de -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>

Omita -Djavax.net.ssl.keyStorePassword se o keystore não tiver senha.

Configuração do MCP com um Certificado do Cliente (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>"
    }
  }
}

Nota: Arquivos de certificado e chave PEM (arquivos .crt/.key separados) devem ser convertidos para o formato PKCS12 primeiro. Use openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 para convertê-los.

Ferramentas

Análise

  • analyze_code_snippet - Analisar o conteúdo do arquivo com os analisadores do SonarQube para identificar problemas de qualidade de código e segurança. Sempre analisa o conteúdo completo do arquivo para precisão. Opcionalmente, filtra os resultados para um trecho de código específico.

    Obsoleto: analyze_code_snippet será removido em uma versão futura. Conecte o SonarQube for IDE para usar analyze_file_list, ou habilite a análise Vortex para sua organização usar run_advanced_code_analysis (veja abaixo).

    Uso:

    • Com workspace montado (recomendado): passe filePath (relativo ao projeto) — o servidor lê o arquivo diretamente, mantendo o conteúdo do arquivo fora da janela de contexto do agente
    • Sem montagem do workspace: passe o fileContent completo para análise completa do arquivo (relata todos os problemas)
    • Adicione codeSnippet opcional para filtrar resultados - apenas problemas dentro do trecho serão relatados (localização do trecho detectada automaticamente)

    Parâmetros:

    • projectKey - A chave do projeto SonarQube - String obrigatória (Ignorada quando SONARQUBE_PROJECT_KEY está definido)
    • filePath - Caminho relativo ao projeto do arquivo a ser analisado (ex.: src/main/java/MyClass.java). Usado quando o workspace está montado em /app/mcp-workspace - String
    • fileContent - Conteúdo completo do arquivo como string. Obrigatório quando o workspace não está montado - String
    • codeSnippet - Trecho de código para filtrar problemas (deve corresponder ao conteúdo em fileContent) - String
    • language - Linguagem do código (ex.: 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - String
    • scope - Escopo do arquivo: MAIN ou TEST (padrão: MAIN) - String

    Linguagens suportadas: Java, Kotlin, Python, Ruby, Go, JavaScript (js, jsx), TypeScript (ts, tsx), JSP, PHP, XML, HTML, CSS, CloudFormation, Kubernetes, Terraform, Azure Resource Manager, Ansible, Docker, Detecção de segredos

Quando a integração com o SonarQube for IDE está habilitada: (essas duas ferramentas são marcadas tanto no conjunto de ferramentas analysis quanto no ide)

  • analyze_file_list - Analisar arquivos no diretório de trabalho atual usando o SonarQube for IDE. Esta ferramenta se conecta a uma instância em execução do SonarQube for IDE para realizar análise de qualidade de código em uma lista de arquivos.

    • file_absolute_paths - Lista de caminhos absolutos de arquivos para analisar - String[] obrigatório
  • toggle_automatic_analysis - Ativar ou desativar a análise automática do SonarQube for IDE. Quando ativada, o SonarQube for IDE analisará automaticamente os arquivos conforme eles são modificados no diretório de trabalho. Quando desativada, a análise automática é desligada.

    • enabled - Ativar ou desativar a análise automática - Boolean obrigatório

No SonarQube Server, stdio lista ferramentas de contexto Vortex e run_advanced_code_analysis quando ambos os hubs CAG e A3S estão habilitados.

Quando a análise Vortex está habilitada:

Requer que o workspace esteja montado em /app/mcp-workspace

  • run_advanced_code_analysis - Executar análise Vortex em um único arquivo. A organização é inferida da configuração do MCP (SonarQube Server usa o placeholder UUID nil).
    • projectKey - A chave do projeto - String obrigatória (Ignorada quando SONARQUBE_PROJECT_KEY está definido)
    • branch - Nome do branch usado para recuperar o contexto de análise mais recente - String obrigatória
    • filePath - Caminho relativo ao projeto do arquivo a ser analisado (ex.: src/main/java/MyClass.java). - String obrigatória
    • fileScope - Define em qual escopo o arquivo se origina: 'MAIN' ou 'TEST' (padrão: MAIN) - String

Cobertura

  • search_files_by_coverage - Buscar arquivos em um projeto ordenados por cobertura (crescente - pior cobertura primeiro). Esta ferramenta ajuda a identificar arquivos que precisam de melhorias na cobertura de testes.

    • projectKey - A chave do projeto para buscar - String obrigatória (Ignorada quando SONARQUBE_PROJECT_KEY está definido)
    • branch - Nome opcional do branch para análise baseada em branch. Use list_branches para descobrir nomes válidos - String
    • pullRequest - Chave/ID opcional de pull request. Use list_pull_requests para descobrir chaves válidas - String
    • maxCoverage - Limite máximo de cobertura (0-100). Retorna apenas arquivos com cobertura <= este valor - Number
    • pageIndex - Índice da página (baseado em 1, padrão: 1) - Number
    • pageSize - Tamanho da página (padrão: 100, máximo: 500) - Number
  • get_file_coverage_details - Obter informações de cobertura linha por linha para um arquivo específico, incluindo quais linhas exatas não estão cobertas e quais têm branches parcialmente cobertos. Esta ferramenta ajuda a identificar precisamente onde adicionar cobertura de testes. Use após identificar arquivos com baixa cobertura via search_files_by_coverage.

    • key - Chave do arquivo (ex.: my_project:src/foo/Bar.java) - String obrigatória
    • branch - Nome opcional do branch para análise baseada em branch. Use list_branches para descobrir nomes válidos - String
    • pullRequest - Chave/ID opcional de pull request. Use list_pull_requests para descobrir chaves válidas - String
    • from - Primeira linha para analisar (baseada em 1, padrão: 1) - Number
    • to - Última linha para analisar (inclusiva). Se não especificada, todas as linhas são retornadas - Number

Riscos de Dependências

Nota: Os riscos de dependências estão disponíveis apenas ao conectar ao SonarQube Server 2025.4 Enterprise ou superior com o SonarQube Advanced Security habilitado.

  • search_dependency_risks - Buscar problemas de análise de composição de software (riscos de dependências) de um projeto SonarQube, emparelhados com versões que aparecem no projeto, aplicação ou portfólio analisado.
    • projectKey - Chave do projeto - String obrigatória (Ignorada quando SONARQUBE_PROJECT_KEY está definido)
    • branch - Nome opcional do branch para análise baseada em branch. Use list_branches para descobrir nomes válidos - String
    • pullRequest - Chave/ID opcional de pull request. Use list_pull_requests para descobrir chaves válidas - String
    • pageIndex - Índice opcional da página (baseado em 1, padrão: 1) - Integer
    • pageSize - Tamanho opcional da página. Deve ser maior que 0 e menor ou igual a 500 (padrão: 100) - Integer

Empresas

Nota: As empresas estão disponíveis apenas ao conectar ao SonarQube Cloud.

  • list_enterprises - Listar as empresas disponíveis no SonarQube Cloud às quais você tem acesso. Use esta ferramenta para descobrir IDs de empresas que podem ser usados com outras ferramentas.
    • enterpriseKey - Chave opcional da empresa para filtrar resultados - String

Problemas

  • change_sonar_issue_status - Alterar o status de um problema do SonarQube para "accept", "falsepositive" ou para "reopen" um problema.

    • key - Chave do problema - String obrigatória
    • status - Novo status do problema - Enum obrigatório {"accept", "falsepositive", "reopen"}
    • comment - Comentário opcional explicando a mudança de status - String
  • search_sonar_issues_in_projects - Buscar problemas do SonarQube nos projetos da minha organização.

    • projectKeys - Lista opcional de chaves de projetos SonarQube - String[]
    • branch - Nome opcional do branch para análise baseada em branch. Use list_branches para descobrir nomes válidos - String
    • pullRequest - Chave/ID opcional de pull request. Use list_pull_requests para descobrir chaves válidas - String
    • severities - Lista opcional de severidades para filtrar. Valores possíveis: INFO, LOW, MEDIUM, HIGH, BLOCKER - String[]
    • impactSoftwareQualities - Lista opcional de qualidades de software para filtrar. Valores possíveis: MAINTAINABILITY, RELIABILITY, SECURITY - String[]
    • issueStatuses - Lista opcional de status de problemas para filtrar. Valores possíveis: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - String[]
    • tags - Lista opcional de tags de problemas para filtrar. Tags são em minúsculas - String[]
    • inNewCodePeriod - Retornar apenas problemas no período de código novo. Requer exatamente uma entrada entre projectKeys e files - Boolean
    • issueKey - Chave opcional do problema para buscar um problema específico - String
    • pageIndex - Índice opcional da página (baseado em 1, padrão: 1) - Integer
    • pageSize - Tamanho opcional da página. Deve ser maior que 0 e menor ou igual a 500 (padrão: 100) - Integer

Hotspots de Segurança

  • search_security_hotspots - Buscar Hotspots de Segurança em um projeto SonarQube.

    • projectKey - Chave do projeto ou aplicação - String obrigatória (Ignorada quando SONARQUBE_PROJECT_KEY está definido)
    • hotspotKeys - Lista separada por vírgulas de chaves específicas de Hotspots de Segurança para recuperar - String[]
    • branch - Nome opcional do branch para análise baseada em branch. Use list_branches para descobrir nomes válidos - String
    • pullRequest - Chave/ID opcional de pull request. Use list_pull_requests para descobrir chaves válidas - String
    • files - Lista opcional de caminhos de arquivos para filtrar - String[]
    • status - Filtro opcional de status: TO_REVIEW, REVIEWED - String
    • resolution - Filtro opcional de resolução: FIXED, SAFE, ACKNOWLEDGED - String
    • sinceLeakPeriod - Filtrar hotspots criados desde o período de vazamento (código novo) - Boolean
    • onlyMine - Mostrar apenas hotspots atribuídos a mim - Boolean
    • pageIndex - Índice opcional da página (baseado em 1, padrão: 1) - Integer
    • pageSize - Tamanho opcional da página. Deve ser maior que 0 e menor ou igual a 500 (padrão: 100) - Integer
  • show_security_hotspot - Obter informações detalhadas sobre um Hotspot de Segurança específico, incluindo detalhes da regra, contexto do código, fluxos e comentários.

    • hotspotKey - Chave do Hotspot de Segurança - String obrigatória
  • change_security_hotspot_status - Revisar um Security Hotspot alterando seu status. Ao marcar como REVIEWED, você deve especificar uma resolução (FIXED, SAFE ou ACKNOWLEDGED).

    • hotspotKey - Chave do Security Hotspot - String Obrigatória
    • status - Novo status - Enum Obrigatório {"TO_REVIEW", "REVIEWED"}
    • resolution - Resolução quando o status for REVIEWED - Enum {"FIXED", "SAFE", "ACKNOWLEDGED"}
    • comment - Comentário de revisão opcional - String

Linguagens

  • list_languages - Lista todas as linguagens de programação suportadas nesta instância do SonarQube.
    • q - Padrão opcional para corresponder às chaves/nomes de linguagem - String

Medidas

  • get_component_measures - Obtém medidas do SonarQube para um componente (projeto, diretório, arquivo).
    • projectKey - A chave do projeto - String Obrigatória quando SONARQUBE_PROJECT_KEY não está configurado
    • branch - Nome do branch opcional para análise baseada em branch. Use list_branches para descobrir nomes válidos - String
    • metricKeys - Chaves de métricas opcionais para recuperar (ex.: ncloc, complexity, violations, coverage) - String[]
    • pullRequest - Chave/ID do pull request opcional. Use list_pull_requests para descobrir chaves válidas - String

Métricas

  • search_metrics - Pesquisa métricas do SonarQube.
    • pageIndex - Índice de página opcional baseado em 1 (padrão: 1) - Inteiro
    • pageSize - Tamanho da página opcional. Deve ser maior que 0 e menor ou igual a 500 (padrão: 100) - Inteiro

Portfólios

  • list_portfolios - Lista portfólios empresariais disponíveis no SonarQube com opções de filtragem e paginação.

    Para SonarQube Server:

    • q - Consulta de pesquisa opcional para filtrar portfólios por nome ou chave - String
    • favorite - Se verdadeiro, retorna apenas portfólios favoritos - Booleano
    • pageIndex - Número da página opcional baseado em 1 (padrão: 1) - Inteiro
    • pageSize - Tamanho da página opcional, máximo 500 (padrão: 100) - Inteiro

    Para SonarQube Cloud:

    • enterpriseId - UUID da empresa. Pode ser omitido apenas se o parâmetro 'favorite' for fornecido com valor verdadeiro - String
    • q - Consulta de pesquisa opcional para filtrar portfólios por nome - String
    • favorite - Obrigatório ser verdadeiro se o parâmetro 'enterpriseId' for omitido. Se verdadeiro, retorna apenas portfólios favoritados pelo usuário logado. Não pode ser verdadeiro quando 'draft' é verdadeiro - Booleano
    • draft - Se verdadeiro, retorna apenas rascunhos criados pelo usuário logado. Não pode ser verdadeiro quando 'favorite' é verdadeiro - Booleano
    • pageIndex - Índice opcional da página a buscar (padrão: 1) - Inteiro
    • pageSize - Tamanho opcional da página a buscar (padrão: 50) - Inteiro

Projetos

  • search_my_sonarqube_projects - Encontra projetos do SonarQube. A resposta é paginada.

    • pageIndex - Índice de página opcional baseado em 1 (padrão: 1) - Inteiro
    • pageSize - Tamanho da página opcional. Deve ser maior que 0 e menor ou igual a 500 (padrão: 500) - Inteiro
    • q - Consulta de pesquisa opcional para filtrar projetos por nome (correspondência parcial) ou chave (correspondência exata) - String
  • list_branches - Lista branches analisados para um projeto.

    • SonarQube Cloud: retorna branches de longa duração (LONG) e curta duração (SHORT) com campos type e mergeBranch. Filtro opcional branchTypes: ALL (padrão), LONG ou SHORT.
    • SonarQube Server: retorna todos os branches analisados (nome, quality gate, data da análise). Sem filtro type, mergeBranch ou branchTypes.
    • Use os nomes de branches retornados como parâmetro branch em outras ferramentas. Para análise de pull request, use list_pull_requests em vez disso.
    • projectKey - Chave do projeto (ex.: my_project) - String Obrigatória (Ignorada quando SONARQUBE_PROJECT_KEY está definido)
    • branchTypes - (Somente SonarQube Cloud) Filtro opcional: ALL (padrão), LONG ou SHORT - Enum {"ALL", "LONG", "SHORT"}
  • list_pull_requests - Lista todos os pull requests de um projeto. Use esta ferramenta para descobrir pull requests para análise decorada com PR (cobertura, problemas, quality gate). Retorna a chave/ID do pull request que pode ser usada com outras ferramentas. Para análise baseada em branch sem pull requests, use list_branches em vez disso.

    • projectKey - Chave do projeto (ex.: my_project) - String Obrigatória (Ignorada quando SONARQUBE_PROJECT_KEY está definido)

Quality Gates

  • get_project_quality_gate_status - Obtém o status do Quality Gate para o projeto SonarQube.

    • analysisId - ID da análise opcional - String
    • branch - Nome do branch opcional para análise baseada em branch. Use list_branches para descobrir nomes válidos - String
    • projectId - ID do projeto opcional - String
    • projectKey - Chave do projeto opcional - String
    • pullRequest - Chave/ID do pull request opcional. Use list_pull_requests para descobrir chaves válidas - String
  • list_quality_gates - Lista todos os quality gates no meu SonarQube.

Regras

  • show_rule - Mostra informações detalhadas sobre uma regra do SonarQube.
    • key - Chave da regra - String Obrigatória

Duplicações

  • search_duplicated_files - Pesquisa arquivos com duplicações de código em um projeto SonarQube. Por padrão, busca automaticamente todos os arquivos duplicados em todas as páginas (até 10.000 arquivos no máximo). Retorna apenas arquivos com duplicações.

    • projectKey - Chave do projeto - String Obrigatória (Ignorada quando SONARQUBE_PROJECT_KEY está definido)
    • branch - Nome do branch opcional para análise baseada em branch. Use list_branches para descobrir nomes válidos - String
    • pullRequest - Chave/ID do pull request opcional. Use list_pull_requests para descobrir chaves válidas - String
    • pageSize - Número opcional de resultados por página para paginação manual (máx.: 500). Se não especificado, busca automaticamente todos os arquivos duplicados - Inteiro
    • pageIndex - Número da página opcional para paginação manual (começa em 1). Se não especificado, busca automaticamente todos os arquivos duplicados - Inteiro
  • get_duplications - Obtém duplicações para um arquivo. Requer permissão de Browse no projeto do arquivo.

    • key - Chave do arquivo - String Obrigatória
    • branch - Nome do branch opcional para análise baseada em branch. Use list_branches para descobrir nomes válidos - String
    • pullRequest - Chave/ID do pull request opcional. Use list_pull_requests para descobrir chaves válidas - String

Fontes

  • get_raw_source - Obtém o código-fonte como texto bruto do SonarQube. Requer permissão 'See Source Code' no arquivo.

    • key - Chave do arquivo - String Obrigatória
    • branch - Nome do branch opcional para análise baseada em branch. Use list_branches para descobrir nomes válidos - String
    • pullRequest - Chave/ID do pull request opcional. Use list_pull_requests para descobrir chaves válidas - String
  • get_scm_info - Obtém informações de SCM dos arquivos de código-fonte do SonarQube. Requer permissão See Source Code no projeto do arquivo.

    • key - Chave do arquivo - String Obrigatória
    • commits_by_line - Agrupa linhas por commit do SCM se o valor for falso, caso contrário exibe commits para cada linha - String
    • from - Primeira linha a retornar. Começa em 1 - Número
    • to - Última linha a retornar (inclusiva) - Número

Sistema

Nota: As ferramentas de sistema estão disponíveis apenas ao conectar ao SonarQube Server.

  • get_system_health - Obtém o status de saúde da instância do SonarQube Server. Retorna GREEN (totalmente operacional), YELLOW (utilizável, mas precisa de atenção) ou RED (não operacional).

  • get_system_info - Obtém informações detalhadas sobre a configuração do sistema do SonarQube Server, incluindo estado da JVM, banco de dados, índices de pesquisa e configurações. Requer permissão 'Administer'.

  • get_system_logs - Obtém logs do sistema do SonarQube Server em formato texto simples. Requer permissão de administração do sistema.

    • name - Nome opcional dos logs a obter. Valores possíveis: access, app, ce, deprecation, es, web. Padrão: app - String
  • ping_system - Envia um ping ao sistema do SonarQube Server para verificar se está ativo. Retorna 'pong' como texto simples.

  • get_system_status - Obtém informações de estado sobre o SonarQube Server. Retorna status (STARTING, UP, DOWN, RESTARTING, DB_MIGRATION_NEEDED, DB_MIGRATION_RUNNING), versão e id.

Webhooks

  • create_webhook - Cria um novo webhook para a organização ou projeto do SonarQube. Requer permissão 'Administer' no projeto especificado, ou permissão global 'Administer'.

    • name - Nome do webhook - String Obrigatória
    • url - URL do webhook - String Obrigatória
    • projectKey - Chave do projeto opcional para webhook específico do projeto - String
    • secret - Segredo do webhook opcional para proteger o payload do webhook - String
  • list_webhooks - Lista todos os webhooks para a organização ou projeto do SonarQube. Requer permissão 'Administer' no projeto especificado, ou permissão global 'Administer'.

    • projectKey - Chave do projeto opcional para listar webhooks específicos do projeto - String

Aumento de Contexto

Ferramentas de Arquitetura
  • search_by_signature_patterns - Encontra elementos de código (classes, métodos, interfaces, ...) por suas assinaturas de declaração usando padrões regex.

    • include_code_regex_list - Lista de padrões regex para corresponder às assinaturas - String[] Obrigatória
    • exclude_code_regex_list - Lista de padrões regex para excluir dos resultados - String[]
    • include_glob - Padrão glob de filtro de arquivo (ex.: *.java) - String
    • exclude_glob - Padrão glob de exclusão de arquivo - String
    • fields - Lista separada por vírgulas de campos a incluir na resposta - String
    • limit - Número máximo de resultados a retornar (padrão: 10) - Inteiro
    • regex_lists_operator - Como combinar múltiplos padrões: OR (padrão) ou AND - String
  • search_by_body_patterns - Encontra elementos de código pelo corpo de implementação usando padrões regex. Útil para localizar onde APIs ou padrões são realmente usados.

    • include_code_regex_list - Lista de padrões regex para corresponder nos corpos de código - String[] Obrigatória
    • exclude_code_regex_list - Lista de padrões regex para excluir dos resultados - String[]
    • include_glob - Padrão glob de filtro de arquivo - String
    • exclude_glob - Padrão glob de exclusão de arquivo - String
    • fields - Lista separada por vírgulas de campos a incluir na resposta - String
    • limit - Número máximo de resultados a retornar (padrão: 10) - Inteiro
    • regex_lists_operator - Como combinar múltiplos padrões: OR (padrão) ou AND - String
  • get_upstream_call_flow - Rastreia quais funções chamam uma determinada função. Útil para encontrar todos os chamadores e pontos de entrada, e entender o que quebra se uma assinatura mudar.

    • fqn - Nome totalmente qualificado da função - String Obrigatória
    • depth - Profundidade da cadeia de chamadas (0=somente função, 1=chamadores diretos, etc.) - Inteiro
    • fields - Lista separada por vírgulas de campos a incluir na resposta - String
  • get_downstream_call_flow - Rastreia quais funções uma determinada função chama. Útil para análise de impacto e compreensão do fluxo de execução.

    • fqn - Nome totalmente qualificado da função - String Obrigatória
    • depth - Profundidade da cadeia de chamadas (0=somente função, 1=chamadas diretas, etc.) - Inteiro
    • fields - Lista separada por vírgulas de campos a incluir na resposta - String
  • get_source_code - Obtém o código-fonte completo (assinatura e corpo) para um elemento de código pelo seu nome totalmente qualificado.

    • fqn - Nome totalmente qualificado do elemento - String Obrigatória
    • fields - Lista separada por vírgulas de campos a incluir na resposta - String
  • get_type_hierarchy - Obtém a hierarquia completa de herança para uma estrutura semelhante a classe (classe, interface, enum, record, exceção, struct). Essencial para entender árvores de herança e refatoração.

    • fqn - Nome totalmente qualificado da estrutura semelhante a classe - String Obrigatória
    • fields - Lista separada por vírgulas de campos a incluir na resposta - String
  • get_references - Obtém referências de código diretas de entrada e saída para uma classe ou módulo. Retorna apenas referências diretas (não transitivas).

    • fqn - Nome totalmente qualificado da classe ou módulo - String Obrigatória
    • fields - Lista separada por vírgulas de campos a incluir na resposta - String
  • get_current_architecture - Obtém um grafo de arquitetura hierárquico filtrado por prefixo de caminho e profundidade. Útil para explorar a estrutura de módulos e dependências de alto nível.

    • depth - Profundidade da hierarquia (0=apenas raiz, 1=raiz + filhos, etc.) - Inteiro Obrigatório
    • path_prefix - Prefixo de caminho opcional para filtrar nós (ex.: com.example.service) - String
    • ecosystem - Ecossistema opcional para filtrar (java, cs, py, js, ts) - String
  • get_intended_architecture - Obtém restrições arquiteturais definidas pelo usuário que especificam quais módulos podem depender de outros.

Ferramentas de Diretrizes
  • get_guidelines - Obtém diretrizes de codificação com base em problemas de projeto do SonarQube, categorias de catálogo ou uma combinação de ambos.
    • mode - Modo de recuperação de diretrizes: project_based, category_based ou combined - String Obrigatória
    • categories - Lista de nomes de categorias (obrigatória para modos category_based e combined) - String[]
    • languages - Lista de idiomas alvo no formato de chave de repositório do SonarQube (obrigatória quando categories é fornecido) - String[]
    • file_paths - Lista opcional de caminhos de arquivo para filtrar diretrizes - String[]
Ferramentas de Dependências de Terceiros
  • check_dependency - Verifica uma dependência de terceiros quanto a vulnerabilidades de segurança, malware na cadeia de suprimentos e conformidade de licença antes de adicioná-la ou atualizá-la.
    • purl - URL do pacote (purl) com versão, conforme especificação purl. Formato: pkg:<type>/<namespace>/<name>@<version> (ex.: pkg:npm/lodash@4.17.21, pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1, pkg:pypi/django@3.2.0) - String Obrigatória
Variáveis de Ambiente de Aumento de Contexto
VariávelDescriçãoObrigatóriaPadrão
SONARQUBE_URLURL do SonarQube CloudSimhttps://sonarcloud.io
SONARQUBE_TOKENToken de autenticaçãoSimNenhum
SONARQUBE_ORGChave da organização no SonarQube CloudSimNenhum
SONARQUBE_PROJECT_KEYChave do projeto no SonarQube CloudSimNenhum
SONAR_SQ_BRANCHSubstituição explícita de branch do SonarQube *NãoNenhum
SONARQUBE_DEBUG_ENABLEDAtiva registro de depuração (para solução de problemas)NãoFalso
SONAR_LOG_LEVELNível de detalhamento do registro (TRACE, DEBUG, INFO, WARNING, ERROR)NãoINFO
  • A ser fornecido quando não estiver usando git, ou quando o nome do branch git não corresponder ao nome do branch no SonarQube.
Configuração Específica do Projeto (Recomendado)

Primeiro, exporte a variável de ambiente SONARQUBE_TOKEN com um Token de Acesso Pessoal (PAT) válido para o seu projeto.

# macOS/Linux (Bash/Zsh)
export SONARQUBE_TOKEN="{<YourUserToken>}"

Em seguida, monte o espaço de trabalho do projeto para dar ao servidor de Aumento de Contexto acesso direto aos seus arquivos de origem:

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

Importante: Em uma configuração com escopo de projeto, não coloque SONARQUBE_TOKEN no bloco de ambiente. Exporte-o como uma variável de ambiente (export SONARQUBE_TOKEN=...). O Docker o encaminhará para o contêiner via -e SONARQUBE_TOKEN.

Prontidão Agêntica

Nota: As ferramentas de Prontidão Agêntica estão disponíveis apenas no SonarQube Cloud e exigem que o recurso esteja habilitado para sua organização.

  • start_agentic_readiness_assessment - Inicia uma avaliação de prontidão agêntica para um projeto. Retorna imediatamente com o status PENDING e um assessmentId. Use get_agentic_readiness_assessment para consultar os resultados.

    • projectKey - A chave do projeto - String Obrigatória (Ignorada quando SONARQUBE_PROJECT_KEY está definido)
    • branch - Branch a avaliar. Omita para usar o branch padrão do projeto - String
  • get_agentic_readiness_assessment - Recupera o resultado de uma avaliação. Rechame com o mesmo assessmentId até que o status seja COMPLETED, FAILED ou INTERRUPTED. Quando concluído, retorna o nível geral e um detalhamento por pilar com ações recomendadas e evidências.

    • assessmentId - O ID da avaliação retornado por start_agentic_readiness_assessment - String Obrigatória
  • list_agentic_readiness_assessments - Lista todas as avaliações de um projeto, das mais recentes para as mais antigas. Use get_agentic_readiness_assessment para resultados completos no nível do pilar.

    • projectKey - A chave do projeto para listar avaliações - String Obrigatória (Ignorada quando SONARQUBE_PROJECT_KEY está definido)
    • branch - Filtra avaliações por nome de branch. Omita para listar avaliações de todos os branches - String
    • pageIndex - Índice de página baseado em 1 (padrão: 1) - Número
    • pageSize - Número de itens por página, máximo 100 (padrão: 50) - Número

Exemplos de Prompts

Depois de configurar o SonarQube MCP Server, aqui estão alguns exemplos de prompts para cenários comuns do mundo real:

Corrigindo um Quality Gate com Falha
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?
Verificações de Pré-Lançamento e Pré-Merge
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?
Melhorando a Qualidade do Código
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?
Entendendo e Corrigindo Problemas
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?
Gerenciamento de Segurança e Dependências
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.
Assistência de Revisão de Código
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.
Monitoramento de Saúde do Projeto
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?
Colaboração em Equipe
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?

Build

Prefira a imagem de contêiner sonarsource/sonarqube-mcp.

Para executar o servidor como um JAR autônomo sem Docker, baixe uma versão pré-compilada do repositório de binários do SonarSource. Toda versão publicada é disponibilizada lá como sonarqube-mcp-server-<version>.jar (por exemplo, sonarqube-mcp-server-1.19.0.2785.jar).

Executar a partir do JAR

Baixe o JAR da versão desejada no repositório de binários e configure seu cliente MCP para executá-lo com Java 21 ou posterior:

  • Para conectar com o 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>"
    }
  }
}
  • Para conectar com o 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>"
    }
  }
}
Build a partir do código-fonte

O SonarQube MCP Server requer um Java Development Kit (JDK) versão 21 ou posterior para compilar.

Execute o seguinte comando Gradle para limpar o projeto e compilar o aplicativo:

./gradlew clean build -x test

O arquivo JAR será criado em build/libs/.

Após adicionar ou atualizar dependências, regenere os arquivos de bloqueio:

./gradlew :dependencies --write-locks
./gradlew :its:dependencies --write-locks

Use a configuração Executar a partir do JAR acima, apontando <path_to_sonarqube_mcp_server_jar> para o JAR em build/libs/.

Solução de Problemas

Os logs do aplicativo são gravados no arquivo STORAGE_PATH/logs/mcp.log por padrão. Para desativar completamente o registro em arquivo, defina SONARQUBE_LOG_TO_FILE_DISABLED=true.

Problemas Comuns

"Versão do servidor SonarQube não suportada"

O servidor MCP verifica a versão do SonarQube Server conectado durante a inicialização. Se a instância for mais antiga que 2025.1 (SQS) ou 25.1 (SQCB), a inicialização falha com:

SonarQube server version is not supported, minimal version is SQS 2025.1 or SQCB 25.1

Solução: Atualize o SonarQube Server para uma versão suportada. Esta verificação se aplica apenas ao conectar ao SonarQube Server (SONARQUBE_URL sem SONARQUBE_ORG), não ao SonarQube Cloud.

"O recurso não está funcionando" ou "Faltando ferramentas/funcionalidades"

Você pode estar executando uma imagem Docker desatualizada. O Docker armazena imagens em cache localmente, então você não receberá atualizações automaticamente.

Solução: Atualize para a versão mais recente:

docker pull sonarsource/sonarqube-mcp

Após baixar a imagem mais recente, reinicie seu cliente MCP para usar a versão atualizada.

Opcionalmente, adicione o sinalizador --pull=always ao seu comando docker run para sempre verificar e baixar a versão mais recente:

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

"Quero fixar uma versão específica"

Navegue pelas tags disponíveis em sonarsource/sonarqube-mcp e referencie a versão desejada:

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

Na configuração do seu cliente MCP, use sonarsource/sonarqube-mcp:<version> em vez de sonarsource/sonarqube-mcp e remova --pull=always para que o Docker não atualize a imagem silenciosamente.

Dados e telemetria

Este servidor coleta dados de uso anônimos e os envia para a SonarSource para ajudar a melhorar o produto. Nenhum código-fonte ou endereço IP é coletado, e a SonarSource não compartilha os dados com mais ninguém. A coleta de telemetria pode ser desativada com a seguinte propriedade de sistema ou variável de ambiente: TELEMETRY_DISABLED=true. Clique aqui para ver uma amostra dos dados coletados.

Licença

Copyright 2025 SonarSource.

Licenciado sob a SONAR Source-Available License v1.0. Usar o SonarQube MCP Server em conformidade com esta documentação é um Propósito Não Competitivo e, portanto, permitido sob a SSAL.

Seu uso do SonarQube via MCP é regido pelos Termos de Serviço do SonarQube Cloud ou Termos e Condições do SonarQube Server, incluindo o uso dos Dados de Resultados exclusivamente para fins internos de desenvolvimento de software.