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: True、destructiveHint: False、idempotentHint: 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(末尾のスラッシュは不要) |
| はい | ベアラートークン。生成場所:マイアカウント → セキュリティ → トークン |
| いいえ |
|
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_metricsはcandidate_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
Maintenance
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
