
Amazon Bedrock AgentCore MCP ServerをClaude Codeで使ってみた
こんにちは、スーパーマーケットが好きなコンサルティング部の神野です。
最近、Amazon Bedrock AgentCore MCP Server がリリースされたというアップデートを見かけました!
Amazon Bedrock AgentCore(以下 AgentCore)でAIエージェントを開発する際に、ドキュメントをすぐに参照できたら便利そうですよね!
ということで、実際にClaude Codeで使ってみてその内容を紹介します。
Amazon Bedrock AgentCore MCP Serverとは
Amazon Bedrock AgentCore MCP Serverは、AWS Labsが提供するMCPサーバーの一つで、AgentCoreに関するドキュメントへの包括的なアクセスを提供してくれます。
主な機能
このMCPサーバーでは、以下の2つのツールが提供されています。
search_agentcore_docs
- AgentCoreのドキュメントを検索できる
- ランク付けされた検索結果とコンテキストスニペットを返してくれる
- 検索クエリと取得件数を指定可能
fetch_agentcore_doc
- 完全なドキュメントページを取得できる
- URLを指定して詳細な情報を取得
カバーされるAgentCoreのサービス
AgentCoreには多くのサービスが含まれており、このMCPサーバーを通じて以下のドキュメントにアクセスできます。
- Runtime: サーバーレスデプロイとスケーリング
- Memory: イベント・セマンティックメモリによる永続的知識管理
- Code Interpreter: 安全なコード実行環境
- Browser: クラウドベースのWebインタラクション
- Gateway: 既存APIのエージェントツール化
- Observability: リアルタイムモニタリング
- Identity: 認証とアクセス管理
AgentCoreのサービスは多岐に渡るので、自分で探すのはなかなか大変です。APIリファレンス、チュートリアル、ベストプラクティスなどのドキュメントを検索・取得できるのは嬉しいですね!!開発効率が上がりそうな予感です。
環境構築
それでは、実際に環境を構築していきましょう。
前提条件
今回は以下の環境で試しています。
- Claude Code 2.0.0
- Python 3.12.6
- uv 0.6.12
MCPサーバーの設定
プロジェクトのルートディレクトリに .mcp.json
ファイルを作成します。
{
"mcpServers": {
"awslabs.amazon-bedrock-agentcore-mcp-server": {
"command": "uvx",
"args": ["awslabs.amazon-bedrock-agentcore-mcp-server@latest"],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": []
}
}
}
起動して、/mcp
コマンドで設定されているか確認してみましょう。
有効になっていますね!使ってみます!
実際に使ってみる
さっそく、Claude Codeで実際に使ってみましょう!
AgentCoreで何ができるか確認
まずは、このMCPサーバーで何ができるのか確認してみます。
awslabs.amazon-bedrock-agentcore-mcp-serverであなたは何ができるのか教えて
と質問してみると、以下のような回答が返ってきました!
⏺ このMCPサーバーを通じて、私はAmazon Bedrock AgentCoreのドキュメント検索と取得ができます。
具体的には:
1. ドキュメント検索
- AgentCoreの各種機能、API、チュートリアルを検索
- プラットフォーム概要、セキュリティ、クォータ情報
2. 完全なドキュメント取得
- 詳細なガイド、APIリファレンス、サンプルコードの全文取得
AgentCoreでカバーされる主要サービス:
- Runtime - サーバーレスデプロイとスケーリング
- Memory - イベント&セマンティックメモリによる永続的知識管理
- Code Interpreter - 安全なコード実行環境
- Browser - クラウドベースのWebインタラクション
- Gateway - 既存APIのエージェントツール化
- Observability - リアルタイムモニタリング
- Identity - 認証とアクセス管理
AgentCoreの開発、デプロイ、統合に関する質問があれば、ドキュメントを検索して詳細情報を提供できます。
説明したようにAgentCoreの開発、デプロイ、統合に関する質問に対して、適切なドキュメントを検索して情報を提供してくれるとのことです。
Strands Agentsでシンプルなエージェントを作成
次に、実際にAgentCoreを使ったエージェント開発を依頼してみます。
MCP Serverを活用してStrands Agentsでシンプルなエージェントを作ってみて
すると、Claude Codeが以下のような流れで作業を進めてくれました!
ドキュメントの検索
まず、MCPサーバーの search_agentcore_docs
ツールを使って、関連ドキュメントを検索してくれます。
search_agentcore_docs(query: "Strands Agents getting started example", k: 3)
を中心に検索していました。検索結果として、以下のようなドキュメントが返ってきました。
- Framework Agents Examples
- Amazon Bedrock AgentCore Runtime: Memory + Code Interpreter Quickstart
- Amazon Bedrock AgentCore Quickstart
2. 詳細ドキュメントの取得
次に、fetch_agentcore_doc
ツールを使って、具体的な実装例が載っているドキュメントの全文を取得します。
fetch_agentcore_doc(uri: "https://aws.github.io/bedrock-agentcore-starter-toolkit/examples/runtime-framework-agents.md")
この情報を基に、Claude Codeが実装を進めてくれます!
3. コードの自動生成
ドキュメントを参照しながら、以下のファイルが自動生成されました。
requirements.txt
strands-agents
bedrock-agentcore
simple_agent.py
"""
シンプルなStrands Agentの例
AgentCore Runtimeでデプロイ可能な基本的な会話エージェント
"""
from strands import Agent, tool
from bedrock_agentcore.runtime import BedrockAgentCoreApp
app = BedrockAgentCoreApp()
# モデルID(Claude 3.7 Sonnet)
MODEL_ID = "us.anthropic.claude-3-7-sonnet-20250219-v1:0"
@tool
def calculate(expression: str) -> str:
"""簡単な算術式を計算します。例: "2 + 2" or "10 * 5"."""
try:
result = eval(expression, {"__builtins__": {}}, {})
return f"計算結果: {result}"
except Exception as e:
return f"計算エラー: {str(e)}"
@tool
def get_greeting(name: str) -> str:
"""指定された名前で挨拶メッセージを生成します。"""
return f"こんにちは、{name}さん!お手伝いできることがあれば教えてください。"
@app.entrypoint
def invoke(payload, context=None):
"""エージェントのエントリーポイント"""
user_prompt = payload.get("prompt", "こんにちは!")
agent = Agent(
model=MODEL_ID,
system_prompt="あなたは親切なアシスタントです。日本語で対応し、必要に応じてツールを使用してください。",
tools=[calculate, get_greeting]
)
result = agent(user_prompt)
response_text = result.message.get('content', [{}])[0].get('text', str(result))
return {"response": response_text}
if __name__ == "__main__":
app.run()
サクッとAgentCoreのドキュメントを参照しながら、Strands Agentsを使った実装例を自動生成してくれました!頼もしい・・・!
デプロイと動作確認
生成されたコードには、デプロイ手順も含まれていました。
# 1. 仮想環境を作成してアクティベート
python -m venv .venv
source .venv/bin/activate
# 2. 依存関係をインストール
pip install bedrock-agentcore-starter-toolkit strands-agents boto3
# 3. AgentCoreに設定
agentcore configure -e simple_agent.py
# 4. デプロイ
agentcore launch
# 5. テスト実行
agentcore invoke '{"prompt": "10 * 5を計算して"}'
あれ、依存関係がrequirements.txtではなく直接pipでインストールするのは少し気になりましたが、概ね正しいのでよしとします。
この手順に従って実行すると問題なくデプロイできました。
実行したところ、下記の結果が返ってきました。
agentcore invoke '{"prompt": "10 * 5を計算して"}' --bearer-token $JWT_TOKEN
Using bearer token for OAuth authentication
Payload:
{
"prompt": "10 * 5を計算して"
}
Invoking BedrockAgentCore agent 'simple_agent' via cloud endpoint
Session ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Response:
{
"response": "{\"response\": \"10 * 5 の計算結果は 50 です。\"}"
}
しっかりと動作していますね!ツールを使って計算もできています!
ちなみに認証も設定できるか聞いてみます。
このエージェントにInbound Authを設定したいのですが、可能でしょうか?MCP Serverで設定方法を確認してね。
と聞くと、こんな感じで返ってきました。
おお、正しい感じですね。さらに「ステップ1の設定が面倒なので手軽に実装できませんか?」とClaude Codeに聞いてみました。以下のような手順が提示されました。試しに実行してみます。
ちなみに簡単なスクリプトは以下のURLに記載があり、MCP Serverでそこから情報を取得してきたようです。
作成が完了したら下記のようにメッセージが返却されました。
⏺ 完了しました!次の手順で進めてください:
ステップ1: Cognito自動セットアップ
./create_cognito.sh
このスクリプトが自動的に:
- Cognito User Poolを作成
- Client IDとSecretを生成
- テストユーザーを作成
- 必要な情報(Discovery URL等)を出力
重要: 出力されるexportコマンドをコピーして実行してください!
ステップ2: OAuth設定(対話モード)
agentcore configure -e simple_agent.py
対話形式で質問されるので:
1. 「Configure OAuth authorizer instead?」 → Yesを選択
2. Discovery URL → $ISSUER_URLの値を入力
3. Allowed Client IDs → $CLIENT_IDの値を入力
ステップ3: 再デプロイ
agentcore launch
ステップ4: JWT Tokenでテスト
agentcore invoke '{"prompt": "Hello"}' --bearer-token YOUR_JWT_TOKEN
準備ができたら、まず./create_cognito.shを実行してください!
このような手順が提示されたので、create_cognito.sh
を実行してみます。
./create_cognito.sh
# 実行結果
User Pool ID: us-west-2_XXXXXXXXXXXXX
Client ID: xxxxxxxxxxxxxxxxxxxxxxxxxx
Client Secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Issuer URL: https://cognito-idp.us-west-2.amazonaws.com/us-west-2_XXXXXXXXXXXXX/.well-known/openid-configuration
Hosted UI URL: https://agentcore-quickstart-XXXXXX.auth.us-west-2.amazoncognito.com
Test User: AgentCoreTestUserXXXX
Test Password: XXXXXXXXXXXXXXXX
export USER_POOL_ID='us-west-2_XXXXXXXXXXXXX'
export CLIENT_ID='xxxxxxxxxxxxxxxxxxxxxxxxxx'
export CLIENT_SECRET='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
export ISSUER_URL='https://cognito-idp.us-west-2.amazonaws.com/us-west-2_XXXXXXXXXXXXX/.well-known/openid-configuration'
export HOSTED_UI_URL='https://agentcore-quickstart-XXXXXX.auth.us-west-2.amazoncognito.com'
export COGNITO_USERNAME='AgentCoreTestUserXXXX'
export COGNITO_PASSWORD='XXXXXXXXXXXXXXXX'
問題なく実行できました!
再度configure
コマンドを実行して、Cognitoの設定を有効にします。
discovery URLとclient IDは先ほど実行した結果に表示されたIssuer URLとClient IDの値を使用します。
agentcore configure -e simple_agent.py
📋 OAuth Configuration
Enter OAuth discovery URL: https://cognito-idp.us-west-2.amazonaws.com/us-west-2_XXXXXXXXXXXXX/.well-known/openid-configuration
Enter allowed OAuth client IDs (comma-separated): xxxxxxxxxxxxxxxxxxxxxxxxxx
Enter allowed OAuth audience (comma-separated):
✓ OAuth authorizer configuration created
この状態で再度デプロイしてみます!
agentcore launch
デプロイが完了したら、まずはトークンなしでリクエストを送ってみます。
agentcore invoke '{"prompt": "Hello"}'
Warning: OAuth is configured but no bearer token provided
Payload:
{
"prompt": "Hello"
}
Invoking BedrockAgentCore agent 'simple_agent' via cloud endpoint
❌ Invocation failed: An error occurred (AccessDeniedException) when calling the InvokeAgentRuntime operation: Authorization method mismatch. The agent is configured for a different
authorization method than what was used in your request. Check the agent's authorization configuration and ensure your request uses the matching method (OAuth or SigV4)
認証が有効になったため、トークンなしでは失敗します。
次にトークンを取得して、リクエストを送ってみます。
トークンの取得ですが、まずはCognitoの設定も対応する必要があります。
コンソール上でCognitoの画面を開く、対象のアプリケーションクライアントを編集して認証フローを変更します。ユーザー名とパスワード (ALLOW_USER_PASSWORD_AUTH) を使用してサインインします
にチェックを入れます。
チェックを入れた後下記スクリプトをClaude Codeに作らせて、実行してみました。
(トークンの取得方法については自動生成されなかったため、別途スクリプトを作成しました。ここまで自動化もしくはアナウンスして欲しかったですね・・・)
# Cognito JWT Token取得スクリプト
# 使い方: ./get_jwt_token.sh
# 環境変数のチェック
if [ -z "$CLIENT_ID" ] || [ -z "$CLIENT_SECRET" ] || [ -z "$COGNITO_USERNAME" ] || [ -z "$COGNITO_PASSWORD" ]; then
echo "エラー: 必要な環境変数が設定されていません"
echo "create_cognito.shの出力から以下をコピーして実行してください:"
echo " export CLIENT_ID='...'"
echo " export CLIENT_SECRET='...'"
echo " export COGNITO_USERNAME='...'"
echo " export COGNITO_PASSWORD='...'"
exit 1
fi
REGION=us-west-2
# SECRET_HASHを計算(HMAC-SHA256(username + client_id, client_secret) を Base64エンコード)
echo "SECRET_HASHを計算中..."
SECRET_HASH=$(echo -n "${COGNITO_USERNAME}${CLIENT_ID}" | openssl dgst -sha256 -hmac "${CLIENT_SECRET}" -binary | base64)
# 認証を実行してトークンを取得
echo "Cognitoで認証中..."
AUTH_RESULT=$(aws cognito-idp initiate-auth \
--client-id $CLIENT_ID \
--auth-flow USER_PASSWORD_AUTH \
--auth-parameters USERNAME=$COGNITO_USERNAME,PASSWORD=$COGNITO_PASSWORD,SECRET_HASH=$SECRET_HASH \
--region $REGION \
--query 'AuthenticationResult.AccessToken' \
--output text)
if [ $? -eq 0 ] && [ -n "$AUTH_RESULT" ]; then
echo ""
echo "✅ JWT Token取得成功!"
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "JWT Token:"
echo "$AUTH_RESULT"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "環境変数として保存するには:"
echo "export JWT_TOKEN='$AUTH_RESULT'"
echo ""
echo "エージェント呼び出しコマンド例:"
echo "agentcore invoke '{\"prompt\": \"Hello\"}' --bearer-token \$JWT_TOKEN"
else
echo "❌ トークン取得失敗"
exit 1
fi
取得したトークンを変数JWT_TOKEN
に格納してinvoke
コマンドを実行します。
agentcore invoke '{"prompt": "Hello"}' --bearer-token $JWT_TOKEN
Using bearer token for OAuth authentication
Payload:
{
"prompt": "Hello"
}
Invoking BedrockAgentCore agent 'simple_agent' via cloud endpoint
Session ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Response:
{
"response": "{\"response\":
\"こんにちは!私はAIアシスタントです。何かお手伝いできることはありますか?\\n\\n質問や計算、お名前での挨拶など、お気軽にお尋ねください。日本語でお答えしますので、どうぞよろしくお願
いいたします。\"}"
}
Cognito周りの設定が一部手動で実行しましたが、問題なく認証をつけられましたね!
参考にしたドキュメントがOutbound Auth用だったためか、一手間必要でした。
確かに便利は便利なんですけど、元になったドキュメントをしっかり追わないと、何が行われているのか理解しきれず逆に時間がかかってしまうかもしれないですね。Cognitoの設定をするだけなら下記公式ドキュメントの設定の方が、Client Secretも使用しないのでシンプルです。
今の所、bedrock-agentcore-starter-toolkitドキュメントしか検索していないよう(公式ドキュメントも検索できるならすみません・・・)にも見えたのでAWS Documentation MCP ServerやAWS Knowledge MCP Serverも併用するのがいいかもしれませんね。
おわりに
Amazon Bedrock AgentCore MCP Serverを使ってみましたが、AgentCore開発において便利なツールだと感じました!
サービスが多岐にわたるので、必要な情報があっという間に取得できるのは便利です。
一方でbedrock-agentcore-starter-toolkitドキュメントの情報しか取得していないように見えたので、AWS Documentation MCP ServerやAWS Knowledge MCP Serverも活用したり、参照元のドキュメントはしっかりと確認する必要があるかと思います。
今回はゼロからサクッとエージェントを作成してみましたが、既存のエージェントをどうAgentCoreにデプロイするかなどの際に活用できそうでもありますね。
本記事が少しでも役に立ちましたら幸いです。最後までご覧いただきありがとうございましたー!