SonarQube

公式

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

SonarQube MCPで何ができますか?

  • SonarQube Cloud または Server に接続 — トークン、組織キー、またはサーバー URL を指定して sonarsource/sonarqube-mcp コンテナを設定し、アシスタントを SonarQube に接続します。
  • コードスニペットを解析 — ワークスペースをマウントしてディスク上のファイルを直接読み取り、コードスニペットまたはファイルの解析を実行するようアシスタントに依頼します。
  • 問題を検索・管理 — issues ツールセットを使って SonarQube の問題を検索・更新します。
  • セキュリティホットスポットをレビュー — security-hotspots ツールセットを使ってセキュリティホットスポットを検索・レビューします。
  • プロジェクトと品質ゲートを確認 — プロジェクトキー、品質ゲート、ルール、メトリクス、カバレッジデータを確認します。
  • ツールセットの制限と読み取り専用モード — SONARQUBE_TOOLSETS と SONARQUBE_READ_ONLY を使って、読み込むツールを制御し、書き込み操作を禁止します。

ドキュメント

Sonar logo

Build Quality Gate Status

SonarQube MCP Server

SonarQube MCP Server は、コード品質とセキュリティのために SonarQube Server または Cloud とシームレスに連携できる Model Context Protocol (MCP) サーバーです。 エージェントのコンテキスト内でコードスニペットを直接分析することもできます。

クイックセットアップから始めるか、SonarQube 製品ファミリーについて詳しくご覧ください。

クイックセットアップ

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

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

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

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

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

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

🚀 設定を生成する

最も手早く始めるには、SonarQube MCP Server Configuration Generator を使用します。これは、使用する AI エージェントクライアント向けのすぐに使える設定を生成する対話型ツールです。

手動セットアップ

自分で設定する場合、最も簡単な方法は sonarsource/sonarqube-mcp のコンテナイメージを使用することです。自動更新には sonarsource/sonarqube-mcp(--pull=always を使用)を使うか、再現可能なデプロイにはバージョンタグ(例: sonarsource/sonarqube-mcp:1.19.0.2785)を固定してください。一部のリリースには、対応する SonarQube Server のバージョンを示すタグも付いています。形式は <SQS major>.<SQS minor>.<patch>(例: sonarsource/sonarqube-mcp:2026.5.0)で、パッチ番号は、その SonarQube Server バージョンを対象とする MCP リリースごとに増加します。ローカルでビルドする場合は、以下をお読みください。

注: 以下の例では docker を使用していますが、OCI 互換のコンテナランタイムであれば使用できます(例: Podman、nerdctl)。docker を使用するツールに置き換えてください。

Antigravity

SonarQube MCP Server は Antigravity MCP Store で利用できます。以下の手順に従ってください。

  1. Agent Side Panel を開きます
  2. 右上の三点リーダー(...)をクリックし、MCP Servers を選択します
  3. SonarQube を検索し、Install を選択します
  4. 必須の SonarQube User トークンを入力します。SonarQube Cloud に接続する場合は組織キーを、SonarQube Server に接続する場合は SonarQube URL も入力できます。

SonarQube Cloud US の場合は、URL に https://sonarqube.us を設定します。

または、mcp_config.json を使ってサーバーを手動で設定できます。

  • SonarQube Cloud に接続する場合:

Agent Side Panel で三点リーダー(...)をクリックし、MCP Store -> Manage MCP Servers -> View raw config の順に選択して、以下を追加します。

{
  "mcpServers": {
    "sonarqube": {
      "command": "docker",
      "args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"],
      "env": {
        "SONARQUBE_TOKEN": "<YOUR_TOKEN>",
        "SONARQUBE_ORG": "<YOUR_ORG>"
      }
    }
  }
}

SonarQube Cloud US の場合は、"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 USER トークン
    • SONARQUBE_URL - SonarQube Server URL

インストール後、拡張機能は <home>/.gemini/extensions/sonarqube/gemini-extension.json にインストールされます。

GitHub Copilot CLI

Copilot CLI の起動後、以下のコマンドを実行して SonarQube MCP サーバーを追加します。

/mcp add

MCP サーバーに関する情報を入力する必要があります。Tab キーを使ってフィールド間を移動できます。

  • SonarQube Cloud に接続する場合:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_ORG, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_TOKEN>,SONARQUBE_ORG=<YOUR_ORG>
Tools: *

SonarQube Cloud US の場合は、Arguments に -e, SONARQUBE_URL を、Environment Variables に SONARQUBE_URL=https://sonarqube.us を追加します。

  • SonarQube Server に接続する場合:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_URL, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_USER_TOKEN>,SONARQUBE_URL=<YOUR_SERVER_URL>
Tools: *

設定ファイルは ~/.copilot/mcp-config.json にあります。

GitHub Copilot coding agent

GitHub Copilot coding agent は、CI/CD で SonarQube MCP サーバーを直接利用できます。

Copilot 環境にシークレットを追加するには、Copilot のドキュメントに従ってください。名前が COPILOT_MCP_ で始まるシークレットのみ、MCP 設定で使用できます。

GitHub リポジトリで Settings -> Copilot -> Coding agent に移動し、MCP configuration セクションに以下の設定を追加します。

  • SonarQube Cloud に接続する場合:
{
  "mcpServers": {
    "sonarqube": {
      "type": "local",
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "--rm",
        "-i",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_TOKEN": "COPILOT_MCP_SONARQUBE_TOKEN",
        "SONARQUBE_ORG": "COPILOT_MCP_SONARQUBE_ORG"
      },
      "tools": ["*"]
    }
  }
}

SonarQube Cloud US の場合は、"-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 Server は Windsurf プラグインとして利用できます。以下の手順に従ってください。

  1. Windsurf の Settings > Cascade > MCP Servers を開き、Open MCP Marketplace を選択します
  2. Cascade MCP Marketplace で sonarqube を検索します
  3. SonarQube MCP Server を選択し、Install を選択します
  4. 必須の SonarQube User トークンを追加します。任意で、SonarQube Cloud 用のデフォルト組織キー、または SonarQube Server や Community Build 用の SonarQube URL も追加できます。

SonarQube Cloud US の場合は、URL に https://sonarqube.us を設定します。

Zed

