SonarQube MCP Server

公式

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

ドキュメント

SonarQube MCP Server

Build Quality Gate Status

SonarQube MCP Serverは、コード品質とセキュリティのために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 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設定セクションに以下の設定を追加します。

  • 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にはクイックインストールボタンが含まれており、正しいポート設定が自動的に設定されます。

例: 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 Serverがファイルを保存する書き込み可能なディレクトリへの必須の絶対パス(作成、更新、永続化など)。コンテナイメージ使用時は自動的に提供されます
SONARQUBE_PROJECT_KEYオプションのデフォルトプロジェクトキー。設定すると、プロジェクトキーを必要とするすべてのツールがこの値を自動的に使用し、projectKey パラメータはスキーマから完全に削除されます。単一プロジェクトで作業する場合に便利です。
SONARQUBE_IDE_PORTSonarQube MCP Serverを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_snippet: filePath が必要であり、fileContent は使用されません — サーバーは同じ方法でファイルを解決します

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

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

環境変数説明
SONARQUBE_TOOLSETS有効にするツールセットのカンマ区切りリスト。設定すると、これらのツールセットのみが利用可能になります。設定しない場合、デフォルトの重要なツールセットが有効になります (analysis, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag)。注意: projects ツールセットは、他の操作に必要なプロジェクトキーを見つけるために常に有効です。コンテキスト拡張ツールは stdio モードでのみ利用可能で、組織の権限が必要です。Streamable HTTP モードでは、クライアントは SONARQUBE_TOOLSETS HTTP ヘッダーを送信してリクエストごとにさらに絞り込むことができますが、サーバーが起動されたときのツールセットを超えて有効にすることはできません (下記の Streamable HTTP トランスポート を参照)。
SONARQUBE_READ_ONLYtrue に設定すると、読み取り専用モードが有効になり、すべての書き込み操作 (例: 課題のステータス変更) が無効になります。このフィルターは、両方が設定されている場合、SONARQUBE_TOOLSETS と累積的に適用されます。デフォルト: false。Streamable HTTP モードでは、クライアントは SONARQUBE_READ_ONLY HTTP ヘッダーを送信して個々のリクエストを読み取り専用にさらに制限できますが、サーバーレベルの読み取り専用制限を解除することはできません (下記の Streamable HTTP トランスポート を参照)。
利用可能なツールセット
ツールセットキー説明
分析analysisコード分析ツール (ローカル分析と高度なリモート分析)
課題issuesSonarQube 課題の検索と管理
セキュリティホットスポットsecurity-hotspotsセキュリティホットスポットの検索とレビュー
プロジェクトprojectsSonarQube プロジェクトの参照と検索
品質ゲートquality-gates品質ゲートとそのステータスへのアクセス
ルールrulesSonarQube ルールの参照と検索
ソースsourcesソースコードと SCM 情報へのアクセス
重複duplicationsプロジェクト間のコード重複の検出
メトリクスmeasuresメトリクスと測定値の取得 (測定値とメトリクスツールの両方を含む)
言語languagesサポートされているプログラミング言語の一覧表示
ポートフォリオportfoliosポートフォリオとエンタープライズの管理 (Cloud および Server)
システムsystemシステム管理ツール (Server のみ)
WebhookwebhooksWebhook の管理
依存関係リスクdependency-risks依存関係リスクとセキュリティ問題の分析 (SCA)
カバレッジcoverageテストカバレッジ分析と改善ツール
コンテキスト拡張cagコンテキスト拡張ツール (stdio モードのみ、組織の権限が必要)
エージェント対応準備agentic-readinessエージェント対応準備評価ツール (SonarQube Cloud、組織の権限が必要)

分析、課題、品質ゲートのツールセットを有効にする (Docker と SonarQube Cloud を使用):

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

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

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

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

SonarQube Cloud

完全な機能を有効にするには、サーバーを起動する前に次の環境変数を設定する必要があります:

