AWS re:Invent 2025「Agentic AI ft. Dynatrace(GameDay)」に参加してきた:Amazon Bedrock AgentCoreとMCPで構築するAIエージェントの実践

AWS re:Invent 2025「Agentic AI ft. Dynatrace(GameDay)」に参加してきた:Amazon Bedrock AgentCoreとMCPで構築するAIエージェントの実践

2025.12.03

はじめに

AWS re:Invent 2025で開催されたAgentic AI ft. Dynatrace(GameDay形式)に参加してきました。

本記事では、実際に取り組んだ2つのミッションを例に、Amazon Bedrock AgentCoreを使ってAIエージェントを構築し、Model Context Protocol (MCP) で外部ツールと連携させる方法を紹介します。

  • ミッション1: MCPを使わないシンプルなエージェント(Hello World)
  • ミッション2: MCPを使った高度なエージェント(AWS Documentation検索)

使用する主要技術

  • Amazon Bedrock: Claude Sonnet 4など、最新のLLMを使用
  • Amazon Bedrock AgentCore: AIエージェントのサーバーレスホスティング
  • Strands Agents Framework: Pythonベースのエージェント構築フレームワーク
  • Model Context Protocol (MCP): AIエージェントとツールの標準化されたインターフェース
  • AWS Labs MCP Servers: AWS公式のMCPサーバー実装

プロジェクト構成

まず、用意するフォルダー構成は以下の通りです。

agent_lab/
├── requirements.txt             # 共通の依存パッケージ
├── hello_world_agent/           # ミッション1用:シンプルなエージェント
│   ├── hello_world_agent.py     # MCPを使わない基本実装
│   └── requirements.txt         # 依存パッケージ
└── aws_docs_agent/              # ミッション2用:MCPエージェント
    ├── aws_docs_agent.py        # MCP統合エージェント
    └── requirements.txt         # 依存パッケージ

環境セットアップ

必要なパッケージのインストール

cd /home/ubuntu/environment/GameDay/agent_lab/

# 仮想環境の作成
python3 -m venv venv
source venv/bin/activate

# 依存パッケージのインストール
pip3 install -r requirements.txt

requirements.txtの内容

requests
boto3
strands-agents 
strands-agents-tools
bedrock-agentcore
uv
bedrock-agentcore-starter-toolkit

ミッション1: MCPを使わないシンプルなエージェント

最初のミッションは、基本的なAIエージェントをデプロイして、シンプルな会話に応答させるタスクでした。

ミッション1の要件

  • Amazon Bedrock AgentCoreにエージェントをデプロイ
  • 基本的な質問に応答できること

エージェントの実装

hello_world_agent/hello_world_agent.pyを作成します。

from strands import Agent
from bedrock_agentcore.runtime import BedrockAgentCoreApp
from strands.models import BedrockModel

app = BedrockAgentCoreApp()

@app.entrypoint
def strands_agent_bedrock(payload):
    """
    Invoke the agent with a payload
    """
    user_input = payload.get("prompt")
    print("User input:", user_input)

    # Claude Sonnet 4を使用
    model_id = "us.anthropic.claude-sonnet-4-20250514-v1:0"
    model = BedrockModel(model_id=model_id)

    SYSTEM_PROMPT = """
    You are an expert AWS Certified Solutions Architect. 
    You can answer questions about AWS.
    """

    agent = Agent(model=model, system_prompt=SYSTEM_PROMPT)
    response = agent(user_input)

    print("Response:")
    print(response.message["content"][0]["text"])

    return response.message["content"][0]["text"]

if __name__ == "__main__":
    app.run()

コードの解説

このコードは非常にシンプルな構成です。

  1. BedrockAgentCoreAppの初期化 - AgentCoreとの連携を設定
  2. モデルの選択 - Claude Sonnet 4を使用
  3. システムプロンプトの定義 - エージェントの役割を指定
  4. エージェントの作成 - Strandsフレームワークでエージェントを構築
  5. レスポンス返却 - ユーザーの質問に対する回答を返す

デプロイ手順

cd hello_world_agent

# AgentCoreの設定
agentcore configure -e hello_world_agent.py

# エージェントのデプロイ(約3分かかります)
agentcore launch

デプロイが完了すると、AgentCoreコンソールでRuntime IDが確認できます。

エージェントのテスト

# エージェントをテスト
agentcore invoke '{"prompt": "Hello world"}'

ミッション1の結果

シンプルな実装でしたが、Amazon Bedrock AgentCoreの基本的な使い方を理解できました。デプロイも簡単で、サーバーレスでエージェントがホスティングされるため、インフラ管理が不要なのが大きなメリットでした。

ミッション2: MCPを使った高度なエージェント

次のミッションは、MCPサーバーを統合してAWS Documentationを検索できるエージェントを構築するタスクでした。

ミッション2の要件

  • MCPサーバーを使ってAWS公式ドキュメントを検索
  • AWSサービスに関する質問に正確に回答
  • MCPツールの使用状況をレスポンスに含める

Model Context Protocol (MCP) とは?

MCPは、AIエージェントと外部ツールの間の標準化されたインターフェースです。これにより、エージェントは以下のような専門的なツールにアクセスできます。

  • AWS Documentation検索
  • 図表生成
  • データベース操作
  • その他の専門的なタスク

こちらに、AWS SDK のMCPラッパー実装集があるので活用しました。

使用したMCPサーバー

