SonarQube
公式SonarQube ServerまたはCloudとのシームレスな統合を提供し、エージェントコンテキスト内でコードスニペットの分析を直接可能にします
SonarQube MCPで何ができますか?
- コードスニペットの分析 — アシスタントに、
analyze_code_snippetを使用してスニペットやファイルのローカルコード分析を実行させます。オプションでワークスペースをマウントして、コンテキストの肥大化を防ぐこともできます。 - 課題の検索と管理 — アシスタントにSonarQubeの課題を検索、レビュー、更新させます。読み取り専用モードでない場合は、ステータスの変更も可能です。
- 品質ゲートと測定値の確認 — SonarQubeプロジェクト全体で、品質ゲートのステータス、プロジェクトメトリクス、カバレッジ、依存関係のリスクを確認できます。
- セキュリティホットスポットのレビュー — アシスタントに、コードベースでフラグが立てられたセキュリティホットスポットを検索・確認させます。
- プロジェクトとルールの閲覧 — アシスタントを使用して、プロジェクトの探索、サポートされている言語の一覧表示、SonarQubeから直接コーディングルールの検索ができます。
ドキュメント
SonarQube MCP サーバー
SonarQube MCP サーバーは、コード品質とセキュリティのために SonarQube Server または Cloud とのシームレスな統合を可能にする Model Context Protocol (MCP) サーバーです。 また、エージェントコンテキスト内でコードスニペットを直接解析することもサポートしています。
クイックセットアップ
セキュリティのベストプラクティス
🔒 重要: SonarQube トークンは機密性の高い認証情報です。以下のセキュリティプラクティスに従ってください:
CLI コマンドを使用する場合:
- コマンドライン引数にトークンをハードコードしない – シェル履歴に保存されます
- 環境変数を使用する – コマンドを実行する前に環境変数にトークンを設定してください
設定ファイルを使用する場合:
- トークンをバージョン管理にコミットしない
- 可能な場合は設定ファイルで環境変数の置換を使用する
🚀 設定の生成
最も早く始める方法は、SonarQube MCP サーバー設定ジェネレーター を使用することです。これは、お好みの AI エージェントクライアント向けのすぐに使える設定を生成するインタラクティブなツールです。
手動設定
自分で設定する場合は、sonarsource/sonarqube-mcp のコンテナイメージを使用するのが最も簡単な方法です。自動更新には sonarsource/sonarqube-mcp を(--pull=always とともに)、再現可能なデプロイにはバージョンタグ(例:sonarsource/sonarqube-mcp:1.19.0.2785)を指定してください。ローカルでビルドしたい場合は以下をお読みください。
注記: 以下の例では
dockerを使用していますが、OCI 互換のコンテナランタイム(Podman、nerdctl など)であればどれでも動作します。dockerを任意のツールに置き換えてください。
Antigravity
SonarQube MCP サーバーは Antigravity MCP ストアで利用可能です。以下の手順に従ってください:
- エージェントサイドパネルを開く
- 右上の三点リーダー(...)をクリックし、MCP サーバーを選択
SonarQubeを検索してインストールを選択- 必要な SonarQube ユーザートークンを入力します。SonarQube Cloud に接続する場合は組織キー、SonarQube Server に接続する場合は SonarQube URL も入力できます。
SonarQube Cloud US の場合、URL を https://sonarqube.us に設定します。
または、mcp_config.json を使用してサーバーを手動で設定することもできます:
- SonarQube Cloud に接続する場合:
エージェントサイドパネルで、三点リーダー(...)-> MCP ストア -> MCP サーバーの管理 -> 生の設定を表示 をクリックし、以下を追加します:
{
"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 の場合、インストール後に 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 サーバーに関するさまざまな情報を入力する必要があります。フィールド間の移動にはタブキーを使用できます。
- 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 コーディングエージェントは、CI/CD で直接 SonarQube MCP サーバーを活用できます。
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 の場合、インストール後に MCP 設定の env セクションに "SONARQUBE_URL": "https://sonarqube.us" を手動で追加します。
Windsurf
SonarQube MCP サーバーは Windsurf プラグインとして利用可能です。以下の手順に従ってください:
- Windsurf の設定 > Cascade > MCP サーバーを開き、MCP マーケットプレイスを開くを選択
- Cascade MCP マーケットプレイスで
sonarqubeを検索 - SonarQube MCP サーバーを選択し、インストールを選択
- 必要な SonarQube ユーザートークンを追加します。SonarQube Cloud に接続する場合は組織キー、SonarQube Server または Community Build に接続する場合は SonarQube URL を追加します。
SonarQube Cloud US の場合、URL を https://sonarqube.us に設定します。
Zed
Zed の拡張機能ビューに移動し、SonarQube MCP サーバーを検索します。 拡張機能をインストールする際、必要な環境変数の入力を求められます:
- 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 サーバーは 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 サーバーがファイルを保存する書き込み可能なディレクトリへの必須の絶対パス(作成、更新、永続化用)。コンテナイメージを使用する場合は自動的に提供されます |
SONARQUBE_PROJECT_KEY | オプションのデフォルトプロジェクトキー。設定すると、プロジェクトキーを必要とするすべてのツールがこの値を自動的に使用し、projectKey パラメータはスキーマから完全に削除されます。単一プロジェクトで作業する場合に便利です。 |
SONARQUBE_IDE_PORT | SonarQube MCP サーバーを SonarQube for IDE に接続するために使用する、64120 から 64130 の間のオプションのポート番号。 |
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 では、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 トランスポート を参照)。 |
利用可能なツールセット
| ツールセット | キー | 説明 |
|---|---|---|
| 分析 | 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 のみ) |
| ウェブフック | webhooks | ウェブフックを管理 |
| 依存関係リスク | dependency-risks | 依存関係のリスクとセキュリティ問題を分析(SCA) |
| カバレッジ | coverage | テストカバレッジの分析および改善ツール |
| Vortex コンテキスト | cag | Vortex コンテキストツール — stdio のみ。vortex を優先して非推奨(旧名: Context Augmentation/CAG) |
| Vortex | vortex | 統合された推奨ツールセットで、Vortex コンテキストと Vortex 分析ツールの両方を 1 つの名前で提供(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 | カスタム SonarQube Cloud URL(デフォルトは 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 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モード):
SONARQUBE_ORGの有無によって、SonarQube Cloud と Server のどちらに接続するかが決まります。SONARQUBE_ORGが設定されている場合は SonarQube Cloud が使用され、それ以外の場合は SonarQube Server が使用されます。
トランスポートモード
MCP仕様は、Stdio と Streamable HTTP の2つのトランスポートメカニズムを定義しています。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 | 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)では、サーバーはステートレスです。各クライアントリクエストには、ユーザー自身のSonarQubeトークンを含む Authorization: Bearer <token> ヘッダーを含める必要があります。SonarQube Cloudの場合、組織は次のように解決されます:
- サーバー起動時に
SONARQUBE_ORGが設定されている場合、すべてのリクエストはその組織にルーティングされます。クライアントはSONARQUBE_ORGヘッダーを送信しないでください。送信するとエラーになります。 - サーバー起動時に
SONARQUBE_ORGが設定されていない場合、各クライアントはすべてのリクエストでSONARQUBE_ORGヘッダーを提供する必要があります。 クライアントは、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 | https に設定するとTLS上のStreamable HTTPトランスポートが有効になります | 未設定(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 \
-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からサーバーを実行していますか?上記のボリュームマウントは、サーバーも読み取るコンテナのOSトラストストアに証明書をインストールします。OSトラストストアを使用できない場合(特に、参照されないWindows)、JVMをCA証明書を保持するJavaトラストストアに向けてください:
-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プロキシ
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は将来のリリースで削除されます。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との統合が有効な場合: (これらの2つのツールはanalysisとideの両方のツールセットでタグ付けされています)
-
analyze_file_list - SonarQube for IDEを使用して現在の作業ディレクトリ内のファイルを分析します。このツールは実行中のSonarQube for IDEインスタンスに接続して、ファイルリストに対してコード品質分析を実行します。
file_absolute_paths- 分析する絶対ファイルパスのリスト - 必須文字列[]
-
toggle_automatic_analysis - SonarQube for IDEの自動分析を有効または無効にします。有効にすると、SonarQube for IDEは作業ディレクトリ内のファイルが変更されるたびに自動的に分析します。無効にすると、自動分析はオフになります。
enabled- 自動分析を有効または無効にする - 必須ブール値
SonarQube Serverでは、CAGとA3Sハブの両方がライセンスされている場合、stdioはVortexコンテキストツールとrun_advanced_code_analysisをリストします。
Vortex分析が有効な場合:
ワークスペースが
/app/mcp-workspaceにマウントされている必要があります
- run_advanced_code_analysis - 単一ファイルに対してVortex分析を実行します。組織はMCP構成から推測されます(SonarQube Serverは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 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が設定されていない場合は必須 文字列branch- ブランチベースの分析用の任意のブランチ名。有効な名前を見つけるにはlist_branchesを使用します - 文字列metricKeys- 取得する任意のメトリクスキー(例:ncloc、complexity、violations、coverage) - 文字列[]pullRequest- 任意のプルリクエストキー/ID。有効なキーを見つけるには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- エンタープライズ UUID。'favorite' パラメータが true の値で指定されている場合にのみ省略できます - 文字列q- 名前でポートフォリオをフィルタリングするための任意の検索クエリ - 文字列favorite- 'enterpriseId' パラメータが省略されている場合は true である必要があります。true の場合、ログインしているユーザーがお気に入りに登録したポートフォリオのみを返します。'draft' が true の場合は true にできません - ブール値draft- true の場合、ログインしているユーザーが作成したドラフトのみを返します。'favorite' が true の場合は 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パラメータとして使用します。プルリクエスト分析には、代わりにlist_pull_requestsを使用します。 projectKey- プロジェクトキー(例:my_project) - 必須 文字列 (SONARQUBE_PROJECT_KEYが定義されている場合は無視されます)branchTypes- (SonarQube Cloud のみ) 任意のフィルター:ALL(デフォルト)、LONG、またはSHORT- 列挙型 {"ALL", "LONG", "SHORT"}
- SonarQube Cloud:
-
list_pull_requests - プロジェクトのすべてのプルリクエストを一覧表示します。このツールを使用して、PR デコレーション分析(カバレッジ、問題、品質ゲート)用のプルリクエストを検出します。他のツールで使用できるプルリクエストキー/ID を返します。プルリクエストのないブランチベースの分析には、代わりに
list_branchesを使用します。projectKey- プロジェクトキー(例:my_project) - 必須 文字列 (SONARQUBE_PROJECT_KEYが定義されている場合は無視されます)
品質ゲート
-
get_project_quality_gate_status - SonarQube プロジェクトの品質ゲートステータスを取得します。
analysisId- 任意の分析 ID - 文字列branch- ブランチベースの分析用の任意のブランチ名。有効な名前を見つけるにはlist_branchesを使用します - 文字列projectId- 任意のプロジェクト ID - 文字列projectKey- 任意のプロジェクトキー - 文字列pullRequest- 任意のプルリクエストキー/ID。有効なキーを見つけるには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。有効なキーを見つけるにはlist_pull_requestsを使用します - 文字列pageSize- 手動ページネーション用の任意のページあたりの結果数(最大:500)。指定しない場合、すべての重複ファイルを自動取得します - 整数pageIndex- 手動ページネーション用の任意のページ番号(1 から始まります)。指定しない場合、すべての重複ファイルを自動取得します - 整数
-
get_duplications - ファイルの重複を取得します。ファイルのプロジェクトに対する参照権限が必要です。
key- ファイルキー - 必須 文字列branch- ブランチベースの分析用の任意のブランチ名。有効な名前を見つけるにはlist_branchesを使用します - 文字列pullRequest- 任意のプルリクエストキー/ID。有効なキーを見つけるにはlist_pull_requestsを使用します - 文字列
ソース
-
get_raw_source - SonarQube からソースコードを生のテキストとして取得します。ファイルに対する「ソースコードの表示」権限が必要です。
key- ファイルキー - 必須 文字列branch- ブランチベースの分析用の任意のブランチ名。有効な名前を見つけるにはlist_branchesを使用します - 文字列pullRequest- 任意のプルリクエストキー/ID。有効なキーを見つけるにはlist_pull_requestsを使用します - 文字列
-
get_scm_info - SonarQube ソースファイルの SCM 情報を取得します。ファイルのプロジェクトに対する「ソースコードの表示」権限が必要です。
key- ファイルキー - 必須 文字列commits_by_line- 値が false の場合は SCM コミットごとにラインをグループ化し、それ以外の場合は各ラインのコミットを表示します - 文字列from- 返す最初のライン。1 から始まります - 数値to- 返す最後のライン(両端を含む) - 数値
システム
注: システムツールは、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 - 文字列
-
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 を作成します。指定されたプロジェクトに対する「管理」権限、またはグローバルな「管理」権限が必要です。
name- Webhook 名 - 必須 文字列url- Webhook URL - 必須 文字列projectKey- プロジェクト固有の Webhook 用の任意のプロジェクトキー - 文字列secret- Webhook ペイロードを保護するための任意の Webhook シークレット - 文字列
-
list_webhooks - SonarQube 組織またはプロジェクトのすべての Webhook を一覧表示します。指定されたプロジェクトに対する「管理」権限、またはグローバルな「管理」権限が必要です。
projectKey- プロジェクト固有の Webhook を一覧表示するための任意のプロジェクトキー - 文字列
コンテキスト拡張
アーキテクチャツール
-
search_by_signature_patterns - 正規表現パターンを使用して、宣言シグネチャによってコード要素(クラス、メソッド、インターフェースなど)を検索します。
include_code_regex_list- シグネチャと照合する正規表現パターンのリスト - 必須 文字列[]exclude_code_regex_list- 結果から除外する正規表現パターンのリスト - 文字列[]include_glob- ファイルフィルター glob パターン(例:*.java) - 文字列exclude_glob- ファイル除外 glob パターン - 文字列fields- レスポンスに含めるフィールドのカンマ区切りリスト - 文字列limit- 返す結果の最大数(デフォルト:10) - 整数regex_lists_operator- 複数のパターンを組み合わせる方法:OR(デフォルト)またはAND- 文字列
-
search_by_body_patterns - 正規表現パターンを使用して、実装本体によってコード要素を検索します。API やパターンが実際に使用されている場所を見つけるのに役立ちます。
include_code_regex_list- コード本体で照合する正規表現パターンのリスト - 必須 文字列[]exclude_code_regex_list- 結果から除外する正規表現パターンのリスト - 文字列[]include_glob- ファイルフィルター glob パターン - 文字列exclude_glob- ファイル除外 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モードで必須) - 文字列[]languages- SonarQubeリポジトリキー形式のターゲット言語のリスト(categoriesが指定されている場合に必須) - 文字列[]file_paths- ガイドラインをフィルタリングするためのオプションのファイルパスのリスト - 文字列[]
サードパーティ依存関係ツール
- 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 | SonarQube Cloud URL | はい | 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のブランチ名と一致しない場合に指定します。
プロジェクト固有の設定(推奨)
まず、プロジェクト用の有効な個人アクセストークン(PAT)を指定して、SONARQUBE_TOKEN 環境変数をエクスポートします。
# 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"
}
}
}
}
重要:プロジェクトスコープの設定では、envブロックにSONARQUBE_TOKENを入れないでください。環境変数(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サーバーを設定したら、一般的な実世界のシナリオ向けのプロンプト例をいくつか示します:
失敗した品質ゲートの修正
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サーバーをビルドするには、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サーバーのバージョンをチェックします。インスタンスが2025.1(SQS)または25.1(SQCB)より古い場合、起動は次のエラーで失敗します:
SonarQube server version is not supported, minimal version is SQS 2025.1 or SQCB 25.1
解決策: SonarQubeサーバーをサポートされているリリースにアップグレードします。このチェックはSonarQubeサーバー(SONARQUBE_URL、SONARQUBE_ORGなし)に接続する場合にのみ適用され、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ソース利用可能ライセンスv1.0の下でライセンスされています。このドキュメントに準拠してSonarQube MCPサーバーを使用することは、非競争的目的であり、SSALの下で許可されています。
MCPを介したSonarQubeの使用は、SonarQube Cloud利用規約またはSonarQube Server利用規約に準拠します。これには、結果データを社内ソフトウェア開発目的のみに使用することが含まれます。