環境変数説明必須
SONARQUBE_TOKENSonarQube Cloud トークンはい
SONARQUBE_ORGSonarQube Cloud 組織 キーはい
SONARQUBE_URLカスタム SonarQube Cloud URL (デフォルトは https://sonarcloud.io)。SonarQube Cloud US の場合はこれを使用: https://sonarqube.usいいえ

例:

  • SonarQube Cloud: SONARQUBE_TOKENSONARQUBE_ORG のみが必要です
  • SonarQube Cloud US: SONARQUBE_TOKENSONARQUBE_ORGSONARQUBE_URL=https://sonarqube.us を設定します

SonarQube Server

環境変数説明必須
SONARQUBE_TOKENSonarQube Server USER トークンはい
SONARQUBE_URLSonarQube 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リモートまたはマルチユーザーデプロイメント。クライアントは HTTP(S) 経由で /mcp に接続します (例: セルフホストサーバー URL を使用する Windsurf)

注意: Streamable HTTP は現在の MCP ネットワークトランスポートです。以前の MCP バージョンの古い SSE のみの HTTP トランスポートは非推奨であり、サポートされていません。

1. Stdio (デフォルト - ローカル開発に推奨)

ほとんどの MCP クライアントで使用される、ローカル開発およびシングルユーザーセットアップに推奨されるモードです。

例 - Docker と SonarQube Cloud:

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

2. HTTP (Streamable HTTP)

暗号化されていない Streamable HTTP トランスポート。マルチユーザーデプロイメントには代わりに HTTPS を使用してください。

⚠️ 非推奨: ローカル開発には Stdio を、マルチユーザー本番デプロイメントには HTTPS (Streamable HTTP) を使用してください。

環境変数説明デフォルト
SONARQUBE_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_TOOLSETSSONARQUBE_READ_ONLY ヘッダーを提供することで、表示されるツールを絞り込むこともできます。これらはサーバーレベルの設定に加えて追加のフィルタリングを適用します。スコープを縮小することのみが可能で、拡大することはできません。 リクエスト間でセッション状態は維持されません。

非推奨: SONARQUBE_TOKEN リクエストヘッダーは下位互換性のために引き続き受け付けられますが、将来のバージョンで削除される予定です。Authorization: Bearer <token> に移行してください。

3. HTTPS (Streamable HTTP over TLS) (マルチユーザー本番環境デプロイに推奨)

TLS 暗号化を使用した安全な Streamable HTTP トランスポート。SSL 証明書が必要です。

本番環境に推奨: 複数ユーザー向けに MCP サーバーを Streamable HTTP でデプロイする場合は、HTTPS を使用してください。サーバーはデフォルトでセキュリティのため 127.0.0.1 (localhost) にバインドされます。

環境変数説明デフォルト
SONARQUBE_TRANSPORTTLS 経由の Streamable HTTP トランスポートを有効にするには https に設定します未設定 (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 トランスポートで実行している場合は利用できません。

カスタム証明書

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

設定

ボリュームマウントの使用

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

docker run --init --pull=always -i --rm \
  -v /path/to/your/certificates/:/usr/local/share/ca-certificates/:ro \
  -e SONARQUBE_TOKEN="<token>" \
  -e SONARQUBE_URL="<url>" \
  sonarsource/sonarqube-mcp

サポートされている証明書形式

コンテナは次の証明書形式をサポートしています。

  • .crt ファイル (PEM または DER エンコード)
  • .pem ファイル (PEM エンコード)

証明書を使用した MCP 設定

カスタム証明書を使用する場合、証明書をマウントするように MCP 設定を変更できます。

{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run",
      "--init",
      "--pull=always",
      "-i",
      "--rm",
      "-v",
      "/path/to/your/certificates/:/usr/local/share/ca-certificates/:ro",
      "-e",
      "SONARQUBE_TOKEN",
      "-e",
      "SONARQUBE_URL",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_URL": "<url>"
    }
  }
}

プロキシ

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

ツール

分析

  • analyze_code_snippet - SonarQube アナライザーでファイルの内容を分析し、コード品質とセキュリティの問題を特定します。正確性を期すため、常に完全なファイル内容を分析します。オプションで、結果を特定のコードスニペットにフィルタリングします。

    使用方法:

    • ワークスペースがマウントされている場合 (推奨): filePath (プロジェクト相対パス) を渡します。サーバーがファイルを直接読み取るため、ファイルの内容がエージェントのコンテキストウィンドウに含まれません。
    • ワークスペースがマウントされていない場合: 完全なファイル分析のために完全な fileContent を渡します (すべての問題を報告します)。
    • オプションの codeSnippet を追加して結果をフィルタリングします。スニペット内の問題のみが報告されます (スニペットの場所は自動検出されます)。

    パラメータ:

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

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

SonarQube for IDE との統合が有効な場合:

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

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

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

SonarQube Cloud 組織で高度な分析が有効な場合:

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

  • run_advanced_code_analysis - SonarQube Cloud で単一ファイルの高度なコード分析を実行します。組織は MCP 設定から推測されます。
    • projectKey - プロジェクトのキー - 必須文字列 (SONARQUBE_PROJECT_KEY が定義されている場合は無視されます)
    • branchName - 最新の分析コンテキストを取得するために使用されるブランチ名 - 必須文字列
    • filePath - 分析するファイルのプロジェクト相対パス (例: src/main/java/MyClass.java) - 必須文字列
    • fileScope - ファイルの発生元のスコープを定義します: 'MAIN' または 'TEST' (デフォルト: MAIN) - 文字列