Zed の Extensions ビューに移動し、SonarQube MCP Server を検索します。 拡張機能のインストール時に、必要な環境変数の入力を求められます。

  • SonarQube Cloud を使用する場合:
{
  "sonarqube_token": "YOUR_SONARQUBE_TOKEN",
  "sonarqube_org": "SONARQUBE_ORGANIZATION_KEY",
  "docker_path": "DOCKER_PATH"
}

SonarQube Cloud US の場合は、設定に "sonarqube_url": "https://sonarqube.us" を追加します。

  • SonarQube Server を使用する場合:
{
  "sonarqube_token": "YOUR_SONARQUBE_USER_TOKEN",
  "sonarqube_url": "YOUR_SONARQUBE_SERVER_URL",
  "docker_path": "DOCKER_PATH"
}

docker_path は docker 実行ファイルへのパスです。例:

Linux/macOS: /usr/bin/docker または /usr/local/bin/docker

Windows: C:\Program Files\Docker\Docker\resources\bin\docker.exe

💡 ヒント: 最新の機能や修正を利用できるよう、定期的に、または問題を報告する前に、最新のイメージを取得することをおすすめします。

手動インストール

以下のスニペットを MCP サーバー設定ファイルにコピーして、SonarQube MCP サーバーを手動でインストールできます。

  • SonarQube Cloud に接続する場合:
{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run",
      "--init",
      "--pull=always",
      "-i",
      "--rm",
      "-e",
      "SONARQUBE_TOKEN",
      "-e",
      "SONARQUBE_ORG",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_ORG": "<org>"
    }
  }
}
  • SonarQube Server に接続する場合:
{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run",
      "--init",
      "--pull=always",
      "-i",
      "--rm",
      "-e",
      "SONARQUBE_TOKEN",
      "-e",
      "SONARQUBE_URL",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_URL": "<url>"
    }
  }
}

SonarQube for IDE との連携

SonarQube MCP Server は SonarQube for IDE と連携し、IDE 内でコード分析やインサイトを直接提供することで、開発ワークフローをさらに強化できます。

設定

SonarQube for IDE を使用する場合は、SONARQUBE_IDE_PORT 環境変数に正しいポート番号を設定してください。SonarQube for VS Code には、正しいポート設定を自動的に行う Quick Install ボタンがあります。

たとえば、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 Server の実行時に、以下の変数を追加してください。

環境変数説明
STORAGE_PATHSonarQube MCP Server がファイルを保存する書き込み可能なディレクトリの必須の絶対パス(作成、更新、永続化などに使用)。コンテナイメージを使用する場合は自動的に指定されます
SONARQUBE_PROJECT_KEY任意のデフォルトプロジェクトキー。設定すると、プロジェクトキーを必要とするすべてのツールでこの値が自動的に使用され、projectKey パラメーターはスキーマから完全に削除されます。単一のプロジェクトで作業する場合に便利です。
SONARQUBE_IDE_PORTSonarQube MCP Server と SonarQube for IDE の接続に使用する、64120~64130 の任意のポート番号。
SONARQUBE_FORCE_LOCAL_ANALYSISCloud stdio で、権限を付与された組織も含め、Vortex 分析の代わりに analyze_code_snippet を使用するには、true に設定します。analysis ツールセットが必要です。デフォルト: false。SonarQube Server または Cloud HTTP には影響しません。
SONARQUBE_DEBUG_ENABLEDtrue に設定すると、デバッグログが有効になります。デバッグログはログファイルと STDERR の両方に書き込まれます。接続や設定の問題のトラブルシューティングに便利です。デフォルト: false。
SONARQUBE_LOG_TO_FILE_DISABLEDtrue に設定すると、ディスクへのログ書き込みが完全に無効になります。STORAGE_PATH/logs/ 以下にログファイルは作成されません。ファイルへのログ記録が望ましくないコンテナ環境や一時的な環境で便利です。デフォルト: false。

ワークスペースのマウント(コンテキストの肥大化を抑制)

デフォルトでは、分析ツール analyze_code_snippet を使用するには、エージェントがファイルの全内容を fileContent 引数として渡す必要があります。大きなファイルや、1 回のセッションで多数のファイルを分析する場合、コンテキストウィンドウの使用量とコストが大幅に増加します。

解決策: プロジェクトディレクトリを /app/mcp-workspace にコンテナ内マウントします。このマウントが検出されると、サーバーはプロジェクト相対の filePath 引数を使用してディスクから直接ファイルを読み取ります。ファイルの内容がエージェントのコンテキストを経由することはありません。

{
  "args": [
    "run", "-i", "--rm", "--init", "--pull=always",
    "-e", "SONARQUBE_TOKEN",
    "-e", "SONARQUBE_ORG",
    "-v", "/path/to/your/project:/app/mcp-workspace",
    "sonarsource/sonarqube-mcp"
  ]
}

マウントがある場合、分析ツールは filePath を使用してファイルを直接読み取るため、fileContent は不要です。

stdio では、有効なツールセットに応じて、起動時に分析方式が選択されます。

  • SonarQube Cloud: ワークスペースのマウントがあり、権限を付与された組織が 1 つ以上ある場合は Vortex 分析(run_advanced_code_analysis)、それ以外の場合はローカル分析。Vortex 分析で受け付けられるのは、権限を付与された組織のみです。
  • SonarQube Server: 権限を付与されたインスタンスでは Vortex 分析(ワークスペースのマウントが必要)、Vortex を利用できないインスタンスではローカル分析。

ローカル分析では、接続されている場合は SonarQube for IDE を使用し、そうでない場合は analyze_code_snippet を使用します。マウントがない場合、スニペット分析には fileContent が必要です。

Cloud stdio では、SONARQUBE_ORG により、権限チェックの対象がその組織に限定されます。すべての組織でスニペットを使用するには、SONARQUBE_FORCE_LOCAL_ANALYSIS=true を設定し、analysis ツールセットを有効にしてから再起動します。この設定は Cloud stdio のみに影響します。

HTTP/HTTPS では、MCP サーバーに起動時の SONARQUBE_TOKEN が設定され、analysis ツールセットが有効な場合、Cloud と Server は analyze_code_snippet をサポートします。アナライザーの初期化には起動時トークンが必要です(Cloud プラグインのダウンロードは匿名で行われます)。呼び出しでは、呼び出し元のトークンと、Cloud の場合はリクエストで選択された組織を使用して、品質プロファイルと有効なルールを取得します。起動時トークンがない場合、SONARQUBE_FORCE_LOCAL_ANALYSIS=true が設定されていても、スニペット分析とアナライザーのダウンロードは無効になります。Vortex の権限は必要ありません。

