Code Velocity
エンタープライズAI

Amazon Bedrock: AgentCore RuntimeにおけるステートフルMCPクライアント機能

·7 分で読めます·AWS·元の情報源
共有
Amazon Bedrock AgentCore Runtime上のステートフルMCPクライアント機能と対話型AIエージェントフローを示す図

AIエージェントの強化:Amazon BedrockにおけるステートフルMCPへの移行

AIエージェントは急速に進化していますが、特にリアルタイムのユーザーインタラクション、動的なコンテンツ生成、または継続的な進捗更新が求められるシナリオでは、ステートレスな実装によってその潜在能力が十分に発揮されないことがよくありました。洗練されたAIエージェントを構築する開発者は、ワークフローが一時停止したり、明確化のために情報を収集したり、長時間実行される操作中にステータスを報告したりする必要がある場合に、しばしば課題に直面します。ステートレスな実行の厳格で一方的な性質は、真にインタラクティブで応答性の高いAIアプリケーションの開発を制限していました。

現在、Amazon Bedrock AgentCore Runtimeは、画期的なステートフルModel Context Protocol (MCP) クライアント機能を導入し、AIエージェントがユーザーや大規模言語モデル (LLM) とどのように連携するかを変革しています。この重要なアップデートは、エージェントをステートレスな通信の制約から解放し、複雑でマルチターンかつ高度にインタラクティブなワークフローを可能にします。情報引き出し(Elicitation)、サンプリング(Sampling)、進捗通知(Progress Notifications)という重要なMCPクライアント機能を統合することで、Bedrock AgentCore RuntimeはMCPサーバーとクライアント間の双方向の会話を促進し、よりインテリジェントでユーザー中心のAIソリューションへの道を開きます。

ステートレスからステートフルへ:インタラクティブなエージェントワークフローを解き放つ

これまで、AgentCore上でのMCPサーバーサポートはステートレスモードで動作しており、各HTTPリクエストは共有コンテキストを持たずに独立して機能していました。これは基本的なツールサーバーのデプロイを簡素化しましたが、会話の継続性、ワークフロー途中でのユーザーの明確化、またはリアルタイムの進捗報告を必要とするシナリオでは大幅に制限がありました。サーバーは、個別のリクエスト間で会話スレッドを維持することができず、真にインタラクティブなエージェントの開発を妨げていました。

ステートフルMCPクライアント機能の登場は、このパラダイムを根本的に変えます。サーバー起動時にstateless_http=Falseを設定することで、AgentCore Runtimeは各ユーザーセッション専用のマイクロVMをプロビジョニングします。このマイクロVMは、セッションの期間中(最大8時間、またはidleRuntimeSessionTimeout設定に従い15分間の非アクティブで)永続し、セッション間のCPU、メモリ、ファイルシステムの分離を保証します。連続性はMcp-Session-Idヘッダーを通じて維持されます。このIDはサーバーが初期化中に提供し、クライアントはすべての後続リクエストにこれを含めることで、同じセッションにルーティングバックされます。この専用の永続的環境により、エージェントはコンテキストを記憶し、ユーザー入力を求め、動的なLLMコンテンツを生成し、継続的な更新を提供することができます。

以下の表は、ステートレスモードとステートフルモードの主な違いをまとめたものです。

ステートレスモードステートフルモード
stateless_http 設定TRUEFALSE
セッション分離各セッションに専用マイクロVM各セッションに専用マイクロVM
セッション寿命最大8時間。15分のアイドルタイムアウト最大8時間。15分のアイドルタイムアウト
クライアント機能非サポート情報引き出し、サンプリング、進捗通知
推奨用途シンプルなツール提供インタラクティブなマルチターンワークフロー

セッションが期限切れになるか、サーバーが再起動された場合、古いセッションIDを持つ後続のリクエストは404を返します。その時点で、クライアントは新しいセッションIDを取得し、新しいセッションを開始するために接続を再初期化する必要があります。ステートフルモードを有効にするための構成変更は、サーバー起動時の単一のフラグです。