カバレッジ

  • search_files_by_coverage - プロジェクト内のファイルをカバレッジの低い順(昇順 - 最もカバレッジが低いファイルが最初)に検索します。このツールは、テストカバレッジの改善が必要なファイルを特定するのに役立ちます。

    • projectKey - 検索対象のプロジェクトキー - 必須文字列 (SONARQUBE_PROJECT_KEY が定義されている場合は無視されます)
    • branch - オプションの長期ブランチ名(例: main, develop)。有効な名前を見つけるには 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 - オプションの長期ブランチ名(例: main, develop)。有効な名前を見つけるには 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 - オプションの長期ブランチ名(例: main, develop)。有効な名前を見つけるには 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 課題を検索します。

    • projects - オプションの Sonar プロジェクトのリスト - 文字列配列
    • branch - オプションの長期ブランチ名(例: main, develop)。有効な名前を見つけるには list_branches を使用してください - 文字列
    • pullRequest - オプションのプルリクエストキー/ID。有効なキーを見つけるには list_pull_requests を使用してください - 文字列
    • severities - フィルタリングするオプションの重要度のリスト。可能な値: INFO, LOW, MEDIUM, HIGH, BLOCKER - 文字列配列
    • impactSoftwareQualities - フィルタリングするオプションのソフトウェア品質のリスト。可能な値: MAINTAINABILITY, RELIABILITY, SECURITY - 文字列配列
    • issueStatuses - フィルタリングするオプションの課題ステータスのリスト。可能な値: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - 文字列配列
    • issueKey - 特定の課題を取得するためのオプションの課題キー - 文字列
    • p - オプションのページ番号(デフォルト: 1) - 整数
    • ps - オプションのページサイズ。0より大きく500以下である必要があります(デフォルト: 100) - 整数

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

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

    • projectKey - プロジェクトまたはアプリケーションキー - 必須文字列 (SONARQUBE_PROJECT_KEY が定義されている場合は無視されます)
    • hotspotKeys - 取得する特定のセキュリティホットスポットキーのカンマ区切りリスト - 文字列配列
    • branch - オプションの長期ブランチ名(例: main, develop)。有効な名前を見つけるには list_branches を使用してください - 文字列
    • pullRequest - オプションのプルリクエストキー/ID。有効なキーを見つけるには list_pull_requests を使用してください - 文字列
    • files - フィルタリングするオプションのファイルパスのリスト - 文字列配列
    • status - オプションのステータスフィルター: TO_REVIEW, REVIEWED - 文字列
    • resolution - オプションの解決フィルター: FIXED, SAFE, ACKNOWLEDGED - 文字列
    • sinceLeakPeriod - リーク期間以降に作成されたホットスポットをフィルタリングします(新規コード) - ブール値
    • onlyMine - 自分に割り当てられたホットスポットのみを表示します - ブール値
    • p - オプションのページ番号(デフォルト: 1) - 整数
    • ps - オプションのページサイズ。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 - オプションの長期ブランチ名(例: main, develop)。有効な名前を見つけるには list_branches を使用してください - 文字列
    • metricKeys - 取得するオプションのメトリックキー(例: ncloc, complexity, violations, coverage) - 文字列配列
    • pullRequest - オプションのプルリクエストキー/ID。有効なキーを見つけるには list_pull_requests を使用してください - 文字列

メトリクス

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

ポートフォリオ

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

    SonarQube Server の場合:

    • q - 名前またはキーでポートフォリオをフィルタリングするためのオプションの検索クエリ - 文字列
    • favorite - true の場合、お気に入りのポートフォリオのみを返します - ブール値
    • pageIndex - オプションの1ベースのページ番号(デフォルト: 1) - 整数
    • pageSize - オプションのページサイズ、最大500(デフォルト: 100) - 整数

    SonarQube Cloud の場合:

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

プロジェクト

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

    • page - オプションのページ番号 - 文字列
  • list_branches - プロジェクトの長期ブランチ(例: main, develop, master)を一覧表示します。SonarQube Cloud では LONG ブランチのみ、SonarQube Server では BRANCH エントリを返します — 他のツールの branch パラメータで安全に使用できる名前です。プルリクエストの場合は、代わりに list_pull_requests を使用してください。

    • projectKey - プロジェクトキー(例: my_project) - 必須文字列 (SONARQUBE_PROJECT_KEY が定義されている場合は無視されます)
  • list_pull_requests - プロジェクトのすべてのプルリクエストを一覧表示します。カバレッジ、課題、または品質を分析する前に、利用可能なプルリクエストを見つけるためにこのツールを使用します。他のツール(例: search_files_by_coverage、get_file_coverage_details)で使用できるプルリクエストキー/ID を返します。長期ブランチの場合は、代わりに list_branches を使用してください。

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