ツールの選択的な有効化

MCP クライアントは、会話のたびに、有効なすべてのツール(名前、説明、入力スキーマ)をエージェントのコンテキストに読み込みます。SONARQUBE_TOOLSETS を使用してこの一覧を制限すると、コンテキストの使用量と各セッションのトークンコストを削減できます。

デフォルトでは、重要なツールセットのみが有効です。追加のツールセットは必要な場合にのみ有効にしてください。

環境変数説明
SONARQUBE_TOOLSETS有効にするツールセットをカンマ区切りで指定します。設定すると、指定したツールセットのみが使用可能になります。未設定の場合、デフォルトの重要なツールセット(analysis、ide、issues、projects、quality-gates、rules、duplications、measures、security-hotspots、dependency-risks、coverage、cag)が有効になります。注: 他の操作でプロジェクトキーを検索するために必要なため、projects ツールセットは常に有効です。Vortex コンテキストツール(旧称: Context Augmentation/CAG)と Vortex 分析ツール(旧称: Advanced Analysis/A3S)は stdio モードでのみ使用でき、組織の権限を共有します。いずれかを使用するには、組織が両方の権限を付与されている必要があります。Cloud の組み込み分析では実行時に選択された組織が確認され、プロキシ経由のコンテキストツールでは起動時の組織が使用されます。SonarQube Server では、CAG と A3S の両方のハブに権限が付与されている場合、stdio に Vortex コンテキストと run_advanced_code_analysis が表示されます。統合された vortex ツールセットキーを使用してください。非推奨の cag キーと analysis キーも引き続き使用できます。vortex を指定せずにこれらを使用すると、起動時の警告とサーバーの説明に非推奨の注記が表示されます。Streamable HTTP モードでは、クライアントは SONARQUBE_TOOLSETS HTTP ヘッダーを送信してリクエストごとにさらに絞り込めますが、サーバーの起動時に有効化されたツールセットを超えて有効にすることはできません(下記のStreamable HTTP トランスポートを参照)。
SONARQUBE_READ_ONLYtrue に設定すると、読み取り専用モードが有効になり、すべての書き込み操作(例: 課題のステータス変更)が無効になります。SONARQUBE_TOOLSETS も設定されている場合、このフィルターは累積的に適用されます。デフォルト: false。Streamable HTTP モードでは、クライアントは SONARQUBE_READ_ONLY HTTP ヘッダーを送信して個々のリクエストをさらに読み取り専用に制限できますが、サーバーレベルの読み取り専用制限を解除することはできません(下記のStreamable HTTP トランスポートを参照)。
利用可能なツールセット | ツールセット | キー | 説明 | |-----------------------|---------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------| | **Analysis** | `analysis` | コード分析ツール(`analyze_code_snippet` によるローカル分析。`analyze_file_list`/Vortex 分析を優先するため**非推奨**) | | **IDE** | `ide` | SonarQube for IDE ブリッジツール(ファイル分析、自動分析の切り替え)— 現在は `analysis` にも含まれています | | **Issues** | `issues` | SonarQube の課題を検索および管理 | | **Security Hotspots** | `security-hotspots` | Security Hotspots を検索およびレビュー | | **Projects** | `projects` | SonarQube プロジェクトを参照および検索 | | **Quality Gates** | `quality-gates` | Quality Gate とそのステータスにアクセス | | **Rules** | `rules` | SonarQube ルールを参照および検索 | | **Sources** | `sources` | ソースコードと SCM 情報にアクセス | | **Duplications** | `duplications` | プロジェクト間のコード重複を検出 | | **Measures** | `measures` | メトリクスと測定値を取得(測定値ツールとメトリクスツールの両方を含む) | | **Languages** | `languages` | サポートされているプログラミング言語を一覧表示 | | **Portfolios** | `portfolios` | ポートフォリオとエンタープライズを管理(Cloud および Server) | | **System** | `system` | システム管理ツール(Server のみ) | | **Webhooks** | `webhooks` | Webhook を管理 | | **Dependency Risks** | `dependency-risks` | 依存関係のリスクとセキュリティ問題を分析(SCA) | | **Coverage** | `coverage` | テストカバレッジの分析と改善ツール | | **Vortex Context** | `cag` | Vortex コンテキストツール — stdio のみ。`vortex` を優先するため**非推奨**(旧称: Context Augmentation/CAG) | | **Vortex** | `vortex` | Vortex コンテキストツールと Vortex 分析ツールの両方を単一の名前で提供する、統合された**推奨**ツールセット(stdio のみ。Cloud では組織の複合エンタイトルメントが必要。Server では両方のハブのエンタイトルメントが必要) | | **Agentic Readiness** | `agentic-readiness` | Agentic Readiness 評価ツール(SonarQube Cloud、組織のエンタイトルメントが必要) | | **Architecture** | `architecture` | アーキテクチャを読み取り、意図されたモデルを置き換え、プロジェクトディレクティブを管理(デフォルトでは有効になっていません) |

例

分析、課題、Quality Gate のツールセットを有効にする(SonarQube Cloud で Docker を使用):

docker run --init --pull=always -i --rm \
  -e SONARQUBE_TOKEN="<token>" \
  -e SONARQUBE_ORG="<org>" \
  -e SONARQUBE_TOOLSETS="analysis,issues,quality-gates" \
  sonarsource/sonarqube-mcp

注: projects ツールセットは常に自動的に有効になるため、SONARQUBE_TOOLSETS に含める必要はありません。

読み取り専用モードを有効にする(SonarQube Cloud で Docker を使用):

docker run --init --pull=always -i --rm \
  -e SONARQUBE_TOKEN="<token>" \
  -e SONARQUBE_ORG="<org>" \
  -e SONARQUBE_READ_ONLY="true" \
  sonarsource/sonarqube-mcp

SonarQube Cloud

stdio の場合、次の環境変数を設定します。

