何をするか
- Strands Agentsを自分の頭で理解するためにドキュメントなどを参考にエージェントを作成します。
- 簡単なエージェントを作成し、そのエージェントにToolを持たせるところまで実装します。以下の3つを試します。
- Strands Agents Tools(事前に用意されてるやつ)
- カスタムのツール作成
- MCPをツールとして渡す
やろうと思った背景
これまではClaudeやCodex、KiroなどのAIエージェントに実装をしてもらってました。
ただ、AIの生成物を正確に理解できていない自分がいました。
AIエージェントでコーディングさせるのは楽ですが、今のやり方だと自分のやり方は進歩しないので一からドキュメントベースで学習を進めます。
参考にしたドキュメント・書籍
まず、Strands Agentsの公式ドキュメントを参考にしています。
ドキュメントと併せて次の書籍を読んで理解しながらやっています。
Amazon Bedrock AgentCore 実践入門 Strands Agentsで構築するAIエージェント [AWS深掘りガイド]
詰まったときや情報の補足などについては、Strands Agents MCP Server を連携したClaudeCodeを家庭教師風に振る舞わせて学習に役立てています。
改めて今回やること
やることは以下の4つです。ドキュメントや書籍を参考にコードを作成・実行してみます。
- 特に機能やツールを持たないシンプルなエージェントを作成
- Strands Agents Tools(事前に用意されてるやつ)を使って現在時刻を回答するエージェントを作成
- カスタムツール(商品名から価格を取得)を持ったエージェントを作成
- MCP(AWS Knowledge MCP Server)をツールとして持ったエージェントを作成
ツールとは
エージェントの機能の拡張ができるものです。
ツールにより様々な機能を付与することができます。
ツールには以下の3種類あります。今回は3つとも試してみます。
| 種別 | 概要 |
|---|---|
| Strands Agents Tools | 事前に用意されているツール群。コミュニティ主導のプロジェクトらしい |
| カスタムツール | Pythonなどで定義された関数をツールとして利用 |
| MCP | 外部サーバーと接続してツール利用 |
事前準備
環境準備
環境準備として以下を実行します。
# 仮想環境を作成
python -m venv .venv
# 仮想環境をアクティブ化
source .venv/bin/activate
# SDKパッケージ・開発パッケージをインストール
pip install strands-agents
pip install strands-agents-tools
最低限の応答をしてくれるシンプルなエージェントを作成
以下のStrands Agentsのクイックスタートを参考に最低限の応答をしてくれるエージェントを作成します。
agent.pyに以下のように記載します。これはシンプルに Claude Haikuに「今何時?」と聞いてエージェントに回答してもらうというシンプルなものです。
from strands import Agent
agent = Agent(
model="global.anthropic.claude-haiku-4-5-20251001-v1:0" # Claude Haiku 4.5
)
agent("今何時?")
シンプルなエージェントは一般的な回答しかできない
応答は次のように「現在の時刻を知ることはできない」と返ってきます。
今使っているClaude HaikuにはWEB検索や現在時刻取得の手段を持っておらず、モデルが知っている情報のみしか回答できない状態です。
% python agent.py
申し訳ありませんが、私は現在の時刻を知ることができません。
私はリアルタイムの情報にアクセスできないため、正確な時刻を提供することができません。
現在の時刻を確認するには:
- **スマートフォン**の時計アプリ
- **パソコン**の画面右下の時刻表示
- **Google検索**で「今何時」と検索
- **音声アシスタント**(Alexa、Google Assistantなど)
などをご利用ください。
何かお手伝いできることがあれば、お知らせください。
Strands Agents ToolsでAIエージェントに時刻取得のツールを与える
これまでの状態ではエージェントが現在時刻を取得できないため、時刻取得のツールを渡してあげます。
ツールを使うことで単純なテキスト生成以外のアクションをエージェントが実行できるようになります。
ツールにはPython関数、Strands Agents Tools、MCPがありますが、今回はあらかじめ用意されたツールであるStrands Agents Toolsを使います。
Strands Agents Toolsは以下から確認できます。たくさんの機能が提供されているので自分で実装する手間を省けそうです。
現在時刻を取得するツール
今回は現在時刻を取得したいのでcurrent_timeというツールを使います。以下から該当の部分に飛べます。
ツールをエージェントが使うには
strands_toolsパッケージから必要なツールをインポートし、Agentクラスのtools引数に配列の形式で指定します。
from strands import Agent
from strands_tools import current_time # strands_toolsパッケージから必要なツールをインポート
agent = Agent(
model="global.anthropic.claude-haiku-4-5-20251001-v1:0", # Claude Haiku 4.5
tools=[current_time], # Agentクラスのtools引数に配列の形式で指定
)
agent("今何時?")
実行結果(時刻取得)
ツールを設定したエージェントを実行してみます。
Tool #1: current_timeとあるとおり、ツールを使って現在の時刻を取得してきてくれました。
これで事前に用意されてるツール、Strands Agents Toolsを使ったエージェントを作成できました。
実行前には次のコマンドを実行してください。
pip install strands-agents-tools
% python agent_tool.py
現在の時刻を確認します。
Tool #1: current_time
現在の時刻は、**2026年6月28日 7時40分22秒(UTC)** です。
もしあなたの地域の時刻を知りたい場合は、タイムゾーンを教えていただければ、その地域での時刻をお知らせします。例えば:
- 日本(JST)
- ニューヨーク(US/Eastern)
- ロンドン(Europe/London)
- シドニー(Australia/Sydney)
など
カスタムツール作成
Pythonの関数に@toolデコレーターを付与することで、エージェントのツールとして利用できます。
該当ドキュメントは以下です。
商品の価格を返すツールを作成
シンプルに商品名から価格を文章で返すだけの関数を作成してツールとして渡してあげます。
プロンプトにうまい棒の料金を聞いてみます。
from strands import Agent, tool
@tool
def get_price(item_name: str) -> str:
"""商品名から現在の価格を調べて返す
Args:
item_name: 商品名
"""
return f"{item_name}の価格は100円です。"
agent = Agent(
model="global.anthropic.claude-haiku-4-5-20251001-v1:0", # Claude Haiku 4.5
tools=[get_price], # Agentクラスのtools引数に配列の形式で指定
)
agent("うまい棒の料金を教えて!")
実行結果(うまい棒の料金回答)
カスタムツールを設定したエージェントを実行してみます。
Tool #1: get_priceとあるとおり、カスタムツールを使って料金を取得してくれました。
% python agent_tool_customs.py
Tool #1: get_price
うまい棒の料金は**100円**です!
おいしくておやつの定番ですね!%
get_price は固定で 100円 を返すだけのダミーです。念のため補足。
MCPをツールとして持ったエージェントを作成
最後にMCPをツールとしてエージェントに渡して使ってもらいます。
関連するドキュメントは以下です。
AWS Knowledge MCP Serverをツールとして渡す
使うMCPサーバーは以下です。よく使うAWS Knowledge MCP Serverを渡します。
from mcp.client.streamable_http import streamablehttp_client
from strands import Agent
from strands.tools.mcp import MCPClient
mcp_client = MCPClient(
lambda: streamablehttp_client(
"https://knowledge-mcp.global.api.aws"
)
)
agent = Agent(
model="global.anthropic.claude-haiku-4-5-20251001-v1:0", # Claude Haiku 4.5
tools=[mcp_client], # Agentクラスのtools引数に配列の形式で指定
)
agent("amazon bedrock agentcoreとは?")
実行結果(AgentCoreについて質問)
AWS Knowledge MCP Serverのツールを使って回答してくれてますね。
% python agent_tool_mcp.py
Amazon Bedrock AgentCore について検索してみます。
Tool #1: aws___search_documentation
## Amazon Bedrock AgentCore とは
**Amazon Bedrock AgentCore** は、高度なAIエージェントを構築、デプロイ、運用するための統合プラットフォームです。インフラストラクチャ管理なしで、エンタープライズ規模でセキュアにAIエージェントを構築できます。
### 主な特徴
🎯 **フレームワーク・モデルに依存しない**
- CrewAI、LangGraph、LlamaIndex、Strands Agents など、任意のフレームワークで動作
- Anthropic Claude、Meta Llama、Mistral AI、Amazon Nova など、どのモデルでも利用可能
### 主要サービス群
1. **AgentCore Runtime**
- セキュアで、サーバーレスな環境でエージェントをホスト・実行
- インフラストラクチャ管理不要
2. **AgentCore Memory**
- 短期的な会話コンテキストと長期的なメモリの管理
- エージェントが相互作用の文脈を保持できるようにします
3. **AgentCore Gateway**
- 既存のAPI、Lambda関数を Model Context Protocol (MCP) 対応ツールに変換
- ツールの検出と安全な通信をサポート
4. **AgentCore Identity**
- エージェント専用の身元管理とアクセス制御
- きめ細かい権限管理と企業システムへのセキュアアクセス
5. **AgentCore Built-in Tools**
- コード実行用の Code Interpreter
- Webアクセス用の Browser Tool
6. **AgentCore Observability**
- CloudWatch やOpenTelemetry 対応のロギング・監視
- エージェントのパフォーマンス可視化
### 利点
✅ エージェント構築を高速化
✅ ツール・データ連携でエージェントの行動範囲を拡張
✅ 低レイテンシー・長時間実行をセキュアに実現
✅ 本番環境での監視・最適化が可能
AgentCore は、エージェント開発における「本来必要でない重い作業」を排除し、開発者がエージェント論理に集中できるようにしています。
まとめ・感想
普段はコーディングエージェントに頼って実装や調査などしてもらっていますが、自力でドキュメント読んで試して見ました。
数行のコードだけでエージェントに追加機能や情報を簡単に渡せるのですごく便利だと改めて感じました。
これまでハンズオンなどでやった範囲ではありますが、ステップ踏んで学習するのはやはり楽しいし知識になる気がします。
エージェントを使うから作る人になるためにどんどん手を動かしたいですねー。
参考
冒頭にも記載していますが、改めて参考にしたドキュメントや書籍を記載します。
Amazon Bedrock AgentCore 実践入門 Strands Agentsで構築するAIエージェント [AWS深掘りガイド]
詰まったときや情報の補足などについては、Strands Agents MCP Server を連携したClaudeCodeを家庭教師風に振る舞わせて学習に役立てています。