品質ゲート

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

    • analysisId - オプションの分析 ID - 文字列
    • branch - オプションの長期ブランチ名(例: main, develop)。有効な名前を見つけるには list_branches を使用してください - 文字列
    • projectId - オプションのプロジェクト ID - 文字列
    • projectKey - オプションのプロジェクトキー - 文字列
    • pullRequest - オプションのプルリクエストキー/ID。有効なキーを見つけるには list_pull_requests を使用してください - 文字列
  • list_quality_gates - 自分の SonarQube 内のすべての品質ゲートを一覧表示します。

ルール

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

重複

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

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

    • key - ファイルキー - 必須文字列
    • branch - オプションの長期ブランチ名(例: main, develop)。有効な名前を見つけるには list_branches を使用してください - 文字列
    • pullRequest - オプションのプルリクエストキー/ID。有効なキーを見つけるには list_pull_requests を使用してください - 文字列

ソース

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

    • key - ファイルキー - 必須文字列
    • branch - オプションの長期間ブランチ名 (例: main, develop)。有効な名前を見つけるには list_branches を使用します - 文字列
    • pullRequest - オプションのプルリクエストキー/ID。有効なキーを見つけるには list_pull_requests を使用します - 文字列
  • get_scm_info - SonarQube ソースファイルの SCM 情報を取得します。ファイルのプロジェクトに対する See Source Code 権限が必要です。

    • key - ファイルキー - 必須文字列
    • commits_by_line - 値が false の場合は行を SCM コミットでグループ化し、true の場合は各行のコミットを表示します - 文字列
    • from - 返す最初の行。1 から開始 - 数値
    • to - 返す最後の行 (含む) - 数値

システム

注意: システムツールは 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 - 文字列
  • ping_system - SonarQube Server システムに ping を送信し、稼働しているか確認します。プレーンテキストとして 'pong' を返します。

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

Webhook

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

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

    • projectKey - プロジェクト固有の Webhook を一覧表示するためのオプションのプロジェクトキー - 文字列

コンテキスト拡張

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

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

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

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

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

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

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

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

    • depth - 階層の深さ (0=ルートのみ、1=ルート + 子など) - 必須整数
    • path_prefix - ノードをフィルタリングするオプションのパスプレフィックス (例: com.example.service) - 文字列
    • ecosystem - フィルタリングするオプションのエコシステム (java, cs, py, js, ts) - 文字列
  • get_intended_architecture - どのモジュールが他のモジュールに依存できるかを指定する、ユーザー定義のアーキテクチャ制約を取得します。

ガイドラインツール
  • get_guidelines - SonarQube プロジェクトの問題、カタログカテゴリ、またはその両方の組み合わせに基づいてコーディングガイドラインを取得します。
    • mode - ガイドライン取得モード: project_based, category_based, または combined - 必須文字列
    • categories - カテゴリ名のリスト (category_based および combined モードで必須) - 文字列配列
    • languages - SonarQube リポジトリキー形式の対象言語のリスト (categories が提供されている場合は必須) - 文字列配列
    • file_paths - ガイドラインをフィルタリングするオプションのファイルパスのリスト - 文字列配列
サードパーティ依存関係ツール
  • check_dependency - サードパーティの依存関係を追加または更新する前に、セキュリティ脆弱性、サプライチェーンマルウェア、ライセンスコンプライアンスをチェックします。
コンテキスト拡張環境変数
変数説明必須デフォルト
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ログの詳細度 (TRACE, DEBUG, INFO, WARNING, ERROR)いいえINFO
  • git を使用していない場合、または git ブランチ名が SonarQube のブランチ名と一致しない場合に提供します。
プロジェクト固有の設定 (推奨)

まず、プロジェクトの有効な個人用アクセストークン (PAT) を使用して、SONARQUBE_TOKEN 環境変数 をエクスポートします。

# macOS/Linux (Bash/Zsh)
export SONARQUBE_TOKEN="{<YourUserToken>}"

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

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

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

Agentic Readiness

注意: Agentic Readiness ツールは SonarQube Cloud でのみ利用可能であり、組織で機能が有効になっている必要があります。

  • start_agentic_readiness_assessment - プロジェクトの Agentic Readiness 評価を開始します。ステータス 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 - ページあたりのアイテム数、最大 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の使用は、非競争目的であり、SSALの下で許可されています。

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