SonarQube MCP Server logo

SonarQube MCP Server

JoaobatistaJuniorTR/mcp-sonar
0 starsUpdated 2026-05-05Community

Is this your server?

Add your score badge to your README and get your server in front of 45k+ builders a month.

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

Enables access to SonarQube code quality analysis through MCP, including issue searching, metrics retrieval, and quality gate status.

README.md

MCP SonarQube Server

Servidor Model Context Protocol (MCP) para integração com SonarQube, permitindo acesso às funcionalidades de análise de código via MCP.

🚀 Quick Start

Método 1: Usando uvx (Recomendado) ⭐

Pré-requisito: Instale o uv primeiro: ```bash

Windows (PowerShell)

irm https://astral.sh/uv/install.ps1 | iex

Linux/Mac

curl -LsSf https://astral.sh/uv/install.sh | sh ```

Configuração no Cursor:

{
  "mcpServers": {
    "sonarqube": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/JoaobatistaJuniorTR/mcp-sonar.git",
        "mcp-sonarqube"
      ],
      "env": {
        "SONARQUBE_URL": "https://sonar.qa.thomsonreuters.com",
        "SONARQUBE_TOKEN": "seu_token_aqui"
      }
    }
  }
}

⚠️ IMPORTANTE:

  • Substitua seu_token_aqui pelo seu token do SonarQube
  • O --from é obrigatório para especificar que o pacote vem de um repositório Git

Método 2: Execução Direta do GitHub (Fallback)

Se uvx não estiver disponível, use:

{
  "mcpServers": {
    "sonarqube": {
      "command": "python",
      "args": [
        "-c",
        "import urllib.request, sys, tempfile, subprocess, os; url='https://raw.githubusercontent.com/JoaobatistaJuniorTR/mcp-sonar/main/sonarqube_mcp_server.py'; f=tempfile.NamedTemporaryFile(mode='w', suffix='.py', delete=False, encoding='utf-8'); f.write(urllib.request.urlopen(url, timeout=30).read().decode('utf-8')); f.close(); subprocess.run([sys.executable, f.name], env=os.environ); os.unlink(f.name)"
      ],
      "env": {
        "SONARQUBE_URL": "https://sonar.qa.thomsonreuters.com",
        "SONARQUBE_TOKEN": "seu_token_aqui"
      }
    }
  }
}

📋 Pré-requisitos

  • Python 3.8 ou superior
  • Acesso a um servidor SonarQube
  • Token de autenticação do SonarQube
  • uv instalado (para método uvx) ou Python com mcp e requests

🔧 Instalação

Instalar uv (para usar uvx)

Windows: ``powershell irm https://astral.sh/uv/install.ps1 | iex ``

Linux/Mac: ``bash curl -LsSf https://astral.sh/uv/install.sh | sh ``

Instalar dependências manualmente (se não usar uvx)

pip install mcp requests

Como obter o token do SonarQube

  1. Acesse o SonarQube
  2. Vá em My Account > Security
  3. Gere um novo token
  4. Copie o token (ele só será exibido uma vez)

🛠️ Ferramentas Disponíveis

1. search_issues

Busca issues do SonarQube em projetos.

Parâmetros:

  • projectKeys (array, opcional): Lista de chaves de projetos
  • severities (array, opcional): Filtrar por severidade (BLOCKER, CRITICAL, MAJOR, MINOR, INFO)
  • statuses (array, opcional): Filtrar por status (OPEN, CONFIRMED, REOPENED, RESOLVED, CLOSED)
  • pageSize (integer, opcional): Tamanho da página (padrão: 100)
  • page (integer, opcional): Número da página (padrão: 1)

Exemplo: `` search_issues com projectKeys=["com.thomsonreuters:rt-data-scanner"] e severities=["CRITICAL", "MAJOR"] ``

2. get_project_measures

Obtém métricas de um projeto (cobertura, complexidade, linhas de código, etc.).

Parâmetros:

  • projectKey (string, obrigatório): Chave do projeto
  • metricKeys (array, opcional): Lista de métricas a buscar

