SonarQube

公式

SonarQube ServerまたはCloudとのシームレスな統合を提供し、エージェントコンテキスト内でコードスニペットの分析を直接可能にします

SonarQube MCPで何ができますか?

  • コードスニペットを分析 — アシスタントに analyze_code_snippet をコードサンプル上で実行してもらい、品質とセキュリティに関する即時の結果を得ます。
  • 課題を管理issues ツールセットを使用して、SonarQube の課題を重大度、ステータス、またはプロジェクトごとに検索、フィルタリング、更新します。
  • セキュリティホットスポットをレビューsecurity-hotspots ツールセットに問い合わせて、レビューが必要なホットスポットを一覧表示し、そのリスクを理解します。
  • 品質ゲートを確認 — プロジェクトの quality-gates ステータスを尋ねて、品質基準を満たしているかどうかを確認します。
  • プロジェクトメトリクスを取得 — カバレッジや重複などの measures を取得したり、projects ツールセットでプロジェクトを参照したりします。

ドキュメント

SonarQube MCP サーバー

Build Quality Gate Status

SonarQube MCP サーバーは、コード品質とセキュリティのために SonarQube Server または Cloud とのシームレスな統合を可能にする Model Context Protocol (MCP) サーバーです。 また、エージェントコンテキスト内でコードスニペットを直接解析することもサポートしています。

クイックセットアップ

セキュリティのベストプラクティス

🔒 重要: SonarQube トークンは機密性の高い認証情報です。以下のセキュリティプラクティスに従ってください:

CLI コマンドを使用する場合:

  • コマンドライン引数にトークンをハードコードしない – シェル履歴に保存されます
  • 環境変数を使用する – コマンドを実行する前に環境変数にトークンを設定してください

設定ファイルを使用する場合:

  • トークンをバージョン管理にコミットしない
  • 可能な場合は設定ファイルで環境変数の置換を使用する

🚀 設定を生成する

最も速く始める方法は、SonarQube MCP Server Configuration Generator です。これは、お好みの 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 ストアで利用できます。以下の手順に従ってください:

  1. エージェントサイドパネルを開く
  2. 右上の三点リーダー(...)をクリックし、MCP サーバーを選択
  3. SonarQube を検索してインストールを選択
  4. 必要な 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 に接続する場合:

Install for SonarQube Cloud

SonarQube Cloud US の場合、インストール後に MCP 設定の env セクションに "SONARQUBE_URL": "https://sonarqube.us" を手動で追加します。

  • SonarQube Server に接続する場合:

Install for 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 内でのインストールプロセスを簡素化できます。

Install for SonarQube Cloud

SonarQube Cloud US の場合、インストール後に MCP 設定の env セクションに "SONARQUBE_URL": "https://sonarqube.us" を手動で追加します。

Install for SonarQube Server

Windsurf

SonarQube MCP サーバーは Windsurf プラグインとして利用できます。以下の手順に従ってください:

  1. Windsurf の設定 > Cascade > MCP サーバーを開き、MCP マーケットプレイスを開くを選択
  2. Cascade MCP マーケットプレイスで sonarqube を検索
  3. SonarQube MCP サーバーを選択し、インストールを選択
  4. 必要な 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_PATHSonarQube MCP サーバーがファイルを保存する書き込み可能なディレクトリへの必須の絶対パス(作成、更新、永続化用など)。コンテナイメージを使用する場合は自動的に提供されます
SONARQUBE_PROJECT_KEY任意のデフォルトプロジェクトキー。設定すると、プロジェクトキーを必要とするすべてのツールがこの値を自動的に使用し、projectKey パラメータはスキーマから完全に削除されます。単一プロジェクトで作業する場合に便利です。
SONARQUBE_IDE_PORTSonarQube MCP サーバーを SonarQube for IDE に接続するために使用する、64120 から 64130 の間の任意のポート番号。
SONARQUBE_DEBUG_ENABLEDtrue に設定すると、デバッグログが有効になります。デバッグログはログファイルと STDERR の両方に書き込まれます。接続や設定の問題のトラブルシューティングに役立ちます。デフォルト: false
SONARQUBE_LOG_TO_FILE_DISABLEDtrue に設定すると、ディスクへのログ書き込みが完全に無効になります。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_snippetfilePath が必須で、fileContent は使用されません — サーバーは同じ方法でファイルを解決します

