サブエージェントがMCPツールを継承できない問題を修正:動的注入されたサーバーも対応
原文(日本語に翻訳)
動的に注入されたサーバーのMCPツールをサブエージェントが継承しない問題を修正
原文(英語)
Fixed subagents not inheriting MCP tools from dynamically-injected servers
概要
MCPサーバーを動的に設定・追加した場合、それらのツールがサブエージェント(Taskエージェントや他のエージェント)に引き継がれないバグが修正されました。親エージェントで利用可能なMCPツールが、サブエージェントでも正しく利用できるようになります。複雑なマルチエージェントワークフローでMCPツールを活用している場合に影響します。
基本的な使い方
問題が発生していた状況(修正前)
# 親エージェントにMCPサーバーを動的に追加
# → サブエージェントはそのMCPツールにアクセスできなかった
親エージェント:
- filesystem MCPツール ✓ 利用可能
- database MCPツール ✓ 利用可能
サブエージェント(修正前):
- filesystem MCPツール ✗ アクセス不可
- database MCPツール ✗ アクセス不可修正後の動作
親エージェント:
- filesystem MCPツール ✓ 利用可能
- database MCPツール ✓ 利用可能
サブエージェント(修正後):
- filesystem MCPツール ✓ 正しく継承
- database MCPツール ✓ 正しく継承実践例
マルチエージェントワークフローでのMCPツール活用
bash
# settings.json でMCPサーバーを設定
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"]
},
"database": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sqlite", "mydb.sqlite"]
}
}
}# 親エージェントからサブエージェントにタスクを委譲
> Task: filesystemとdatabaseのMCPツールを使ってデータを移行して
# 修正後: サブエージェントもfilesystemとdatabaseのMCPツールにアクセス可能
# 修正前: サブエージェントはMCPツールにアクセスできずタスクが失敗動的MCP設定との組み合わせ
bash
# claude mcp addで実行時にサーバーを追加
claude mcp add my-custom-server npx my-mcp-server
# その後サブエージェントを使うタスクを実行
> Task: my-custom-serverのツールを使って複数のファイルを並列処理して
# 修正後: 動的に追加したサーバーのツールもサブエージェントに継承されるClaude Agent SDKでのマルチエージェント
python
import anthropic
client = anthropic.Anthropic()
# MCPサーバーを設定したメインエージェント
# サブエージェントへのツール継承が正しく動作するようになった
result = client.beta.messages.create(
model="claude-opus-4-6",
max_tokens=4096,
tools=[
{
"type": "computer_20241022",
"name": "computer",
"display_width_px": 1024,
"display_height_px": 768,
}
],
messages=[{
"role": "user",
"content": "サブエージェントを使ってMCPツールでファイルを処理して"
}],
betas=["computer-use-2024-10-22"],
)注意点
- 動的注入のみ影響: この修正は動的に追加されたMCPサーバーのツール継承に関するものです。静的設定(
settings.json)のサーバーは以前から正しく動作していた場合があります - 隔離ワークツリーの別修正: 同バージョンで「隔離されたワークツリーで実行されるサブエージェントが自分のワークツリー内のファイルへのRead/Editアクセスを拒否される」問題も修正されています
- MCP設定の確認:
claude mcp listでMCPサーバーの設定状態を確認できます - デバッグ方法: サブエージェントのツールアクセスに問題がある場合は
/debugコマンドを使用して診断