10日で覚えるKiro CLIDay 8: MCP連携とナレッジ管理
books.chapter 810日で覚えるKiro CLI

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}"
  }
}

推奨される管理方法:

  1. シェルの環境変数: .bashrc.zshrc に設定
  2. .env ファイル: プロジェクトルートに配置(必ず .gitignore に追加
  3. シークレット管理ツール: 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 とサブエージェントによる自動化と並列処理を学びます。