ツールセットの選択的有効化

デフォルトでは、コンテキストのオーバーヘッドを減らすために、重要なツールセットのみが有効になっています。必要に応じて追加のツールセットを有効にできます。

環境変数説明
SONARQUBE_TOOLSETS有効にするツールセットのカンマ区切りリスト。設定すると、これらのツールセットのみが利用可能になります。設定しない場合、デフォルトの重要なツールセットが有効になります(analysisideissuesprojectsquality-gatesrulesduplicationsmeasuressecurity-hotspotsdependency-riskscoveragecag)。注: projects ツールセットは、他の操作のプロジェクトキーを検索するために必要であるため、常に有効になっています。Vortex コンテキストツール(旧名:Context Augmentation/CAG)と Vortex 分析ツール(旧名:Advanced Analysis/A3S)は stdio モードでのみ利用可能で、単一の統合された組織エンタイトルメントを共有します — いずれかを使用するには、組織が両方にエンタイトルメントを持っている必要があります。cag または analysis ツールセットキーを介してそれらに到達することは、統合された vortex ツールセットキーを優先して非推奨です。旧キーは後方互換性のために引き続き機能しますが、vortex なしで使用された場合は、起動時の警告とサーバー手順の非推奨メモが出力されます。Streamable HTTP モードでは、クライアントは SONARQUBE_TOOLSETS HTTP ヘッダーを送信してリクエストごとにこれをさらに絞り込むことができますが、サーバーが起動されたときに設定されたツールセットを超えて有効にすることはできません(以下の Streamable HTTP トランスポート を参照)。
SONARQUBE_READ_ONLYtrue に設定すると、すべての書き込み操作(たとえば、課題ステータスの変更)を無効にする読み取り専用モードが有効になります。このフィルターは、両方が設定されている場合、SONARQUBE_TOOLSETS と累積されます。デフォルト:false。Streamable HTTP モードでは、クライアントは SONARQUBE_READ_ONLY HTTP ヘッダーを送信して個々のリクエストを読み取り専用にさらに制限できますが、サーバーレベルの読み取り専用制限を解除することはできません(以下の Streamable HTTP トランスポート を参照)。
利用可能なツールセット
ツールセットキー説明
分析analysisコード分析ツール(analyze_code_snippet によるローカル分析、非推奨analyze_file_list/Vortex 分析を優先)
IDEideSonarQube for IDE ブリッジツール(ファイル分析、自動分析の切り替え) — 現在は analysis にも含まれています
課題issuesSonarQube の課題を検索および管理
セキュリティホットスポットsecurity-hotspotsセキュリティホットスポットを検索およびレビュー
プロジェクトprojectsSonarQube プロジェクトを参照および検索
品質ゲートquality-gates品質ゲートとそのステータスにアクセス
ルールrulesSonarQube ルールを参照および検索
ソースsourcesソースコードと SCM 情報にアクセス
重複duplicationsプロジェクト全体のコード重複を検出
メジャーmeasuresメトリクスとメジャーを取得(メジャーとメトリクスの両方のツールを含む)
言語languagesサポートされているプログラミング言語の一覧を表示
ポートフォリオportfoliosポートフォリオとエンタープライズを管理(Cloud および Server)
システムsystemシステム管理ツール(Server のみ)
ウェブフックwebhooksウェブフックを管理
依存関係リスクdependency-risks依存関係のリスクとセキュリティ問題を分析(SCA)
カバレッジcoverageテストカバレッジの分析と改善ツール
Vortex コンテキストcagVortex コンテキストツール — stdio のみ。vortex を優先して非推奨(旧名:Context Augmentation/CAG)
Vortexvortex統合された推奨ツールセット。Vortex コンテキストと Vortex 分析ツールの両方を 1 つの名前で提供します(stdio のみ、統合された組織エンタイトルメントが必要)
エージェント対応度agentic-readinessAgentic Readiness Assessment ツール(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 CloudSONARQUBE_TOKENSONARQUBE_ORG のみが必要です
  • SonarQube Cloud USSONARQUBE_TOKENSONARQUBE_ORGSONARQUBE_URL=https://sonarqube.us を設定します

SonarQube Server

環境変数説明必須
SONARQUBE_TOKENあなたの SonarQube Server USER トークンはい
SONARQUBE_URLあなたの SonarQube Server URLはい

⚠️ SonarQube Server への接続には USER タイプのトークンが必要です。プロジェクトトークンまたはグローバルトークンを使用すると正しく機能しません。 💡 設定のヒント(stdio モード): SONARQUBE_ORG の有無によって、SonarQube Cloud に接続するか Server に接続するかが決まります。SONARQUBE_ORG が設定されている場合は SonarQube Cloud が使用され、それ以外の場合は SonarQube Server が使用されます。

トランスポートモード

MCP 仕様 では、StdioStreamable HTTP の2つのトランスポートメカニズムが定義されています。SonarQube MCP Server は両方をサポートしています:

MCP トランスポートサーバーモード一般的な用途
Stdioデフォルト(SONARQUBE_TRANSPORT なし)サーバーをサブプロセスとして起動するローカル MCP クライアント(Cursor、Claude Code、VS Code など)
Streamable HTTPSONARQUBE_TRANSPORT=http または httpsリモートまたはマルチユーザー展開。クライアントは /mcp に HTTP(S) で接続します(例: セルフホストのサーバー 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_TRANSPORThttp に設定すると Streamable HTTP トランスポートを有効化未設定(stdio)
SONARQUBE_HTTP_PORTポート番号(1024〜65535)8080
SONARQUBE_HTTP_HOSTバインドするホスト(セキュリティのためデフォルトは localhost)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSCORS で許可するブラウザオリジン(カンマ区切り)(例: 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_TRANSPORThttps に設定すると TLS 上の Streamable HTTP トランスポートを有効化未設定(stdio)
SONARQUBE_HTTP_PORTポート番号(HTTPS では通常 8443)8080
SONARQUBE_HTTP_HOSTバインドするホスト(セキュリティのためデフォルトは localhost)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSCORS で許可するブラウザオリジン(カンマ区切り)(例: 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_TOOLSETSSONARQUBE_READ_ONLY は、その特定のリクエストに対してサーバーレベルのツールセットを絞り込むオプションのリクエストごとのヘッダーです。スコープを縮小することしかできません。サーバーが起動されたときの設定を超えてツールセットを有効化したり、制限を解除したりすることはできません。

注: ローカル開発には、代わりに Stdio トランスポート(デフォルト)を使用してください。HTTPS Streamable HTTP は、適切な SSL 証明書を使用したマルチユーザーの本番展開を目的としています。

サービスエンドポイント

Streamable HTTP モード(http または https)で実行している場合、サーバーは /mcp の MCP エンドポイントに加えて、認証不要のサービスエンドポイントをいくつか公開します。これらはサービス間の使用(監視、オーケストレーション、クライアント互換性チェック)を目的としており、Authorization ヘッダーは必要ありません。

エンドポイントメソッド説明応答例
/healthGET死活監視プローブ。サーバーがリクエストを受け付け可能になると、空のボディで 200 OK を返します。(空のボディ)
/infoGETMCP サーバーのバージョンを JSON で返します。展開されたサーバーバージョンの確認に役立ちます。{"version":"1.16.0"}

これらのエンドポイントは、Stdio トランスポートで実行している場合は利用できません。

カスタム証明書

SonQube 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.proxyHostHTTP プロキシホスト名proxy.example.com
http.proxyPortHTTP プロキシポート8080
https.proxyHostHTTPS プロキシホスト名proxy.example.com
https.proxyPortHTTPS プロキシポート8443
http.nonProxyHostsプロキシをバイパスするホスト(パイプ区切り)localhost|127.0.0.1|*.internal.com

HTTP/HTTPS プロキシ認証:

プロパティ説明
http.proxyUserHTTP プロキシユーザー名myuser
http.proxyPasswordHTTP プロキシパスワードmypassword
https.proxyUserHTTPS プロキシユーザー名myuser
https.proxyPasswordHTTPS プロキシパスワードmypassword

SOCKS5 プロキシ

SOCKS5 プロキシがサポートされています。

プロパティ説明デフォルト
socksProxyHostSOCKS5 プロキシホスト名localhost
socksProxyPortSOCKS5 プロキシポート10801080
java.net.socks.usernameSOCKS5 ユーザー名(認証が必要な場合)myuser
java.net.socks.passwordSOCKS5 パスワード(認証が必要な場合)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       # look for -rw-r--r-- (644) or wider
chmod 644 /path/to/client.p12    # grant read access to the container user

キーストアにパスフレーズがない場合は-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プロジェクトキー - 必須の文字列 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(jsjsx)、TypeScript(tstsx)、JSP、PHP、XML、HTML、CSS、CloudFormation、Kubernetes、Terraform、Azure Resource Manager、Ansible、Docker、シークレット検出

SonarQube for IDEとの統合が有効な場合: (これら2つのツールは、analysisideの両方のツールセットにタグ付けされています)

  • analyze_file_list - SonarQube for IDEを使用して現在の作業ディレクトリ内のファイルを分析します。このツールは実行中のSonarQube for IDEインスタンスに接続し、ファイルのリストに対してコード品質分析を実行します。

    • file_absolute_paths - 分析する絶対ファイルパスのリスト - 必須のString[]
  • toggle_automatic_analysis - SonarQube for IDEの自動分析を有効または無効にします。有効にすると、SonarQube for IDEは作業ディレクトリ内のファイルが変更されるたびに自動的に分析します。無効にすると、自動分析はオフになります。

    • enabled - 自動分析を有効または無効にする - 必須のブール値

SonarQube Cloud組織でVortex分析が有効な場合

ワークスペースが/app/mcp-workspaceにマウントされている必要があります

  • run_advanced_code_analysis - 単一のファイルに対してSonarQube CloudでVortex分析を実行します。組織はMCP設定から推測されます。
    • 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"}
  • search_sonar_issues_in_projects - 組織のプロジェクト内のSonarQubeの問題を検索します。

    • projectKeys - オプションのSonarQubeプロジェクトキーのリスト - String[]
    • branch - ブランチベースの分析用のオプションのブランチ名。有効な名前を見つけるにはlist_branchesを使用 - 文字列
    • pullRequest - オプションのプルリクエストキー/ID。有効なキーを見つけるにはlist_pull_requestsを使用 - 文字列
    • severities - フィルタリングするオプションの重大度のリスト。指定可能な値:INFO、LOW、MEDIUM、HIGH、BLOCKER - String[]
    • impactSoftwareQualities - フィルタリングするオプションのソフトウェア品質のリスト。指定可能な値:MAINTAINABILITY、RELIABILITY、SECURITY - String[]
    • issueStatuses - フィルタリングするオプションの問題ステータスのリスト。指定可能な値:OPEN、CONFIRMED、FALSE_POSITIVE、ACCEPTED、FIXED、IN_SANDBOX - String[]
    • issueKey - 特定の問題を取得するためのオプションの問題キー - 文字列
    • pageIndex - オプションの1ベースのページインデックス(デフォルト:1) - 整数
    • pageSize - オプションのページサイズ。0より大きく500以下である必要があります(デフォルト:100) - 整数

セキュリティホットスポット

  • search_security_hotspots - SonarQubeプロジェクト内のセキュリティホットスポットを検索します。

    • projectKey - プロジェクトまたはアプリケーションキー - 必須の文字列 SONARQUBE_PROJECT_KEYが定義されている場合は無視されます)
    • hotspotKeys - 取得する特定のセキュリティホットスポットキーのカンマ区切りリスト - String[]
    • branch - ブランチベースの分析用のオプションのブランチ名。有効な名前を見つけるにはlist_branchesを使用 - 文字列
    • pullRequest - オプションのプルリクエストキー/ID。有効なキーを見つけるにはlist_pull_requestsを使用 - 文字列
    • files - フィルタリングするオプションのファイルパスのリスト - String[]
    • status - オプションのステータスフィルター:TO_REVIEW、REVIEWED - 文字列
    • resolution - オプションの解決フィルター:FIXED、SAFE、ACKNOWLEDGED - 文字列
    • sinceLeakPeriod - リーク期間(新規コード)以降に作成されたホットスポットをフィルタリング - ブール値
    • onlyMine - 自分に割り当てられたホットスポットのみを表示 - ブール値
    • pageIndex - オプションの1ベースのページインデックス(デフォルト:1) - 整数
    • pageSize - オプションのページサイズ。0より大きく500以下である必要があります(デフォルト:100) - 整数
  • show_security_hotspot - 特定のセキュリティホットスポットに関する詳細情報を取得します。ルールの詳細、コードコンテキスト、フロー、コメントが含まれます。

    • hotspotKey - セキュリティホットスポットキー - 必須の文字列
  • change_security_hotspot_status - ステータスを変更してセキュリティホットスポットをレビューします。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) - String[]
    • pullRequest - オプションのプルリクエストキー/ID。有効なキーを見つけるにはlist_pull_requestsを使用 - 文字列

メトリクス

  • search_metrics - SonarQubeメトリクスを検索します。
    • pageIndex - オプションの1ベースのページインデックス(デフォルト:1) - 整数
    • pageSize - オプションのページサイズ。0より大きく500以下である必要があります(デフォルト:100) - 整数

ポートフォリオ

  • list_portfolios - SonarQubeで利用可能なエンタープライズポートフォリオを、フィルタリングおよびページネーションオプション付きで一覧表示します。

    SonarQube Serverの場合:

    • q - 名前またはキーでポートフォリオをフィルタリングするための任意の検索クエリ - String
    • favorite - trueの場合、お気に入りのポートフォリオのみを返します - Boolean
    • pageIndex - 1から始まる任意のページ番号(デフォルト: 1) - Integer
    • pageSize - 任意のページサイズ。最大500(デフォルト: 100) - Integer

    SonarQube Cloudの場合:

    • enterpriseId - エンタープライズUUID。'favorite' パラメータが true で指定されている場合のみ省略可能 - String
    • q - 名前でポートフォリオをフィルタリングするための任意の検索クエリ - String
    • favorite - 'enterpriseId' パラメータが省略されている場合は true である必要があります。true の場合、ログインユーザーがお気に入りに登録したポートフォリオのみを返します。'draft' が true の場合は true にできません - Boolean
    • draft - true の場合、ログインユーザーが作成したドラフトのみを返します。'favorite' が true の場合は true にできません - Boolean
    • pageIndex - 取得するページの任意のインデックス(デフォルト: 1) - Integer
    • pageSize - 取得するページの任意のサイズ(デフォルト: 50) - Integer

プロジェクト

  • search_my_sonarqube_projects - SonarQubeプロジェクトを検索します。レスポンスはページネーションされます。

    • pageIndex - 1から始まる任意のページインデックス(デフォルト: 1) - Integer
    • pageSize - 任意のページサイズ。0より大きく500以下である必要があります(デフォルト: 500) - Integer
    • q - 名前(部分一致)またはキー(完全一致)でプロジェクトをフィルタリングするための任意の検索クエリ - String
  • list_branches - プロジェクトの分析済みブランチを一覧表示します。

    • SonarQube Cloud: LONG(長期)ブランチとSHORT(短期)ブランチを、type および mergeBranch フィールド付きで返します。任意の branchTypes フィルター: ALL(デフォルト)、LONG、または SHORT
    • SonarQube Server: 分析済みのすべてのブランチ(名前、品質ゲート、分析日)を返します。typemergeBranch、または branchTypes フィルターはありません。
    • 返されたブランチ名を、他のツールの branch パラメータとして使用します。プルリクエスト分析の場合は、代わりに list_pull_requests を使用してください。
    • projectKey - プロジェクトキー(例: my_project) - 必須のString (SONARQUBE_PROJECT_KEY が定義されている場合は無視されます)
    • branchTypes - (SonarQube Cloudのみ) 任意のフィルター: ALL(デフォルト)、LONG、または SHORT - Enum {"ALL", "LONG", "SHORT"}
  • list_pull_requests - プロジェクトのすべてのプルリクエストを一覧表示します。PR装飾分析(カバレッジ、問題、品質ゲート)用のプルリクエストを検出するには、このツールを使用します。他のツールで使用できるプルリクエストのキー/IDを返します。プルリクエストのないブランチベースの分析には、代わりに list_branches を使用してください。

    • projectKey - プロジェクトキー(例: my_project) - 必須のString (SONARQUBE_PROJECT_KEY が定義されている場合は無視されます)

品質ゲート

  • get_project_quality_gate_status - SonarQubeプロジェクトの品質ゲートステータスを取得します。

    • analysisId - 任意の分析ID - String
    • branch - ブランチベースの分析用の任意のブランチ名。有効な名前を確認するには list_branches を使用してください - String
    • projectId - 任意のプロジェクトID - String
    • projectKey - 任意のプロジェクトキー - String
    • pullRequest - 任意のプルリクエストキー/ID。有効なキーを確認するには list_pull_requests を使用してください - String
  • list_quality_gates - 自分のSonarQube内のすべての品質ゲートを一覧表示します。

ルール

  • show_rule - SonarQubeのルールに関する詳細情報を表示します。
    • key - ルールキー - 必須のString

重複

  • search_duplicated_files - SonarQubeプロジェクト内でコード重複のあるファイルを検索します。デフォルトでは、全ページの重複ファイルを自動的に取得します(最大10,000ファイル)。重複のあるファイルのみを返します。

    • projectKey - プロジェクトキー - 必須のString (SONARQUBE_PROJECT_KEY が定義されている場合は無視されます)
    • branch - ブランチベースの分析用の任意のブランチ名。有効な名前を確認するには list_branches を使用してください - String
    • pullRequest - 任意のプルリクエストキー/ID。有効なキーを確認するには list_pull_requests を使用してください - String
    • pageSize - 手動ページネーション用の任意のページあたりの結果数(最大: 500)。指定しない場合は、すべての重複ファイルを自動取得します - Integer
    • pageIndex - 手動ページネーション用の任意のページ番号(1から開始)。指定しない場合は、すべての重複ファイルを自動取得します - Integer
  • get_duplications - ファイルの重複を取得します。ファイルのプロジェクトに対する参照権限(Browse)が必要です。

    • key - ファイルキー - 必須のString
    • branch - ブランチベースの分析用の任意のブランチ名。有効な名前を確認するには list_branches を使用してください - String
    • pullRequest - 任意のプルリクエストキー/ID。有効なキーを確認するには list_pull_requests を使用してください - String

ソース

  • get_raw_source - SonarQubeからソースコードを生テキストとして取得します。ファイルに対する「ソースコードの参照」権限が必要です。

    • key - ファイルキー - 必須のString
    • branch - ブランチベースの分析用の任意のブランチ名。有効な名前を確認するには list_branches を使用してください - String
    • pullRequest - 任意のプルリクエストキー/ID。有効なキーを確認するには list_pull_requests を使用してください - String
  • get_scm_info - SonarQubeソースファイルのSCM情報を取得します。ファイルのプロジェクトに対するソースコード参照権限が必要です。

    • key - ファイルキー - 必須のString
    • commits_by_line - 値が false の場合はSCMコミットごとに行をグループ化し、それ以外の場合は各行のコミットを表示します - String
    • from - 返す最初の行。1から始まります - Number
    • to - 返す最後の行(両端を含む) - 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を作成します。指定されたプロジェクトに対する「管理」権限、またはグローバルな「管理」権限が必要です。

    • name - Webhook名 - 必須のString
    • url - Webhook URL - 必須のString
    • projectKey - プロジェクト固有のWebhook用の任意のプロジェクトキー - String
    • secret - Webhookペイロードを保護するための任意のWebhookシークレット - String
  • list_webhooks - SonarQube組織またはプロジェクトのすべてのWebhookを一覧表示します。指定されたプロジェクトに対する「管理」権限、またはグローバルな「管理」権限が必要です。

    • projectKey - プロジェクト固有のWebhookを一覧表示するための任意のプロジェクトキー - String

コンテキスト拡張

アーキテクチャツール
  • search_by_signature_patterns - 正規表現パターンを使用して、宣言シグネチャによってコード要素(クラス、メソッド、インターフェースなど)を検索します。

    • include_code_regex_list - シグネチャと照合する正規表現パターンのリスト - 必須のString[]
    • exclude_code_regex_list - 結果から除外する正規表現パターンのリスト - String[]
    • include_glob - ファイルフィルターのglobパターン(例: *.java) - String
    • exclude_glob - ファイル除外のglobパターン - String
    • fields - レスポンスに含めるフィールドのカンマ区切りリスト - String
    • limit - 返す結果の最大数(デフォルト: 10) - Integer
    • regex_lists_operator - 複数のパターンを組み合わせる方法: OR(デフォルト)または AND - String
  • search_by_body_patterns - 正規表現パターンを使用して、実装本体によってコード要素を検索します。APIやパターンが実際に使用されている場所を特定するのに役立ちます。

    • include_code_regex_list - コード本体で照合する正規表現パターンのリスト - 必須のString[]
    • exclude_code_regex_list - 結果から除外する正規表現パターンのリスト - String[]
    • include_glob - ファイルフィルターのglobパターン - String
    • exclude_glob - ファイル除外のglobパターン - String
    • fields - レスポンスに含めるフィールドのカンマ区切りリスト - String
    • limit - 返す結果の最大数(デフォルト: 10) - Integer
    • regex_lists_operator - 複数のパターンを組み合わせる方法: OR(デフォルト)または AND - String
  • get_upstream_call_flow - 指定された関数を呼び出す関数をトレースします。すべての呼び出し元とエントリポイントを見つけ、シグネチャが変更された場合に何が壊れるかを理解するのに役立ちます。

    • fqn - 関数の完全修飾名 - 必須のString
    • depth - 呼び出しチェーンの深さ(0=関数のみ、1=直接の呼び出し元など) - Integer
    • fields - レスポンスに含めるフィールドのカンマ区切りリスト - String
  • get_downstream_call_flow - 指定された関数が呼び出す関数をトレースします。影響分析と実行フローの理解に役立ちます。

    • fqn - 関数の完全修飾名 - 必須のString
    • depth - 呼び出しチェーンの深さ(0=関数のみ、1=直接の呼び出し先など) - Integer
    • fields - レスポンスに含めるフィールドのカンマ区切りリスト - String
  • get_source_code - 完全修飾名によるコード要素の完全なソースコード(シグネチャと本体)を取得します。

    • fqn - 要素の完全修飾名 - 必須のString
    • fields - レスポンスに含めるフィールドのカンマ区切りリスト - String
  • get_type_hierarchy - クラス風構造(クラス、インターフェース、列挙型、レコード、例外、構造体)の完全な継承階層を取得します。継承ツリーの理解とリファクタリングに不可欠です。

    • fqn - クラス風構造の完全修飾名 - 必須のString
    • fields - レスポンスに含めるフィールドのカンマ区切りリスト - String
  • get_references - クラスまたはモジュールへの直接の入方向および出方向のコード参照を取得します。直接(非推移的)参照のみを返します。

    • fqn - クラスまたはモジュールの完全修飾名 - 必須のString
    • fields - レスポンスに含めるフィールドのカンマ区切りリスト - String
  • get_current_architecture - パスプレフィックスと深さでフィルタリングされた階層アーキテクチャグラフを取得します。モジュール構造と高レベルの依存関係の調査に役立ちます。

    • depth - 階層の深さ(0=ルートのみ、1=ルート+子など) - 必須のInteger
    • path_prefix - ノードをフィルタリングするための任意のパスプレフィックス(例: com.example.service) - String
    • ecosystem - フィルタリングする任意のエコシステム(javacspyjsts) - String
  • 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-spec に準拠。形式: pkg:<type>/<namespace>/<name>@<version>(例: pkg:npm/lodash@4.17.21pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1pkg:pypi/django@3.2.0) - 必須の文字列
コンテキスト拡張環境変数
変数説明必須デフォルト
SONARQUBE_URLSonarQube Cloud URLはいhttps://sonarcloud.io
SONARQUBE_TOKEN認証トークンはいなし
SONARQUBE_ORGSonarQube Cloud 上の組織キーはいなし
SONARQUBE_PROJECT_KEYSonarQube Cloud 上のプロジェクトキーはいなし
SONAR_SQ_BRANCH明示的なSonarQubeブランチの上書き *いいえなし
SONARQUBE_DEBUG_ENABLEDデバッグログの有効化(トラブルシューティング用)いいえFalse
SONAR_LOG_LEVELログの詳細度(TRACEDEBUGINFOWARNINGERRORいいえINFO
  • gitを使用していない場合、またはgitブランチ名がSonarQubeのブランチ名と一致しない場合に指定します。
プロジェクト固有の設定(推奨)

まず、プロジェクト用の有効な Personal Access Token (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"
      }
    }
  }
}