環境変数説明必須
SONARQUBE_TOKENSonarQube Cloud の トークンはい
SONARQUBE_ORG任意の固定 SonarQube Cloud 組織 キーいいえ
SONARQUBE_URLカスタム SonarQube Cloud URL(デフォルトは https://sonarcloud.io)。SonarQube Cloud US では次を使用します: https://sonarqube.usいいえ

例:

  • SonarQube Cloud: 必要なのは SONARQUBE_TOKEN のみです。SONARQUBE_ORG を設定すると組織が固定されます。
  • SonarQube Cloud US: SONARQUBE_TOKEN と SONARQUBE_URL=https://sonarqube.us を設定します。SONARQUBE_ORG は任意です。

SonarQube Server

環境変数説明必須
SONARQUBE_TOKENSonarQube Server の USER トークンはい
SONARQUBE_URLSonarQube Server の URLはい

バージョン要件: SonarQube Server 2025.1 (SQS)、または 25.1 (SonarQube Community Build) 以降が必要です。起動時に MCP サーバーは接続先インスタンスのバージョンを読み取り、古すぎる場合はエラーで終了します(たとえば、旧式の 9.x/10.x Server リリースおよび Community Build 24.x はサポートされません)。SonarQube Cloud にはこのチェックは適用されません。

⚠️ SonarQube Server への接続には USER タイプのトークンが必要です。プロジェクトトークンまたはグローバルトークンを使用すると、正常に動作しません。

💡 設定のヒント(stdio モード): URL を指定しないトークンは、デフォルトで SonarQube Cloud に接続します。SonarQube Server または別の Cloud リージョンを使用するには、SONARQUBE_URL を設定します。SONARQUBE_ORG を設定すると Cloud の組織が固定されます。

stdio では、SONARQUBE_ORG を設定すると Cloud の組織が固定されます。organization の引数はスキーマから省略され、SONARQUBE_PROJECT_KEY が設定されている場合の projectKey と同様に拒否されます。

SONARQUBE_ORG が未設定の場合、エージェントは list_organizations を呼び出して、ユーザーアカウントからアクセス可能な組織のキー、名前、ID、UUID を確認し、その後、組織対応ツールの任意の organization 引数にキーを渡せます。stdio では、組織が一意に検出された場合はそれがデフォルトとして保持されます。組織が 0 件または複数件の場合、組織は未解決のままになります。ツール引数はその呼び出しにのみ適用され、検出されたデフォルトは変更されません。スニペットのプロファイルとルールの検索では、その呼び出しで選択された組織が使用されます。

HTTP/HTTPS のトークンリクエストでは、サーバーレベルの SONARQUBE_ORG は互換性のため引き続きサポートされますが、非推奨であり、起動時に警告がログに記録されます。これを設定すると、すべてのリクエストで組織が固定され、クライアントの組織ヘッダーとツールの organization 引数は拒否されます。サーバー組織が設定されていない場合、任意のクライアント SONARQUBE_ORG ヘッダーを設定すると、そのリクエストの組織が固定され、ツールの organization 引数は使用できなくなります。ヘッダーがない場合は、ツール引数を使用します。組織を必要とするツールでは、組織がすべて未指定の場合に検出方法が案内されます。組織の検出、および API がリソース識別子のみを使用するツールでは、組織引数は不要です。組織対応の課題検索と依存関係リスクのエンタイトルメントチェックでは、選択された組織が使用されます。OAuth が設定されている場合、サーバーレベルの SONARQUBE_ORG は拒否されます。OAuth リクエストでは組織ヘッダーも拒否されます。組織を選択するにはツール引数を使用してください。

Vortex コンテキストツールでは、設定済みの組織、または起動時に一意に検出された組織が使用されます。実行時の組織引数では、プロキシされたコンテキストエンジンは再設定されません。起動時に組織が未解決の場合、そのプロキシはスキップされます。組み込みの run_advanced_code_analysis ツールは、呼び出しごとに選択された組織について、Vortex の複合エンタイトルメントを確認します。

トランスポートモード

MCP 仕様 では、Stdio と Streamable HTTP の 2 つのトランスポート方式が定義されています。SonarQube MCP Server は両方をサポートしています。

MCP トランスポートサーバーモード一般的な用途
Stdioデフォルト(SONARQUBE_TRANSPORT なし)サーバーをサブプロセスとして起動するローカル MCP クライアント(Cursor、Claude Code、VS Code など)
Streamable HTTPSONARQUBE_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_TRANSPORTStreamable HTTP トランスポートを有効にするには http に設定します未設定(stdio)
SONARQUBE_HTTP_PORTポート番号(1024-65535)、または OS にポートを割り当てさせる場合は 08080
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
注: HTTP/HTTPS では、ユーザーの SonarQube トークンを Authorization: Bearer <token> 経由で受け取ります。Sonar のホスト型 Cloud サービスは OAuth にも対応しています。SonarQube Cloud のトークンリクエストでは、組織は次のように解決されます。
  • SONARQUBE_ORG は、そのリクエストの組織を固定する任意のリクエストヘッダーです。非推奨のサーバーレベル設定では、すべてのリクエストに対して組織が固定され、クライアントの組織ヘッダーとツールの組織引数は拒否されます。
  • 組織対応ツールは、サーバー設定またはリクエストヘッダーで組織が固定されていない場合、任意の organization 引数を受け付けます。組織が固定されている場合にこの引数を指定すると、拒否されます。
  • デフォルトがない場合、エージェントはトークンのみを使って list_organizations を呼び出し、選択したキーを後続のツールに渡せます。

クライアントは、SONARQUBE_TOOLSETS および/または SONARQUBE_READ_ONLY ヘッダーを指定して、リクエストごとに表示されるツールをさらに絞り込むこともできます。これらはサーバーレベルの設定に加えてフィルタリングを適用し、範囲を狭めることのみ可能で、広げることはできません。 リクエスト間でセッション状態は維持されません。

非推奨: SonarQube トークンでは、後方互換性のため 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)、または OS にポートを割り当てさせる場合は 08080
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 \
  sonarsource/sonarqube-mcp

ネットワークからアクセス可能なサーバーの場合 (リモートデプロイ):

docker run --init --pull=always -p 8443:8443 \
  -v $(pwd)/keystore.p12:/etc/ssl/mcp/keystore.p12:ro \
  -e SONARQUBE_TRANSPORT=https \
  -e SONARQUBE_HTTP_HOST=0.0.0.0 \
  -e SONARQUBE_HTTP_PORT=8443 \
  sonarsource/sonarqube-mcp

クライアント設定 (SonarQube Cloud):

SonarQube トークンのリクエストでは、リクエストの組織を固定するために、必要に応じてクライアントヘッダーに SONARQUBE_ORG を設定してください。組織をツール引数で選択する場合は省略します。

