AIによってコードを書く速度は上がりましたが、解析結果の確認や手作業での修正が新たな負担になります。Qiitaの記事をもとに、SonarQubeとMCPをつなぎ、AI AgentがIssueの取得から修正まで行う流れを紹介します。
SonarQube MCP Serverとは
これまではSonarQubeの画面からIssueをコピーし、AIチャットに貼り付けて修正を依頼する必要がありました。MCPを使うと、AIクライアントがSonarQube APIからIssueを取得し、ローカルのソースコードを読み、修正案をファイルに反映できます。
構成と処理フロー
GeminiをAgentとして、ローカルのソースコード、SonarQube MCP Server、SonarQube Serverを連携させます。処理は次の4段階です。

- AI Agentがプロンプトに基づいてコードを生成する
- SonarScannerで静的解析し、結果をSonarQube Serverに送信する
- MCP Server経由で解析結果のIssueを取得する
- AI Agentがコードの文脈を読み、Issueを修正する
必要なものはDocker、SonarScanner CLI、Gemini CLI(またはMCP対応クライアント)です。
SonarQube ServerとMCPクライアントの準備
| |
http://localhost:9000 にアクセスし、プロジェクト mcp-demo とUser Tokenを作成します。Gemini CLIを使う場合は ~/.gemini/settings.json にMCP Serverを登録します。
| |
トークンとURLは自分の環境に合わせて設定します。MCPクライアントから get_system_health を呼び出し、接続を確認します。MCP Server自体はローカルで動くDockerコンテナーです。
解析と修正のサイクル
まずAIにJavaScriptの数独ゲームを作らせ、index.html、style.css、script.js を生成します。次にSonarScannerで解析します。
| |
解析後、AIに「SonarQubeのmcp-demoのIssueを確認してください」と依頼します。MCPの search_sonar_issues_in_projects で11件のIssueを取得し、認知的複雑度、関数の配置、コントラスト、配列生成、数値変換などの指摘を確認しました。
続いてIssueに基づく修正を依頼すると、AI Agentは複雑な関数をリファクタリングし、コントラストや推奨APIの利用を修正しました。再スキャンを行い、オープンIssueがなくなったことを確認します。
まとめ
この構成では「コード生成 → 解析 → Issue取得 → 修正」をAI Agentが繰り返します。MCP ServerはAIとSonarQube間の連携を担い、解析結果を手作業でコピーする工程を省けます。修正後には再解析し、結果を確認してください。