SonarQube
официальныйОбеспечивает бесшовную интеграцию с SonarQube Server или Cloud и позволяет анализировать фрагменты кода непосредственно в контексте агента
Что можно делать с SonarQube MCP?
- Анализ фрагментов кода — Попросите ассистента выполнить локальный анализ кода фрагмента или файла через
analyze_code_snippet, с опциональным монтированием рабочей области для избежания раздувания контекста. - Поиск и управление задачами — Поручить ассистенту находить, просматривать и обновлять задачи SonarQube, включая изменение их статуса, если не в режиме только для чтения.
- Проверка качественных ворот и показателей — Запросить статус качественных ворот, метрики проекта, покрытие и риски зависимостей по вашим проектам SonarQube.
- Просмотр критических зон безопасности — Позвольте ассистенту искать и проходить по критическим зонам безопасности, отмеченным в вашей кодовой базе.
- Просмотр проектов и правил — Используйте ассистента для изучения проектов, списка поддерживаемых языков и поиска правил кодирования непосредственно в SonarQube.
Документация
Сервер MCP SonarQube
Сервер MCP SonarQube — это сервер Model Context Protocol (MCP), который обеспечивает бесшовную интеграцию с SonarQube Server или Cloud для контроля качества кода и безопасности. Он также поддерживает анализ фрагментов кода непосредственно в контексте агента.
Быстрая настройка
Рекомендации по безопасности
🔒 Важно: Ваш токен SonarQube — это конфиденциальные учетные данные. Следуйте этим рекомендациям по безопасности:
При использовании команд CLI:
- Избегайте жесткого кодирования токенов в аргументах командной строки — они сохраняются в истории оболочки
- Используйте переменные окружения — задавайте токены в переменных окружения перед запуском команд
При использовании файлов конфигурации:
- Никогда не сохраняйте токены в системе контроля версий
- Используйте подстановку переменных окружения в файлах конфигурации, когда это возможно
🚀 Создайте свою конфигурацию
Самый быстрый способ начать работу — Генератор конфигурации сервера MCP SonarQube — интерактивный инструмент, который создает готовую к использованию конфигурацию для вашего предпочтительного клиента AI-агента.
Ручная настройка
Если вы предпочитаете настраивать все самостоятельно, самый простой способ — использовать наш образ контейнера sonarsource/sonarqube-mcp. Используйте sonarsource/sonarqube-mcp для автоматических обновлений (с --pull=always) или зафиксируйте версию тегом (например, sonarsource/sonarqube-mcp:1.19.0.2785) для воспроизводимых развертываний. Читайте ниже, если хотите собрать его локально.
Примечание: Хотя в примерах ниже используется
docker, подойдет любой OCI-совместимый контейнерный рантайм (например, Podman, nerdctl). Просто заменитеdockerна предпочитаемый инструмент.
Antigravity
Сервер MCP SonarQube доступен в магазине MCP Antigravity. Следуйте этим инструкциям:
- Откройте боковую панель агента
- Нажмите на три точки (...) в правом верхнем углу и выберите MCP Servers
- Найдите
SonarQubeи выберите Install - Укажите требуемый пользовательский токен SonarQube. Вы также можете указать ключ организации для SonarQube Cloud или URL SonarQube, если подключаетесь к SonarQube Server.
Для SonarQube Cloud US установите URL на https://sonarqube.us.
В качестве альтернативы вы можете настроить сервер вручную через mcp_config.json:
- Для подключения к SonarQube Cloud:
На боковой панели агента нажмите три точки (...) -> MCP Store -> Manage MCP Servers -> View raw config и добавьте следующее:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"],
"env": {
"SONARQUBE_TOKEN": "<YOUR_TOKEN>",
"SONARQUBE_ORG": "<YOUR_ORG>"
}
}
}
}
Для SonarQube Cloud US вручную добавьте "SONARQUBE_URL": "https://sonarqube.us" в раздел env и "-e", "SONARQUBE_URL" в массив args.
- Для подключения к SonarQube Server:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_URL", "sonarsource/sonarqube-mcp"],
"env": {
"SONARQUBE_TOKEN": "<YOUR_USER_TOKEN>",
"SONARQUBE_URL": "<YOUR_SERVER_URL>"
}
}
}
}
Claude Code
- Для подключения к SonarQube Cloud:
claude mcp add sonarqube \
--env SONARQUBE_TOKEN=$SONAR_TOKEN \
--env SONARQUBE_ORG=$SONAR_ORG \
-- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG sonarsource/sonarqube-mcp
Для SonarQube Cloud US добавьте --env SONARQUBE_URL=https://sonarqube.us в команду.
- Для подключения к SonarQube Server:
claude mcp add sonarqube \
--env SONARQUBE_TOKEN=$SONAR_USER_TOKEN \
--env SONARQUBE_URL=$SONAR_URL \
-- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_URL sonarsource/sonarqube-mcp
Codex CLI
Вручную отредактируйте файл конфигурации по адресу ~/.codex/config.toml и добавьте следующую конфигурацию:
- Для подключения к SonarQube Cloud:
[mcp_servers.sonarqube]
command = "docker"
args = ["run", "--init", "--pull=always", "--rm", "-i", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"]
env = { "SONARQUBE_TOKEN" = "<YOUR_USER_TOKEN>", "SONARQUBE_ORG" = "<YOUR_ORG>" }
Для SonarQube Cloud US добавьте "SONARQUBE_URL" = "https://sonarqube.us" в раздел env и "-e", "SONARQUBE_URL" в массив args.
- Для подключения к SonarQube Server:
[mcp_servers.sonarqube]
command = "docker"
args = ["run", "--init", "--pull=always", "--rm", "-i", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_URL", "sonarsource/sonarqube-mcp"]
env = { "SONARQUBE_TOKEN" = "<YOUR_TOKEN>", "SONARQUBE_URL" = "<YOUR_SERVER_URL>" }
Cursor
- Для подключения к SonarQube Cloud:
Для SonarQube Cloud US вручную добавьте "SONARQUBE_URL": "https://sonarqube.us" в раздел env в вашей конфигурации MCP после установки.
- Для подключения к SonarQube Server:
Gemini CLI
Примечание: Расширение Gemini CLI перемещено в репозиторий sonarqube-agent-plugins. Пожалуйста, устанавливайте его оттуда в дальнейшем.
Вы можете установить наше расширение сервера MCP с помощью следующей команды:
gemini extensions install https://github.com/SonarSource/sonarqube-agent-plugins
Вам потребуется задать необходимые переменные окружения перед запуском Gemini:
Требуемые переменные окружения:
-
Для SonarQube Cloud:
SONARQUBE_TOKEN— ваш токен SonarQube CloudSONARQUBE_ORG— ваш ключ организацииSONARQUBE_URL— (необязательно) Установитеhttps://sonarqube.usдля SonarQube Cloud US
-
Для SonarQube Server:
SONARQUBE_TOKEN— ваш пользовательский токен SonarQube ServerSONARQUBE_URL— URL вашего SonarQube Server
После установки расширение будет установлено в <home>/.gemini/extensions/sonarqube/gemini-extension.json.
GitHub Copilot CLI
После запуска Copilot CLI выполните следующую команду, чтобы добавить сервер MCP SonarQube:
/mcp add
Вам потребуется предоставить различную информацию о сервере MCP; для навигации между полями можно использовать клавишу Tab.
- Для подключения к SonarQube Cloud:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_ORG, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_TOKEN>,SONARQUBE_ORG=<YOUR_ORG>
Tools: *
Для SonarQube Cloud US добавьте -e, SONARQUBE_URL в аргументы и SONARQUBE_URL=https://sonarqube.us в переменные окружения.
- Для подключения к SonarQube Server:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_URL, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_USER_TOKEN>,SONARQUBE_URL=<YOUR_SERVER_URL>
Tools: *
Файл конфигурации находится по адресу ~/.copilot/mcp-config.json.
Кодинг-агент GitHub Copilot
Кодинг-агент GitHub Copilot может использовать сервер MCP SonarQube непосредственно в вашем CI/CD.
Чтобы добавить секреты в среду Copilot, следуйте документации Copilot. Только секреты с именами с префиксом COPILOT_MCP_ будут доступны для вашей конфигурации MCP.
В вашем репозитории GitHub перейдите в Settings -> Copilot -> Coding agent и добавьте следующую конфигурацию в раздел конфигурации MCP:
- Для подключения к SonarQube Cloud:
{
"mcpServers": {
"sonarqube": {
"type": "local",
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"--rm",
"-i",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "COPILOT_MCP_SONARQUBE_TOKEN",
"SONARQUBE_ORG": "COPILOT_MCP_SONARQUBE_ORG"
},
"tools": ["*"]
}
}
}
Для SonarQube Cloud US добавьте "-e", "SONARQUBE_URL" в массив args и "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL" в раздел env, затем установите секрет COPILOT_MCP_SONARQUBE_URL=https://sonarqube.us.
- Для подключения к SonarQube Server:
{
"mcpServers": {
"sonarqube": {
"type": "local",
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"--rm",
"-i",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "COPILOT_MCP_SONARQUBE_USER_TOKEN",
"SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL"
},
"tools": ["*"]
}
}
}
Kiro
Создайте файл .kiro/settings/mcp.json в рабочем каталоге (или отредактируйте его, если он уже существует), добавьте следующую конфигурацию:
- Для подключения к SonarQube Cloud:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<YOUR_TOKEN>",
"SONARQUBE_ORG": "<YOUR_ORG>"
},
"disabled": false,
"autoApprove": []
}
}
}
Для SonarQube Cloud US добавьте "-e", "SONARQUBE_URL" в массив args и "SONARQUBE_URL": "https://sonarqube.us" в раздел env.
- Для подключения к SonarQube Server:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<YOUR_USER_TOKEN>",
"SONARQUBE_URL": "<YOUR_SERVER_URL>"
},
"disabled": false,
"autoApprove": []
}
}
}
VS Code
Вы можете использовать следующие кнопки, чтобы упростить процесс установки в VS Code.
Для SonarQube Cloud US вручную добавьте "SONARQUBE_URL": "https://sonarqube.us" в раздел env в вашей конфигурации MCP после установки.
Windsurf
Сервер MCP SonarQube доступен как плагин Windsurf. Следуйте этим инструкциям:
- Откройте Settings > Cascade > MCP Servers в Windsurf и выберите Open MCP Marketplace
- Найдите
sonarqubeна Cascade MCP Marketplace - Выберите SonarQube MCP Server и нажмите Install
- Добавьте требуемый пользовательский токен SonarQube. Затем добавьте ключ организации, если вы хотите подключиться к SonarQube Cloud, или URL SonarQube, если вы хотите подключиться к SonarQube Server или Community Build.
Для SonarQube Cloud US установите URL на https://sonarqube.us.
Zed
Перейдите в представление Extensions в Zed и найдите SonarQube MCP Server. При установке расширения вам будет предложено указать необходимые переменные окружения:
- При использовании SonarQube Cloud:
{
"sonarqube_token": "YOUR_SONARQUBE_TOKEN",
"sonarqube_org": "SONARQUBE_ORGANIZATION_KEY",
"docker_path": "DOCKER_PATH"
}
Для SonarQube Cloud US добавьте "sonarqube_url": "https://sonarqube.us" в конфигурацию.
- При использовании SonarQube Server:
{
"sonarqube_token": "YOUR_SONARQUBE_USER_TOKEN",
"sonarqube_url": "YOUR_SONARQUBE_SERVER_URL",
"docker_path": "DOCKER_PATH"
}
docker_path — это путь к исполняемому файлу docker. Примеры:
Linux/macOS: /usr/bin/docker или /usr/local/bin/docker
Windows: C:\Program Files\Docker\Docker\resources\bin\docker.exe
💡 Совет: Мы рекомендуем регулярно обновлять последний образ или делать это перед сообщением о проблемах, чтобы у вас были самые актуальные функции и исправления.
Ручная установка
Вы можете вручную установить сервер MCP SonarQube, скопировав следующий фрагмент в файл конфигурации серверов MCP:
- Для подключения к SonarQube Cloud:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_ORG": "<org>"
}
}
}
- Для подключения к SonarQube Server:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Интеграция с SonarQube for IDE
Сервер MCP SonarQube может интегрироваться с SonarQube for IDE для дальнейшего улучшения вашего рабочего процесса разработки, обеспечивая лучший анализ кода и аналитику непосредственно в вашей IDE.
Конфигурация
При использовании SonarQube for IDE переменная окружения SONARQUBE_IDE_PORT должна быть установлена с правильным номером порта. SonarQube for VS Code включает кнопку быстрой установки, которая автоматически задает правильную конфигурацию порта.
Например, с SonarQube Cloud:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"-e",
"SONARQUBE_IDE_PORT",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_ORG": "<org>",
"SONARQUBE_IDE_PORT": "<64120-64130>"
}
}
}
При запуске сервера MCP в контейнере на Linux контейнер не может получить доступ к встроенному серверу SonarQube for IDE, работающему на localhost. Чтобы разрешить контейнеру подключаться к серверу SonarQube for IDE, добавьте опцию
--network=hostв команду запуска контейнера.
Конфигурация
В зависимости от вашего окружения вы должны указать определенные переменные окружения.
Базовые
Вы должны добавить следующую переменную при запуске сервера MCP:
| Переменная окружения | Описание |
|---|---|
STORAGE_PATH | Обязательный абсолютный путь к доступному для записи каталогу, где сервер MCP SonarQube будет хранить свои файлы (например, для создания, обновления и сохранения); автоматически предоставляется при использовании образа контейнера |
SONARQUBE_PROJECT_KEY | Необязательный ключ проекта по умолчанию. При установке все инструменты, требующие ключ проекта, будут автоматически использовать это значение — параметр projectKey полностью удаляется из их схемы. Полезно при работе с одним проектом. |
SONARQUBE_IDE_PORT | Необязательный номер порта от 64120 до 64130, используемый для подключения сервера MCP SonarQube к SonarQube for IDE. |
SONARQUBE_DEBUG_ENABLED | При установке в true включает отладочное журналирование. Отладочные журналы записываются как в файл журнала, так и в STDERR. Полезно для устранения проблем с подключением или конфигурацией. По умолчанию: false. |
SONARQUBE_LOG_TO_FILE_DISABLED | При установке в true полностью отключает запись журналов на диск. Файлы журналов не будут создаваться в STORAGE_PATH/logs/. Полезно в контейнерных или эфемерных средах, где файловое журналирование нежелательно. По умолчанию: false. |
Монтирование рабочей области (снижение раздувания контекста)
По умолчанию инструмент анализа analyze_code_snippet требует, чтобы агент передавал полное содержимое файла в качестве аргумента fileContent. Для больших файлов или при анализе множества файлов в рамках сеанса это значительно увеличивает использование окна контекста и стоимость.
Решение: смонтируйте каталог вашего проекта в контейнер по пути /app/mcp-workspace. Когда такое монтирование обнаружено, сервер читает файлы напрямую с диска, используя аргумент filePath относительно проекта — содержимое файлов никогда не передаётся через контекст агента.
{
"args": [
"run", "-i", "--rm", "--init", "--pull=always",
"-e", "SONARQUBE_TOKEN",
"-e", "SONARQUBE_ORG",
"-v", "/path/to/your/project:/app/mcp-workspace",
"sonarsource/sonarqube-mcp"
]
}
Когда монтирование активно:
run_advanced_code_analysisстановится доступным, если ваша организация имеет на него правоanalyze_code_snippet: требуетсяfilePath, аfileContentне используется — сервер разрешает файл тем же способом
Выборочное включение наборов инструментов
По умолчанию включены только важные наборы инструментов для снижения накладных расходов на контекст. Вы можете включить дополнительные наборы инструментов по мере необходимости.
| Переменная окружения | Описание |
|---|---|
SONARQUBE_TOOLSETS | Список наборов инструментов для включения через запятую. Если задано, будут доступны только эти наборы. Если не задано, включены важные наборы по умолчанию (analysis, ide, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag). Примечание: набор projects всегда включён, так как он необходим для поиска ключей проектов для других операций. Инструменты контекста Vortex (устаревшее название: Context Augmentation/CAG) и инструменты анализа Vortex (устаревшее название: Advanced Analysis/A3S) доступны только в режиме stdio и используют единое комбинированное право организации — организация должна иметь право на оба, чтобы использовать любое из них. На SonarQube Server в stdio перечисляются контекст Vortex и run_advanced_code_analysis, когда оба хаба CAG и A3S имеют право. Предпочитайте единый ключ набора vortex. Устаревшие ключи cag и analysis по-прежнему работают; при их использовании без vortex выдаётся предупреждение при запуске и примечание об устаревании в инструкциях сервера. В режиме Streamable HTTP клиенты могут отправлять HTTP-заголовок SONARQUBE_TOOLSETS, чтобы дополнительно сузить этот список для каждого запроса, но не могут включить наборы инструментов сверх тех, с которыми был запущен сервер (см. транспорт Streamable HTTP ниже). |
SONARQUBE_READ_ONLY | Если задано значение true, включает режим только для чтения, который отключает все операции записи (например, изменение статуса проблемы). Этот фильтр суммируется с SONARQUBE_TOOLSETS, если заданы оба. По умолчанию: false. В режиме Streamable HTTP клиенты могут отправлять HTTP-заголовок SONARQUBE_READ_ONLY, чтобы дополнительно ограничить отдельные запросы режимом только для чтения, но не могут снять ограничение только для чтения на уровне сервера (см. транспорт Streamable HTTP ниже). |
Доступные наборы инструментов
| Набор инструментов | Ключ | Описание |
|---|---|---|
| Анализ | analysis | Инструменты анализа кода (локальный анализ через analyze_code_snippet, устарело в пользу analyze_file_list/анализа Vortex) |
| IDE | ide | Инструменты моста SonarQube для IDE (анализ файлов, переключение автоматического анализа) — в настоящее время также включены в analysis |
| Проблемы | issues | Поиск и управление проблемами SonarQube |
| Уязвимости безопасности | security-hotspots | Поиск и проверка уязвимостей безопасности |
| Проекты | projects | Просмотр и поиск проектов SonarQube |
| Качественные ворота | quality-gates | Доступ к качественным воротам и их статусу |
| Правила | rules | Просмотр и поиск правил SonarQube |
| Исходники | sources | Доступ к исходному коду и информации SCM |
| Дубликаты | duplications | Поиск дубликатов кода в проектах |
| Метрики | measures | Получение метрик и измерений (включает инструменты метрик и измерений) |
| Языки | languages | Список поддерживаемых языков программирования |
| Портфели | portfolios | Управление портфелями и предприятиями (Cloud и Server) |
| Система | system | Инструменты системного администрирования (только Server) |
| Вебхуки | webhooks | Управление вебхуками |
| Риски зависимостей | dependency-risks | Анализ рисков зависимостей и проблем безопасности (SCA) |
| Покрытие | coverage | Инструменты анализа и улучшения покрытия тестами |
| Контекст Vortex | cag | Инструменты контекста Vortex — только stdio. Устарело в пользу vortex (старое название: Context Augmentation/CAG) |
| Vortex | vortex | Единый, рекомендуемый набор, предоставляющий как инструменты контекста Vortex, так и инструменты анализа Vortex под одним именем (только stdio; Cloud требует комбинированного права организации; Server требует права на оба хаба) |
| Готовность к агентности | agentic-readiness | Инструменты оценки готовности к агентности (SonarQube Cloud, требуется право организации) |
Примеры
Включение наборов инструментов анализа, проблем и качественных ворот (с использованием Docker с SonarQube Cloud):
docker run --init --pull=always -i --rm \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_ORG="<org>" \
-e SONARQUBE_TOOLSETS="analysis,issues,quality-gates" \
sonarsource/sonarqube-mcp
Примечание: набор projects всегда включается автоматически, поэтому его не нужно указывать в SONARQUBE_TOOLSETS.
Включение режима только для чтения (с использованием Docker с SonarQube Cloud):
docker run --init --pull=always -i --rm \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_ORG="<org>" \
-e SONARQUBE_READ_ONLY="true" \
sonarsource/sonarqube-mcp
SonarQube Cloud
Для включения полной функциональности перед запуском сервера должны быть заданы следующие переменные окружения:
| Переменная окружения | Описание | Обязательно |
|---|---|---|
SONARQUBE_TOKEN | Ваш токен SonarQube Cloud | Да |
SONARQUBE_ORG | Ваш ключ организации SonarQube Cloud | Да |
SONARQUBE_URL | Пользовательский URL SonarQube Cloud (по умолчанию https://sonarcloud.io). Используйте для SonarQube Cloud US: https://sonarqube.us | Нет |
Примеры:
- SonarQube Cloud: нужны только
SONARQUBE_TOKENиSONARQUBE_ORG - SonarQube Cloud US: задайте
SONARQUBE_TOKEN,SONARQUBE_ORGиSONARQUBE_URL=https://sonarqube.us
SonarQube Server
| Переменная окружения | Описание | Обязательно |
|---|---|---|
SONARQUBE_TOKEN | Ваш токен ПОЛЬЗОВАТЕЛЯ SonarQube Server | Да |
SONARQUBE_URL | URL вашего SonarQube Server | Да |
Требование к версии: Требуется SonarQube Server 2025.1 (SQS) или 25.1 (SonarQube Community Build) или новее. При запуске MCP-сервер считывает версию подключенного экземпляра и завершает работу с ошибкой, если она слишком старая (например, устаревшие выпуски Server 9.x/10.x и Community Build 24.x не поддерживаются). SonarQube Cloud не подлежит этой проверке.
⚠️ Подключение к SonarQube Server требует токен типа USER и не будет работать должным образом, если используются проектные или глобальные токены.
💡 Совет по настройке (режим stdio): Наличие
SONARQUBE_ORGопределяет, подключаетесь ли вы к SonarQube Cloud или Server. Если заданSONARQUBE_ORG, используется SonarQube Cloud; в противном случае используется SonarQube Server.
Режимы транспорта
Спецификация MCP определяет два механизма транспорта: Stdio и Streamable HTTP. MCP-сервер SonarQube поддерживает оба:
| Транспорт MCP | Режим сервера | Типичное использование |
|---|---|---|
| Stdio | По умолчанию (без SONARQUBE_TRANSPORT) | Локальные MCP-клиенты, запускающие сервер как подпроцесс (Cursor, Claude Code, VS Code и т. д.) |
| Streamable HTTP | SONARQUBE_TRANSPORT=http или https | Удаленные или многопользовательские развертывания; клиенты подключаются к /mcp по HTTP(S) (например, Windsurf с самостоятельно размещенным URL сервера) |
Примечание: Streamable HTTP — это текущий сетевой транспорт MCP. Более старый HTTP-транспорт только с SSE из ранних версий MCP устарел и не поддерживается.
1. Stdio (по умолчанию — рекомендуется для локальной разработки)
Рекомендуемый режим для локальной разработки и однопользовательских установок, используемый большинством MCP-клиентов.
Пример — Docker с SonarQube Cloud:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"],
"env": {
"SONARQUBE_TOKEN": "<your-token>",
"SONARQUBE_ORG": "<your-org>"
}
}
}
}
2. HTTP (Streamable HTTP)
Незашифрованный транспорт Streamable HTTP. Для многопользовательских развертываний используйте HTTPS.
⚠️ Не рекомендуется: Используйте Stdio для локальной разработки или HTTPS (Streamable HTTP) для многопользовательских производственных развертываний.
| Переменная окружения | Описание | По умолчанию |
|---|---|---|
SONARQUBE_TRANSPORT | Установите в http, чтобы включить транспорт Streamable HTTP | Не задано (stdio) |
SONARQUBE_HTTP_PORT | Номер порта (1024-65535) | 8080 |
SONARQUBE_HTTP_HOST | Хост для привязки (по умолчанию localhost для безопасности) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Разделенный запятыми список источников браузера, разрешенных для CORS (например, https://my-app.example.com) | Не задано |
SONARQUBE_MCP_IN_CONTAINER | Установите в true при запуске внутри контейнера. Официальный образ Docker устанавливает это автоматически; установите самостоятельно при использовании других OCI-рантаймов (Podman, Kubernetes, Nomad и т. д.). | false |
Примечание: В режиме Streamable HTTP (HTTP или HTTPS) сервер не сохраняет состояние — каждый запрос клиента должен включать заголовок Authorization: Bearer <token> с собственным токеном SonarQube пользователя. Для SonarQube Cloud организация определяется следующим образом:
- Если
SONARQUBE_ORGзадан при запуске сервера, все запросы направляются в эту организацию. Клиенты не должны отправлять заголовокSONARQUBE_ORG— это приведет к ошибке. - Если
SONARQUBE_ORGне задан при запуске сервера, каждый клиент обязан предоставлять заголовокSONARQUBE_ORGв каждом запросе. Клиенты также могут сузить видимые инструменты для каждого запроса, предоставляя заголовкиSONARQUBE_TOOLSETSи/илиSONARQUBE_READ_ONLY; они применяют дополнительную фильтрацию поверх конфигурации уровня сервера — они могут только уменьшить область действия, но никогда не расширить ее. Между запросами состояние сеанса не сохраняется.
Устарело: Заголовок запроса
SONARQUBE_TOKENвсе еще принимается для обратной совместимости, но будет удален в будущей версии. Переходите наAuthorization: Bearer <token>.
3. HTTPS (Streamable HTTP через TLS) (рекомендуется для многопользовательских производственных развертываний)
Безопасный транспорт Streamable HTTP с шифрованием TLS. Требуются SSL-сертификаты.
✅ Рекомендуется для производства: Используйте HTTPS при развертывании MCP-сервера для нескольких пользователей через Streamable HTTP. Сервер по умолчанию привязывается к
127.0.0.1(localhost) для безопасности.
| Переменная окружения | Описание | По умолчанию |
|---|---|---|
SONARQUBE_TRANSPORT | Установите в https, чтобы включить транспорт Streamable HTTP через TLS | Не задано (stdio) |
SONARQUBE_HTTP_PORT | Номер порта (обычно 8443 для HTTPS) | 8080 |
SONARQUBE_HTTP_HOST | Хост для привязки (по умолчанию localhost для безопасности) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Разделенный запятыми список источников браузера, разрешенных для CORS (например, https://my-app.example.com) | Не задано |
SONARQUBE_MCP_IN_CONTAINER | Установите в true при запуске внутри контейнера. Официальный образ Docker устанавливает это автоматически; установите самостоятельно при использовании других OCI-рантаймов (Podman, Kubernetes, Nomad и т. д.). | false |
Конфигурация SSL-сертификата (необязательно):
| Переменная окружения | Описание | По умолчанию |
|---|---|---|
SONARQUBE_HTTPS_KEYSTORE_PATH | Путь к файлу хранилища ключей (.p12 или .jks) | /etc/ssl/mcp/keystore.p12 |
SONARQUBE_HTTPS_KEYSTORE_PASSWORD | Пароль хранилища ключей | sonarlint |
SONARQUBE_HTTPS_KEYSTORE_TYPE | Тип хранилища ключей (PKCS12 или JKS) | PKCS12 |
Пример — Docker с SonarQube Cloud:
Примечание: При запуске в контейнере установите
SONARQUBE_HTTP_HOST=0.0.0.0, чтобы контейнер прослушивал все интерфейсы и работало сопоставление портов рантайма, и установитеSONARQUBE_MCP_IN_CONTAINER=true, чтобы сообщить серверу, что он находится внутри контейнера. Официальный образ Docker устанавливает последнее автоматически; установите самостоятельно при использовании других OCI-рантаймов (Podman, Kubernetes, Nomad и т. д.). Флаг порта на стороне хоста контролирует, кто может получить доступ к серверу извне контейнера.SONARQUBE_HTTP_HOST=0.0.0.0управляет только тем, где сервер прослушивает внутри контейнера — браузерный CORS по умолчанию по-прежнему разрешает источники localhost.
Для сервера, работающего локально на вашей машине (доступного только с localhost):
docker run --init --pull=always -p 127.0.0.1:8443:8443 \
-v $(pwd)/keystore.p12:/etc/ssl/mcp/keystore.p12:ro \
-e SONARQUBE_TRANSPORT=https \
-e SONARQUBE_HTTP_HOST=0.0.0.0 \
-e SONARQUBE_HTTP_PORT=8443 \
-e SONARQUBE_TOKEN="<init-token>" \
-e SONARQUBE_ORG="<your-org>" \
sonarsource/sonarqube-mcp
Для сервера, доступного из сети (удаленные развертывания):
docker run --init --pull=always -p 8443:8443 \
-v $(pwd)/keystore.p12:/etc/ssl/mcp/keystore.p12:ro \
-e SONARQUBE_TRANSPORT=https \
-e SONARQUBE_HTTP_HOST=0.0.0.0 \
-e SONARQUBE_HTTP_PORT=8443 \
-e SONARQUBE_TOKEN="<init-token>" \
-e SONARQUBE_ORG="<your-org>" \
sonarsource/sonarqube-mcp
Конфигурация клиента (SonarQube Cloud):
{
"mcpServers": {
"sonarqube-https": {
"url": "https://your-server:8443/mcp",
"headers": {
"Authorization": "Bearer <your-token>",
"SONARQUBE_ORG": "<your-org>",
"SONARQUBE_TOOLSETS": "issues,quality-gates",
"SONARQUBE_READ_ONLY": "true"
}
}
}
}
Конфигурация клиента (SonarQube Server):
{
"mcpServers": {
"sonarqube-https": {
"url": "https://your-server:8443/mcp",
"headers": {
"Authorization": "Bearer <your-token>",
"SONARQUBE_TOOLSETS": "issues,quality-gates",
"SONARQUBE_READ_ONLY": "true"
}
}
}
}
Примечание:
SONARQUBE_TOOLSETSиSONARQUBE_READ_ONLY— необязательные заголовки для каждого запроса, которые сужают набор инструментов уровня сервера для этого конкретного запроса. Они могут только уменьшить область действия — они не могут включить наборы инструментов или снять ограничения, выходящие за пределы того, с чем был запущен сервер.
Примечание: Для локальной разработки используйте транспорт Stdio (по умолчанию). HTTPS Streamable HTTP предназначен для многопользовательских производственных развертываний с надлежащими SSL-сертификатами.
Конечные точки службы
При работе в режиме Streamable HTTP (http или https) сервер предоставляет несколько неаутентифицированных служебных конечных точек в дополнение к конечной точке MCP по адресу /mcp. Они предназначены для взаимодействия между службами (мониторинг, оркестрация, проверки совместимости клиентов) и не требуют заголовка Authorization.
| Конечная точка | Метод | Описание | Пример ответа |
|---|---|---|---|
/health | GET | Проверка активности. Возвращает 200 OK с пустым телом, как только сервер начинает принимать запросы. | (пустое тело) |
/info | GET | Возвращает версию MCP-сервера в формате JSON. Полезно для проверки развернутой версии сервера. | {"version":"1.16.0"} |
Эти конечные точки недоступны при работе с транспортом Stdio.
Пользовательские сертификаты
Если ваш SonarQube Server использует самозаверяющий сертификат или сертификат от частного центра сертификации (CA), вы можете добавить пользовательские сертификаты в контейнер, которые будут автоматически установлены.
Конфигурация
Использование монтирования тома
Смонтируйте каталог с вашими сертификатами при запуске контейнера:
docker run --init --pull=always -i --rm \
-v /path/to/your/certificates/:/usr/local/share/ca-certificates/:ro \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_URL="<url>" \
sonarsource/sonarqube-mcp
Поддерживаемые форматы сертификатов
Контейнер поддерживает следующие форматы сертификатов:
- Файлы
.crt(в кодировке PEM или DER) - Файлы
.pem(в кодировке PEM)
Конфигурация MCP с сертификатами
При использовании пользовательских сертификатов вы можете изменить конфигурацию MCP для монтирования сертификатов:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-v",
"/path/to/your/certificates/:/usr/local/share/ca-certificates/:ro",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Примечание: Запускаете сервер из JAR-файла вместо контейнера? Монтирование тома выше устанавливает сертификаты в хранилище доверия ОС контейнера, которое сервер также читает. Если вы не можете использовать хранилище доверия ОС — особенно в Windows, где оно не используется — укажите JVM на хранилище доверия Java, содержащее сертификат CA:
-Djavax.net.ssl.trustStore=/path/to/truststore.p12 -Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.trustStorePassword=<passphrase>. Оно добавляется поверх доверенных сертификатов по умолчанию.
Прокси
MCP-сервер SonarQube поддерживает прокси HTTP и SOCKS5 через стандартные системные свойства прокси Java.
Конфигурация
Прокси HTTP/HTTPS
Вы можете настроить параметры прокси с помощью системных свойств Java. Их можно задать как переменные окружения или передать как аргументы JVM.
Общие свойства прокси:
| Свойство | Описание | Пример |
|---|---|---|
http.proxyHost | Имя хоста HTTP-прокси | proxy.example.com |
http.proxyPort | Порт HTTP-прокси | 8080 |
https.proxyHost | Имя хоста HTTPS-прокси | proxy.example.com |
https.proxyPort | Порт HTTPS-прокси | 8443 |
http.nonProxyHosts | Хосты, обходящие прокси (разделенные вертикальной чертой) | localhost|127.0.0.1|*.internal.com |
Аутентификация прокси HTTP/HTTPS:
| Свойство | Описание | Пример |
|---|---|---|
http.proxyUser | Имя пользователя HTTP-прокси | myuser |
http.proxyPassword | Пароль HTTP-прокси | mypassword |
https.proxyUser | Имя пользователя HTTPS-прокси | myuser |
https.proxyPassword | Пароль HTTPS-прокси | mypassword |
Прокси SOCKS5
Поддерживаются прокси SOCKS5.
| Свойство | Описание | По умолчанию | Пример |
|---|---|---|---|
socksProxyHost | Имя хоста прокси SOCKS5 | — | localhost |
socksProxyPort | Порт прокси SOCKS5 | 1080 | 1080 |
java.net.socks.username | Имя пользователя SOCKS5 (если требуется аутентификация) | — | myuser |
java.net.socks.password | Пароль SOCKS5 (если требуется аутентификация) | — | mypassword |
Клиентский сертификат (Взаимный TLS)
Если ваш сервер SonarQube требует, чтобы клиенты предъявляли сертификат во время рукопожатия TLS (взаимный TLS), вы можете предоставить хранилище ключей PKCS12, смонтировав его в контейнер и передав его расположение через JAVA_OPTS.
Конфигурация
Использование хранилища ключей PKCS12
Смонтируйте ваш файл .p12 или .pfx в контейнер и установите переменную окружения JAVA_OPTS со свойствами хранилища ключей:
docker run --init --pull=always -i --rm \
-v /path/to/client.p12:/etc/ssl/mcp/client.p12:ro \
-e JAVA_OPTS="-Djavax.net.ssl.keyStore=/etc/ssl/mcp/client.p12 -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=<passphrase>" \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_URL="<url>" \
sonarsource/sonarqube-mcp
Примечание: Файл сертификата должен быть читаемым процессом контейнера. Проверьте и исправьте права доступа при необходимости:
ls -la /path/to/client.p12 # ищите -rw-r--r-- (644) или шире chmod 644 /path/to/client.p12 # предоставьте доступ на чтение пользователю контейнера
Опустите -Djavax.net.ssl.keyStorePassword, если хранилище ключей не имеет парольной фразы. Обратите внимание, что используемая здесь парольная фраза будет видна через docker inspect или список процессов.
Конфигурация MCP с клиентским сертификатом
{
"sonarqube": {
"command": "docker",
"args": [
"run", "--init", "--pull=always", "-i", "--rm",
"-v", "/path/to/client.p12:/etc/ssl/mcp/client.p12:ro",
"-e", "JAVA_OPTS",
"-e", "SONARQUBE_TOKEN",
"-e", "SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"JAVA_OPTS": "-Djavax.net.ssl.keyStore=/etc/ssl/mcp/client.p12 -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=<passphrase>",
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Использование хранилища ключей PKCS12 с автономным JAR
При запуске сервера из JAR передайте свойства хранилища ключей как аргументы JVM перед -jar:
java \
-Djavax.net.ssl.keyStore=/path/to/client.p12 \
-Djavax.net.ssl.keyStoreType=PKCS12 \
-Djavax.net.ssl.keyStorePassword=<passphrase> \
-jar <path_to_sonarqube_mcp_server_jar>
Опустите -Djavax.net.ssl.keyStorePassword, если хранилище ключей не имеет парольной фразы.
Конфигурация MCP с клиентским сертификатом (JAR)
{
"sonarqube": {
"command": "java",
"args": [
"-Djavax.net.ssl.keyStore=/path/to/client.p12",
"-Djavax.net.ssl.keyStoreType=PKCS12",
"-Djavax.net.ssl.keyStorePassword=<passphrase>",
"-jar",
"<path_to_sonarqube_mcp_server_jar>"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Примечание: PEM-файлы сертификата и ключа (отдельные файлы
.crt/.key) должны быть сначала преобразованы в формат PKCS12. Используйтеopenssl pkcs12 -export -in client.crt -inkey client.key -out client.p12для их преобразования.
Инструменты
Анализ
-
analyze_code_snippet - Анализировать содержимое файла с помощью анализаторов SonarQube для выявления проблем качества кода и безопасности. Всегда анализирует полное содержимое файла для точности. При желании можно отфильтровать результаты до конкретного фрагмента кода.
Устарело:
analyze_code_snippetбудет удален в будущем выпуске. Подключите SonarQube for IDE, чтобы использоватьanalyze_file_list, или включите анализ Vortex для вашей организации, чтобы использоватьrun_advanced_code_analysis(см. ниже).Использование:
- С смонтированным рабочим каталогом (рекомендуется): передайте
filePath(относительный путь к проекту) — сервер читает файл напрямую, сохраняя содержимое файла вне контекстного окна агента - Без смонтированного рабочего каталога: передайте полный
fileContentдля анализа полного файла (сообщает обо всех проблемах) - Добавьте необязательный
codeSnippetдля фильтрации результатов — будут сообщены только проблемы в пределах фрагмента (местоположение фрагмента определяется автоматически)
Параметры:
projectKey- Ключ проекта SonarQube - Обязательная строка (Игнорируется, когда определенSONARQUBE_PROJECT_KEY)filePath- Относительный путь к файлу для анализа (например,src/main/java/MyClass.java). Используется, когда рабочий каталог смонтирован в/app/mcp-workspace- СтрокаfileContent- Полное содержимое файла в виде строки. Требуется, когда рабочий каталог не смонтирован - СтрокаcodeSnippet- Фрагмент кода для фильтрации проблем (должен соответствовать содержимому в fileContent) - Строкаlanguage- Язык кода (например, 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - Строкаscope- Область файла: MAIN или TEST (по умолчанию: MAIN) - Строка
Поддерживаемые языки: Java, Kotlin, Python, Ruby, Go, JavaScript (
js,jsx), TypeScript (ts,tsx), JSP, PHP, XML, HTML, CSS, CloudFormation, Kubernetes, Terraform, Azure Resource Manager, Ansible, Docker, обнаружение секретов - С смонтированным рабочим каталогом (рекомендуется): передайте
Когда интеграция с SonarQube for IDE включена: (эти два инструмента помечены как в наборе инструментов analysis, так и в ide)
-
analyze_file_list - Анализировать файлы в текущем рабочем каталоге с помощью SonarQube for IDE. Этот инструмент подключается к запущенному экземпляру SonarQube for IDE для выполнения анализа качества кода для списка файлов.
file_absolute_paths- Список абсолютных путей к файлам для анализа - Обязательный String[]
-
toggle_automatic_analysis - Включить или отключить автоматический анализ SonarQube for IDE. Когда включено, SonarQube for IDE будет автоматически анализировать файлы по мере их изменения в рабочем каталоге. Когда отключено, автоматический анализ выключен.
enabled- Включить или отключить автоматический анализ - Обязательный Boolean
На сервере SonarQube stdio перечисляет инструменты контекста Vortex и run_advanced_code_analysis, когда оба хаба CAG и A3S имеют право на использование.
Когда анализ Vortex включен:
Требуется, чтобы рабочий каталог был смонтирован в
/app/mcp-workspace
- run_advanced_code_analysis - Запустить анализ Vortex для одного файла. Организация определяется из конфигурации MCP (сервер SonarQube использует заполнитель nil UUID).
projectKey- Ключ проекта - Обязательная строка (Игнорируется, когда определенSONARQUBE_PROJECT_KEY)branch- Имя ветки, используемое для получения последнего контекста анализа - Обязательная строкаfilePath- Относительный путь к файлу для анализа (например,src/main/java/MyClass.java). - Обязательная строкаfileScope- Определяет, из какой области происходит файл: 'MAIN' или 'TEST' (по умолчанию: MAIN) - Строка
Покрытие
-
search_files_by_coverage - Поиск файлов в проекте, отсортированных по покрытию (по возрастанию — сначала худшее покрытие). Этот инструмент помогает выявить файлы, требующие улучшения тестового покрытия.
projectKey- Ключ проекта для поиска - Обязательная строка (Игнорируется, когда определенSONARQUBE_PROJECT_KEY)branch- Необязательное имя ветки для анализа на основе веток. Используйтеlist_branchesдля обнаружения допустимых имен - СтрокаpullRequest- Необязательный ключ/ID запроса на включение. Используйтеlist_pull_requestsдля обнаружения допустимых ключей - СтрокаmaxCoverage- Максимальный порог покрытия (0-100). Возвращать только файлы с покрытием <= этого значения - ЧислоpageIndex- Индекс страницы (начиная с 1, по умолчанию: 1) - ЧислоpageSize- Размер страницы (по умолчанию: 100, максимум: 500) - Число
-
get_file_coverage_details - Получить информацию о покрытии построчно для конкретного файла, включая точные строки, которые не покрыты, и строки с частично покрытыми ветками. Этот инструмент помогает точно определить, где добавить тестовое покрытие. Используйте после выявления файлов с низким покрытием с помощью search_files_by_coverage.
key- Ключ файла (например, my_project:src/foo/Bar.java) - Обязательная строкаbranch- Необязательное имя ветки для анализа на основе веток. Используйтеlist_branchesдля обнаружения допустимых имен - СтрокаpullRequest- Необязательный ключ/ID запроса на включение. Используйтеlist_pull_requestsдля обнаружения допустимых ключей - Строкаfrom- Первая строка для анализа (начиная с 1, по умолчанию: 1) - Числоto- Последняя строка для анализа (включительно). Если не указано, возвращаются все строки - Число
Риски зависимостей
Примечание: Риски зависимостей доступны только при подключении к SonarQube Server 2025.4 Enterprise или выше с включенным SonarQube Advanced Security.
- search_dependency_risks - Поиск проблем анализа состава программного обеспечения (риски зависимостей) проекта SonarQube, в паре с релизами, которые появляются в анализируемом проекте, приложении или портфеле.
projectKey- Ключ проекта - Обязательная строка (Игнорируется, когда определенSONARQUBE_PROJECT_KEY)branch- Необязательное имя ветки для анализа на основе веток. Используйтеlist_branchesдля обнаружения допустимых имен - СтрокаpullRequest- Необязательный ключ/ID запроса на включение. Используйтеlist_pull_requestsдля обнаружения допустимых ключей - СтрокаpageIndex- Необязательный индекс страницы (начиная с 1, по умолчанию: 1) - Целое числоpageSize- Необязательный размер страницы. Должен быть больше 0 и меньше или равен 500 (по умолчанию: 100) - Целое число
Предприятия
Примечание: Предприятия доступны только при подключении к SonarQube Cloud.
- list_enterprises - Перечислить предприятия, доступные в SonarQube Cloud, к которым у вас есть доступ. Используйте этот инструмент для обнаружения идентификаторов предприятий, которые можно использовать с другими инструментами.
enterpriseKey- Необязательный ключ предприятия для фильтрации результатов - Строка
Проблемы
-
change_sonar_issue_status - Изменить статус проблемы SonarQube на "accept", "falsepositive" или "reopen" проблемы.
key- Ключ проблемы - Обязательная строкаstatus- Новый статус проблемы - Обязательное перечисление {"accept", "falsepositive", "reopen"}comment- Необязательный комментарий, объясняющий изменение статуса - Строка
-
search_sonar_issues_in_projects - Поиск проблем SonarQube в проектах моей организации.
projectKeys- Необязательный список ключей проектов SonarQube - String[]branch- Необязательное имя ветки для анализа на основе веток. Используйтеlist_branchesдля обнаружения допустимых имен - СтрокаpullRequest- Необязательный ключ/ID запроса на включение. Используйтеlist_pull_requestsдля обнаружения допустимых ключей - Строкаseverities- Необязательный список серьезностей для фильтрации. Возможные значения: INFO, LOW, MEDIUM, HIGH, BLOCKER - String[]impactSoftwareQualities- Необязательный список качеств программного обеспечения для фильтрации. Возможные значения: MAINTAINABILITY, RELIABILITY, SECURITY - String[]issueStatuses- Необязательный список статусов проблем для фильтрации. Возможные значения: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - String[]tags- Необязательный список тегов проблем для фильтрации. Теги в нижнем регистре - String[]inNewCodePeriod- Возвращать только проблемы в периоде нового кода. Требуется ровно одна запись средиprojectKeysиfiles- Логическое значениеissueKey- Необязательный ключ проблемы для получения конкретной проблемы - СтрокаpageIndex- Необязательный индекс страницы (начиная с 1, по умолчанию: 1) - Целое числоpageSize- Необязательный размер страницы. Должен быть больше 0 и меньше или равен 500 (по умолчанию: 100) - Целое число
Уязвимости безопасности
-
search_security_hotspots - Поиск уязвимостей безопасности в проекте SonarQube.
projectKey- Ключ проекта или приложения - Обязательная строка (Игнорируется, когда определенSONARQUBE_PROJECT_KEY)hotspotKeys- Список конкретных ключей уязвимостей безопасности через запятую для получения - String[]branch- Необязательное имя ветки для анализа на основе веток. Используйтеlist_branchesдля обнаружения допустимых имен - СтрокаpullRequest- Необязательный ключ/ID запроса на включение. Используйтеlist_pull_requestsдля обнаружения допустимых ключей - Строкаfiles- Необязательный список путей к файлам для фильтрации - String[]status- Необязательный фильтр статуса: TO_REVIEW, REVIEWED - Строкаresolution- Необязательный фильтр разрешения: FIXED, SAFE, ACKNOWLEDGED - СтрокаsinceLeakPeriod- Фильтровать уязвимости, созданные с момента периода утечки (новый код) - Логическое значениеonlyMine- Показывать только уязвимости, назначенные мне - Логическое значениеpageIndex- Необязательный индекс страницы (начиная с 1, по умолчанию: 1) - Целое числоpageSize- Необязательный размер страницы. Должен быть больше 0 и меньше или равен 500 (по умолчанию: 100) - Целое число
-
show_security_hotspot - Получить подробную информацию о конкретной уязвимости безопасности, включая детали правила, контекст кода, потоки и комментарии.
hotspotKey- Ключ уязвимости безопасности - Обязательная строка
-
change_security_hotspot_status - Проверить Security Hotspot, изменив его статус. При пометке как REVIEWED необходимо указать резолюцию (FIXED, SAFE или ACKNOWLEDGED).
hotspotKey- Ключ Security Hotspot - Обязательная строкаstatus- Новый статус - Обязательное перечисление {"TO_REVIEW", "REVIEWED"}resolution- Резолюция, когда статус REVIEWED - Перечисление {"FIXED", "SAFE", "ACKNOWLEDGED"}comment- Необязательный комментарий к проверке - Строка
Языки
- list_languages - Список всех языков программирования, поддерживаемых в этом экземпляре SonarQube.
q- Необязательный шаблон для сопоставления ключей/названий языков - Строка
Показатели
- get_component_measures - Получить показатели SonarQube для компонента (проект, каталог, файл).
projectKey- Ключ проекта - Обязательная строка, если не заданSONARQUBE_PROJECT_KEYbranch- Необязательное имя ветки для анализа на основе ветки. Используйтеlist_branchesдля поиска допустимых имен - СтрокаmetricKeys- Необязательные ключи метрик для получения (например, ncloc, complexity, violations, coverage) - String[]pullRequest- Необязательный ключ/ID pull request. Используйтеlist_pull_requestsдля поиска допустимых ключей - Строка
Метрики
- search_metrics - Поиск метрик SonarQube.
pageIndex- Необязательный индекс страницы с 1 (по умолчанию: 1) - Целое числоpageSize- Необязательный размер страницы. Должен быть больше 0 и меньше или равен 500 (по умолчанию: 100) - Целое число
Портфели
-
list_portfolios - Список корпоративных портфелей, доступных в SonarQube, с параметрами фильтрации и постраничного вывода.
Для SonarQube Server:
q- Необязательный поисковый запрос для фильтрации портфелей по имени или ключу - Строкаfavorite- Если true, возвращаются только избранные портфели - Логическое значениеpageIndex- Необязательный номер страницы с 1 (по умолчанию: 1) - Целое числоpageSize- Необязательный размер страницы, максимум 500 (по умолчанию: 100) - Целое число
Для SonarQube Cloud:
enterpriseId- Enterprise uuid. Может быть опущен, только если параметр 'favorite' указан со значением true - Строкаq- Необязательный поисковый запрос для фильтрации портфелей по имени - Строкаfavorite- Должен быть true, если параметр 'enterpriseId' опущен. Если true, возвращаются только портфели, добавленные в избранное вошедшим пользователем. Не может быть true, если 'draft' равен true - Логическое значениеdraft- Если true, возвращаются только черновики, созданные вошедшим пользователем. Не может быть true, если 'favorite' равен true - Логическое значениеpageIndex- Необязательный индекс страницы для получения (по умолчанию: 1) - Целое числоpageSize- Необязательный размер страницы для получения (по умолчанию: 50) - Целое число
Проекты
-
search_my_sonarqube_projects - Поиск проектов SonarQube. Ответ разбит на страницы.
pageIndex- Необязательный индекс страницы с 1 (по умолчанию: 1) - Целое числоpageSize- Необязательный размер страницы. Должен быть больше 0 и меньше или равен 500 (по умолчанию: 500) - Целое числоq- Необязательный поисковый запрос для фильтрации проектов по имени (частичное совпадение) или ключу (точное совпадение) - Строка
-
list_branches - Список проанализированных веток для проекта.
- SonarQube Cloud: возвращает долгоживущие (
LONG) и короткоживущие (SHORT) ветки с полямиtypeиmergeBranch. Необязательный фильтрbranchTypes:ALL(по умолчанию),LONGилиSHORT. - SonarQube Server: возвращает все проанализированные ветки (имя, качественный шлюз, дата анализа). Фильтр
type,mergeBranchилиbranchTypesотсутствует. - Используйте возвращенные имена веток как параметр
branchв других инструментах. Для анализа pull request используйтеlist_pull_requests. projectKey- Ключ проекта (например, my_project) - Обязательная строка (Игнорируется, если заданSONARQUBE_PROJECT_KEY)branchTypes- (Только SonarQube Cloud) Необязательный фильтр:ALL(по умолчанию),LONGилиSHORT- Перечисление {"ALL", "LONG", "SHORT"}
- SonarQube Cloud: возвращает долгоживущие (
-
list_pull_requests - Список всех pull request для проекта. Используйте этот инструмент для поиска pull request для анализа с оформлением PR (покрытие, проблемы, качественный шлюз). Возвращает ключ/ID pull request, который можно использовать с другими инструментами. Для анализа на основе ветки без pull request используйте
list_branches.projectKey- Ключ проекта (например, my_project) - Обязательная строка (Игнорируется, если заданSONARQUBE_PROJECT_KEY)
Качественные шлюзы
-
get_project_quality_gate_status - Получить статус качественного шлюза для проекта SonarQube.
analysisId- Необязательный ID анализа - Строкаbranch- Необязательное имя ветки для анализа на основе ветки. Используйтеlist_branchesдля поиска допустимых имен - СтрокаprojectId- Необязательный ID проекта - СтрокаprojectKey- Необязательный ключ проекта - СтрокаpullRequest- Необязательный ключ/ID pull request. Используйтеlist_pull_requestsдля поиска допустимых ключей - Строка
-
list_quality_gates - Список всех качественных шлюзов в моем SonarQube.
Правила
- show_rule - Показывает подробную информацию о правиле SonarQube.
key- Ключ правила - Обязательная строка
Дубликаты
-
search_duplicated_files - Поиск файлов с дублированием кода в проекте SonarQube. По умолчанию автоматически получает все дублированные файлы на всех страницах (максимум 10 000 файлов). Возвращает только файлы с дубликатами.
projectKey- Ключ проекта - Обязательная строка (Игнорируется, если заданSONARQUBE_PROJECT_KEY)branch- Необязательное имя ветки для анализа на основе ветки. Используйтеlist_branchesдля поиска допустимых имен - СтрокаpullRequest- Необязательный ключ/ID pull request. Используйтеlist_pull_requestsдля поиска допустимых ключей - СтрокаpageSize- Необязательное количество результатов на страницу для ручной разбивки на страницы (максимум: 500). Если не указано, автоматически получает все дублированные файлы - Целое числоpageIndex- Необязательный номер страницы для ручной разбивки на страницы (начиная с 1). Если не указано, автоматически получает все дублированные файлы - Целое число
-
get_duplications - Получить дубликаты для файла. Требуется разрешение Browse на проект файла.
key- Ключ файла - Обязательная строкаbranch- Необязательное имя ветки для анализа на основе ветки. Используйтеlist_branchesдля поиска допустимых имен - СтрокаpullRequest- Необязательный ключ/ID pull request. Используйтеlist_pull_requestsдля поиска допустимых ключей - Строка
Исходные коды
-
get_raw_source - Получить исходный код в виде обычного текста из SonarQube. Требуется разрешение 'See Source Code' на файл.
key- Ключ файла - Обязательная строкаbranch- Необязательное имя ветки для анализа на основе ветки. Используйтеlist_branchesдля поиска допустимых имен - СтрокаpullRequest- Необязательный ключ/ID pull request. Используйтеlist_pull_requestsдля поиска допустимых ключей - Строка
-
get_scm_info - Получить информацию SCM о файлах исходного кода SonarQube. Требуется разрешение See Source Code на проект файла.
key- Ключ файла - Обязательная строкаcommits_by_line- Группировать строки по коммиту SCM, если значение false, иначе отображать коммиты для каждой строки - Строкаfrom- Первая строка для возврата. Начинается с 1 - Числоto- Последняя строка для возврата (включительно) - Число
Система
Примечание: Системные инструменты доступны только при подключении к SonarQube Server.
-
get_system_health - Получить статус здоровья экземпляра SonarQube Server. Возвращает GREEN (полностью работоспособен), YELLOW (работоспособен, но требует внимания) или RED (неработоспособен).
-
get_system_info - Получить подробную информацию о конфигурации системы SonarQube Server, включая состояние JVM, базу данных, поисковые индексы и настройки. Требуется разрешение 'Administer'.
-
get_system_logs - Получить системные журналы SonarQube Server в формате обычного текста. Требуется разрешение администратора системы.
name- Необязательное имя журналов для получения. Возможные значения: access, app, ce, deprecation, es, web. По умолчанию: app - Строка
-
ping_system - Проверить систему SonarQube Server на доступность. Возвращает 'pong' в виде обычного текста.
-
get_system_status - Получить информацию о состоянии SonarQube Server. Возвращает статус (STARTING, UP, DOWN, RESTARTING, DB_MIGRATION_NEEDED, DB_MIGRATION_RUNNING), версию и id.
Вебхуки
-
create_webhook - Создать новый вебхук для организации или проекта SonarQube. Требуется разрешение 'Administer' на указанный проект или глобальное разрешение 'Administer'.
name- Имя вебхука - Обязательная строкаurl- URL вебхука - Обязательная строкаprojectKey- Необязательный ключ проекта для вебхука конкретного проекта - Строкаsecret- Необязательный секрет вебхука для защиты полезной нагрузки вебхука - Строка
-
list_webhooks - Список всех вебхуков для организации или проекта SonarQube. Требуется разрешение 'Administer' на указанный проект или глобальное разрешение 'Administer'.
projectKey- Необязательный ключ проекта для списка вебхуков конкретного проекта - Строка
Расширение контекста
Инструменты архитектуры
-
search_by_signature_patterns - Поиск элементов кода (классы, методы, интерфейсы и т. д.) по их сигнатурам объявления с использованием regex-шаблонов.
include_code_regex_list- Список regex-шаблонов для сопоставления с сигнатурами - Обязательный String[]exclude_code_regex_list- Список regex-шаблонов для исключения из результатов - String[]include_glob- Глобальный шаблон фильтра файлов (например,*.java) - Строкаexclude_glob- Глобальный шаблон исключения файлов - Строкаfields- Список полей через запятую для включения в ответ - Строкаlimit- Максимальное количество результатов для возврата (по умолчанию: 10) - Целое числоregex_lists_operator- Как комбинировать несколько шаблонов:OR(по умолчанию) илиAND- Строка
-
search_by_body_patterns - Поиск элементов кода по их телу реализации с использованием regex-шаблонов. Полезно для поиска мест, где API или шаблоны фактически используются.
include_code_regex_list- Список regex-шаблонов для сопоставления в телах кода - Обязательный String[]exclude_code_regex_list- Список regex-шаблонов для исключения из результатов - String[]include_glob- Глобальный шаблон фильтра файлов - Строкаexclude_glob- Глобальный шаблон исключения файлов - Строкаfields- Список полей через запятую для включения в ответ - Строкаlimit- Максимальное количество результатов для возврата (по умолчанию: 10) - Целое числоregex_lists_operator- Как комбинировать несколько шаблонов:OR(по умолчанию) илиAND- Строка
-
get_upstream_call_flow - Проследить, какие функции вызывают данную функцию. Полезно для поиска всех вызывающих и точек входа, а также для понимания, что сломается при изменении сигнатуры.
fqn- Полное имя функции - Обязательная строкаdepth- Глубина цепочки вызовов (0=только функция, 1=прямые вызывающие и т. д.) - Целое числоfields- Список полей через запятую для включения в ответ - Строка
-
get_downstream_call_flow - Проследить, какие функции вызывает данная функция. Полезно для анализа влияния и понимания потока выполнения.
fqn- Полное имя функции - Обязательная строкаdepth- Глубина цепочки вызовов (0=только функция, 1=прямые вызываемые и т. д.) - Целое числоfields- Список полей через запятую для включения в ответ - Строка
-
get_source_code - Получить полный исходный код (сигнатуру и тело) для элемента кода по его полному имени.
fqn- Полное имя элемента - Обязательная строкаfields- Список полей через запятую для включения в ответ - Строка
-
get_type_hierarchy — Получить полную иерархию наследования для классоподобной структуры (класс, интерфейс, перечисление, запись, исключение, структура). Необходимо для понимания деревьев наследования и рефакторинга.
fqn— Полное имя классоподобной структуры — Обязательная строкаfields— Список полей для включения в ответ, разделённый запятыми — Строка
-
get_references — Получить прямые входящие и исходящие ссылки на код для класса или модуля. Возвращает только прямые (не транзитивные) ссылки.
fqn— Полное имя класса или модуля — Обязательная строкаfields— Список полей для включения в ответ, разделённый запятыми — Строка
-
get_current_architecture — Получить иерархический граф архитектуры, отфильтрованный по префиксу пути и глубине. Полезно для изучения структуры модулей и высокоуровневых зависимостей.
depth— Глубина иерархии (0=только корень, 1=корень и дочерние элементы и т.д.) — Обязательное целое числоpath_prefix— Необязательный префикс пути для фильтрации узлов (например,com.example.service) — Строкаecosystem— Необязательная экосистема для фильтрации (java,cs,py,js,ts) — Строка
-
get_intended_architecture — Получить определённые пользователем архитектурные ограничения, указывающие, каким модулям разрешено зависеть от других.
Инструменты рекомендаций
- get_guidelines — Получить рекомендации по написанию кода на основе проблем проекта SonarQube, категорий каталога или их комбинации.
mode— Режим получения рекомендаций:project_based,category_basedилиcombined— Обязательная строкаcategories— Список названий категорий (обязательно для режимовcategory_basedиcombined) — String[]languages— Список целевых языков в формате ключа репозитория SonarQube (обязательно, если указанcategories) — String[]file_paths— Необязательный список путей к файлам для фильтрации рекомендаций — String[]
Инструменты сторонних зависимостей
- check_dependency — Проверить стороннюю зависимость на наличие уязвимостей безопасности, вредоносного ПО в цепочке поставок и соответствие лицензиям перед добавлением или обновлением.
purl— URL пакета (purl) с версией, согласно спецификации purl. Формат:pkg:<type>/<namespace>/<name>@<version>(например,pkg:npm/lodash@4.17.21,pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1,pkg:pypi/django@3.2.0) — Обязательная строка
Переменные окружения для расширения контекста
| Переменная | Описание | Обязательная | По умолчанию |
|---|---|---|---|
SONARQUBE_URL | URL SonarQube Cloud | Да | https://sonarcloud.io |
SONARQUBE_TOKEN | Токен аутентификации | Да | Нет |
SONARQUBE_ORG | Ключ организации в SonarQube Cloud | Да | Нет |
SONARQUBE_PROJECT_KEY | Ключ проекта в SonarQube Cloud | Да | Нет |
SONAR_SQ_BRANCH | Явное переопределение ветки SonarQube * | Нет | Нет |
SONARQUBE_DEBUG_ENABLED | Активировать отладочное журналирование (для устранения неполадок) | Нет | False |
SONAR_LOG_LEVEL | Подробность журналирования (TRACE, DEBUG, INFO, WARNING, ERROR) | Нет | INFO |
- Указывается, когда не используется git или когда имя ветки git не совпадает с именем ветки в SonarQube.
Конфигурация для конкретного проекта (рекомендуется)
Сначала экспортируйте переменную окружения SONARQUBE_TOKEN с действующим персональным токеном доступа (PAT) для вашего проекта.
# macOS/Linux (Bash/Zsh)
export SONARQUBE_TOKEN="{<YourUserToken>}"
Затем подключите рабочее пространство проекта, чтобы предоставить серверу расширения контекста прямой доступ к вашим исходным файлам:
{
"mcpServers": {
"sonarqube-mcp-server": {
"command": "docker",
"args": [
"run", "-i", "--rm", "--pull=always",
"-e", "SONARQUBE_URL",
"-e", "SONARQUBE_TOKEN",
"-e", "SONARQUBE_ORG",
"-e", "SONARQUBE_PROJECT_KEY",
"-e", "SONARQUBE_TOOLSETS",
"-v", "/ABSOLUTE/PATH/TO/YOUR/PROJECT:/app/mcp-workspace:rw",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_URL": "https://sonarcloud.io",
"SONARQUBE_ORG": "<YourOrganizationKey>",
"SONARQUBE_PROJECT_KEY": "<YourProjectKey>",
"SONARQUBE_TOOLSETS": "cag"
}
}
}
}
Важно: В конфигурации с областью проекта не помещайте SONARQUBE_TOKEN в блок env. Экспортируйте его как переменную окружения (export SONARQUBE_TOKEN=...). Docker перешлёт его в контейнер через -e SONARQUBE_TOKEN.
Готовность к агентному использованию
Примечание: Инструменты готовности к агентному использованию доступны только в SonarQube Cloud и требуют включения этой функции для вашей организации.
-
start_agentic_readiness_assessment — Запустить оценку готовности к агентному использованию для проекта. Возвращает немедленно со статусом
PENDINGиassessmentId. Используйтеget_agentic_readiness_assessmentдля опроса результатов.projectKey— Ключ проекта — Обязательная строка (Игнорируется, если определёнSONARQUBE_PROJECT_KEY)branch— Ветка для оценки. Опустите, чтобы использовать ветку проекта по умолчанию — Строка
-
get_agentic_readiness_assessment — Получить результат оценки. Повторно вызовите с тем же
assessmentId, пока статус не станетCOMPLETED,FAILEDилиINTERRUPTED. По завершении возвращает общий уровень и разбивку по направлениям с рекомендуемыми действиями и доказательствами.assessmentId— Идентификатор оценки, возвращённыйstart_agentic_readiness_assessment— Обязательная строка
-
list_agentic_readiness_assessments — Перечислить все оценки для проекта, сначала новые. Используйте
get_agentic_readiness_assessmentдля полных результатов по направлениям.projectKey— Ключ проекта для перечисления оценок — Обязательная строка (Игнорируется, если определёнSONARQUBE_PROJECT_KEY)branch— Фильтр оценок по имени ветки. Опустите, чтобы перечислить оценки для всех веток — СтрокаpageIndex— Индекс страницы с 1 (по умолчанию: 1) — ЧислоpageSize— Количество элементов на странице, максимум 100 (по умолчанию: 50) — Число
Примеры запросов
После настройки MCP-сервера SonarQube вот несколько примеров запросов для распространённых реальных сценариев:
Исправление неудачного Quality Gate
My quality gate is failing for my project. Can you help me understand why and fix the most critical issues?
The quality gate on my feature branch is red. What do I need to fix to get it passing before I can merge to main?
Проверки перед выпуском и слиянием
I'm about to merge my pull request <#247> for the <web-app> project. Can you check if there are any quality issues I should address first?
We're deploying to production tomorrow. Can you check the quality gate status and alert me to any critical issues in this branch?
Улучшение качества кода
I want to reduce technical debt in my project. What are the top issues I should prioritize?
Our code coverage dropped below 70%. Can you identify which files have the lowest coverage and help me improve it?
Понимание и исправление проблем
I have 15 new code smells in my latest commit. Can you explain what they are and help me fix them?
SonarQube flagged a critical security vulnerability in <AuthController.java>. What's the issue and how do I fix it?
Управление безопасностью и зависимостями
We need to pass a security audit. Can you check all our projects for security vulnerabilities and create a prioritized list of what needs to be fixed?
Are there any known vulnerabilities in our dependencies? Check this project for dependency risks.
Помощь в проверке кода
I just wrote this authentication function. Can you analyze it for security issues and code quality problems before I commit?
Review the changes in <src/database/migrations> for any potential bugs or security issues.
Мониторинг состояния проекта
Give me a health report for my project: quality gate status, number of bugs, Security Hotspots, and code coverage.
Compare code quality between our main branch and the develop branch. Are we introducing new issues?
Командное сотрудничество
What are the most common rule violations across all our projects? We might need to update our coding standards.
Show me all the issues that were marked as false positives in the last month. Are we seeing patterns that suggest our rules need adjustment?
Сборка
Предпочтительно использовать образ контейнера sonarsource/sonarqube-mcp.
Чтобы запустить сервер как автономный JAR без Docker, загрузите готовую сборку из репозитория двоичных файлов SonarSource. Каждая выпущенная версия публикуется там как sonarqube-mcp-server-<version>.jar (например, sonarqube-mcp-server-1.19.0.2785.jar).
Запуск из JAR
Загрузите JAR для нужной версии из репозитория двоичных файлов, затем настройте ваш MCP-клиент для запуска с Java 21 или новее:
- Для подключения к SonarQube Cloud:
{
"sonarqube": {
"command": "java",
"args": [
"-jar",
"<path_to_sonarqube_mcp_server_jar>"
],
"env": {
"STORAGE_PATH": "<path_to_your_mcp_storage>",
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_ORG": "<org>"
}
}
}
- Для подключения к SonarQube Server:
{
"sonarqube": {
"command": "java",
"args": [
"-jar",
"<path_to_sonarqube_mcp_server_jar>"
],
"env": {
"STORAGE_PATH": "<path_to_your_mcp_storage>",
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Сборка из исходного кода
Для сборки MCP-сервера SonarQube требуется Java Development Kit (JDK) версии 21 или новее.
Выполните следующую команду Gradle для очистки проекта и сборки приложения:
./gradlew clean build -x test
JAR-файл будет создан в build/libs/.
После добавления или обновления зависимостей перегенерируйте файлы блокировки:
./gradlew :dependencies --write-locks
./gradlew :its:dependencies --write-locks
Используйте конфигурацию Запуск из JAR выше, указав <path_to_sonarqube_mcp_server_jar> на JAR в build/libs/.
Устранение неполадок
Журналы приложения по умолчанию записываются в файл STORAGE_PATH/logs/mcp.log. Чтобы полностью отключить ведение журнала в файл, установите SONARQUBE_LOG_TO_FILE_DISABLED=true.
Распространённые проблемы
«Версия сервера SonarQube не поддерживается»
MCP-сервер проверяет версию подключённого SonarQube Server при запуске. Если экземпляр старше 2025.1 (SQS) или 25.1 (SQCB), запуск завершается ошибкой:
SonarQube server version is not supported, minimal version is SQS 2025.1 or SQCB 25.1
Решение: Обновите SonarQube Server до поддерживаемой версии. Эта проверка применяется только при подключении к SonarQube Server (SONARQUBE_URL без SONARQUBE_ORG), а не к SonarQube Cloud.
«Функция не работает» или «Отсутствуют инструменты/функциональность»
Возможно, вы используете устаревший образ Docker. Docker кэширует образы локально, поэтому вы не будете автоматически получать обновления.
Решение: Обновите до последней версии:
docker pull sonarsource/sonarqube-mcp
После загрузки последнего образа перезапустите ваш MCP-клиент, чтобы использовать обновлённую версию.
При желании добавьте флаг --pull=always в вашу команду docker run, чтобы всегда проверять и загружать последнюю версию:
docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG sonarsource/sonarqube-mcp
«Я хочу закрепить конкретную версию»
Просмотрите доступные теги на sonarsource/sonarqube-mcp и укажите нужную версию:
docker pull sonarsource/sonarqube-mcp:1.19.0.2785
docker run --init -i --rm \
-e SONARQUBE_TOKEN -e SONARQUBE_ORG \
sonarsource/sonarqube-mcp:1.19.0.2785
В конфигурации вашего MCP-клиента используйте sonarsource/sonarqube-mcp:<version> вместо sonarsource/sonarqube-mcp и удалите --pull=always, чтобы Docker не обновлял образ незаметно.
Данные и телеметрия
Этот сервер собирает анонимные данные об использовании и отправляет их в SonarSource для улучшения продукта. Исходный код или IP-адрес не собираются, и SonarSource не передаёт данные третьим лицам. Сбор телеметрии можно отключить с помощью следующего системного свойства или переменной окружения: TELEMETRY_DISABLED=true. Нажмите здесь, чтобы увидеть образец собираемых данных.
Лицензия
Copyright 2025 SonarSource.
Лицензировано в соответствии с SONAR Source-Available License v1.0. Использование MCP-сервера SonarQube в соответствии с этой документацией является неконкурентной целью и поэтому разрешено в рамках SSAL.
Ваше использование SonarQube через MCP регулируется Условиями обслуживания SonarQube Cloud или Условиями SonarQube Server, включая использование данных результатов исключительно для внутренних целей разработки программного обеспечения.