VOOZH about

URL: https://glama.ai/mcp/servers/mshegolev/sonarqube-mcp?locale=ru-RU

⇱ sonarqube-mcp by mshegolev | Glama


sonarqube-mcp

👁 PyPI
👁 Python
👁 License: MIT

MCP-сервер для SonarQube. Позволяет LLM-агенту (Claude Code, Cursor, OpenCode и т. д.) находить проекты, получать основные метрики, проверять статус Quality Gate, искать проблемы с фильтрами по серьезности/типу и ранжировать проекты по худшему значению любой метрики.

Python, FastMCP, транспорт stdio.

Работает с любым экземпляром SonarQube 9.x / 10.x (self-hosted) и с SonarCloud.

Почему еще один SonarQube MCP?

Существует несколько сообществ MCP для SonarQube, но они обычно ограничиваются чтением данных по одному проекту. Этот сервер добавляет ранжирование между проектами (sonarqube_worst_metrics) — операцию, которую руководитель действительно выполняет во время сеанса триажа: «покажи мне 10 сервисов с худшим покрытием в организации». Все инструменты работают только для чтения и безопасно параметризованы (валидация ввода Pydantic, белые списки серьезности/типа).

Related MCP server: sonarqube-api-mcp

Основные особенности дизайна

  • Аннотации инструментов — все пять инструментов содержат readOnlyHint: True, destructiveHint: False, idempotentHint: True. Ничто не может изменить данные в SonarQube через этот сервер.

  • Структурированный вывод — каждый инструмент возвращает типизированную полезную нагрузку (TypedDict) + сводку в формате markdown, поэтому клиенты как с поддержкой структурированного контента, так и без нее, получают полезный ответ.

  • Структурированные ошибки — коды 401 / 403 / 404 / 400 / 429 / 5xx сопоставлены с практическими подсказками (например, «пересоздайте токен», «проверьте ключ проекта с помощью sonarqube_list_projects»).

  • Валидация ввода Pydantic для каждого аргумента; фильтры серьезности/типа проверяются на соответствие допустимым перечислениям SonarQube перед отправкой запроса.

  • Ранжирование худших метрик между проектами — выполняет пакетные вызовы /api/measures/search в фоновом режиме, сортирует по возрастанию или убыванию в зависимости от того, является ли большее значение худшим для выбранной метрики.

Функции (5 инструментов)

Обнаружение

  • sonarqube_list_projects — постраничный поиск проектов с дополнительным текстовым фильтром

Анализ одного проекта

  • sonarqube_project_metrics — измерения для одного проекта (набор по умолчанию охватывает ошибки / покрытие / запахи кода / рейтинги / ncloc / тесты / alert_status)

  • sonarqube_quality_gate_status — статус Quality Gate + сбои по условиям

Триаж проблем

  • sonarqube_get_issues — поиск проблем, отфильтрованный по серьезности / типу / статусу решения

Ранжирование между проектами

  • sonarqube_worst_metrics — топ-N проектов, отсортированных по худшему значению метрики (например, худшее покрытие, больше всего ошибок)

Установка

Требуется Python 3.10+.

# via uvx (recommended — no install, just run)
uvx --from sonarqube-mcp sonarqube-mcp

# or via pipx
pipx install sonarqube-mcp

Конфигурация

claude mcp add sonarqube -s project \
 --env SONARQUBE_URL=https://sonar.example.com \
 --env SONARQUBE_TOKEN=squ_your_token \
 --env SONARQUBE_SSL_VERIFY=true \
 -- uvx --from sonarqube-mcp sonarqube-mcp

Или в .mcp.json:

{
 "mcpServers": {
 "sonarqube": {
 "type": "stdio",
 "command": "uvx",
 "args": ["--from", "sonarqube-mcp", "sonarqube-mcp"],
 "env": {
 "SONARQUBE_URL": "https://sonar.example.com",
 "SONARQUBE_TOKEN": "${SONARQUBE_TOKEN}",
 "SONARQUBE_SSL_VERIFY": "true"
 }
 }
 }
}

Проверка:

claude mcp list
# sonarqube: uvx --from sonarqube-mcp sonarqube-mcp - ✓ Connected

Переменные окружения

Переменная

Обязательно

Описание

SONARQUBE_URL

да

URL SonarQube (без косой черты в конце)

SONARQUBE_TOKEN

да

Токен Bearer. Создайте в: My Account → Security → Tokens

SONARQUBE_SSL_VERIFY

нет

true/false. По умолчанию: true.

Примечание о прокси-серверах HTTP. Клиент намеренно отключает обнаружение прокси на основе переменных окружения (trust_env=False), поскольку self-hosted SonarQube обычно доступен только во внутренней сети. Если вы подключаетесь к SonarCloud или любому SonarQube, который находится за корпоративным прокси, вам в настоящее время потребуется удалить переменные прокси на уровне процесса — настройка SONARQUBE_TRUST_ENV_PROXY запланирована для следующего выпуска.

Пример использования

  • «Перечислить все проекты SonarQube, соответствующие 'einvy'»

  • «Какой статус Quality Gate для einvy:aut_einvy

  • «Покажи мне 10 проектов с наибольшим количеством ошибок»

  • «Найти все уязвимости BLOCKER / CRITICAL в einvy:aut_einvy»

  • «Какое покрытие у einvy:qa_assistant

  • «Топ-5 проектов с худшим покрытием, соответствующих запросу 'einvy'»

Направления метрик (используются sonarqube_worst_metrics)

Больше — хуже (сортировка по убыванию — больше значит хуже): bugs, code_smells, vulnerabilities, duplicated_lines_density, reliability_rating, security_rating, security_review_rating, sqale_rating, open_issues

Меньше — хуже (сортировка по возрастанию — меньше значит хуже): coverage, line_coverage, branch_coverage, test_success_density, tests

Рейтинги в SonarQube — это числовые строки от "1" (A, лучший) до "5" (E, худший).

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

  • Все инструменты имеют readOnlyHint: True — ничто не может изменить данные в SonarQube.

  • Никогда не вызываются методы POST / PUT / DELETE.

  • Входные данные серьезности / типа / квалификатора проверяются на соответствие перечислениям SonarQube перед вызовом API, поэтому инструмент быстро завершается при опечатках, а не обращается к API.

Характеристики производительности

  • Каждый инструмент делает один HTTP-вызов к SonarQube, за исключением sonarqube_worst_metrics, который делает один вызов поиска + ⌈candidate_pool/100⌉ массовых вызовов измерений. Настройки по умолчанию приводят к ≤ 2 вызовам.

  • Время ответа одного инструмента на исправном экземпляре SonarQube: обычно < 500 мс.

  • Пагинация передается в SonarQube (параметры p + ps) — в MCP-сервере нет буферизации полных результатов.

  • sonarqube_worst_metrics ограничивает candidate_pool до 500 — на экземплярах с тысячами проектов используйте предварительный фильтр query= перед ранжированием (см. строку документации инструмента).

  • В SonarQube нет опубликованного жесткого ограничения скорости. Если получена ошибка 429, сервер выдает понятную ошибку («Подождите 30-60 с перед повторной попыткой; уменьшите page_size»).

Разработка

git clone https://github.com/mshegolev/sonarqube-mcp.git
cd sonarqube-mcp
pip install -e '.[dev]'
pytest

Лицензия

MIT © Mikhail Shchegolev

A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mshegolev/sonarqube-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server