/ Каталог / Песочница / SonarQube MCP
● Официальный SonarSource 🔑 Нужен свой ключ

SonarQube MCP

автор SonarSource · SonarSource/sonarqube-mcp-server

Данные статического анализа Sonar — в руках Claude. Исправляйте проблемы по файлу и правилу, а не просматривая дашборд.

sonarqube-mcp-server — официальный MCP для SonarQube и SonarCloud. Раскрывает проблемы, security hotspots, quality gates, метрики и историю качества кода как MCP-инструменты. Claude читает проблему, смотрит правило и пишет исправление, основанное на рекомендации правила, — а не общую догадку.

Зачем использовать

Ключевые функции

Живое демо

Как выглядит на практике

sonarqube-mcp.replay ▶ готово
0/0

Установка

Выберите клиент

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

Откройте Claude Desktop → Settings → Developer → Edit Config. Перезапустите после сохранения.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

Cursor использует ту же схему mcpServers, что и Claude Desktop. Конфиг проекта приоритетнее глобального.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

Щёлкните значок MCP Servers на боковой панели Cline, затем "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

Тот же формат, что и Claude Desktop. Перезапустите Windsurf для применения.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "sonarqube-mcp",
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  ]
}

Continue использует массив объектов серверов, а не map.

~/.config/zed/settings.json
{
  "context_servers": {
    "sonarqube-mcp": {
      "command": {
        "path": "docker",
        "args": [
          "run",
          "--init",
          "--pull=always",
          "-i",
          "--rm",
          "-e",
          "SONARQUBE_TOKEN",
          "-e",
          "SONARQUBE_ORG",
          "mcp/sonarqube"
        ]
      }
    }
  }
}

Добавьте в context_servers. Zed перезагружается автоматически.

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

Однострочная команда. Проверить: claude mcp list. Удалить: claude mcp remove.

Сценарии использования

Реальные сценарии: SonarQube MCP

Массовое исправление всех нарушений одного правила по всей кодовой базе

👤 Разработчики, выплачивающие технический долг ⏱ ~45 min intermediate

Когда использовать: Sonar отметил 47 случаев одного правила, и вы хотите исправить их все в одном PR.

Предварительные требования
  • Sonar token — User → Security → Generate Token (по возможности привязанный к проекту)
  • Доступен Docker — Стандартная настройка Docker; образ загружается при первом запуске
Поток
  1. Определить правило
    Use sonarqube-mcp. Top 5 rules by open-issue count in project 'foo'.✓ Скопировано
    → Ключ правила + количество + серьёзность
  2. Получить все случаи одного правила
    List every open issue for rule java:S2293 (Use Diamond Operator) — file, line, snippet.✓ Скопировано
    → 47 проблем с файлом:строкой и окружающим кодом
  3. Применить исправление
    For each, apply the rule's recommended fix. Keep changes minimal; don't reformat.✓ Скопировано
    → 47 небольших правок в ~20 файлах
  4. Перепроверить после повторного сканирования
    After my CI runs the next analysis, recheck the issue count for that rule.✓ Скопировано
    → Количество падает до 0

Итог: Один сфокусированный PR, закрывающий целое правило, вместо 47 разрозненных коммитов.

Подводные камни
  • Авто-исправление правила ломает сгенерированный код — Фильтруйте по директории; пропускайте сгенерированные/тестовые пути или проверяйте их вручную
Сочетать с: github · filesystem

Отладка причины сбоя quality gate в PR

👤 Разработчик, чей PR заблокирован ⏱ ~30 min intermediate

Когда использовать: Sonar блокирует ваш PR, а дашборд перегружен информацией.

Поток
  1. Получить статус gate
    Use sonarqube-mcp. Show quality gate status for PR 1234 — which conditions failed?✓ Скопировано
    → Разбивка gate: например, 'New Coverage 67% < 80% threshold'
  2. Детально изучить проваленное условие
    For 'New Coverage' below threshold — list new lines added in this PR with no test coverage.✓ Скопировано
    → Список непокрытых новых строк по каждому файлу
  3. Сгенерировать тесты
    Write tests covering those uncovered lines.✓ Скопировано
    → Добавлены новые файлы тестов; мысленный разбор случаев

Итог: PR разблокирован с целевыми тестами, а не ковровой бомбардировкой покрытия.

Подводные камни
  • Тесты написаны ради покрытия, а не поведения — Попросите Claude также указать, что именно проверяет каждый тест; отклоняйте тесты без реального утверждения
