
Claude CodeをAI司令塔にして、Kiro CLIを自動で使い分ける環境を作った
「Claude Codeに全部やらせるのは便利だけど、トークンの消費が気になる」
そう思って調べていたら、MCP Server経由で外部AIツールをClaude Codeから呼び出せることを知った。
せっかくなら、IaC生成やコードレビューはAWSのKiro CLIに任せて、Claude Codeは判断・設計・統合だけに集中させたい。そんな構成を実際に作ってみた。
作った構成
Claude Code(司令塔)
↓
MCP Server(ai-orchestrator)
↓
Kiro CLI(重い生成タスクを担当)
Claude Codeが「このタスクはKiroに任せる」と判断したら、MCP Server経由でKiro CLIを呼び出して結果を受け取る。Claude自身は判断・整形・回答に専念する。
必要なもの
- Claude Code(インストール済み前提)
- WSL2(Ubuntu 22.04)
- Kiro CLI
- GitHub CLI(
gh) - Node.js 20以上(WSL内)
Kiro CLIのインストール
KiroはAmazonが開発したAIエージェントIDE。CLIも提供されており、ターミナルから自由にプロンプトを送れる。
# WSL内で実行
sudo apt-get install -y unzip
curl -fsSL https://cli.kiro.dev/install | bash
インストール後、ログインする。
kiro-cli
起動するとサインイン画面が出る。AWS Builder ID(無料)またはGoogle/GitHubアカウントで認証できる。会社のAWS組織アカウント(IAM Identity Center)でもログイン可能。
GitHub CLIのインストール
# 最新版を入れるためにリポジトリを追加
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
sudo apt update && sudo apt install gh -y
# ログイン
gh auth login
躓いたこと:Copilot CLIは使えなかった
最初の設計ではGitHub Copilot CLIをMCPから呼び出す予定だった。ところが2つの問題にぶつかった。
① @github/copilot-cli がnpmから削除済み
設計ドキュメントに書いていた npm install -g @github/copilot-cli を試したところ、404エラーで存在しなかった。すでに廃止されていた。
② gh copilot はシェルコマンド専用
後継の gh copilot をインストールして試したが、このコマンドはシェルコマンドの提案・説明に特化した設計になっており、コードレビューや自由なプロンプト送信には対応していない。
# できること
gh copilot suggest "gitでファイルを元に戻したい"
gh copilot explain "git rebase -i HEAD~3"
# できないこと
gh copilot explain "このdiffをレビューして..." # → Invalid command format エラー
「GitHubのCopilotだからコードレビューもできるはず」と思っていたが、CLIとしての用途は限定的だった。Copilotを自由なプロンプトで使うにはGitHub Copilot API(別途申請が必要)が必要になる。
結果として、自由なプロンプト送信に対応しているKiro CLIに切り替えた。
MCP Serverの作成
Claude CodeはMCP(Model Context Protocol)を通じて外部ツールを呼び出せる。ここではKiro CLIをラップするMCPサーバーをTypeScriptで作る。
ディレクトリ構成
ai-orchestrator/
├── src/
│ ├── tools/
│ │ ├── kiro_review_diff.ts
│ │ ├── kiro_generate_tests.ts
│ │ └── kiro_generate_iac.ts
│ ├── runners/
│ │ └── kiro.ts
│ ├── prompts/
│ │ └── templates.ts
│ └── index.ts
├── package.json
└── tsconfig.json
実装のポイント
Kiro CLIは --no-interactive オプションで非対話モードで動く。
// runners/kiro.ts
export async function runKiroChat(prompt: string): Promise<string> {
const { stdout, stderr } = await execFileAsync(
"/home/your-user/.local/bin/kiro-cli",
["chat", "--no-interactive", "--trust-all-tools", prompt],
{ timeout: 60000 }
);
return stdout || stderr;
}
作成する3つのMCPツール
| ツール名 | 役割 |
|---|---|
kiro_review_diff |
git diffをレビュー |
kiro_generate_tests |
ユニットテストを生成 |
kiro_generate_iac |
CloudFormation/Terraformを生成 |
ビルド
cd ai-orchestrator
npm install
npm run build
Claude CodeへのMCP登録
# userスコープで登録(全プロジェクトで使える)
claude mcp add --scope user ai-orchestrator -- wsl node "/path/to/ai-orchestrator/dist/index.js"
接続確認:
claude mcp list
# ai-orchestrator: wsl node ... - ✓ Connected
自動使い分けの設定
~/.claude/CLAUDE.md に以下を書いておくと、Claude Codeが自動でMCPツールを選択するようになる。
## MCP ツールの使い分けルール
| タスク | 使うツール |
|---|---|
| git diff のレビュー | `kiro_review_diff` |
| ユニットテストの生成 | `kiro_generate_tests` |
| AWS IaC の生成 | `kiro_generate_iac` |
これ以降は「S3のCloudFormationを書いて」と言うだけで、Claudeが自動で kiro_generate_iac を呼び出してくれる。
やってみてわかったこと
Kiroに向いているタスク(委譲すると効果的)
- テスト生成(パターンが定型的)
- IaC生成(フォーマットが決まっている)
- diffレビュー(明確な基準がある)
Claudeが直接やった方がいいタスク
- コードの説明・要約(文脈の理解が必要)
- リファクタリング提案(会話履歴を踏まえた判断が必要)
- 設計・アーキテクチャの相談(推論能力が活きる)
定型的な生成はKiro、判断が必要なものはClaude——この棲み分けが今のところベストだと感じている。
まとめ
- Kiro CLIはWSL2で動く。
--no-interactiveで非対話モード対応 - MCP Serverを作ればClaude CodeからKiroを自動呼び出しできる
~/.claude/CLAUDE.mdにルールを書けば全プロジェクトで自動適用されるgh copilotCLIはシェルコマンド専用でコードレビューには使えない(注意)
Claude CodeとKiroを組み合わせることで、トークン消費を抑えながら生成品質を維持できる環境が作れた。AWSを使う機会が多い人には特に kiro_generate_iac が便利だと思う。
今回作ったMCP ServerのコードはGitHubに公開している。