{
  "mcpServers": {
    "sonarqube-https": {
      "url": "https://your-server:8443/mcp",
      "headers": {
        "Authorization": "Bearer <your-token>",
        "SONARQUBE_TOOLSETS": "issues,quality-gates",
        "SONARQUBE_READ_ONLY": "true"
      }
    }
  }
}

クライアント設定 (SonarQube Server):

{
  "mcpServers": {
    "sonarqube-https": {
      "url": "https://your-server:8443/mcp",
      "headers": {
        "Authorization": "Bearer <your-token>",
        "SONARQUBE_TOOLSETS": "issues,quality-gates",
        "SONARQUBE_READ_ONLY": "true"
      }
    }
  }
}

注: SONARQUBE_TOOLSETS と SONARQUBE_READ_ONLY は、そのリクエストに限り、サーバーレベルのツールセットを絞り込む任意のリクエストヘッダーです。範囲を狭めることのみ可能で、サーバーの起動時に設定された範囲を超えてツールセットを有効にしたり、制限を解除したりすることはできません。

注: ローカル開発では、代わりに Stdio トランスポート (デフォルト) を使用してください。HTTPS Streamable HTTP は、適切な SSL 証明書を使用する複数ユーザー向けの本番環境を対象としています。

ホスト型 SonarQube Cloud OAuth

OAuth は、Sonar がホストする SonarQube Cloud MCP サービスを対象としています。OAuth 対応の MCP クライアントを使用し、プロンプトが表示されたらサインインしてください。クライアント設定に OAuth サーバーの設定は不要です。既存の SonarQube トークンを使用するクライアントも引き続きサポートされます。

mcp:tools:read と mcp:tools:write のスコープは、Cloud の権限に従って、読み取りツールと書き込みツールへのアクセスをそれぞれ個別に制御します。組織を選択するには、list_organizations とツールの organization 引数を使用してください。

セルフホスト型デプロイでは引き続き SonarQube トークンを使用します。SonarQube Server の OAuth はまだサポートされていません。

サービスエンドポイント

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

エンドポイントメソッド説明応答例
/healthGET稼働状態プローブ。サーバーがリクエストを受け付ける状態になると、空の本文とともに 200 OK を返します。(空の本文)
/infoGETMCP サーバーのバージョンを JSON で返します。デプロイ済みサーバーのバージョン確認に便利です。{"version":"1.16.0"}

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

カスタム証明書

SonarQube Server が自己署名証明書またはプライベート認証局 (CA) の証明書を使用している場合、コンテナにカスタム証明書を追加できます。証明書は自動的にインストールされます。

Configuration

ボリュームマウントを使用する

