SonarQube
oficialFornece 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
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 substituirdockerpela sua ferramenta preferida.
Antigravity
O Servidor MCP do SonarQube está disponível na MCP Store do Antigravity. Siga estas instruções:
- Abra o Painel Lateral do Agente
- Clique nos três pontos (...) no canto superior direito e selecione Servidores MCP
- Pesquise por
SonarQubee selecione Instalar - 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:
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:
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 CloudSONARQUBE_ORG- Sua chave de organizaçãoSONARQUBE_URL- (Opcional) Defina comohttps://sonarqube.uspara SonarQube Cloud US
-
Para SonarQube Server:
SONARQUBE_TOKEN- Seu token de USUÁRIO do SonarQube ServerSONARQUBE_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.
Para SonarQube Cloud US, adicione manualmente "SONARQUBE_URL": "https://sonarqube.us" à seção env na sua configuração MCP após a instalação.
Windsurf
O Servidor MCP do SonarQube está disponível como um plugin do Windsurf. Siga estas instruções:
- Abra as Configurações do Windsurf > Cascade > Servidores MCP e selecione Abrir MCP Marketplace
- Pesquise por
sonarqubeno Cascade MCP Marketplace - Escolha o Servidor MCP do SonarQube e selecione Instalar
- 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=hostao 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 ambiente | Descrição |
|---|---|
STORAGE_PATH | Caminho 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_KEY | Chave 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_PORT | Número de porta opcional entre 64120 e 64130 usado para conectar o Servidor MCP do SonarQube ao SonarQube para IDE. |
SONARQUBE_DEBUG_ENABLED | Quando 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_DISABLED | Quando 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_analysisfica disponível se sua organização tiver direito a eleanalyze_code_snippet:filePathé obrigatório efileContentnã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 ambiente | Descrição |
|---|---|
SONARQUBE_TOOLSETS | Lista 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_ONLY | Quando 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 ferramentas | Chave | Descrição |
|---|---|---|
| Análise | analysis | Ferramentas de análise de código (análise local via analyze_code_snippet, obsoleto em favor de analyze_file_list/análise Vortex) |
| IDE | ide | Ferramentas de ponte SonarQube para IDE (análise de arquivo, alternância de análise automática) — atualmente também incluídas em analysis |
| Problemas | issues | Pesquisar e gerenciar problemas do SonarQube |
| Security Hotspots | security-hotspots | Pesquisar e revisar Security Hotspots |
| Projetos | projects | Navegar e pesquisar projetos do SonarQube |
| Quality Gates | quality-gates | Acessar quality gates e seu status |
| Regras | rules | Navegar e pesquisar regras do SonarQube |
| Fontes | sources | Acessar código-fonte e informações de SCM |
| Duplicações | duplications | Encontrar duplicações de código entre projetos |
| Medidas | measures | Recuperar métricas e medidas (inclui ferramentas de medidas e métricas) |
| Linguagens | languages | Listar linguagens de programação suportadas |
| Portfólios | portfolios | Gerenciar portfólios e empresas (Cloud e Server) |
| Sistema | system | Ferramentas de administração do sistema (apenas Server) |
| Webhooks | webhooks | Gerenciar webhooks |
| Riscos de Dependências | dependency-risks | Analisar riscos de dependências e problemas de segurança (SCA) |
| Cobertura | coverage | Ferramentas de análise e melhoria de cobertura de testes |
| Contexto Vortex | cag | Ferramentas de contexto Vortex — apenas stdio. Obsoleto em favor de vortex (nome antigo: Context Augmentation/CAG) |
| Vortex | vortex | Conjunto 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êntica | agentic-readiness | Ferramentas 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 ambiente | Descrição | Obrigatória |
|---|---|---|
SONARQUBE_TOKEN | Seu token do SonarQube Cloud | Sim |
SONARQUBE_ORG | Sua chave de organização do SonarQube Cloud | Sim |
SONARQUBE_URL | URL personalizada do SonarQube Cloud (padrão: https://sonarcloud.io). Use isso para SonarQube Cloud US: https://sonarqube.us | Não |
Exemplos:
- SonarQube Cloud: Apenas
SONARQUBE_TOKENeSONARQUBE_ORGsão necessários - SonarQube Cloud US: Defina
SONARQUBE_TOKEN,SONARQUBE_ORGeSONARQUBE_URL=https://sonarqube.us
SonarQube Server
| Variável de ambiente | Descrição | Obrigatória |
|---|---|---|
SONARQUBE_TOKEN | Seu token de USUÁRIO do SonarQube Server | Sim |
SONARQUBE_URL | URL do seu SonarQube Server | Sim |
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_ORGdetermina se você está se conectando ao SonarQube Cloud ou ao Server. SeSONARQUBE_ORGestiver 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 MCP | Modo do servidor | Uso típico |
|---|---|---|
| Stdio | Padrão (sem SONARQUBE_TRANSPORT) | Clientes MCP locais que iniciam o servidor como subprocesso (Cursor, Claude Code, VS Code, etc.) |
| Streamable HTTP | SONARQUBE_TRANSPORT=http ou https | Implantaçõ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 ambiente | Descrição | Padrão |
|---|---|---|
SONARQUBE_TRANSPORT | Defina como http para habilitar o transporte Streamable HTTP | Não definido (stdio) |
SONARQUBE_HTTP_PORT | Número da porta (1024-65535) | 8080 |
SONARQUBE_HTTP_HOST | Host para vincular (padrão é localhost por segurança) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Origens de navegador separadas por vírgula permitidas para CORS (ex.: https://my-app.example.com) | Não definido |
SONARQUBE_MCP_IN_CONTAINER | Defina 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_ORGestiver 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çalhoSONARQUBE_ORG— fazer isso resultará em erro. - Se
SONARQUBE_ORGnão estiver definido na inicialização do servidor, cada cliente deve fornecer um cabeçalhoSONARQUBE_ORGem cada solicitação. Os clientes também podem restringir as ferramentas visíveis por solicitação fornecendo cabeçalhosSONARQUBE_TOOLSETSe/ouSONARQUBE_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_TOKENainda é aceito para compatibilidade retroativa, mas será removido em uma versão futura. Migre paraAuthorization: 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 ambiente | Descrição | Padrão |
|---|---|---|
SONARQUBE_TRANSPORT | Defina como https para habilitar o transporte Streamable HTTP sobre TLS | Não definido (stdio) |
SONARQUBE_HTTP_PORT | Número da porta (normalmente 8443 para HTTPS) | 8080 |
SONARQUBE_HTTP_HOST | Host para vincular (padrão é localhost por segurança) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Origens de navegador separadas por vírgula permitidas para CORS (ex.: https://my-app.example.com) | Não definido |
SONARQUBE_MCP_IN_CONTAINER | Defina 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 ambiente | Descrição | Padrão |
|---|---|---|
SONARQUBE_HTTPS_KEYSTORE_PATH | Caminho para o arquivo de keystore (.p12 ou .jks) | /etc/ssl/mcp/keystore.p12 |
SONARQUBE_HTTPS_KEYSTORE_PASSWORD | Senha do keystore | sonarlint |
SONARQUBE_HTTPS_KEYSTORE_TYPE | Tipo 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.0para que o contêiner escute em todas as interfaces e o mapeamento de portas do runtime funcione, e definaSONARQUBE_MCP_IN_CONTAINER=truepara 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.0controla 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_TOOLSETSeSONARQUBE_READ_ONLYsã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.
| Endpoint | Método | Descrição | Exemplo de resposta |
|---|---|---|---|
/health | GET | Sonda de atividade. Retorna 200 OK com corpo vazio assim que o servidor estiver aceitando solicitações. | (corpo vazio) |
/info | GET | Retorna 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:
| Propriedade | Descrição | Exemplo |
|---|---|---|
http.proxyHost | Nome do host do proxy HTTP | proxy.example.com |
http.proxyPort | Porta do proxy HTTP | 8080 |
https.proxyHost | Nome do host do proxy HTTPS | proxy.example.com |
https.proxyPort | Porta do proxy HTTPS | 8443 |
http.nonProxyHosts | Hosts que ignoram o proxy (separados por pipe) | localhost|127.0.0.1|*.internal.com |
Autenticação de Proxy HTTP/HTTPS:
| Propriedade | Descrição | Exemplo |
|---|---|---|
http.proxyUser | Nome de usuário do proxy HTTP | myuser |
http.proxyPassword | Senha do proxy HTTP | mypassword |
https.proxyUser | Nome de usuário do proxy HTTPS | myuser |
https.proxyPassword | Senha do proxy HTTPS | mypassword |
Proxy SOCKS5
Proxies SOCKS5 são suportados.
| Propriedade | Descrição | Padrão | Exemplo |
|---|---|---|---|
socksProxyHost | Hostname do proxy SOCKS5 | — | localhost |
socksProxyPort | Porta do proxy SOCKS5 | 1080 | 1080 |
java.net.socks.username | Nome de usuário do SOCKS5 (se autenticação for necessária) | — | myuser |
java.net.socks.password | Senha 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/.keyseparados) devem ser convertidos para o formato PKCS12 primeiro. Useopenssl pkcs12 -export -in client.crt -inkey client.key -out client.p12para 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_snippetserá removido em uma versão futura. Conecte o SonarQube for IDE para usaranalyze_file_list, ou habilite a análise Vortex para sua organização usarrun_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
fileContentcompleto para análise completa do arquivo (relata todos os problemas) - Adicione
codeSnippetopcional 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 quandoSONARQUBE_PROJECT_KEYestá 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- StringfileContent- Conteúdo completo do arquivo como string. Obrigatório quando o workspace não está montado - StringcodeSnippet- Trecho de código para filtrar problemas (deve corresponder ao conteúdo em fileContent) - Stringlanguage- Linguagem do código (ex.: 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - Stringscope- 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 - Com workspace montado (recomendado): passe
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 quandoSONARQUBE_PROJECT_KEYestá definido)branch- Nome do branch usado para recuperar o contexto de análise mais recente - String obrigatóriafilePath- Caminho relativo ao projeto do arquivo a ser analisado (ex.:src/main/java/MyClass.java). - String obrigatóriafileScope- 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 quandoSONARQUBE_PROJECT_KEYestá definido)branch- Nome opcional do branch para análise baseada em branch. Uselist_branchespara descobrir nomes válidos - StringpullRequest- Chave/ID opcional de pull request. Uselist_pull_requestspara descobrir chaves válidas - StringmaxCoverage- Limite máximo de cobertura (0-100). Retorna apenas arquivos com cobertura <= este valor - NumberpageIndex- Índice da página (baseado em 1, padrão: 1) - NumberpageSize- 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óriabranch- Nome opcional do branch para análise baseada em branch. Uselist_branchespara descobrir nomes válidos - StringpullRequest- Chave/ID opcional de pull request. Uselist_pull_requestspara descobrir chaves válidas - Stringfrom- Primeira linha para analisar (baseada em 1, padrão: 1) - Numberto- Ú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 quandoSONARQUBE_PROJECT_KEYestá definido)branch- Nome opcional do branch para análise baseada em branch. Uselist_branchespara descobrir nomes válidos - StringpullRequest- Chave/ID opcional de pull request. Uselist_pull_requestspara descobrir chaves válidas - StringpageIndex- Índice opcional da página (baseado em 1, padrão: 1) - IntegerpageSize- 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óriastatus- 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. Uselist_branchespara descobrir nomes válidos - StringpullRequest- Chave/ID opcional de pull request. Uselist_pull_requestspara descobrir chaves válidas - Stringseverities- 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 entreprojectKeysefiles- BooleanissueKey- Chave opcional do problema para buscar um problema específico - StringpageIndex- Índice opcional da página (baseado em 1, padrão: 1) - IntegerpageSize- 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 quandoSONARQUBE_PROJECT_KEYestá 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. Uselist_branchespara descobrir nomes válidos - StringpullRequest- Chave/ID opcional de pull request. Uselist_pull_requestspara descobrir chaves válidas - Stringfiles- Lista opcional de caminhos de arquivos para filtrar - String[]status- Filtro opcional de status: TO_REVIEW, REVIEWED - Stringresolution- Filtro opcional de resolução: FIXED, SAFE, ACKNOWLEDGED - StringsinceLeakPeriod- Filtrar hotspots criados desde o período de vazamento (código novo) - BooleanonlyMine- Mostrar apenas hotspots atribuídos a mim - BooleanpageIndex- Índice opcional da página (baseado em 1, padrão: 1) - IntegerpageSize- 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óriastatus- 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 quandoSONARQUBE_PROJECT_KEYnão está configuradobranch- Nome do branch opcional para análise baseada em branch. Uselist_branchespara descobrir nomes válidos - StringmetricKeys- Chaves de métricas opcionais para recuperar (ex.: ncloc, complexity, violations, coverage) - String[]pullRequest- Chave/ID do pull request opcional. Uselist_pull_requestspara 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) - InteiropageSize- 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 - Stringfavorite- Se verdadeiro, retorna apenas portfólios favoritos - BooleanopageIndex- Número da página opcional baseado em 1 (padrão: 1) - InteiropageSize- 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 - Stringq- Consulta de pesquisa opcional para filtrar portfólios por nome - Stringfavorite- 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 - Booleanodraft- Se verdadeiro, retorna apenas rascunhos criados pelo usuário logado. Não pode ser verdadeiro quando 'favorite' é verdadeiro - BooleanopageIndex- Índice opcional da página a buscar (padrão: 1) - InteiropageSize- 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) - InteiropageSize- Tamanho da página opcional. Deve ser maior que 0 e menor ou igual a 500 (padrão: 500) - Inteiroq- 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 campostypeemergeBranch. Filtro opcionalbranchTypes:ALL(padrão),LONGouSHORT. - SonarQube Server: retorna todos os branches analisados (nome, quality gate, data da análise). Sem filtro
type,mergeBranchoubranchTypes. - Use os nomes de branches retornados como parâmetro
branchem outras ferramentas. Para análise de pull request, uselist_pull_requestsem vez disso. projectKey- Chave do projeto (ex.: my_project) - String Obrigatória (Ignorada quandoSONARQUBE_PROJECT_KEYestá definido)branchTypes- (Somente SonarQube Cloud) Filtro opcional:ALL(padrão),LONGouSHORT- Enum {"ALL", "LONG", "SHORT"}
- SonarQube Cloud: retorna branches de longa duração (
-
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_branchesem vez disso.projectKey- Chave do projeto (ex.: my_project) - String Obrigatória (Ignorada quandoSONARQUBE_PROJECT_KEYestá 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 - Stringbranch- Nome do branch opcional para análise baseada em branch. Uselist_branchespara descobrir nomes válidos - StringprojectId- ID do projeto opcional - StringprojectKey- Chave do projeto opcional - StringpullRequest- Chave/ID do pull request opcional. Uselist_pull_requestspara 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 quandoSONARQUBE_PROJECT_KEYestá definido)branch- Nome do branch opcional para análise baseada em branch. Uselist_branchespara descobrir nomes válidos - StringpullRequest- Chave/ID do pull request opcional. Uselist_pull_requestspara descobrir chaves válidas - StringpageSize- 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 - InteiropageIndex- 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óriabranch- Nome do branch opcional para análise baseada em branch. Uselist_branchespara descobrir nomes válidos - StringpullRequest- Chave/ID do pull request opcional. Uselist_pull_requestspara 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óriabranch- Nome do branch opcional para análise baseada em branch. Uselist_branchespara descobrir nomes válidos - StringpullRequest- Chave/ID do pull request opcional. Uselist_pull_requestspara 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óriacommits_by_line- Agrupa linhas por commit do SCM se o valor for falso, caso contrário exibe commits para cada linha - Stringfrom- Primeira linha a retornar. Começa em 1 - Númeroto- Ú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óriaurl- URL do webhook - String ObrigatóriaprojectKey- Chave do projeto opcional para webhook específico do projeto - Stringsecret- 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óriaexclude_code_regex_list- Lista de padrões regex para excluir dos resultados - String[]include_glob- Padrão glob de filtro de arquivo (ex.:*.java) - Stringexclude_glob- Padrão glob de exclusão de arquivo - Stringfields- Lista separada por vírgulas de campos a incluir na resposta - Stringlimit- Número máximo de resultados a retornar (padrão: 10) - Inteiroregex_lists_operator- Como combinar múltiplos padrões:OR(padrão) ouAND- 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óriaexclude_code_regex_list- Lista de padrões regex para excluir dos resultados - String[]include_glob- Padrão glob de filtro de arquivo - Stringexclude_glob- Padrão glob de exclusão de arquivo - Stringfields- Lista separada por vírgulas de campos a incluir na resposta - Stringlimit- Número máximo de resultados a retornar (padrão: 10) - Inteiroregex_lists_operator- Como combinar múltiplos padrões:OR(padrão) ouAND- 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óriadepth- Profundidade da cadeia de chamadas (0=somente função, 1=chamadores diretos, etc.) - Inteirofields- 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óriadepth- Profundidade da cadeia de chamadas (0=somente função, 1=chamadas diretas, etc.) - Inteirofields- 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óriafields- 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óriafields- 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óriafields- 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óriopath_prefix- Prefixo de caminho opcional para filtrar nós (ex.:com.example.service) - Stringecosystem- 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_basedoucombined- String Obrigatóriacategories- Lista de nomes de categorias (obrigatória para modoscategory_basedecombined) - String[]languages- Lista de idiomas alvo no formato de chave de repositório do SonarQube (obrigatória quandocategoriesé 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ável | Descrição | Obrigatória | Padrão |
|---|---|---|---|
SONARQUBE_URL | URL do SonarQube Cloud | Sim | https://sonarcloud.io |
SONARQUBE_TOKEN | Token de autenticação | Sim | Nenhum |
SONARQUBE_ORG | Chave da organização no SonarQube Cloud | Sim | Nenhum |
SONARQUBE_PROJECT_KEY | Chave do projeto no SonarQube Cloud | Sim | Nenhum |
SONAR_SQ_BRANCH | Substituição explícita de branch do SonarQube * | Não | Nenhum |
SONARQUBE_DEBUG_ENABLED | Ativa registro de depuração (para solução de problemas) | Não | Falso |
SONAR_LOG_LEVEL | Nível de detalhamento do registro (TRACE, DEBUG, INFO, WARNING, ERROR) | Não | INFO |
- 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
PENDINGe umassessmentId. Useget_agentic_readiness_assessmentpara consultar os resultados.projectKey- A chave do projeto - String Obrigatória (Ignorada quandoSONARQUBE_PROJECT_KEYestá 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
assessmentIdaté que o status sejaCOMPLETED,FAILEDouINTERRUPTED. 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 porstart_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_assessmentpara resultados completos no nível do pilar.projectKey- A chave do projeto para listar avaliações - String Obrigatória (Ignorada quandoSONARQUBE_PROJECT_KEYestá definido)branch- Filtra avaliações por nome de branch. Omita para listar avaliações de todos os branches - StringpageIndex- Índice de página baseado em 1 (padrão: 1) - NúmeropageSize- 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.