概要
このリリースでは、MCP(Model Context Protocol)の Tasks 機能のサポートが追加されました。また、SummarizingConversationManager の並行処理に関する問題や、Bedrock プロバイダーのコンテキストウィンドウオーバーフロー検出の問題が修正されています。
リリース: v1.26.0
新機能
MCP Tasks のサポート (#1475)
この機能でできること:
- MCP サーバーが提供する Tasks 機能を利用できるようになりました。Tasks は長時間実行されるツール呼び出しを非同期で処理するための MCP の仕組みです。
使用例:
from strands import Agent
from strands.tools.mcp import MCPClient
# MCP クライアントを作成
mcp_client = MCPClient(
server_command=["python", "task_server.py"],
server_args=["--mode", "stdio"]
)
# MCP クライアントをツールとして使用
with mcp_client:
agent = Agent(tools=[mcp_client])
# Tasks 対応のツールを呼び出し
response = agent("長時間かかる処理を実行してください")
ポイント:
- Tasks は両方の実行モード(同期・非同期)を統一的に処理するアダプターモデルで実装されています
- MCP サーバー側が Tasks をサポートしている必要があります
バグ修正
SummarizingConversationManager の再入ロック問題を修正 (#1653)
- 問題:
SummarizingConversationManagerを専用のsummarization_agentなしで使用している場合、ContextWindowOverflowException発生時にConcurrencyException: Agent is already processing a requestエラーでクラッシュしていました - 原因: サマリー生成時に同じエージェントインスタンスの
stream_async()を再入呼び出ししていたため、非再入ロックがデッドロックを引き起こしていました - 修正: 専用エージェントが設定されていない場合、エージェント全体ではなく
model.stream()を直接呼び出すように変更し、ロックの問題を回避しました
Bedrock のコンテキストウィンドウオーバーフロー検出を改善 (#1663)
- 問題: Claude Opus 4.6 を Bedrock 経由で使用する際、コンテキストウィンドウ超過時に
prompt is too longというエラーメッセージが返されますが、これが認識されずContextWindowOverflowExceptionではなく生のClientErrorが発生していました - 影響: エージェントの
reduce_context()リカバリーメカニズムが動作せず、エラーで停止していました - 修正:
BEDROCK_CONTEXT_WINDOW_OVERFLOW_MESSAGESに"prompt is too long"を追加し、正しく検出されるようになりました
A2A Artifact の parts が空になる問題を修正 (#1643)
- 問題: マルチエージェント機能で、最終的な
TaskArtifactUpdateEventがpartsデータなしで送信されていました - 影響: A2A 仕様では
partsに少なくとも 1 つの part が必要とされているため、仕様違反の状態でした - 修正: 空の
TextPartを設定することで A2A 仕様に準拠するようになりました
まとめ
MCP Tasks のサポートにより非同期ツール実行の選択肢が広がり、複数のバグ修正によって安定性が向上したリリースです。