コンテナの実行時に、証明書を含むディレクトリをマウントします。

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 信頼ストアを使用できない場合 (特に、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 プロキシに対応しています。

Configuration

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 で渡すことができます。

Configuration

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 を追加します。スニペット内の問題のみが報告されます(スニペットの位置は自動検出されます)

    パラメーター:

    • organization - SonarQube Cloud の組織キー - オプションの String、Cloud のみ
    • projectKey - SonarQube プロジェクトキー - 必須の String (SONARQUBE_PROJECT_KEY が定義されている場合は無視されます)
    • filePath - 分析するファイルのプロジェクト相対パス(例: src/main/java/MyClass.java)。ワークスペースが /app/mcp-workspace にマウントされている場合に使用します - String
    • fileContent - 文字列としてのファイル全体の内容。ワークスペースがマウントされていない場合は必須です - String
    • codeSnippet - 問題を絞り込むコードスニペット(fileContent 内の内容と一致する必要があります) - String
    • language - コードの言語(例: 'java'、'python'、'js'、'ts'、'tsx'、'jsx') - String
    • scope - ファイルのスコープ: MAIN または TEST(デフォルト: MAIN) - String

    サポートされている言語: Java、Kotlin、Python、Ruby、Go、JavaScript(js、jsx)、TypeScript(ts、tsx)、JSP、PHP、XML、HTML、CSS、CloudFormation、Kubernetes、Terraform、Azure Resource Manager、Ansible、Docker、シークレット検出

SonarQube for IDE との統合が有効な場合: (これら2つのツールは、analysis と ide の両方のツールセットに含まれます)

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

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

    • enabled - 自動分析を有効または無効にします - 必須の Boolean

SonarQube Server では、CAG と A3S の両方のハブが利用資格を満たしている場合、stdio に Vortex コンテキストツールと run_advanced_code_analysis が表示されます。

Vortex 分析が利用可能な場合:

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

  • run_advanced_code_analysis - 単一ファイルに対して Vortex 分析を実行します。SonarQube Server は nil UUID プレースホルダーを使用します。
    • organization - SonarQube Cloud の組織キー - オプションの String、Cloud のみ
    • projectKey - プロジェクトのキー - 必須の String (SONARQUBE_PROJECT_KEY が定義されている場合は無視されます)
    • branch - 最新の分析コンテキストを取得するために使用するブランチ名 - 必須の String
    • filePath - 分析するファイルのプロジェクト相対パス(例: src/main/java/MyClass.java)。 - 必須の String
    • fileScope - ファイルのスコープを定義します: 'MAIN' または 'TEST'(デフォルト: MAIN) - String

カバレッジ

  • search_files_by_coverage - プロジェクト内のファイルをカバレッジ順(昇順、カバレッジが最も低いものから)に検索します。このツールを使うと、テストカバレッジの改善が必要なファイルを特定できます。

    • projectKey - 検索対象のプロジェクトキー - 必須の String (SONARQUBE_PROJECT_KEY が定義されている場合は無視されます)
    • branch - ブランチベースの分析に使用するオプションのブランチ名。有効な名前を確認するには list_branches を使用します - String
    • pullRequest - オプションのプルリクエストキー/ID。有効なキーを確認するには list_pull_requests を使用します - String
    • maxCoverage - カバレッジの最大しきい値(0~100)。カバレッジがこの値以下のファイルのみを返します - Number
    • pageIndex - ページインデックス(1始まり、デフォルト: 1) - Number
    • pageSize - ページサイズ(デフォルト: 100、最大: 500) - Number
  • get_file_coverage_details - 特定のファイルについて、カバレッジされていない行や一部の分岐のみカバレッジされている行など、行ごとのカバレッジ情報を取得します。このツールを使うと、テストカバレッジを追加すべき箇所を正確に特定できます。search_files_by_coverage でカバレッジの低いファイルを特定した後に使用してください。

    • key - ファイルキー(例: my_project:src/foo/Bar.java) - 必須の String
    • branch - ブランチベースの分析に使用するオプションのブランチ名。有効な名前を確認するには list_branches を使用します - String
    • pullRequest - オプションのプルリクエストキー/ID。有効なキーを確認するには list_pull_requests を使用します - String
    • from - 分析する最初の行(1始まり、デフォルト: 1) - Number
    • to - 分析する最後の行(この行を含む)。指定しない場合は、すべての行が返されます - Number

依存関係のリスク

注: 依存関係のリスクには SonarQube Advanced Security が必要です。SonarQube Server では、バージョン 2025.4 Enterprise 以上が必要です。

  • search_dependency_risks - SonarQube プロジェクトのソフトウェア構成分析の問題(依存関係のリスク)を検索し、分析対象のプロジェクト、アプリケーション、またはポートフォリオに含まれるリリースと組み合わせて表示します。
    • organization - SonarQube Cloud の組織キー - オプションの String、Cloud のみ
    • projectKey - プロジェクトキー - 必須の String (SONARQUBE_PROJECT_KEY が定義されている場合は無視されます)
    • branch - ブランチベースの分析に使用するオプションのブランチ名。有効な名前を確認するには list_branches を使用します - String
    • pullRequest - オプションのプルリクエストキー/ID。有効なキーを確認するには list_pull_requests を使用します - String
    • pageIndex - オプションのページインデックス(1始まり、デフォルト: 1) - Integer
    • pageSize - オプションのページサイズ。0 より大きく 500 以下である必要があります(デフォルト: 100) - Integer

エンタープライズ

注: エンタープライズは SonarQube Cloud に接続している場合のみ利用できます。

  • list_enterprises - アクセス可能な SonarQube Cloud のエンタープライズを一覧表示します。このツールを使って、他のツールで使用できるエンタープライズ ID を確認できます。
    • enterpriseKey - 結果を絞り込むためのオプションのエンタープライズキー - String

問題

  • change_sonar_issue_status - SonarQube の問題のステータスを "accept"、"falsepositive"、または "reopen" に変更します。

    • key - 問題キー - 必須の String
    • status - 問題の新しいステータス - 必須の Enum {"accept", "falsepositive", "reopen"}
    • comment - ステータス変更の理由を説明するオプションのコメント - String
  • search_sonar_issues_in_projects - 組織のプロジェクト内にある SonarQube の問題を検索します。

    • organization - SonarQube Cloud の組織キー - オプションの String、Cloud のみ
    • projectKeys - SonarQube プロジェクトキーのオプションのリスト - String[]
    • branch - ブランチベースの分析に使用するオプションのブランチ名。有効な名前を確認するには list_branches を使用します - String
    • pullRequest - オプションのプルリクエストキー/ID。有効なキーを確認するには list_pull_requests を使用します - String
    • severities - 絞り込みに使用する重大度のオプションのリスト。有効な値: INFO、LOW、MEDIUM、HIGH、BLOCKER - String[]
    • impactSoftwareQualities - 絞り込みに使用するソフトウェア品質のオプションのリスト。有効な値: MAINTAINABILITY、RELIABILITY、SECURITY - String[]
    • issueStatuses - 絞り込みに使用する問題ステータスのオプションのリスト。有効な値: OPEN、CONFIRMED、FALSE_POSITIVE、ACCEPTED、FIXED、IN_SANDBOX - String[]
    • tags - 絞り込みに使用する問題タグのオプションのリスト。タグは小文字です - String[]
    • inNewCodePeriod - 新規コード期間内の問題のみを返します。projectKeys と files の間で、ちょうど1つの項目が指定されている必要があります - Boolean
    • issueKey - 特定の問題を取得するためのオプションの問題キー - String
    • pageIndex - オプションの1始まりのページインデックス(デフォルト: 1) - Integer
    • pageSize - オプションのページサイズ。0 より大きく 500 以下である必要があります(デフォルト: 100) - Integer

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

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

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

    • hotspotKey - セキュリティホットスポットキー - 必須の String
  • change_security_hotspot_status - ステータスを変更してセキュリティホットスポットをレビューします。REVIEWED にする場合は、解決方法(FIXED、SAFE、ACKNOWLEDGED)を指定する必要があります。

    • hotspotKey - セキュリティホットスポットキー - 必須の String
    • status - 新しいステータス - 必須の Enum {"TO_REVIEW", "REVIEWED"}
    • resolution - ステータスが REVIEWED の場合の解決方法 - Enum {"FIXED", "SAFE", "ACKNOWLEDGED"}
    • comment - オプションのレビューコメント - String

言語

  • list_languages - この SonarQube インスタンスでサポートされているすべてのプログラミング言語を一覧表示します。
    • q - 言語キー/名前に照合するオプションのパターン - String

メトリクス値

  • get_component_measures - コンポーネント(プロジェクト、ディレクトリ、ファイル)の SonarQube メトリクス値を取得します。
    • projectKey - プロジェクトキー - SONARQUBE_PROJECT_KEY が設定されていない場合は必須の String
    • branch - ブランチベースの分析に使用するオプションのブランチ名。有効な名前を確認するには list_branches を使用します - String
    • metricKeys - 取得するメトリクスキーのオプションのリスト(例: ncloc、complexity、violations、coverage) - String[]
    • pullRequest - オプションのプルリクエストキー/ID。有効なキーを確認するには list_pull_requests を使用します - String

メトリクス

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

ポートフォリオ

  • list_portfolios - 絞り込みとページネーションのオプションを指定して、SonarQube で利用可能なエンタープライズポートフォリオを一覧表示します。

    SonarQube Server の場合:

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

    SonarQube Cloud の場合:

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

プロジェクト

  • list_organizations - ユーザーがメンバーになっている SonarQube Cloud 組織を、キー、名前、ID、UUID とともに一覧表示します。返されたキーを後続のツールで organization として使用します。

  • search_my_sonarqube_projects - SonarQube プロジェクトを検索します。応答はページ分割されます。

    • organization - SonarQube Cloud の組織キー - Optional String, Cloud only
    • 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: 解析済みのすべてのブランチ(名前、Quality Gate、解析日)を返します。type、mergeBranch、branchTypes のフィルターはありません。
    • 返されたブランチ名を、他のツールの branch パラメーターとして使用します。プルリクエストの解析には、代わりに list_pull_requests を使用します。
    • projectKey - プロジェクトキー(例: my_project) - Required String (Ignored when SONARQUBE_PROJECT_KEY is defined)
    • branchTypes - (SonarQube Cloud only) 任意のフィルター: ALL(デフォルト)、LONG、または SHORT - Enum {"ALL", "LONG", "SHORT"}
  • list_pull_requests - プロジェクトのすべてのプルリクエストを一覧表示します。PR デコレーション解析(カバレッジ、課題、Quality Gate)のプルリクエストを見つけるには、このツールを使用します。他のツールで使用できるプルリクエストのキー/IDを返します。プルリクエストを使用しないブランチベースの解析には、代わりに list_branches を使用します。

    • projectKey - プロジェクトキー(例: my_project) - Required String (Ignored when SONARQUBE_PROJECT_KEY is defined)

Quality Gate

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

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

    • organization - SonarQube Cloud の組織キー - Optional String, Cloud only

ルール

  • show_rule - SonarQube ルールの詳細情報を表示します。
    • organization - SonarQube Cloud の組織キー - Optional String, Cloud only
    • key - ルールキー - Required String

重複

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

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

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

ソース

  • get_raw_source - SonarQube からソースコードをプレーンテキストで取得します。ファイルに対する 'See Source Code' 権限が必要です。

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

    • key - ファイルキー - Required 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 のシステム構成に関する詳細情報を取得します。'Administer' 権限が必要です。

  • get_system_logs - SonarQube Server のシステムログをプレーンテキスト形式で取得します。システム管理権限が必要です。

    • name - 取得するログの任意の名前。指定可能な値: access、app、ce、deprecation、es、web。デフォルト: app - String
  • ping_system - SonarQube Server システムに ping を送信し、稼働しているか確認します。プレーンテキストで 'pong' を返します。

  • get_system_status - SonarQube Server の状態情報を取得します。ステータス(STARTING、UP、DOWN、RESTARTING、DB_MIGRATION_NEEDED、DB_MIGRATION_RUNNING)、バージョン、IDを返します。

Webhook

  • create_webhook - SonarQube の組織またはプロジェクトに新しい webhook を作成します。指定したプロジェクトに対する 'Administer' 権限、またはグローバルな 'Administer' 権限が必要です。

    • organization - SonarQube Cloud の組織キー - Optional String, Cloud only
    • name - Webhook 名 - Required String
    • url - Webhook URL - Required String
    • projectKey - プロジェクト固有の webhook に使用する任意のプロジェクトキー - String
    • secret - Webhook ペイロードを保護するための任意の webhook シークレット - String
  • list_webhooks - SonarQube の組織またはプロジェクトにあるすべての webhook を一覧表示します。指定したプロジェクトに対する 'Administer' 権限、またはグローバルな 'Administer' 権限が必要です。

    • organization - SonarQube Cloud の組織キー - Optional String, Cloud only
    • projectKey - プロジェクト固有の webhook を一覧表示するための任意のプロジェクトキー - String

コンテキストの拡張

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

    • include_code_regex_list - シグネチャに照合する正規表現パターンのリスト - Required 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 - コード本体内で照合する正規表現パターンのリスト - Required 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 - 関数の完全修飾名 - Required String
    • depth - 呼び出しチェーンの深さ(0=関数のみ、1=直接の呼び出し元など) - Integer
    • fields - 応答に含めるフィールドのカンマ区切りリスト - String
  • get_downstream_call_flow - 指定した関数が呼び出す関数を追跡します。影響分析や実行フローの把握に役立ちます。

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

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

    • fqn - クラスに類する構造の完全修飾名 - Required String
    • fields - 応答に含めるフィールドのカンマ区切りリスト - String
  • get_references - クラスまたはモジュールへの直接のインバウンドおよびアウトバウンドのコード参照を取得します。直接の参照(推移的でないもの)のみを返します。

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

    • depth - 階層の深さ(0=ルートのみ、1=ルートと子など) - Required Integer
    • path_prefix - ノードを絞り込む任意のパスプレフィックス(例: com.example.service) - String
    • ecosystem - 絞り込む任意のエコシステム(java、cs、py、js、ts) - String
  • get_intended_architecture - どのモジュールが他のモジュールに依存できるかを指定する、ユーザー定義のアーキテクチャ制約を取得します。

ガイドラインツール
  • get_guidelines - SonarQubeプロジェクトの課題、カタログのカテゴリ、またはその両方に基づくコーディングガイドラインを取得します。
    • mode - ガイドラインの取得モード: project_based、category_based、またはcombined - 必須 String
    • categories - カテゴリ名のリスト(category_basedモードおよびcombinedモードで必須) - String[]
    • languages - SonarQubeリポジトリキー形式の対象言語のリスト(categoriesが指定されている場合に必須) - String[]
    • file_paths - ガイドラインを絞り込むための任意のファイルパスリスト - String[]
サードパーティ依存関係ツール
  • check_dependency - サードパーティ依存関係を追加または更新する前に、セキュリティ脆弱性、サプライチェーンマルウェア、ライセンス準拠を確認します。
    • purl - バージョンを含むPackage URL(purl)。purl-specに準拠。形式: 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) - 必須 String
