VOOZH about

URL: https://glama.ai/mcp/servers/mshegolev/sonarqube-mcp?locale=ja-JP

⇱ sonarqube-mcp by mshegolev | Glama


sonarqube-mcp

👁 PyPI
👁 Python
👁 License: MIT

SonarQube 用のMCPサーバーです。LLMエージェント(Claude Code、Cursor、OpenCodeなど)がプロジェクトの発見、主要メトリクスの取得、品質ゲートステータスの確認、重大度やタイプによるフィルターを用いた課題の検索、および特定のメトリクスが「最も悪い」プロジェクトのランキング作成を行えるようにします。

Python、FastMCP、stdioトランスポートを使用しています。

SonarQube 9.x / 10.xインスタンス(セルフホスト)およびSonarCloudで動作します。

なぜ別のSonarQube MCPが必要なのか?

既存のSonarQube MCPはいくつか存在しますが、単一プロジェクトの読み取りにとどまる傾向があります。本サーバーはプロジェクト横断的なランキング機能sonarqube_worst_metrics)を追加しました。これは、リードエンジニアがトリアージセッションで実際に行う「組織内でカバレッジが最も低いサービス上位10件を表示して」といった操作を可能にします。すべてのツールは読み取り専用であり、安全にパラメータ化されています(Pydanticによる入力検証、重大度/タイプのホワイトリスト)。

Related MCP server: sonarqube-api-mcp

設計のハイライト

  • ツールアノテーション — 5つのツールすべてに readOnlyHint: TruedestructiveHint: FalseidempotentHint: True が設定されています。このサーバーからSonarQubeを変更することはできません。

  • 構造化された出力 — すべてのツールは型付きペイロード(TypedDict)とMarkdown形式の要約を返すため、構造化コンテンツのサポートの有無にかかわらず、クライアントは有用なレスポンスを得られます。

  • 構造化されたエラー — 401 / 403 / 404 / 400 / 429 / 5xx エラーは、実行可能なヒント(例:「トークンを再生成してください」、「sonarqube_list_projectsでプロジェクトキーを確認してください」など)にマッピングされます。

  • Pydanticによる入力検証 — すべての引数に対して検証が行われます。重大度やタイプのフィルターは、リクエスト送信前に有効なSonarQubeの列挙型と照合されます。

  • プロジェクト横断的なワーストメトリクスランキング — 内部で /api/measures/search 呼び出しをバッチ処理し、選択したメトリクスに応じて昇順または降順でソートします。

機能(5つのツール)

発見

  • sonarqube_list_projects — テキストフィルター(オプション)付きのページネーション可能なプロジェクト検索

単一プロジェクトの洞察

  • sonarqube_project_metrics — 1つのプロジェクトのメトリクス(デフォルトセットにはバグ / カバレッジ / コードの不吉な臭い / レーティング / 行数 / テスト / アラートステータスが含まれます)

  • sonarqube_quality_gate_status — 品質ゲートのステータスと条件ごとの失敗内容

課題のトリアージ

  • sonarqube_get_issues — 重大度 / タイプ / 解決ステータスでフィルタリングされた課題検索

プロジェクト横断的なランキング

  • sonarqube_worst_metrics — メトリクスの値が最も悪い順にソートされた上位N件のプロジェクト(例:カバレッジが最も低い、バグが最も多いなど)

インストール

Python 3.10以上が必要です。

# via uvx (recommended — no install, just run)
uvx --from sonarqube-mcp sonarqube-mcp

# or via pipx
pipx install sonarqube-mcp

設定

claude mcp add sonarqube -s project \
 --env SONARQUBE_URL=https://sonar.example.com \
 --env SONARQUBE_TOKEN=squ_your_token \
 --env SONARQUBE_SSL_VERIFY=true \
 -- uvx --from sonarqube-mcp sonarqube-mcp

または .mcp.json に記述します:

{
 "mcpServers": {
 "sonarqube": {
 "type": "stdio",
 "command": "uvx",
 "args": ["--from", "sonarqube-mcp", "sonarqube-mcp"],
 "env": {
 "SONARQUBE_URL": "https://sonar.example.com",
 "SONARQUBE_TOKEN": "${SONARQUBE_TOKEN}",
 "SONARQUBE_SSL_VERIFY": "true"
 }
 }
 }
}

確認:

claude mcp list
# sonarqube: uvx --from sonarqube-mcp sonarqube-mcp - ✓ Connected

環境変数

変数

必須

説明

SONARQUBE_URL

はい

SonarQubeのURL(末尾のスラッシュは不要)

SONARQUBE_TOKEN

はい

ベアラートークン。生成場所:マイアカウント → セキュリティ → トークン

SONARQUBE_SSL_VERIFY

いいえ

true/false。デフォルト:true

HTTPプロキシに関する注意:クライアントは意図的に環境変数ベースのプロキシ検出(trust_env=False)を無効にしています。これは、セルフホストのSonarQubeは通常、内部ネットワークからのみ到達可能であるためです。SonarCloudや企業プロキシの背後にあるSonarQubeに接続する場合は、現時点ではプロセスレベルでプロキシ変数を解除する必要があります。SONARQUBE_TRUST_ENV_PROXY オプションは次回のリリースで対応予定です。

使用例

  • 「'einvy'に一致するすべてのSonarQubeプロジェクトをリストアップして」

  • einvy:aut_einvy の品質ゲートステータスはどうなっていますか?」

  • 「バグが最も多いプロジェクト上位10件を表示して」

  • einvy:aut_einvy 内のすべての BLOCKER / CRITICAL な脆弱性を探して」

  • einvy:qa_assistant のカバレッジは?」

  • 「クエリ 'einvy' に一致するカバレッジが最も低いプロジェクト上位5件」

メトリクスの方向性(sonarqube_worst_metrics で使用)

高いほど悪い(降順でソート — 数値が大きいほど悪い): bugs, code_smells, vulnerabilities, duplicated_lines_density, reliability_rating, security_rating, security_review_rating, sqale_rating, open_issues

低いほど悪い(昇順でソート — 数値が小さいほど悪い): coverage, line_coverage, branch_coverage, test_success_density, tests

SonarQubeのレーティングは、"1"(A、最高)から "5"(E、最低)までの数値文字列です。

安全性

  • すべてのツールは readOnlyHint: True であり、SonarQubeを変更することはできません。

  • POST / PUT / DELETE は一切呼び出されません。

  • 重大度 / タイプ / 修飾子の入力は、API呼び出し前にSonarQubeの列挙型と照合されるため、誤字脱字があった場合はAPIを叩く前に即座に失敗します。

パフォーマンス特性

  • すべてのツールはSonarQubeに対して 1回のHTTP呼び出し を行います。ただし sonarqube_worst_metrics は例外で、1回の検索呼び出し + ⌈候補数/100⌉ 回のバルクメトリクス呼び出し を行います。デフォルト設定では2回以下の呼び出しで完了します。

  • 正常なSonarQubeインスタンスにおける単一ツールの応答時間は、通常500ms未満です。

  • ページネーションはSonarQubeにそのまま渡されます(p および ps パラメータ)。MCPサーバー側で全結果をバッファリングすることはありません。

  • sonarqube_worst_metricscandidate_pool を500に制限しています。数千のプロジェクトがあるインスタンスでは、ランキング前に query= でフィルタリングしてください(ツールのドキュメント文字列を参照)。

  • SonarQubeには公開された厳格なレート制限はありません。429エラーを受け取った場合、サーバーは実行可能なエラーを表示します(「30〜60秒待ってから再試行してください。page_sizeを減らしてください」)。

開発

git clone https://github.com/mshegolev/sonarqube-mcp.git
cd sonarqube-mcp
pip install -e '.[dev]'
pytest

ライセンス

MIT © Mikhail Shchegolev

A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mshegolev/sonarqube-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server