重要: プロジェクトスコープの設定では、SONARQUBE_TOKEN をenvブロックに配置しないでください。環境変数(export SONARQUBE_TOKEN=...)としてエクスポートしてください。Dockerは -e SONARQUBE_TOKEN を介してコンテナに転送します。

エージェント対応(Agentic Readiness)

注: エージェント対応ツールはSonarQube Cloudでのみ利用可能であり、組織でこの機能を有効にする必要があります。

  • start_agentic_readiness_assessment - プロジェクトのエージェント対応評価を開始します。ステータス PENDINGassessmentId を即座に返します。結果をポーリングするには get_agentic_readiness_assessment を使用します。

    • projectKey - プロジェクトキー - 必須の文字列 SONARQUBE_PROJECT_KEY が定義されている場合は無視されます)
    • branch - 評価するブランチ。省略した場合はプロジェクトのデフォルトブランチを使用 - 文字列
  • get_agentic_readiness_assessment - 評価の結果を取得します。ステータスが COMPLETEDFAILED、または 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 を設定します。

一般的な問題

「機能が動作しない」または「ツール/機能が不足している」

古い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を使用することは、非競争的目的(Non-Competitive Purpose)であり、SSALの下で許可されています。

MCPを介したSonarQubeの使用は、SonarQube Cloud利用規約 または SonarQube Server利用規約 に準拠します。これには、結果データ(Results Data)を社内ソフトウェア開発目的にのみ使用することが含まれます。