コンテキスト拡張の環境変数
変数説明必須デフォルト
SONARQUBE_URLSonarQube CloudのURLはいhttps://sonarcloud.io
SONARQUBE_TOKEN認証トークンはいなし
SONARQUBE_ORGクラウド組織。起動設定または一意の検出を通じてプロキシに渡されますいいえなし
SONARQUBE_PROJECT_KEYSonarQube Cloudのプロジェクトキーはいなし
SONAR_SQ_BRANCHSonarQubeブランチの明示的な上書き *いいえなし
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>}"

次に、Context Augmentationサーバーがソースファイルに直接アクセスできるよう、プロジェクトのワークスペースをマウントします。

{
  "mcpServers": {
    "sonarqube-mcp-server": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm", "--pull=always",
        "-e", "SONARQUBE_URL",
        "-e", "SONARQUBE_TOKEN",
        "-e", "SONARQUBE_ORG",
        "-e", "SONARQUBE_PROJECT_KEY",
        "-e", "SONARQUBE_TOOLSETS",
        "-v", "/ABSOLUTE/PATH/TO/YOUR/PROJECT:/app/mcp-workspace:rw",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_URL": "https://sonarcloud.io",
        "SONARQUBE_ORG": "<YourOrganizationKey>",
        "SONARQUBE_PROJECT_KEY": "<YourProjectKey>",
        "SONARQUBE_TOOLSETS": "cag"
      }
    }
  }
}

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