今回はAWS Documentation MCP Serverを選択しました。
このMCPサーバーは、AWS公式ドキュメントを検索できる機能を提供します。

エージェントの実装

aws_docs_agent/aws_docs_agent.pyを作成します。

import logging
from bedrock_agentcore.runtime import BedrockAgentCoreApp
from mcp import StdioServerParameters, stdio_client
from strands import Agent
from strands.models import BedrockModel
from strands.tools.mcp import MCPClient

# ロギングの設定
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

app = BedrockAgentCoreApp()

# Bedrock モデルの設定
bedrock_model = BedrockModel(
    model_id="us.anthropic.claude-sonnet-4-20250514-v1:0",
    temperature=0.7,
)

SYSTEM_PROMPT = """
You are an expert AWS Certified Solutions Architect. 
You can query the AWS Documentation to help customers 
understand best practices on building on AWS.
"""

@app.entrypoint
def strands_agent_bedrock(payload):
    try:
        user_input = payload.get("prompt")
        logger.info(f"User input: {user_input}")

        # MCPクライアントの作成
        aws_docs_client = MCPClient(
            lambda: stdio_client(
                StdioServerParameters(
                    command="uvx", 
                    args=["awslabs.aws-documentation-mcp-server@latest"]
                )
            )
        )

        # エージェントの初期化
        with aws_docs_client:
            all_tools = aws_docs_client.list_tools_sync()

            agent = Agent(
                tools=all_tools, 
                model=bedrock_model, 
                system_prompt=SYSTEM_PROMPT
            )

            # レスポンスの取得
            response = agent(user_input)
            print("Response:")
            print(response.message["content"][0]["text"])

            return response.message["content"][0]["text"]

    except Exception as e:
        logger.error(f"Error processing request: {e}", exc_info=True)
        raise

if __name__ == "__main__":
    app.run()

コードの解説

ミッション1のコードと比較すると、以下の追加要素があります。

  1. MCPクライアントの作成 - AWS Documentation MCP Serverに接続
  2. MCPツールの取得 - list_tools_sync()で利用可能なツールを取得
  3. エージェントへのツール統合 - tools=all_toolsでエージェントにツールを渡す

これにより、エージェントはAWS公式ドキュメントを検索して回答できるようになります。

デプロイ手順(重要な注意点)

MCPエージェントは必ずContainerモードでデプロイする必要があります

cd aws_docs_agent

# AgentCoreの設定
agentcore configure -e aws_docs_agent.py

# デプロイ
agentcore launch

デプロイタイプの選択時、必ずオプション2(Container)を選択

Deployment Configuration
Select deployment type:
  1. Direct Code Deploy (recommended) - Python only, no Docker required
  2. Container - For custom runtimes or complex dependencies
Choice [1]: 2

エージェントのテスト

# AWS関連の質問でテスト
agentcore invoke '{"prompt": "What is Amazon S3?"}'

このコマンドを実行すると、エージェントはMCPサーバーを使ってAWS公式ドキュメントを検索し、正確な情報を回答してくれます。

ミッション2の結果

MCPサーバーを統合することで、エージェントの能力が大幅に向上しました。単なるLLMの知識だけでなく、最新のAWS公式ドキュメントを参照して回答できるため、より正確で信頼性の高い情報を提供できます。

2つのミッションから学んだこと

ミッション1(MCPなし)で学んだこと

  • Amazon Bedrock AgentCoreの基本的な使い方
  • Strandsフレームワークでのエージェント構築
  • サーバーレスでのエージェントホスティングの便利さ
  • デプロイから動作確認までの流れ

ミッション2(MCPあり)で学んだこと

  • MCPサーバーの統合方法
  • Containerモードでのデプロイの重要性
  • 外部ツールと連携することでエージェントの能力が拡張できること
  • システムプロンプトでツールの使用方法を指示する重要性

取り組む際に気を付けたこと

# デプロイ前のチェックリスト
□ MCPサーバーが正しく設定されているか確認
□ システムプロンプトがミッションに適しているか確認
□ Containerモード(オプション2)を選択することを忘れない(MCPの場合)

Amazon Bedrock AgentCoreの特徴

実際に使ってみて感じたAgentCoreの特徴をまとめます。

サーバーレスアーキテクチャ

AgentCoreは完全なサーバーレスプラットフォームで、以下の利点があります。

  • 自動スケーリング - トラフィックに応じて自動的にスケール
  • コスト効率 - 使用した分だけ課金
  • 運用不要 - インフラ管理が不要
  • 高可用性 - AWSのインフラで高い可用性を実現

AWS Labs MCP repositoryで利用可能なMCPサーバー

今回はAWS Documentation MCP Serverを使いましたが、他にも様々なMCPサーバーが用意されています。

他にも確認したい場合はこちらを参考にしてみてください。

まとめ

AWS re:Invent 2025の「Agentic AI ft. Dynatrace(GameDay)」で2つのミッションに挑戦し、Amazon Bedrock AgentCoreとModel Context Protocolを使って実践的なAIエージェントを構築しました。

今後の展開

今回学んだ技術は、以下のような実用的なユースケースに応用できそうです。

  • 社内ドキュメント検索システム
  • カスタマーサポートの自動化
  • コード生成アシスタント
  • 技術的な質問に答えるチャットボット

GameDay形式で楽しみながら、実践的なスキルを身につけることができました。Amazon Bedrock AgentCoreとMCPは、今後のAIエージェント開発の標準になりそうな予感がしました。

この記事をシェアする

FacebookHatena blogX

関連記事