mcp.run( transport="streamable-http", host="0.0.0.0", port=8000, stateless_http=False # ステートフルモードを有効にする)

このフラグに加えて、MCPクライアントが初期化ハンドシェイク中にサポートを宣言すると、3つのクライアント機能が自動的に利用可能になります。

新しいクライアント機能の詳細:情報引き出し、サンプリング、進捗通知

ステートフルモードへの移行により、Amazon Bedrock AgentCore RuntimeはMCP仕様から3つの強力なクライアント機能を解き放ちます。それぞれが、高度なAIエージェントにとって重要な異なるインタラクションパターンに対処するように設計されています。これらの機能は、かつて厳格で一方的なコマンド実行だったものを、MCPサーバーとその接続されたクライアント間の流動的な双方向の対話へと変革します。これらの機能はオプトインであることに注意することが重要です。つまり、クライアントは初期化中にサポートを宣言し、サーバーは接続されたクライアントが広告した機能のみを使用する必要があります。

情報引き出し(Elicitation):AIエージェントにおける動的なユーザー入力を可能にする

情報引き出しは、インタラクティブAIの基礎であり、MCPサーバーがその実行を賢明に一時停止し、クライアントを介してユーザーから特定の構造化された入力を要求することを可能にします。この機能により、ツールは意思決定の確認、ユーザーの好みの収集、先行する操作から導き出される値の収集など、ワークフロー内の適切なタイミングで正確な質問をすることができます。サーバーは、人間が読めるメッセージと、期待される応答構造を規定するオプションのrequestedSchemaを含むelicitation/create JSON-RPCリクエストを送信することで、これを開始します。

MCP仕様は、情報引き出しのために2つの堅牢なモードを提供します。

  • フォームモード: これは、設定パラメーター、ユーザーの好み、または機密データが関与しない簡単な確認など、MCPクライアントを通じて直接構造化データを収集するのに理想的です。
  • URLモード: OAuthフロー、決済処理、機密情報の入力など、安全な帯域外プロセスを必要とするインタラクションの場合、URLモードはユーザーを外部URLに誘導します。これにより、機密情報がMCPクライアントを完全に迂回し、セキュリティとコンプライアンスが強化されます。

情報引き出しリクエストを受信すると、クライアントは適切な入力インターフェースをレンダリングします。ユーザーの後続のアクションは、サーバーへの3つのアクション応答モデルをトリガーします。accept(ユーザーが要求されたデータを提供した)、decline(ユーザーが明示的にリクエストを拒否した)、またはcancel(ユーザーが選択せずにプロンプトを却下した)です。インテリジェントなサーバーは、これらの各シナリオを適切に処理するように設計されており、堅牢でユーザーフレンドリーなエクスペリエンスを保証します。例えば、ソース資料で示されているadd_expense_interactiveツールは、Amazon DynamoDBのようなバックエンドにデータをコミットする前に、金額、説明、カテゴリ、最終確認という一連の質問を通じてユーザーを案内することができます。各ステップは、期待される入力を定義するためにPydanticモデルを利用し、FastMCPはこれをelicitation/createリクエストに必要なJSONスキーマにシームレスに変換します。

サンプリングと進捗通知:LLMインタラクションと透明性の向上

直接的なユーザーインタラクションを超えて、サンプリングは、sampling/createMessageを介してクライアントから直接LLM生成コンテンツを要求する機能をMCPサーバーに提供します。これは、サーバー上のツールロジックが、独自のLLM認証情報や直接的なAPI統合を管理することなく、強力な言語モデル機能を活用できるため、重要なメカニズムです。サーバーは単にプロンプトとオプションのモデル設定を提供し、仲介役として機能するクライアントは、そのリクエストを接続されたLLMに転送し、生成された応答をサーバーに返します。これにより、パーソナライズされた要約の作成、構造化データからの自然言語の説明の生成、または進行中の会話に基づいた文脈に応じた推奨事項の作成など、無数の実用的なアプリケーションが実現します。

時間がかかる操作の場合、進捗通知は非常に貴重になります。この機能により、MCPサーバーは長時間実行されるタスク中に増分更新を報告できます。ctx.report_progress(progress, total)を使用することで、サーバーは継続的な更新を発行でき、クライアントはこれを進捗バーやステータスインジケーターなどの視覚的なフィードバックに変換できます。広大なデータソースを検索する場合でも、複雑な計算タスクを実行する場合でも、透明な進捗更新は、システムがまだアクティブであるかどうかを疑問に思いながら空白の画面を見つめることなく、ユーザーに情報を提供し続け、フラストレーションを防ぎ、全体的なユーザーエクスペリエンスを向上させます。

Bedrock AgentCore RuntimeによるAIエージェント開発の未来設計

Amazon Bedrock AgentCore RuntimeへのステートフルMCPクライアント機能の導入は、AIエージェント開発における大きな前進を意味します。これまでステートレスだったインタラクションを動的で双方向の会話に変えることで、AWSは開発者がよりインテリジェントで応答性が高く、ユーザーフレンドリーなAIアプリケーションを構築できるよう支援します。これらの機能(ガイド付きユーザー入力のための情報引き出し、オンデマンドLLM生成のためのサンプリング、リアルタイムの透明性のための進捗通知)は、インタラクティブなエージェントワークフローの新しい時代を collectively 開きます。AIが進化し続ける中で、これらの基盤となる機能は、複雑なビジネスプロセスにシームレスに統合し、ユーザーのニーズに適応し、卓越した価値を提供する洗練されたエージェントAIの運用化を創造するために不可欠となるでしょう。

よくある質問

What problem do stateful MCP client capabilities solve on Amazon Bedrock AgentCore Runtime?
Stateful Model Context Protocol (MCP) client capabilities on Amazon Bedrock AgentCore Runtime address the critical limitations of previous stateless AI agent implementations. Stateless agents struggled with interactive, multi-turn workflows, as they couldn't pause mid-execution to solicit user input for clarification, request dynamic large language model (LLM)-generated content, or provide real-time progress updates during lengthy operations. Each request was independent, lacking shared context. This new feature fundamentally transforms agent interactions by enabling bidirectional conversations, allowing agents to maintain conversational threads, gather necessary input precisely when needed, generate dynamic content on the fly, and transparently inform users about ongoing processes. This leads to the development of significantly more responsive, intelligent, and user-centric AI applications capable of complex, adaptive workflows.
How does the transition from stateless to stateful mode work on AgentCore Runtime?
The transition to stateful mode within Amazon Bedrock AgentCore Runtime is initiated by a simple configuration adjustment: setting `stateless_http=False` when starting your MCP server. Once enabled, AgentCore Runtime provisions a dedicated microVM for each individual user session. This microVM is designed for persistence throughout the session's duration, which can last up to 8 hours or expire after 15 minutes of inactivity, ensuring isolated CPU, memory, and filesystem resources for each session. Continuity across interactions is maintained through a unique `Mcp-Session-Id` header. This ID is established during the initial handshake and subsequently included by the client in all follow-up requests, ensuring they are accurately routed back to the correct, persistent session, thereby preserving context and enabling complex, interactive dialogues.
What is Elicitation, and how does it enhance AI agent interactions?
Elicitation is a powerful stateful MCP capability that allows an AI agent (acting as the MCP server) to intelligently pause its ongoing execution and request specific, structured input directly from the user via the client. This significantly enhances interactive agent workflows by enabling agents to ask targeted questions at precise, opportune moments within their operational flow. For example, an agent might use elicitation to confirm a decision, gather user preferences, or collect particular data values that are contingent on preceding steps. The feature supports two robust modes: 'Form mode' for direct structured data collection through the MCP client, and 'URL mode' for secure, out-of-band interactions that require directing the user to an external URL (e.g., for OAuth or sensitive credential entry). The user's response – whether accepting, declining, or canceling the request – is then returned to the server, allowing the agent to dynamically adapt its workflow based on real-time human feedback.
How does Sampling capability benefit AI agents without managing LLM credentials?
Sampling equips the MCP server with the ability to request sophisticated large language model (LLM)-generated content directly from the client using the `sampling/createMessage` mechanism. A key benefit is that the MCP server itself does not need to manage its own LLM credentials, API keys, or direct integrations with various LLM providers. Instead, the server simply provides a well-formed prompt and any optional model preferences to the client. The client then acts as an intelligent intermediary, forwarding this request to its connected LLM and returning the generated response back to the server. This abstraction allows AI agents to seamlessly leverage powerful language model capabilities for tasks such as crafting personalized summaries, generating natural-language explanations from complex structured data, or producing context-aware recommendations, all while simplifying the operational overhead and security concerns associated with LLM management on the server side.

最新情報を入手

最新のAIニュースをメールでお届けします。

共有