Сочетать с: github

Ревью и устранение security hotspot-ов

👤 Инженеры, серьёзно относящиеся к безопасности ⏱ ~40 min advanced

Когда использовать: Накопились hotspot-ы, требующие триажа: «безопасно» или «нужно исправить».

Поток
  1. Получить список нерешённых hotspot-ов
    Use sonarqube-mcp. List all unreviewed security hotspots in project 'foo' grouped by category.✓ Скопировано
    → Hotspot-ы, сгруппированные по категориям (например, «Weak Cryptography», «Auth»)
  2. Объяснить риски
    For each, summarize the risk in 1 line. Mark which are clearly safe-to-acknowledge vs need-fix.✓ Скопировано
    → Аннотированный список триажа
  3. Исправить или подтвердить
    For need-fix ones, apply the rule's safe pattern. For safe ones, give me the comment to leave on the hotspot review.✓ Скопировано
    → Исправления применены + черновики комментариев к ревью

Итог: Hotspot-ы очищены с аудиторским следом, а не молча проигнорированы.

Подводные камни
  • Помечать всё «безопасным» без раздумий — Требуйте, чтобы Claude указывал *почему* это безопасно в комментарии — это создаёт проверяемый след
Сочетать с: github

Комбинации

Сочетайте с другими MCP — эффект x10

sonarqube-mcp + github

Аннотирование PR результатами Sonar или авто-создание задач при новых нарушениях

On every PR, comment Sonar's gate result and any new issues it added.✓ Скопировано
sonarqube-mcp + filesystem

Применение исправлений правил локально и коммит

Fix all java:S2293 instances; write the diffs locally for review before commit.✓ Скопировано

Инструменты

Что предоставляет этот MCP

ИнструментВходные данныеКогда вызыватьСтоимость
search_issues project, rules?, severities?, types?, branch? Фильтрация проблем по правилу/серьёзности/типу 1 SonarQube API call
get_rule rule_key Прочитать официальные рекомендации перед исправлением 1 API call
get_quality_gate project, branch_or_pr Диагностика сбоев gate в PR/ветке 1 API call
search_hotspots project, status? Security-ревью 1 API call
get_metrics project, metric_keys[] Проверка трендов и дрейфа (покрытие, дублирование) 1 API call

Стоимость и лимиты

Во что обходится

Квота API
Rate limit Sonar API варьируется в зависимости от редакции — будьте консервативны при массовых циклах
Токенов на вызов
Проблемы приходят страницами по 100; каждая ~200 токенов
Деньги
Бесплатно для публичных проектов SonarCloud; Enterprise-лицензия для SonarQube
Совет
Агрессивно фильтруйте в search_issues — пролистывание всего — расточительно

Безопасность

Права, секреты, радиус поражения

Минимальные скоупы: Browse See Source Code
Хранение учётных данных: Переменная окружения SONARQUBE_TOKEN, привязанная к проекту
Исходящий трафик: На ваш экземпляр Sonar (sonarcloud.io или self-hosted)
Никогда не давайте: Права Administer чат-управляемому агенту

Устранение неполадок

Частые ошибки и исправления

401 Unauthorized

Пересоздайте токен; проверьте, что токен не ограничен только пользовательским scope при необходимости проектного

Проверить: curl -u $SONARQUBE_TOKEN: $SONAR_HOST/api/projects/search
Неверная организация

Переменная окружения SONARQUBE_ORG должна точно совпадать со slug вашей Sonar-организации (строчные буквы)

Docker-контейнер не достигает self-hosted SonarQube

Передайте --network host или откройте SonarQube на доступном hostname; задайте SONAR_HOST_URL внутри контейнера

Проверить: docker run ... curl $SONAR_HOST_URL/api/system/status
Список проблем кажется устаревшим

Sonar отражает последний завершённый анализ — перезапустите анализ или проверьте временную метку последнего

Альтернативы

SonarQube MCP в сравнении

АльтернативаКогда использоватьКомпромисс
CodeQL via GitHub MCPУже используете GitHub Advanced Security и хотите результаты в той же поверхностиДругой набор правил; нет концепции quality gate
Semgrep MCPНужно лёгкое сканирование по паттернам без инфраструктуры SonarМеньше покрытия запахов кода / метрик поддерживаемости

Ещё

Ресурсы

📖 Читать официальный README на GitHub

🐙 Открытые задачи

🔍 Все 400+ MCP-серверов и Skills