
GenU v5 の新機能「AgentCore」を有効化して MCP 付きエージェントを動かしてみた
はじめに
こんにちは!AI 事業本部のこーすけです。
AWS が公開している生成 AI アプリのリファレンス実装「Generative AI Use Cases JP」(通称 GenU)に、v5.0.0 から AgentCore 連携機能が追加されました。MCP ツール付きの AI エージェントがチャット UI 上で簡単に動くということで、有効化して試してみました。
本記事では、AgentCore ユースケースの概要と設定オプションの詳細、実際にデプロイして動かすまでの手順を紹介します。
AgentCoreユースケースとは
GenU の AgentCore ユースケースを有効化すると、以下のことができるようになります。
- チャット UI 上でエージェントと対話: サイドメニューに「AgentCore」ページが追加される
- MCP ツールの利用: 現在時刻の取得、AWS ドキュメント検索、アーキテクチャ図の生成など、デフォルトで 7 つの MCP サーバーが使える
- モデルの切り替え: Claude Sonnet、Haiku、Nova など、Bedrock で利用可能なモデルをドロップダウンで選べる
- ファイルのアップロード: PDF や画像をエージェントに渡して処理させられる
技術的には、Strands Agents SDK ベースの FastAPI アプリが AgentCore Runtime 上にデプロイされる構成です。フロントエンドからは AWS SDK を使って直接 Runtime を呼び出し、ストリーミングでレスポンスを受け取ります。
注意: 本機能は Experimental とされており、予告なく破壊的変更が行われる可能性があります。
AgentCore 関連の設定オプション
AgentCore に関連する設定パラメータを紹介します。parameter.ts の envs に記述します。
基本設定
- createGenericAgentCoreRuntime
createGenericAgentCoreRuntime: true,
AgentCore の有効化に必要な最低限の設定です。true にすると、デフォルトの Generic AgentCore Runtime がデプロイされます。このランタイムには MCP サーバー群が同梱されており、すぐにエージェントとして利用できます。以後、新たに作成された Runtime を Generic Runtime と呼びます。
- agentCoreRegion
agentCoreRegion: 'us-west-',
AgentCore Runtime のデプロイ先リージョンを指定します。省略した場合は modelRegion と同じリージョンにデプロイされます。AgentCore が利用可能なリージョンが限られているため、modelRegion とは別のリージョンを指定したい場合に使います。
AgentBuilder
- agentBuilderEnabled
agentBuilderEnabled: true,
AgentBuilder を有効化すると、ユーザーがシステムプロンプトと MCP を自由に組み合わせて、独自のエージェントを作成できるようになります。管理者が agent-builder/mcp.json に MCP サーバーを事前登録しておき、ユーザーはその中から選択して使う仕組みです。
有効化すると、Generic Runtime とは別に AgentBuilder 用の Runtime がもう 1 つデプロイされます。こちらも大変便利そうなのでまた触ってみます。
外部ランタイム・ゲートウェイ
- agentCoreExternalRuntimes
agentCoreExternalRuntimes: [
{
name: 'MyCustomAgent',
arn: 'arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent-xxxxxxxx',
},
],
GenU の外部で作成した AgentCore Runtime を GenU の UI から利用できるようにする設定です。たとえば、別の CDK スタックや別の AWS アカウントでデプロイしたカスタムランタイムを、GenU のフロントエンドのランタイム選択ドロップダウンに追加できます。
次回の記事で紹介する「独自エージェントのデプロイ」では、この設定を使って自作のエージェントを GenU に統合します。
- agentCoreGatewayArns
agentCoreGatewayArns: [
'arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/my-gateway-id',
],
AgentCore Gateway は、AgentCore Runtime から AWS 外部のサービス(外部 API など)にアクセスするための仕組みです。Gateway の ARN を指定すると、最小権限の原則に従った IAM ポリシーが自動的に設定されます。
MCP サーバー側では mcp-proxy-for-aws を使ってエンドポイントを指定します。詳細は mcp-proxy-for-aws のドキュメントを参照してください。
デフォルトで使える MCP ツール
Generic Runtime には以下の MCP サーバーがデフォルトで組み込まれています。
| MCP サーバー | 機能 |
|---|---|
time |
現在日時の取得 |
aws-knowledge-mcp-server |
AWS Knowledge Base アクセス |
awslabs.aws-documentation-mcp-server |
AWS ドキュメント検索 |
awslabs.cdk-mcp-server |
AWS CDK コード生成支援 |
awslabs.aws-diagram-mcp-server |
AWS アーキテクチャ図生成 |
awslabs.nova-canvas-mcp-server |
Amazon Nova Canvas 画像生成 |
tavily-search |
Web 検索(API キー別途必要) |
これらのMCP サーバーを追加・カスタマイズしたい場合は、以下のファイルを編集することで実現できます。
packages/cdk/lambda-python/generic-agent-core-runtime/mcp-configs/generic/mcp.json
AgentBuilder 用の MCP 設定ファイルは別で用意されています。
packages/cdk/lambda-python/generic-agent-core-runtime/mcp-configs/agent-builder/mcp.json
デプロイ手順
前提条件
- GenU がデプロイ済み(または同時にデプロイ)
- Docker がインストール済みで起動中
- AWS CLI の認証情報が設定済み
AgentCore Runtime は ARM64 コンテナとしてビルドされます。x86_64 Linux / WSL2 をお使いの方はデプロイ前に以下のコマンドで ARM64 エミュレーションを有効化してください。
docker run --privileged --rm tonistiigi/binfmt --install arm64
ステップ 1: parameter.ts の編集
packages/cdk/parameter.ts の envs に AgentCore を有効化するための設定を追加します。
下記は実際に自分がデプロイした際の設定です。AgentCore の有効化に加えて、構築するリージョンの指定をしています。その他の項目はデフォルトのものを使用しました。
const envs: Record<string, Partial<StackInput>> = {
myenv: {
modelRegion: "us-east-1",
createGenericAgentCoreRuntime: true,
},
};
ステップ 2: デプロイ
npm run cdk:deploy
AgentCore を有効化すると、基本のスタックに加えて AgentCoreStack が新たに作成されます。
ステップ 3: 動作確認
デプロイが完了すると、CloudFormation の出力に以下が表示されます。
AgentCoreEnabled = true
AgentCoreGenericRuntime = {"name":"GenUGenericRuntime...","arn":"arn:aws:bedrock-agentcore:..."}
WebUrl = https://xxxxxxxx.cloudfront.net
Web URL にアクセスすると、ホーム画面とサイドメニューに、 AgentCore が追加されています。

