Amazon Bedrock AgentCore Memoryを使用したKiro CLIの会話メモリの拡張
この記事では、Amazon Bedrock AgentCore Memoryと統合するカスタムModel Context Protocol(MCP)サーバーを実装することで、Kiro CLIの会話メモリを拡張する方法を説明します。Kiro CLIは、ターミナルから直接KiroのAIエージェントと対話できるツールです。Amazon Bedrock AgentCore Memoryはフルマネージドサービスで、AIエージェントが過去の対話から情報を保持し、よりインテリジェントでコンテキストを理解した会話を実現します。カスタムMCPサーバーを実装することで、Kiro CLIは会話コンテキストの保存と取得、メモリ使用量の監視、基盤となるBedrock Agent Core Memoryインフラストラクチャの管理を行うツールを利用できるようになります。
AI支援プログラミングにおいて、過去のセッションで伝えた内容を忘れてしまうIDEでは、生産性が大きく損なわれます。開発者は数日から数週間にわたって大規模なコードベースと複雑なビジネス要件に取り組みますが、IDEは現在のセッションしか記憶できず、会話履歴、そこから得られた好み、追加の洞察を思い出せません。その結果、新しいセッションのたびに同じコンテキスト情報を提供する必要が生じ、生産性に悪影響を及ぼします。
この記事では、Amazon Bedrock AgentCore Memoryと統合するカスタムModel Context Protocol(MCP)サーバーを実装することで、Kiro CLIの会話メモリを拡張する方法を説明します。Kiro CLIは、ターミナルから直接KiroのAIエージェントと対話できるツールです。Amazon Bedrock AgentCore Memoryはフルマネージドサービスで、AIエージェントが過去の対話から情報を保持し、よりインテリジェントでコンテキストを理解した会話を実現します。カスタムMCPサーバーを実装することで、Kiro CLIは会話コンテキストの保存と取得、メモリ使用量の監視、基盤となるBedrock Agent Core Memoryインフラストラクチャの管理を行うツールを利用できるようになります。
ソリューションの概要
このソリューションは、次の3つの主要コンポーネントで構成されています。
- Amazon Bedrock AgentCore Memory:フルマネージドサービスで、会話コンテキストの保存と取得を担当し、組み込みのセマンティック検索により永続的なメモリ機能を提供します。短期の作業メモリと長期のインテリジェントメモリの両方を維持できるため、AIエージェントはコンテキストを保持し、対話から学習し、真にパーソナライズされたエクスペリエンスを提供できます。
- カスタムMCPサーバー:MCPを介してAmazon Bedrock AgentCore Memoryの機能を公開し、MCP互換クライアントがメモリ操作を利用できるようにします。
- Kiro CLI:STDIOプロトコルを介してMCPサーバーに接続し、セッションをまたいで会話履歴を保存および取得します。
MCPサーバーはKiro CLIとAmazon Bedrock AgentCore Memoryの間のブリッジとして機能し、Kiro CLIがセッション間で会話履歴とコンテキストを維持できるようにします。MCPサーバーが提供するツールは3つのカテゴリに分類されます。
- 会話ツール:トピックや時間範囲で会話履歴を検索、一貫したセッションIDで会話を保存、完全な会話内容を取得、以前に保存したセッションを一覧表示します。
- 監視ツール:メモリ使用量の統計とMCPサーバー設定を表示します。
- 管理ツール:特定のセッションの削除や、必要に応じて保存データの消去を行います。
このソリューションは2段階の検索戦略を採用しています。最初にBedrock AgentCore Memoryのretrieve_memory_records APIを使用してセマンティック検索を試み、概念的なマッチングを行います。それが失敗した場合は、AgentCore Memoryセッションに保存された生の会話データを直接スキャンするイベントレベルのコンテンツマッチングにフォールバックします。このカスケードアプローチにより、セマンティック戦略の処理が完了しているかどうかに関係なく、会話を確実に取得できます。ユーザーは「最近」「昨夜」「昨日」などの自然言語の時間範囲をプロンプトで使用して、関連する会話を見つけることができます。
このアーキテクチャにより、Kiro CLIはコンテキストを認識できるようになります。ユーザーの好み、プロジェクトの詳細、ワークフローをセッション間で記憶するため、同じ情報を繰り返し提供する必要がなくなります。
ウォークスルー
このデモには、以下の前提条件が必要です。
- AWS Management ConsoleおよびAWS CLIを介したAWSアカウントへのアクセス。
- 使用するIAMユーザーには、この記事で言及されている必要なAWSサービスの呼び出しとリソース管理の権限が必要です。IAMユーザーに権限を付与する際は、最小権限の原則に従ってください。
- AWS Builder ID。
- デスクトップ/ラップトップにKiro CLIがインストールおよび設定されていること。
ターミナルから以下の手順を実行します。
- リポジトリをクローン:
git clone https://github.com/aws-samples/sample-amazon-bedrock-agentcore-memory-mcp-server.git
- Python仮想環境を作成し、依存関係をインストール:
cd sample-amazon-bedrock-agentcore-memory-mcp-server
python3 -m venv venv
source venv/bin/activate
pip3 install -r requirements.txt- Amazon Bedrock AgentCore Memoryリソースを作成し、Kiroエージェント設定を生成:
python3 setup_bedrock_agentcore_memory.py。プロンプトが表示されたら、アクター識別子としてユーザーIDまたはプロジェクトIDを選択します。
- Kiroエージェント設定:生成されたファイルを
~/.kiro/agents/および~/.kiro/hooks/にコピーし、実行権限を設定します。
kiro_memoryエージェントをデフォルトに設定:~/.kiro/settings/cli.jsonに{"chat.defaultAgent": "kiro_memory"}を追加します。
- Kiro CLIにログイン:
kiro-cli login --use-device-flowを実行し、Builder IDを選択してログインフローを完了します。
- Kiro CLIで
/mcpと入力して設定されたMCPサーバーを確認し、/toolsと入力して利用可能なツールを一覧表示します。利用可能なツールには、clear_all_data、delete_session、get_direct_conversation_history、get_memory_stats、get_server_config、get_session_details、list_sessions、search_conversation_history、search_memories、store_conversationが含まれます。
ソリューションのテスト
Kiro CLIは、プロンプトに応答またはアクションを実行するために必要な機能に基づいてMCPサーバーを呼び出します。Kiro CLIフックがトリガーされ、各会話の後に会話を保存します。使用例:
- 「What is AWS DevOps agent? Is it GA yet?」と質問し、セッションを終了します。
- 再ログインして「What have we discussed about AWS DevOps agent?」と質問します。Kiroはagentcore-memory-mcp-serverを使用してBedrock AgentCoreメモリから関連情報を取得します。
- 「Can I integrate GitHub with AWS DevOps agent?」や「What is the pricing for AWS DevOps agent?」などのフォローアップ質問が可能です。
クリーンアップ
デモ目的でのみ実行した場合、今後の請求を回避するために、python3 cleanup_bedrock_agentcore_memory.pyを実行して作成したリソースを削除し、Kiroディレクトリからエージェント設定とフックを削除します。
まとめ
この記事では、Amazon Bedrock AgentCore Memoryと統合するカスタムMCPサーバーを使用して、Kiro CLIのコンテキスト永続性を強化する方法を説明しました。カスタムMCPサーバーは、会話コンテキストの保存と取得、メモリ使用量の監視、永続メモリインフラストラクチャの管理を行う包括的なツールを提供します。スマート検索、自然言語の時間範囲、カスケードフォールバック戦略などの機能により、同じコンテキスト情報を繰り返し提供することなく、会話履歴に確実にアクセスできます。