エージェント対応状況

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

stdioモードでは、起動時に機能フラグが確認されます。HTTP/HTTPSでは、ツールを有効にするため、サーバーのSONARQUBE_TOOLSETSにagentic-readinessを追加します。

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

    • projectKey - プロジェクトキー - 必須 String (SONARQUBE_PROJECT_KEYが定義されている場合は無視されます)
    • branch - 評価するブランチ。省略すると、プロジェクトのデフォルトブランチが使用されます - String
  • get_agentic_readiness_assessment - 評価結果を取得します。ステータスがCOMPLETED、FAILED、またはINTERRUPTEDになるまで、同じassessmentIdを指定して再度呼び出します。完了すると、全体レベルと、推奨アクションおよび根拠を含む柱ごとの内訳を返します。

    • assessmentId - start_agentic_readiness_assessmentが返した評価ID - 必須 String
  • list_agentic_readiness_assessments - プロジェクトのすべての評価を新しい順に一覧表示します。柱ごとの詳細な結果にはget_agentic_readiness_assessmentを使用します。

    • projectKey - 評価を一覧表示するプロジェクトキー - 必須 String (SONARQUBE_PROJECT_KEYが定義されている場合は無視されます)
    • branch - ブランチ名で評価を絞り込みます。省略すると、すべてのブランチの評価が一覧表示されます - String
    • pageIndex - 1始まりのページインデックス(デフォルト: 1) - Number
    • pageSize - 1ページあたりの項目数、最大100(デフォルト: 50) - Number

アーキテクチャ

注: stdioまたはHTTP/HTTPSモードでSONARQUBE_TOOLSETS=architectureを指定して、これらのツールを有効にしてください。SonarQube CloudではTeamまたはEnterpriseプランが必要です。SonarQube Serverではバージョン2026.6以降とDeveloperエディション以上が必要です。旧バージョンおよびCommunity Buildでは利用できません。 アーキテクチャのワークフローと復旧を参照してください。

  • architecture_get - 現在の依存関係、意図されたアーキテクチャ、プロジェクトディレクティブ、または検出事項(逸脱、欠陥、コードスメル)を読み取ります。

    • target - current、intended、directives、またはfindings。利用可否はMCPおよびServerのビルドによって異なります - 必須 Enum
    • projectKey - プロジェクトキー - 必須 String (SONARQUBE_PROJECT_KEYが定義されている場合は無視されます)
    • organization - 未設定の場合に指定するSonarQube Cloudの組織キー - 任意 String、Cloudのみ
    • component - 正確な現在のノードキーまたは意図されたグループパス。省略すると最上位になります - String
    • depth - 現在/意図されたアーキテクチャのみ: 開始位置より下の階層数。現在のアーキテクチャではデフォルト1、意図されたアーキテクチャではすべて - Number
    • language - 現在/意図されたアーキテクチャ/検出事項のみ: java、cs、js、ts、またはpy - Enum
    • directiveId - UUIDで指定する完全なディレクティブ(説明を含む)。ページ分割の代わりに使用します - String
    • category / type - 検出事項のみ: 公開されているタイプで逸脱、欠陥、またはコードスメルを絞り込みます - Enum
    • pageIndex - ディレクティブ/検出事項: 1始まりのページインデックス(デフォルト: 1) - Number
    • pageSize - ディレクティブ: 要約、デフォルト/最大50。検出事項: デフォルト50、最大1000。0を指定すると件数のみ - Number
  • architecture_set - 意図されたアーキテクチャ全体を置き換えるか、プロジェクトディレクティブを作成、更新、削除します。書き込みが有効な、サポート対象のCloudおよびServerビルドで利用できます。

    • target - intendedまたはdirectives - 必須 Enum
    • projectKey - プロジェクトキー - 必須 String (SONARQUBE_PROJECT_KEYが定義されている場合は無視されます)
    • organization - 未設定の場合に指定するSonarQube Cloudの組織キー - 任意 String、Cloudのみ
    • model - JSON文字列: 意図されたアーキテクチャの完全なエクスポート、またはmodels配列(省略された内容は削除されます)、あるいはcreate、update、delete配列を含むディレクティブの変更 - 必須 String
    • dryRun - プレビューするにはtrue、適用するにはfalse - 必須 Boolean
    • revision - 意図されたアーキテクチャのみ: architecture_getのリビジョン。完全なエクスポートのリビジョンがデフォルトになります。クリアを適用する場合は必須 - String

プロンプトの例

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のビルドには、バージョン21以降のJava Development Kit(JDK)が必要です。

次のGradleコマンドを実行して、プロジェクトをクリーンアップし、アプリケーションをビルドします。

./gradlew clean build -x test

JARファイルはbuild/libs/に作成されます。

依存関係を追加または更新した後、ロックファイルを再生成します。

./gradlew :dependencies --write-locks
./gradlew :its:dependencies --write-locks

上記のJARから実行の設定を使用し、<path_to_sonarqube_mcp_server_jar>がbuild/libs/内のJARを指すようにします。

トラブルシューティング

アプリケーションログは、デフォルトでSTORAGE_PATH/logs/mcp.logファイルに書き込まれます。ファイルへのログ出力を完全に無効にするには、SONARQUBE_LOG_TO_FILE_DISABLED=trueを設定します。

よくある問題

「SonarQubeサーバーのバージョンはサポートされていません」

MCPサーバーは起動時に、接続先のSonarQube Serverのバージョンを確認します。インスタンスが2025.1(SQS)または25.1(SQCB)より古い場合、次のエラーが発生して起動に失敗します。

SonarQube server version is not supported, minimal version is SQS 2025.1 or SQCB 25.1

解決策: SonarQube Serverをサポート対象のリリースにアップグレードしてください。この確認はSonarQube Server(SONARQUBE_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 Source-Available License v1.0 に基づいてライセンスされています。このドキュメントに準拠して SonarQube MCP Server を使用することは、非競争目的に該当するため、SSAL の下で許可されています。

MCP を介した SonarQube の使用には、SonarQube Cloud Terms of Service または SonarQube Server Terms and Conditions が適用されます。これには、Results Data を社内のソフトウェア開発目的にのみ使用することが含まれます。