Exemplo: `` get_project_measures com projectKey="com.thomsonreuters:rt-data-scanner" e metricKeys=["coverage", "ncloc", "complexity"] ``

3. get_quality_gate_status

Obtém o status do Quality Gate de um projeto.

Parâmetros:

  • projectKey (string, obrigatório): Chave do projeto

Exemplo: `` get_quality_gate_status com projectKey="com.thomsonreuters:rt-data-scanner" ``

4. list_projects

Lista todos os projetos disponíveis no SonarQube.

Parâmetros:

  • page (integer, opcional): Número da página

Exemplo: `` list_projects ``

5. get_project_issues_summary

Obtém um resumo das issues de um projeto agrupadas por severidade e status.

Parâmetros:

  • projectKey (string, obrigatório): Chave do projeto

Exemplo: `` get_project_issues_summary com projectKey="com.thomsonreuters:rt-data-scanner" ``

6. ping_sonarqube

Verifica se o servidor SonarQube está acessível.

Exemplo: `` ping_sonarqube ``

📖 Exemplos de Uso

Buscar todas as issues críticas de um projeto

search_issues com projectKeys=["com.thomsonreuters:rt-data-scanner"] e severities=["CRITICAL"]

Obter métricas de cobertura

get_project_measures com projectKey="com.thomsonreuters:rt-data-scanner" e metricKeys=["coverage"]

Verificar status do Quality Gate

get_quality_gate_status com projectKey="com.thomsonreuters:rt-data-scanner"

🔄 Métodos de Execução

Método 1: uvx (Recomendado) ⭐

O uvx é similar ao npx do Node.js - executa pacotes Python diretamente sem instalação prévia.

Vantagens:

  • ✅ Sem necessidade de clonar o repositório
  • ✅ Sem necessidade de instalar dependências manualmente
  • ✅ Sempre usa a versão mais recente
  • ✅ Isolamento de dependências

Formato do comando: ``bash uvx --from git+https://github.com/JoaobatistaJuniorTR/mcp-sonar.git mcp-sonarqube ``

Método 2: Clonar e Executar Localmente

git clone https://github.com/JoaobatistaJuniorTR/mcp-sonar.git
cd mcp-sonar
pip install -r requirements.txt

Depois configure no Cursor:

{
  "mcpServers": {
    "sonarqube": {
      "command": "python",
      "args": [
        "C:\\caminho\\para\\mcp-sonar\\sonarqube_mcp_server.py"
      ],
      "env": {
        "SONARQUBE_URL": "https://sonar.qa.thomsonreuters.com",
        "SONARQUBE_TOKEN": "seu_token_aqui"
      }
    }
  }
}

🆘 Troubleshooting

Erro: "uvx: command not found"

Instale o uv primeiro (veja seção de instalação acima).

Erro: "Failed to build"

  • Verifique se o repositório está acessível
  • Tente limpar o cache: uv cache clean
  • Verifique se o pyproject.toml está correto

Erro: "ModuleNotFoundError: No module named 'mcp'"

Se estiver usando o método manual, instale as dependências: ``bash pip install mcp requests ``

Erro: "SONARQUBE_URL e SONARQUBE_TOKEN devem ser configurados"

  • Verifique se as variáveis estão no env do JSON
  • Reinicie o Cursor após alterar a configuração

Erro de autenticação

  • Verifique se o token está correto e não expirou
  • Certifique-se de que o token tem as permissões necessárias

Erro de conexão

  • Verifique se a URL do SonarQube está correta
  • Verifique se há firewall ou proxy bloqueando a conexão

📝 Estrutura do Projeto

mcp-sonar/
├── sonarqube_mcp_server.py    # Servidor MCP principal
├── __main__.py                 # Entry point para execução modular
├── pyproject.toml              # Configuração do projeto (para uvx)
├── requirements.txt             # Dependências Python
├── README.md                   # Este arquivo
└── .gitignore                  # Arquivos ignorados pelo Git

🤝 Contribuindo

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou pull requests.

📄 Licença

Este projeto é para uso interno da organização.

🔗 Links

See related servers & alternatives →

Related MCP servers

Browse all →

Related guides

Hand-picked reading to help you choose and use Search servers.