SonarQube MCP Server

SonarQube MCP Server

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

Category
访问服务器

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_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:

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

  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:

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:

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

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选