MCP(Model Context Protocol)とは
MCP は、AIエージェントが外部のツールやデータソースと通信するためのプロトコルです。Kiro CLI に MCP サーバーを追加することで、GitHub、データベース、ドキュメント、クラウドサービスなどと直接やりとりできるようになります。
MCP でできること
| ユースケース | 例 |
|---|---|
| ドキュメント参照 | AWS ドキュメントを検索しながら実装 |
| リポジトリ操作 | GitHub Issues の確認、PR の作成 |
| データベース操作 | スキーマ確認、クエリ実行 |
| ファイルシステム | 許可されたディレクトリ内のファイル操作 |
| Web コンテンツ | Web ページの取得と分析 |
MCP サーバーの設定
CLI コマンドで追加
kiro-cli mcp add \
--name aws-docs \
--scope user \
--command uvx \
--args "awslabs.aws-documentation-mcp-server" \
--env "LOG_LEVEL=info" \
--env "PARTITION=aws"
| オプション | 説明 |
|---|---|
--name |
サーバー名 |
--scope |
user(グローバル)または workspace(プロジェクト) |
--command |
実行コマンド |
--args |
コマンドの引数 |
--env |
環境変数(複数指定可) |
設定ファイルで追加
設定ファイルは2つの場所に配置できます。
ワークスペースレベル: .kiro/settings/mcp.json
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "./src", "./docs"]
}
}
}
ユーザーレベル: ~/.kiro/settings/mcp.json
ユーザーレベルの設定はすべてのプロジェクトで利用可能です。
HTTP MCP サーバー
リモートの MCP サーバーに HTTP/SSE で接続することもできます。
{
"mcpServers": {
"remote-api": {
"type": "http",
"url": "https://api.example.com/mcp"
},
"github-remote": {
"type": "http",
"url": "https://api.github.com/mcp",
"oauth": {
"redirectUri": "http://localhost:38951",
"oauthScopes": ["repo", "user"]
}
}
}
}
OAuth 認証を使ったリモートサーバーへの接続にも対応しています。
MCP サーバーの管理
# サーバー一覧
kiro-cli mcp list
kiro-cli mcp list user # ユーザーレベルのみ
kiro-cli mcp list workspace # ワークスペースレベルのみ
# サーバーの状態確認
kiro-cli mcp status --name github
# サーバーの削除
kiro-cli mcp remove --name github
# 設定のインポート
kiro-cli mcp import --file other-config.json
チャットセッション内では /mcp コマンドで稼働中のサーバーを確認できます。
> /mcp
環境変数の管理
MCP サーバーの設定では ${VARIABLE_NAME} 形式で環境変数を参照できます。
{
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}",
"DATABASE_URL": "${DATABASE_URL}"
}
}
推奨される管理方法:
- シェルの環境変数:
.bashrcや.zshrcに設定 - .env ファイル: プロジェクトルートに配置(必ず
.gitignoreに追加) - シークレット管理ツール: AWS Secrets Manager、HashiCorp Vault 等
flowchart LR
subgraph CLI["Kiro CLI"]
Agent["AIエージェント"]
end
subgraph MCP["MCP プロトコル"]
Protocol["JSON-RPC"]
end
subgraph Servers["MCP サーバー"]
GH["GitHub Server"]
DB["Database Server"]
FS["Filesystem Server"]
Web["Web Fetch Server"]
end
subgraph External["外部サービス"]
GitHub["GitHub API"]
PG["PostgreSQL"]
Files["ファイルシステム"]
WWW["Web"]
end
Agent <--> Protocol
Protocol <--> GH
Protocol <--> DB
Protocol <--> FS
Protocol <--> Web
GH <--> GitHub
DB <--> PG
FS <--> Files
Web <--> WWW
style CLI fill:#3b82f6,color:#fff
style MCP fill:#8b5cf6,color:#fff
style Servers fill:#22c55e,color:#fff
style External fill:#f59e0b,color:#fff
ナレッジ管理
ナレッジ管理は、大量のドキュメントやコードをコンテキストウィンドウを消費せずに検索可能にする実験的機能です。
ナレッジベースの追加
> /knowledge add --name project-docs --path ./docs
> /knowledge add --name api-reference --path ./api-docs --index-type best
> /knowledge add --name src-code --path ./src --include "*.ts" --exclude "*.test.ts" --index-type fast
| オプション | 説明 |
|---|---|
--name |
ナレッジベース名 |
--path |
ファイルまたはディレクトリのパス |
--include |
含めるファイルパターン |
--exclude |
除外するファイルパターン |
--index-type |
fast(BM25)または best(セマンティック) |
インデックスタイプの選択
| タイプ | 検索方式 | 速度 | 精度 | 最適な用途 |
|---|---|---|---|---|
| Fast | BM25 語彙検索 | 高速 | キーワードベース | ログ、設定、大規模コード |
| Best | セマンティック検索 | 低速 | 意味ベース | ドキュメント、リサーチ |
ナレッジベースの管理
> /knowledge show
> /knowledge update --name project-docs
> /knowledge remove --name old-docs
> /knowledge clear
> /knowledge cancel
/knowledge show では、各ナレッジベースの作成日、アイテム数、バックグラウンドインデックスの進捗状況を確認できます。
ナレッジベースの活用
ナレッジベースに登録されたドキュメントは、会話中に自動的に検索されます。
> APIの認証方式について教えてください
Kiro は登録されたドキュメントを検索し、関連する情報を見つけて回答します。コンテキストウィンドウのトークンは検索時のみ消費されるため、大量のドキュメントを登録しても日常的な会話には影響しません。
エージェント設定でのナレッジベース
エージェント設定の resources にナレッジベースを定義できます。
{
"resources": [
{
"type": "knowledgeBase",
"source": "./docs",
"name": "project-docs",
"description": "Project documentation and API references",
"indexType": "best",
"autoUpdate": true
},
{
"type": "knowledgeBase",
"source": "./src",
"name": "source-code",
"description": "Application source code",
"indexType": "fast",
"autoUpdate": true
}
]
}
autoUpdate: true にすると、ファイルが変更されたときに自動的にインデックスが更新されます。
対応ファイル形式
テキスト、マークダウン、JSON、設定ファイル(.ini, .conf, .yaml)、コードファイル(Rust, Python, JavaScript, Java 等)、Dockerfile、Makefile など、幅広い形式に対応しています。
設定のカスタマイズ
# ファイル上限数
kiro-cli settings knowledge.maxFiles 5000
# チャンクサイズ
kiro-cli settings knowledge.chunkSize 1000
# デフォルトのインデックスタイプ
kiro-cli settings knowledge.indexType best
エージェント固有の分離
ナレッジベースはエージェントごとに分離されています。~/.kiro/knowledge_bases/ 以下にエージェントごとのディレクトリが作成され、異なるエージェント間でのアクセスはできません。
実用例
ドキュメント参照しながら実装
> AWS S3のマルチパートアップロードについて、ドキュメントを参照しながら実装してください
AWS ドキュメントの MCP サーバーが接続されていれば、最新のドキュメントを自動的に参照して実装します。
GitHub Issues 連携
> オープンなバグ報告を確認して、優先度の高いものをリストアップしてください
GitHub MCP サーバーが設定されていれば、リポジトリの Issues を直接取得して分析します。
データベース構造の分析
> データベースのスキーマを確認して、users テーブルにメールアドレスのユニーク制約があるか教えてください
まとめ
| 項目 | 内容 |
|---|---|
| MCP | AIと外部ツールをつなぐプロトコル |
| 設定方法 | CLI コマンド or 設定ファイル(.kiro/settings/mcp.json) |
| サーバー管理 | kiro-cli mcp list/add/remove/status |
| HTTP サーバー | リモート接続、OAuth 対応 |
| ナレッジ管理 | /knowledge add で大量ドキュメントを検索可能に |
| インデックス | Fast(BM25)/ Best(セマンティック) |
| エージェント分離 | ナレッジベースはエージェントごとに独立 |
Day 9 では、Hooks とサブエージェントによる自動化と並列処理を学びます。