SonarQube MCP Server
Enables access to SonarQube code quality analysis through MCP, including issue searching, metrics retrieval, and quality gate status.
README
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:
# 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_aquipelo 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
uvinstalado (para método uvx) ou Python commcperequests
🔧 Instalação
Instalar uv (para usar uvx)
Windows:
irm https://astral.sh/uv/install.ps1 | iex
Linux/Mac:
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
- Acesse o SonarQube
- Vá em My Account > Security
- Gere um novo token
- 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 projetosseverities(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 projetometricKeys(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:
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.tomlestá correto
Erro: "ModuleNotFoundError: No module named 'mcp'"
Se estiver usando o método manual, instale as dependências:
pip install mcp requests
Erro: "SONARQUBE_URL e SONARQUBE_TOKEN devem ser configurados"
- Verifique se as variáveis estão no
envdo 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
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.