SonarQube について
SonarQube MCP Serverは、SonarQube ServerまたはCloudのコード品質・セキュリティ分析をAIエージェントに接続します。エージェントのコンテキスト内でコードスニペットを分析でき、コンテナイメージを使って設定できます。
主な機能
- 01SonarQube ServerまたはCloudへの接続
- 02エージェント内のスニペット分析
- 03コンテナによるデプロイ
- 04SonarQube for IDEとの連携
活用シーン
- 01エージェントのワークフローでコード品質を確認
- 02コードスニペットのセキュリティ確認
- 03IDEのワークフローにSonarQubeの分析を追加
MCP 対応
このMCPサーバーは、コードスニペットのコンテキスト内分析を含むSonarQubeのコード品質・セキュリティ分析をAIエージェントに提供します。SonarQube ServerまたはSonarQube Cloudに接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG -e SONARQUBE_URL docker.io/sonarsource/sonarqube-mcpSONARQUBE_TOKENシークレットYour SonarQube USER tokenSONARQUBE_ORGシークレットYour SonarQube Cloud organization key (if using SonarQube Cloud)SONARQUBE_URLシークレットYour SonarQube Server URL (if using SonarQube Server)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
翻訳後に原文が更新されています。最新の内容は原文をご確認ください。
SonarQube MCP サーバー
SonarQube MCP サーバーは、コード品質とセキュリティのために、SonarQube Server または Cloud とシームレスに連携できる Model Context Protocol(MCP)サーバーです。 エージェントのコンテキスト内でコードスニペットを直接解析することもできます。
クイックセットアップから始めるか、SonarQube 製品ファミリーについて詳しくご覧ください。
クイックセットアップ
セキュリティのベストプラクティス
🔒 重要:SonarQube トークンは機密性の高い認証情報です。以下のセキュリティ対策に従ってください。
CLI コマンドを使用する場合:
- トークンをコマンドライン引数にハードコードしないでください。シェルの履歴に保存されます。
- 環境変数を使用してください。コマンドを実行する前に、トークンを環境変数に設定してください。
設定ファイルを使用する場合:
- トークンをバージョン管理にコミットしないでください
- 可能な場合は、設定ファイルで環境変数の置換を使用してください
🚀 設定を生成する
最も手早く始める方法は、**SonarQube MCP サーバー設定ジェネレーター**を使用することです。お好みの AI エージェントクライアント向けに、すぐに使える設定を生成するインタラクティブなツールです。
手動セットアップ
自分で設定する場合は、sonarsource/sonarqube-mcp のコンテナイメージを使うのが最も簡単です。自動更新には sonarsource/sonarqube-mcp(--pull=always を指定)を使用するか、再現可能なデプロイのためにバージョンタグ(例:sonarsource/sonarqube-mcp:1.19.0.2785)を固定してください。一部のリリースには、対応する SonarQube Server のバージョンを示す形式 <SQS major>.<SQS minor>.<patch>(例:sonarsource/sonarqube-mcp:2026.5.0)のタグも付いています。この場合、パッチ番号は、その SonarQube Server バージョンを対象とする MCP のリリースごとに増加します。ローカルでビルドする場合は、以下をお読みください。
注記: 以下の例では
dockerを使用していますが、OCI 互換のコンテナランタイムであれば動作します(例:Podman、nerdctl)。dockerをお好みのツールに置き換えてください。
Antigravity
SonarQube MCP サーバーは Antigravity MCP Store で利用できます。以下の手順に従ってください。
- Agent Side Panelを開きます
- 右上の三点リーダー(...)をクリックし、MCP Serversを選択します
SonarQubeを検索し、Installを選択します- 必要な SonarQube User トークンを入力します。SonarQube Cloud に接続する場合は組織キーを、SonarQube Server に接続する場合は SonarQube の URL も入力できます。
SonarQube Cloud USの場合は、URL に https://sonarqube.us を設定してください。
または、mcp_config.jsonを使用してサーバーを手動で設定できます。
- SonarQube Cloud に接続する場合:
Agent Side Panel で三点リーダー(...)をクリックし、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の場合は、envセクションに "SONARQUBE_URL": "https://sonarqube.us"を、args配列に "-e", "SONARQUBE_URL"を手動で追加してください。
{
"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 の場合は、env セクションに "SONARQUBE_URL" = "https://sonarqube.us" を、args 配列に "-e", "SONARQUBE_URL" を追加します。
- 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 の場合は、インストール後に MCP 設定の env セクションへ "SONARQUBE_URL": "https://sonarqube.us" を手動で追加します。
- 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 Cloud トークンSONARQUBE_ORG- 組織キーSONARQUBE_URL- (任意)SonarQube Cloud US の場合はhttps://sonarqube.usを設定します
-
SonarQube Server の場合:
SONARQUBE_TOKEN- SonarQube Server のユーザートークンSONARQUBE_URL- SonarQube Server の URL
インストール後、拡張機能は <home>/.gemini/extensions/sonarqube/gemini-extension.json にインストールされます。
GitHub Copilot CLI
Copilot CLI を起動した後、次のコマンドを実行して SonarQube MCP サーバーを追加します。
/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 の場合は、Arguments に -e, SONARQUBE_URL を、Environment Variables に 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 coding agent
GitHub Copilot coding agent は、CI/CD で SonarQube MCP サーバーを直接利用できます。
Copilot 環境にシークレットを追加するには、Copilot のドキュメントに従ってください。名前が COPILOT_MCP_ で始まるシークレットのみが、MCP 設定で利用できます。
GitHub リポジトリで Settings -> Copilot -> Coding agent に移動し、MCP configuration セクションに次の設定を追加します。
- 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に接続するには、args 配列に "-e", "SONARQUBE_URL" を追加し、env セクションに "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL" を追加してから、シークレット 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の場合は、args 配列に "-e", "SONARQUBE_URL" を追加し、env セクションに "SONARQUBE_URL": "https://sonarqube.us" を追加します。
- 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の場合は、インストール後にMCP設定の env セクションへ "SONARQUBE_URL": "https://sonarqube.us" を手動で追加します。
Windsurf
SonarQube MCP ServerはWindsurfプラグインとして利用できます。次の手順に従ってください。
- Windsurfの Settings > Cascade > MCP Servers を開き、Open MCP Marketplace を選択します。
- Cascade MCP Marketplaceで
sonarqubeを検索します。 - SonarQube MCP Server を選択し、Install を選択します。
- 必須のSonarQubeユーザートークンを追加します。必要に応じて、SonarQube Cloud用のデフォルトの組織キー、またはSonarQube ServerやCommunity Build用のSonarQube URLを追加します。
SonarQube Cloud USの場合は、URLを https://sonarqube.us に設定します。
Zed
Zedの Extensions ビューを開き、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 との統合
SonarQube MCP Server は 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>"
}
}
}
Linux 上のコンテナで MCP サーバーを実行する場合、コンテナから localhost で実行中の SonarQube for IDE 組み込みサーバーにはアクセスできません。コンテナから SonarQube for IDE サーバーに接続できるようにするには、コンテナの実行コマンドに
--network=hostオプションを追加してください。
設定
環境に応じて、適切な環境変数を設定してください。
基本
MCP サーバーの実行時に、次の変数を追加してください。
| 環境変数 | 説明 |
|---|---|
STORAGE_PATH | SonarQube MCP Server がファイルの作成、更新、永続化などに使用する、書き込み可能なディレクトリの必須の絶対パスです。コンテナイメージを使用する場合は自動的に設定されます。 |
SONARQUBE_PROJECT_KEY | 任意のデフォルトプロジェクトキーです。設定すると、プロジェクトキーを必要とするすべてのツールでこの値が自動的に使用され、スキーマから projectKey パラメーターが完全に削除されます。単一のプロジェクトで作業する場合に便利です。 |
SONARQUBE_IDE_PORT | SonarQube MCP Server を SonarQube for IDE に接続するために使用する、64120〜64130 の任意のポート番号です。 |
SONARQUBE_FORCE_LOCAL_ANALYSIS | Cloud stdio で、利用資格のある組織も含めて、Vortex 分析の代わりに analyze_code_snippet を使用するには、true に設定します。analysis ツールセットが必要です。デフォルト:false。SonarQube Server または Cloud HTTP には影響しません。 |
SONARQUBE_DEBUG_ENABLED | true に設定すると、デバッグログを有効にします。デバッグログはログファイルと STDERR の両方に書き込まれます。接続や設定の問題を調査する際に便利です。デフォルト:false。 |
SONARQUBE_LOG_TO_FILE_DISABLED | true に設定すると、ディスクへのログ書き込みを完全に無効にします。STORAGE_PATH/logs/ の下にログファイルは作成されません。ファイルへのログ記録が望ましくないコンテナ環境や一時的な環境で便利です。デフォルト:false。 |
ワークスペースのマウント(コンテキストの肥大化を抑制)
デフォルトでは、分析ツール analyze_code_snippet を使用する際、エージェントはファイルの全内容を fileContent 引数として渡す必要があります。大きなファイルを分析する場合や、1 つのセッションで多数のファイルを分析する場合、コンテキストウィンドウの使用量とコストが大幅に増加します。
解決策: プロジェクトディレクトリをコンテナ内の /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"
]
}
マウントがある場合、分析ツールは filePath を使ってファイルを直接読み取るため、fileContent は不要です。
stdio では、分析方法は起動時に選択されます(有効なツールセットに従います)。
- SonarQube Cloud: ワークスペースのマウントがあり、権限のある組織が 1 つ以上ある場合は Vortex 分析(
run_advanced_code_analysis)、それ以外の場合はローカル分析です。Vortex 分析では、権限のある組織のみを受け付けます。 - SonarQube Server: 権限のあるインスタンスでは Vortex 分析(ワークスペースのマウントが必要)、Vortex を利用できないインスタンスではローカル分析です。
ローカル分析では、接続されている場合は SonarQube for IDE を使用し、そうでない場合は analyze_code_snippet を使用します。マウントがない場合、スニペット分析には fileContent が必要です。
Cloud では、SONARQUBE_ORG を設定すると、権限の確認対象をその組織に限定できます。すべての組織でスニペットを使用するには、SONARQUBE_FORCE_LOCAL_ANALYSIS=true を設定し、analysis ツールセットを有効にして再起動します。この設定は Server には影響しません。
HTTP/HTTPS では、Server は起動時に SONARQUBE_TOKEN を指定するとスニペット分析をサポートします。Cloud では分析ツールは公開されません。
ツールの選択的な有効化
MCP クライアントは、有効なすべてのツール(名前、説明、入力スキーマ)を、会話のたびにエージェントのコンテキストに読み込みます。SONARQUBE_TOOLSETS を使って一覧を制限すると、コンテキストの使用量と各セッションのトークンコストを削減できます。
デフォルトでは、重要なツールセットのみが有効になっています。追加のツールセットは必要な場合にのみ有効にしてください。
| 環境変数 | 説明 |
|---|---|
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 モードでのみ利用でき、単一の組織エンタイトルメントを共有します。いずれかを使用するには、組織が両方のエンタイトルメントを持っている必要があります。Cloud の組み込み分析では実行時に選択された組織が確認されますが、プロキシ経由のコンテキストツールでは起動時の組織が使用されます。SonarQube Server では、CAG と A3S の両方のハブにエンタイトルメントがある場合、stdio に Vortex コンテキストと run_advanced_code_analysis が表示されます。統合された vortex ツールセットキーを使用してください。非推奨の cag キーと analysis キーも引き続き使用できますが、vortex を指定せずに使用すると、起動時の警告とサーバーの指示内の非推奨に関する注記が出力されます。Streamable HTTP モードでは、クライアントは SONARQUBE_TOOLSETS HTTP ヘッダーを送信してリクエストごとにさらに絞り込めますが、サーバーの起動時に指定された範囲を超えてツールセットを有効にすることはできません(下記のStreamable HTTP トランスポートを参照)。 |
SONARQUBE_READ_ONLY | true に設定すると読み取り専用モードが有効になり、すべての書き込み操作(たとえば、課題のステータス変更)が無効になります。このフィルターは、両方が設定されている場合、SONARQUBE_TOOLSETS と累積して適用されます。デフォルト:false。Streamable HTTP モードでは、クライアントは SONARQUBE_READ_ONLY HTTP ヘッダーを送信して個々のリクエストをさらに読み取り専用に制限できますが、サーバーレベルの読み取り専用制限を解除することはできません(下記のStreamable HTTP トランスポートを参照)。 |
Available Toolsets
| ツールセット | キー | 説明 |
|---|---|---|
| 分析 | analysis | コード分析ツール(analyze_code_snippet によるローカル分析。analyze_file_list/Vortex 分析が推奨されるため、非推奨です) |
| IDE | ide | SonarQube for IDE ブリッジツール(ファイル分析、自動分析の切り替え)。現在は analysis にも含まれています |
| 課題 | issues | SonarQube の課題を検索、管理します |
| セキュリティホットスポット | security-hotspots | セキュリティホットスポットを検索、レビューします |
| プロジェクト | projects | SonarQube のプロジェクトを閲覧、検索します |
| 品質ゲート | quality-gates | 品質ゲートとそのステータスにアクセスします |
| ルール | rules | SonarQube のルールを閲覧、検索します |
| ソース | sources | ソースコードと SCM 情報にアクセスします |
| 重複 | duplications | プロジェクト間のコード重複を検出します |
| 測定値 | measures | メトリクスと測定値を取得します(測定値ツールとメトリクスツールの両方を含みます) |
| 言語 | languages | サポート対象のプログラミング言語を一覧表示します |
| ポートフォリオ | portfolios | ポートフォリオとエンタープライズを管理します(Cloud と Server) |
| システム | system | システム管理ツール(Server のみ) |
| Webhook | webhooks | Webhook を管理します |
| 依存関係のリスク | dependency-risks | 依存関係のリスクとセキュリティ上の問題を分析します(SCA) |
| カバレッジ | coverage | テストカバレッジの分析と改善ツール |
| Vortex コンテキスト | cag | Vortex コンテキストツール — stdio のみ。vortex が推奨されるため、非推奨です(旧名称:Context Augmentation/CAG) |
| Vortex | vortex | Vortex コンテキストツールと Vortex 分析ツールの両方を単一の名称で提供する統合された推奨ツールセット(stdio のみ。Cloud では組織の両方の権限が必要です。Server では両方のハブの権限が必要です) |
| エージェント対応状況 | agentic-readiness | エージェント対応状況の評価ツール(SonarQube Cloud。組織の権限が必要です) |
例
分析、課題、品質ゲートのツールセットを有効にする(SonarQube Cloud で Docker を使用):
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 に含める必要はありません。
読み取り専用モードを有効にする(SonarQube Cloud で Docker を使用):
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
stdio の場合は、次の環境変数を設定します。
| 環境変数 | 説明 | 必須 |
|---|---|---|
SONARQUBE_TOKEN | SonarQube Cloud のトークン | はい |
SONARQUBE_ORG | SonarQube Cloud の組織を固定する場合に指定するキー | いいえ |
SONARQUBE_URL | SonarQube Cloud のカスタム URL(デフォルトは https://sonarcloud.io)。SonarQube Cloud US を使用する場合は、https://sonarqube.us を指定します | いいえ |
例:
- SonarQube Cloud:必要なのは
SONARQUBE_TOKENのみです。SONARQUBE_ORGを設定すると、組織が固定されます。 - SonarQube Cloud US:
SONARQUBE_TOKENとSONARQUBE_URL=https://sonarqube.usを設定します。SONARQUBE_ORGは任意です。
SonarQube Server
| 環境変数 | 説明 | 必須 |
|---|---|---|
SONARQUBE_TOKEN | SonarQube Server の USER トークン | はい |
SONARQUBE_URL | SonarQube Server の URL | はい |
バージョン要件: SonarQube Server 2025.1(SQS)、または 25.1(SonarQube Community Build)以降が必要です。起動時に、MCP サーバーは接続先インスタンスのバージョンを読み取り、古すぎる場合はエラーで終了します(たとえば、従来の 9.x/10.x Server リリースと Community Build 24.x はサポートされていません)。SonarQube Cloud はこのチェックの対象外です。
⚠️ SonarQube Server への接続には USER タイプのトークンが必要です。プロジェクトトークンまたはグローバルトークンを使用すると、正常に機能しません。
💡 設定のヒント(stdio モード): URL を指定せずにトークンを設定すると、デフォルトで SonarQube Cloud に接続します。SonarQube Server または別の Cloud リージョンを使用する場合は、
SONARQUBE_URLを設定してください。SONARQUBE_ORGを設定すると、Cloud の組織が固定されます。
stdio では、SONARQUBE_ORG を設定すると Cloud の組織が固定されます。ツールスキーマから organization 引数が省略され、指定しても拒否されます。これは SONARQUBE_PROJECT_KEY が設定されている場合の projectKey と同様です。
SONARQUBE_ORG が設定されていない場合、エージェントは list_organizations を呼び出して、ユーザーアカウントでアクセス可能な組織のキー、名前、ID、UUID を確認し、その後、組織に対応するツールの任意の organization 引数にキーを渡すことができます。stdio では、組織が一意に検出された場合、その組織がデフォルトとして保持されます。組織が 0 件または複数件の場合、組織は未確定のままになります。ツール引数はその呼び出しにのみ適用され、検出されたデフォルトは変更されません。スニペットプロファイルとルールの検索には、その呼び出しで選択された組織が使用されます。
HTTP/HTTPS では、サーバーレベルの SONARQUBE_ORG は互換性のため引き続きサポートされていますが、非推奨であり、起動時に警告が記録されます。これを設定すると、すべてのリクエストで組織が固定され、クライアントの組織ヘッダーとツールの organization 引数は拒否されます。サーバーの組織が設定されていない場合、任意のクライアント SONARQUBE_ORG ヘッダーを指定すると、そのリクエストの組織が固定され、ツールの organization 引数は使用できなくなります。ヘッダーを指定しない場合は、ツール引数を使用してください。組織を必要とするツールで組織情報がすべて欠落している場合、検出方法が案内されます。組織の検出、およびリソース識別子のみを使用する API を呼び出すツールでは、組織引数は必要ありません。組織に対応する課題検索と依存関係リスクの利用資格チェックでは、選択された組織が使用されます。
Vortex のコンテキストツールでは、設定済みの組織、または起動時に一意に検出された組織が使用されます。実行時の組織引数では、プロキシされたコンテキストエンジンの設定は変更されません。起動時に組織が未確定の場合、そのプロキシはスキップされます。組み込みの run_advanced_code_analysis ツールは、呼び出しごとに選択された組織について、Vortex の総合的な利用資格を確認します。
トランスポートモード
MCP の仕様では、2 つのトランスポート機構として Stdio と Streamable HTTP が定義されています。SonarQube MCP Server はどちらにも対応しています。
| MCP トランスポート | サーバーモード | 一般的な用途 |
|---|---|---|
| Stdio | デフォルト(SONARQUBE_TRANSPORT を指定しない場合) | サーバーをサブプロセスとして起動するローカル MCP クライアント(Cursor、Claude Code、VS Code など) |
| Streamable HTTP | SONARQUBE_TRANSPORT=http または https | リモート環境またはマルチユーザー環境へのデプロイ。クライアントは HTTP(S) 経由で /mcp に接続します(例:セルフホストサーバーの URL を使用する Windsurf) |
注記: Streamable HTTP は現在の MCP ネットワークトランスポートです。以前の MCP バージョンで使用されていた SSE のみの HTTP トランスポートは非推奨であり、サポートされていません。
1. Stdio(デフォルト — ローカル開発に推奨)
ローカル開発や単一ユーザーのセットアップに推奨されるモードで、ほとんどの MCP クライアントが使用します。
例 — SonarQube Cloud を使用する Docker:
{
"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 | Streamable HTTP トランスポートを有効にするには 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)では、サーバーはステートレスです。各クライアントリクエストには、ユーザー自身の SonarQube トークンを含む Authorization: Bearer <token> ヘッダーが必要です。SonarQube Cloud の場合、組織は次のように解決されます。
SONARQUBE_ORGは、リクエストごとに組織を固定するオプションのリクエストヘッダーです。非推奨のサーバーレベル設定を使用すると、すべてのリクエストで組織が固定され、クライアントの組織ヘッダーとツールの組織引数は拒否されます。- サーバー設定でもリクエストヘッダーでも組織が固定されていない場合、組織を認識するツールはオプションの
organization引数を受け入れます。組織が固定されている場合にこの引数を指定すると、拒否されます。 - デフォルトが設定されていない場合、エージェントは自身のトークンのみを使用して
list_organizationsを呼び出し、その後、選択したキーを後続のツールに渡すことができます。
クライアントは SONARQUBE_TOOLSETS および/または SONARQUBE_READ_ONLY ヘッダーを指定することで、リクエストごとに表示されるツールをさらに絞り込むこともできます。これらはサーバーレベルの設定に追加のフィルタリングを適用します。範囲を狭めることのみ可能で、広げることはできません。
リクエスト間でセッション状態は維持されません。
非推奨:
SONARQUBE_TOKENリクエストヘッダーは後方互換性のため引き続き受け入れられますが、今後のバージョンで削除されます。Authorization: Bearer <token>に移行してください。
3. HTTPS(TLS 経由の Streamable HTTP)(複数ユーザー向けの本番環境へのデプロイに推奨)
TLS 暗号化による安全な Streamable HTTP トランスポートです。SSL 証明書が必要です。
✅ 本番環境に推奨: 複数のユーザー向けに Streamable HTTP 経由で MCP サーバーをデプロイする場合は、HTTPS を使用してください。セキュリティ上、サーバーはデフォルトで
127.0.0.1(localhost)にバインドされます。
| 環境変数 | 説明 | デフォルト |
|---|---|---|
SONARQUBE_TRANSPORT | Streamable HTTP トランスポートを TLS 経由で有効にするには、https に設定します | 未設定(stdio) |
SONARQUBE_HTTP_PORT | ポート番号(HTTPS の場合は通常 8443) | 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 |
例 - SonarQube Cloud を使用した Docker:
注: コンテナ内で実行する場合は、コンテナがすべてのインターフェースでリッスンし、ランタイムのポートマッピングが機能するように
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 \
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 \
sonarsource/sonarqube-mcp
クライアントの設定(SonarQube Cloud):
リクエストの組織を固定するには、クライアントヘッダーに SONARQUBE_ORG を任意で設定します。設定しない場合は、ツールの引数を通じて組織を選択できます。
{
"mcpServers": {
"sonarqube-https": {
"url": "https://your-server:8443/mcp",
"headers": {
"Authorization": "Bearer <your-token>",
"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 からサーバーを実行していますか?上記のボリュームマウントでは証明書がコンテナの OS の信頼ストアにインストールされ、サーバーもそのストアを参照します。OS の信頼ストアを使用できない場合(特に、参照されない Windows の場合)は、CA 証明書を格納した Java 信頼ストアを JVM に指定してください:
-Djavax.net.ssl.trustStore=/path/to/truststore.p12 -Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.trustStorePassword=<passphrase>。これはデフォルトの信頼済み証明書に追加されます。
プロキシ
SonarQube MCP Server は、標準の Java プロキシシステムプロパティを介した HTTP および SOCKS5 プロキシに対応しています。
設定
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 プロキシに対応しています。
| プロパティ | 説明 | デフォルト | 例 |
|---|---|---|---|
socksProxyHost | SOCKS5 プロキシのホスト名 | — | localhost |
socksProxyPort | SOCKS5 プロキシのポート | 1080 | 1080 |
java.net.socks.username | SOCKS5 のユーザー名(認証が必要な場合) | — | myuser |
java.net.socks.password | SOCKS5 のパスワード(認証が必要な場合) | — | mypassword |
クライアント証明書(相互 TLS)
SonarQube Server で 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>"
}
}
}
スタンドアロン JAR で PKCS12 キーストアを使用する
サーバーをJAR から実行する場合は、-jar の前に JVM 引数としてキーストアのプロパティを渡します。
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は今後のリリースで削除されます。analyze_file_listを使用するには SonarQube for IDE に接続するか、run_advanced_code_analysisを使用するには組織で Vortex 分析を有効にしてください(以下を参照)。使用方法:
- ワークスペースがマウントされている場合(推奨):
filePath(プロジェクトからの相対パス)を渡します。サーバーがファイルを直接読み取るため、ファイルの内容がエージェントのコンテキストウィンドウに含まれません。 - ワークスペースがマウントされていない場合:ファイル全体を分析するため、
fileContentにファイルの内容全体を渡します(すべての問題を報告します)。 - 必要に応じて
codeSnippetを追加して結果を絞り込みます。スニペット内の問題のみが報告されます(スニペットの位置は自動検出されます)。
パラメーター:
projectKey- SonarQube プロジェクトキー - 必須の String (SONARQUBE_PROJECT_KEYが定義されている場合は無視されます)filePath- 分析するファイルのプロジェクトからの相対パス(例:src/main/java/MyClass.java)。ワークスペースが/app/mcp-workspaceにマウントされている場合に使用します - StringfileContent- ファイルの内容全体を表す文字列。ワークスペースがマウントされていない場合は必須です - StringcodeSnippet- 問題を絞り込むためのコードスニペット(fileContent 内の内容と一致する必要があります) - Stringlanguage- コードの言語(例:'java'、'python'、'js'、'ts'、'tsx'、'jsx') - Stringscope- ファイルのスコープ:MAIN または TEST(デフォルト:MAIN) - String
対応言語: 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 との連携が有効な場合: (これら2つのツールは 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 Server では、CAG ハブと A3S ハブの両方が利用権の対象となっている場合、stdio に Vortex コンテキストツールと run_advanced_code_analysis が表示されます。
Vortex 分析が利用可能な場合:
ワークスペースを
/app/mcp-workspaceにマウントする必要があります。
- run_advanced_code_analysis - 単一ファイルに対して Vortex 分析を実行します。Cloud では、
SONARQUBE_ORGで組織が固定されていない場合、オプションのorganization引数を使用してください。組織が不明確な場合はlist_organizationsを使用します。SonarQube Server では nil UUID のプレースホルダーを使用します。organization- Cloud の組織キー。設定済みまたは起動時に一意に検出された組織がデフォルトになります - 任意の StringprojectKey- プロジェクトのキー - 必須の String (SONARQUBE_PROJECT_KEYが定義されている場合は無視されます)branch- 最新の分析コンテキストを取得するために使用するブランチ名 - 必須の StringfilePath- 分析するファイルのプロジェクトからの相対パス(例:src/main/java/MyClass.java)。 - 必須の StringfileScope- ファイルが属するスコープを定義します:'MAIN' または 'TEST'(デフォルト:MAIN) - String
カバレッジ
-
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 Advanced Security が有効になっている SonarQube Server 2025.4 Enterprise 以上に接続している場合にのみ利用できます。
- 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 のエンタープライズを一覧表示します。他のツールで使用できるエンタープライズ ID の確認に使用してください。
enterpriseKey- 結果を絞り込むための任意のエンタープライズキー - 文字列
イシュー
-
change_sonar_issue_status - SonarQube のイシューのステータスを「accept」「falsepositive」に変更するか、イシューを「reopen」します。
key- イシューキー - 必須の文字列status- イシューの新しいステータス - 必須の列挙型 {"accept", "falsepositive", "reopen"}comment- ステータス変更の理由を説明する任意のコメント - 文字列
-
search_sonar_issues_in_projects - 組織のプロジェクト内にある SonarQube のイシューを検索します。
projectKeys- SonarQube のプロジェクトキーの任意のリスト - 文字列[]branch- ブランチベースの分析に使用する任意のブランチ名。有効な名前を確認するにはlist_branchesを使用します - 文字列pullRequest- 任意のプルリクエストキー/ID。有効なキーを確認するにはlist_pull_requestsを使用します - 文字列severities- フィルターに使用する重大度の任意のリスト。指定可能な値:INFO、LOW、MEDIUM、HIGH、BLOCKER - 文字列[]impactSoftwareQualities- フィルターに使用するソフトウェア品質の任意のリスト。指定可能な値:MAINTAINABILITY、RELIABILITY、SECURITY - 文字列[]issueStatuses- フィルターに使用するイシューステータスの任意のリスト。指定可能な値:OPEN、CONFIRMED、FALSE_POSITIVE、ACCEPTED、FIXED、IN_SANDBOX - 文字列[]tags- フィルターに使用するイシュータグの任意のリスト。タグは小文字です - 文字列[]inNewCodePeriod- 新しいコード期間内のイシューのみを返します。projectKeysとfilesの項目数の合計がちょうど 1 である必要があります - ブール値issueKey- 特定のイシューを取得するための任意のイシューキー - 文字列pageIndex- 1 から始まる任意のページインデックス(デフォルト:1) - 整数pageSize- 任意のページサイズ。0 より大きく、500 以下である必要があります(デフォルト:100) - 整数
セキュリティホットスポット
-
search_security_hotspots - SonarQube プロジェクト内のセキュリティホットスポットを検索します。
projectKey- プロジェクトまたはアプリケーションのキー - 必須の文字列 (SONARQUBE_PROJECT_KEYが定義されている場合は無視されます)hotspotKeys- 取得する特定のセキュリティホットスポットキーをカンマ区切りで指定したリスト - 文字列[]branch- ブランチベースの分析に使用する任意のブランチ名。有効な名前を確認するにはlist_branchesを使用します - 文字列pullRequest- 任意のプルリクエストキー/ID。有効なキーを確認するにはlist_pull_requestsを使用します - 文字列files- フィルターに使用する任意のファイルパスのリスト - 文字列[]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 - ステータスを変更してセキュリティホットスポットをレビューします。REVIEWED に設定する場合は、解決方法(FIXED、SAFE、または ACKNOWLEDGED)を指定する必要があります。
hotspotKey- セキュリティホットスポットキー - 必須の文字列status- 新しいステータス - 必須の列挙型 {"TO_REVIEW", "REVIEWED"}resolution- ステータスが REVIEWED の場合の解決方法 - 列挙型 {"FIXED", "SAFE", "ACKNOWLEDGED"}comment- 任意のレビューコメント - 文字列
言語
- list_languages - この SonarQube インスタンスでサポートされているすべてのプログラミング言語を一覧表示します。
q- 言語キー/名前に一致させる任意のパターン - 文字列
メジャー
- get_component_measures - コンポーネント(プロジェクト、ディレクトリ、ファイル)の SonarQube メジャーを取得します。
projectKey- プロジェクトキー -SONARQUBE_PROJECT_KEYが設定されていない場合は必須の Stringbranch- ブランチベースの分析に使用する任意のブランチ名です。有効な名前を確認するにはlist_branchesを使用してください - StringmetricKeys- 取得する任意のメトリクスキー(例:ncloc、complexity、violations、coverage) - String[]pullRequest- 任意のプルリクエストキー/IDです。有効なキーを確認するにはlist_pull_requestsを使用してください - String
メトリクス
- search_metrics - SonarQube のメトリクスを検索します。
pageIndex- 任意の1始まりのページインデックス(デフォルト:1) - IntegerpageSize- 任意のページサイズです。0より大きく、500以下である必要があります(デフォルト:100) - Integer
ポートフォリオ
-
list_portfolios - フィルタリングとページネーションのオプションを指定して、SonarQube で利用できるエンタープライズポートフォリオを一覧表示します。
SonarQube Server の場合:
q- ポートフォリオを名前またはキーで絞り込む任意の検索クエリ - Stringfavorite- true の場合、お気に入りのポートフォリオのみを返します - BooleanpageIndex- 任意の1始まりのページ番号(デフォルト:1) - IntegerpageSize- 任意のページサイズ、最大500(デフォルト:100) - Integer
SonarQube Cloud の場合:
enterpriseId- エンタープライズの UUID です。favoriteパラメーターに true が指定されている場合にのみ省略できます - Stringq- ポートフォリオを名前で絞り込む任意の検索クエリ - Stringfavorite-enterpriseIdパラメーターを省略する場合は true が必須です。true の場合、ログイン中のユーザーがお気に入りに登録したポートフォリオのみを返します。draftが true の場合は true にできません - Booleandraft- true の場合、ログイン中のユーザーが作成した下書きのみを返します。favoriteが true の場合は true にできません - BooleanpageIndex- 取得するページの任意のインデックス(デフォルト:1) - IntegerpageSize- 取得するページの任意のサイズ(デフォルト:50) - Integer
プロジェクト
-
list_organizations - ユーザーがメンバーになっている SonarQube Cloud の組織を、キー、名前、ID、UUID とともに一覧表示します。返されたキーは、以降のツールで
organizationとして使用します。 -
search_my_sonarqube_projects - SonarQube プロジェクトを検索します。応答はページ分割されます。
pageIndex- 任意の1始まりのページインデックス(デフォルト:1) - IntegerpageSize- 任意のページサイズです。0より大きく、500以下である必要があります(デフォルト:500) - Integerq- プロジェクトを名前(一部一致)またはキー(完全一致)で絞り込む任意の検索クエリ - String
-
list_branches - プロジェクトの分析済みブランチを一覧表示します。
- SonarQube Cloud:
typeフィールドとmergeBranchフィールドを含む、長期(LONG)および短期(SHORT)ブランチを返します。任意のbranchTypesフィルター:ALL(デフォルト)、LONG、またはSHORT。 - SonarQube Server:分析済みのすべてのブランチ(名前、品質ゲート、分析日)を返します。
type、mergeBranch、branchTypesフィルターはありません。 - 返されたブランチ名は、他のツールの
branchパラメーターとして使用します。プルリクエスト分析には、代わりにlist_pull_requestsを使用してください。 projectKey- プロジェクトキー(例:my_project) - 必須の String (SONARQUBE_PROJECT_KEYが定義されている場合は無視されます)branchTypes- (SonarQube Cloud のみ) 任意のフィルター:ALL(デフォルト)、LONG、またはSHORT- Enum {"ALL", "LONG", "SHORT"}
- SonarQube Cloud:
-
list_pull_requests - プロジェクトのすべてのプルリクエストを一覧表示します。PR デコレーション分析(カバレッジ、イシュー、品質ゲート)のプルリクエストを確認するには、このツールを使用してください。返されたプルリクエストキー/IDは、他のツールで使用できます。プルリクエストを使わないブランチベースの分析には、代わりに
list_branchesを使用してください。projectKey- プロジェクトキー(例:my_project) - 必須の String (SONARQUBE_PROJECT_KEYが定義されている場合は無視されます)
品質ゲート
-
get_project_quality_gate_status - SonarQube プロジェクトの品質ゲートステータスを取得します。
analysisId- 省略可能な分析 ID - Stringbranch- ブランチベースの分析に使用する省略可能なブランチ名。有効な名前を確認するにはlist_branchesを使用してください - StringprojectId- 省略可能なプロジェクト ID - StringprojectKey- 省略可能なプロジェクトキー - StringpullRequest- 省略可能なプルリクエストキー/ID。有効なキーを確認するにはlist_pull_requestsを使用してください - String
-
list_quality_gates - 自分の SonarQube 内のすべての品質ゲートを一覧表示します。
ルール
- show_rule - SonarQube ルールに関する詳細情報を表示します。
key- ルールキー - Required String
重複
-
search_duplicated_files - SonarQube プロジェクト内でコードが重複しているファイルを検索します。デフォルトでは、すべてのページにわたるすべての重複ファイルを自動的に取得します(最大 10,000 ファイルまで)。重複があるファイルのみを返します。
projectKey- プロジェクトキー - Required String (SONARQUBE_PROJECT_KEYが定義されている場合は無視されます)branch- ブランチベースの分析に使用する省略可能なブランチ名。有効な名前を確認するにはlist_branchesを使用してください - StringpullRequest- 省略可能なプルリクエストキー/ID。有効なキーを確認するにはlist_pull_requestsを使用してください - StringpageSize- 手動ページネーション用の 1 ページあたりの省略可能な結果数(最大: 500)。指定しない場合、すべての重複ファイルを自動的に取得します - IntegerpageIndex- 手動ページネーション用の省略可能なページ番号(1 から始まります)。指定しない場合、すべての重複ファイルを自動的に取得します - Integer
-
get_duplications - ファイルの重複を取得します。ファイルのプロジェクトに対する参照権限が必要です。
key- ファイルキー - Required Stringbranch- ブランチベースの分析に使用する省略可能なブランチ名。有効な名前を確認するにはlist_branchesを使用してください - StringpullRequest- 省略可能なプルリクエストキー/ID。有効なキーを確認するにはlist_pull_requestsを使用してください - String
ソース
-
get_raw_source - SonarQube からソースコードを生テキストとして取得します。ファイルに対する「ソースコードの参照」権限が必要です。
key- ファイルキー - Required Stringbranch- ブランチベースの分析に使用する省略可能なブランチ名。有効な名前を確認するにはlist_branchesを使用してください - StringpullRequest- 省略可能なプルリクエストキー/ID。有効なキーを確認するにはlist_pull_requestsを使用してください - String
-
get_scm_info - SonarQube ソースファイルの SCM 情報を取得します。ファイルのプロジェクトに対するソースコードの参照権限が必要です。
key- ファイルキー - Required Stringcommits_by_line- 値が false の場合は SCM コミットごとに行をグループ化し、それ以外の場合は各行のコミットを表示します - Stringfrom- 返す最初の行。1 から始まります - Numberto- 返す最後の行(含む) - Number
システム
注意: システムツールは SonarQube Server に接続している場合にのみ使用できます。
-
get_system_health - SonarQube Server インスタンスのヘルスステータスを取得します。GREEN(完全に動作可能)、YELLOW(使用可能だが注意が必要)、または RED(動作不能)を返します。
-
get_system_info - JVM の状態、データベース、検索インデックス、設定など、SonarQube Server システム構成に関する詳細情報を取得します。「管理」権限が必要です。
-
get_system_logs - SonarQube Server のシステムログをプレーンテキスト形式で取得します。システム管理権限が必要です。
name- 取得するログの省略可能な名前。指定可能な値: access、app、ce、deprecation、es、web。デフォルト: app - String
-
ping_system - SonarQube Server システムに ping して稼働しているかどうかを確認します。プレーンテキストとして「pong」を返します。
-
get_system_status - SonarQube Server の状態情報を取得します。ステータス(STARTING、UP、DOWN、RESTARTING、DB_MIGRATION_NEEDED、DB_MIGRATION_RUNNING)、バージョン、ID を返します。
Webhook
-
create_webhook - SonarQube の組織またはプロジェクト用の新しい webhook を作成します。指定したプロジェクトに対する「Administer」権限、またはグローバルな「Administer」権限が必要です。
name- Webhook 名 - 必須 Stringurl- Webhook URL - 必須 StringprojectKey- プロジェクト固有の webhook に使用する任意のプロジェクトキー - Stringsecret- Webhook のペイロードを保護する任意の webhook シークレット - String
-
list_webhooks - SonarQube の組織またはプロジェクトのすべての webhook を一覧表示します。指定したプロジェクトに対する「Administer」権限、またはグローバルな「Administer」権限が必要です。
projectKey- プロジェクト固有の webhook を一覧表示するための任意のプロジェクトキー - String
コンテキスト拡張
アーキテクチャツール
-
search_by_signature_patterns - 正規表現パターンを使って、宣言シグネチャからコード要素(クラス、メソッド、インターフェースなど)を検索します。
include_code_regex_list- シグネチャに照合する正規表現パターンのリスト - 必須 String[]exclude_code_regex_list- 結果から除外する正規表現パターンのリスト - String[]include_glob- ファイルフィルターの glob パターン(例:*.java) - Stringexclude_glob- ファイル除外用の glob パターン - Stringfields- レスポンスに含めるフィールドのカンマ区切りリスト - Stringlimit- 返す結果の最大数(デフォルト:10) - Integerregex_lists_operator- 複数のパターンの結合方法:OR(デフォルト)またはAND- String
-
search_by_body_patterns - 正規表現パターンを使って、実装本体からコード要素を検索します。API やパターンが実際に使用されている場所を特定するのに役立ちます。
include_code_regex_list- コード本体で照合する正規表現パターンのリスト - 必須 String[]exclude_code_regex_list- 結果から除外する正規表現パターンのリスト - String[]include_glob- ファイルフィルターの glob パターン - Stringexclude_glob- ファイル除外用の glob パターン - Stringfields- レスポンスに含めるフィールドのカンマ区切りリスト - Stringlimit- 返す結果の最大数(デフォルト:10) - Integerregex_lists_operator- 複数のパターンの結合方法:OR(デフォルト)またはAND- String
-
get_upstream_call_flow - 指定した関数を呼び出す関数を追跡します。すべての呼び出し元やエントリーポイントを見つけ、シグネチャを変更した場合に何が壊れるかを把握するのに役立ちます。
fqn- 関数の完全修飾名 - 必須 Stringdepth- 呼び出しチェーンの深さ(0=関数のみ、1=直接の呼び出し元など) - Integerfields- レスポンスに含めるフィールドのカンマ区切りリスト - String
-
get_downstream_call_flow - 指定した関数が呼び出す関数を追跡します。影響分析や実行フローの把握に役立ちます。
fqn- 関数の完全修飾名 - 必須 Stringdepth- 呼び出しチェーンの深さ(0=関数のみ、1=直接の呼び出し先など) - Integerfields- レスポンスに含めるフィールドのカンマ区切りリスト - String
-
get_source_code - 完全修飾名を指定して、コード要素のソースコード全体(シグネチャと本体)を取得します。
fqn- 要素の完全修飾名 - 必須 Stringfields- レスポンスに含めるフィールドのカンマ区切りリスト - String
-
get_type_hierarchy - クラスに類する構造(クラス、インターフェース、列挙型、レコード、例外、構造体)の継承階層全体を取得します。継承ツリーの把握やリファクタリングに不可欠です。
fqn- クラスに類する構造の完全修飾名 - 必須 Stringfields- レスポンスに含めるフィールドのカンマ区切りリスト - String
-
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モードで必須) - 文字列[]languages- SonarQube リポジトリのキー形式で指定する対象言語のリスト(categoriesが指定されている場合に必須) - 文字列[]file_paths- ガイドラインを絞り込むための任意のファイルパスのリスト - 文字列[]
サードパーティ依存関係ツール
- check_dependency - サードパーティ依存関係を追加または更新する前に、セキュリティ上の脆弱性、サプライチェーンマルウェア、ライセンスへの準拠状況を確認します。
purl- purl-spec に準拠した、バージョンを含むパッケージ URL(purl)。形式:pkg:<type>/<namespace>/<name>@<version>(例:pkg:npm/[email protected]、pkg:maven/org.apache.logging.log4j/[email protected]、pkg:pypi/[email protected]) - 必須の文字列
コンテキスト拡張の環境変数
| 変数 | 説明 | 必須 | デフォルト |
|---|---|---|---|
SONARQUBE_URL | SonarQube Cloud の URL | はい | https://sonarcloud.io |
SONARQUBE_TOKEN | 認証トークン | はい | なし |
SONARQUBE_ORG | クラウド組織。起動設定または一意の検出によりプロキシに渡されます | いいえ | なし |
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 のブランチ名と一致しない場合に指定します。
プロジェクト固有の設定(推奨)
まず、有効なプロジェクトの[個人アクセストークン(PAT)](https://docs.sonarsource.com/sonarqube-cloud/managing-your-account/managing-tokens)を使って、`SONARQUBE_TOKEN`[環境変数](https://docs.sonarsource.com/sonarqube-mcp-server/build-and-configure/environment-variables#common-variables)をエクスポートします。# macOS/Linux (Bash/Zsh)
export SONARQUBE_TOKEN="{<YourUserToken>}"
次に、Context Augmentation サーバーがソースファイルに直接アクセスできるよう、プロジェクトのワークスペースをマウントします。
{
"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 - 評価結果を取得します。ステータスが
COMPLETED、FAILED、またはINTERRUPTEDになるまで、同じassessmentIdを指定して再度呼び出します。完了すると、全体のレベルと、推奨アクションおよび根拠を含む柱ごとの内訳を返します。assessmentId-start_agentic_readiness_assessmentが返した評価 ID - 必須の文字列
-
list_agentic_readiness_assessments - プロジェクトのすべての評価を新しい順に一覧表示します。柱ごとの詳細な結果を取得するには
get_agentic_readiness_assessmentを使用します。projectKey- 評価を一覧表示するプロジェクトキー - 必須の文字列 (SONARQUBE_PROJECT_KEYが定義されている場合は無視されます)branch- ブランチ名で評価を絞り込みます。すべてのブランチの評価を一覧表示する場合は省略します - 文字列pageIndex- 1 から始まるページインデックス(デフォルト:1) - 数値pageSize- 1 ページあたりの項目数。最大 100(デフォルト:50) - 数値
プロンプトの例
SonarQube MCP Server をセットアップしたら、一般的な実際のシナリオで使えるプロンプトの例を以下に示します。
品質ゲートの失敗を修正する
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 コンテナーイメージの使用を推奨します。
Docker を使わず、スタンドアロンの JAR としてサーバーを実行するには、SonarSource バイナリリポジトリからビルド済みリリースをダウンロードしてください。リリースされたすべてのバージョンが、sonarqube-mcp-server-<version>.jar(例:sonarqube-mcp-server-1.19.0.2785.jar)として公開されています。
JAR から実行
バイナリリポジトリから使用するバージョンの JAR をダウンロードし、Java 21 以降で実行するように MCP クライアントを設定してください。
- 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>"
}
}
}
ソースからビルド
SonarQube MCP Server のビルドには、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> に build/libs/ 内の JAR を指定してください。
トラブルシューティング
アプリケーションのログは、デフォルトで 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_ORG を設定せずに SONARQUBE_URL を設定する場合)にのみ適用され、SonarQube Cloud には適用されません。
「機能が動作しない」または「ツール/機能が不足している」
古い Docker イメージを実行している可能性があります。Docker はイメージをローカルにキャッシュするため、更新は自動的に反映されません。
解決策: 最新バージョンに更新してください。
docker pull sonarsource/sonarqube-mcp
最新のイメージを取得した後、更新版を使用するために MCP クライアントを再起動してください。
必要に応じて、docker run コマンドに --pull=always フラグを追加すると、常に最新バージョンを確認して取得できます。
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 の代わりに sonarsource/sonarqube-mcp:<version> を使用し、Docker がイメージを予告なくアップグレードしないように --pull=always を削除してください。
データとテレメトリー
このサーバーは匿名の使用状況データを収集し、製品の改善に役立てるため SonarSource に送信します。ソースコードや IP アドレスは収集されず、SonarSource がデータを第三者と共有することもありません。テレメトリーの収集は、次のシステムプロパティまたは環境変数で無効にできます:TELEMETRY_DISABLED=true。収集されるデータのサンプルはこちらをご覧ください。
ライセンス
Copyright 2025 SonarSource.
SONAR Source-Available License v1.0 に基づいてライセンスされています。このドキュメントに準拠して SonarQube MCP Server を使用することは非競争目的に該当するため、SSAL の下で許可されています。
MCP を介した SonarQube の使用には、SonarQube Cloud 利用規約またはSonarQube Server 利用規約が適用されます。これには、Results Data を社内のソフトウェア開発目的のみに使用することも含まれます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。