「今日の日付を教えて」のような質問では time MCP サーバーが呼び出されて、正確な現在時刻を返してくれます。


チャット画面のレスポンスには「トレース」という折りたたみセクションが表示され、どのツールがどんな入力で呼び出されたかをリアルタイムに確認できます。
AgentCore Runtime の中身
せっかくなので、デプロイされたランタイムの中身も簡単に紹介します。
ソースコードは packages/cdk/lambda-python/generic-agent-core-runtime/ にあります。
generic-agent-core-runtime/
├── Dockerfile # ARM64 Python 3.13 コンテナ
├── app.py # FastAPI サーバー(/ping, /invocations)
├── src/
│ ├── agent.py # Strands Agent の生成・実行・ストリーミング
│ ├── tools.py # MCP ツール管理・S3 アップロード
│ ├── config.py # システムプロンプト・環境設定
│ └── types.py # リクエストスキーマ(Pydantic)
└── mcp-configs/ # MCP サーバー定義
リクエストを受け取るたびに Strands Agentを生成し、指定されたモデルと MCP ツールで処理を実行します。レスポンスはトークン単位でストリーミングされるため、フロントエンドではリアルタイムに回答が表示されます。
1点補足しておくと、フロントエンドから毎回のリクエストにこれまでの会話履歴を messages として全件送信し、サーバー側でリクエストごとに Strands Agent を新規生成して処理しています。
AgentCore の仕組みとして runtimeSessionId というセッション ID がヘッダー経由でランタイムに渡されますが、 GenUの実装ではこの値を会話の状態管理には使っていません。
独自エージェントを作る際には、このセッションの仕組みを活用してサーバーサイドに会話状態を持たせる設計にすることも可能ですが、現状の GenU はクライアントサイドで状態管理するアプローチを取っている点は意識しておくとよいかもしれません。
おわりに
本記事では、GenU の AgentCore 機能の概要、設定オプション、有効化手順を紹介しました。
createGenericAgentCoreRuntime: true を追加してデプロイするだけで、MCP ツール付きのエージェントがすぐに使えるのはめちゃくちゃ便利です。agentCoreExternalRuntimes を使えば外部で作成したカスタムランタイムも GenU の UI に統合できるので拡張性もありますね。










