Skip to content

サブエージェントからSDK提供MCPツールへのアクセス修正

原文(日本語に翻訳)

サブエージェントが、共有アプリケーション状態に同期されていないため、SDK提供のMCPツールにアクセスできなかった問題を修正しました。

原文(英語)

Fixed subagents not being able to access SDK-provided MCP tools because they were not synced to the shared application state

概要

Task ツールで起動されるサブエージェントが、Anthropic SDKを通じて提供されるMCPツールにアクセスできなかった問題が修正されました。この問題は、MCPツールの情報が共有アプリケーション状態に同期されていなかったことが原因でした。修正により、サブエージェントもメインエージェントと同じMCPツールを使用できるようになりました。

基本的な使い方

サブエージェントでのMCPツール利用

bash
# MCPサーバーを設定
claude mcp add @modelcontextprotocol/server-postgres

# メインセッション
claude

# サブエージェントを起動してMCPツールを使用
> "Taskツールで別のエージェントに、データベースから最新の100件を取得させて"

# 以前の問題:
# - サブエージェントがMCPツール(query_database)を認識できない
# - エラー: "Tool not available"

# 修正後:
# - サブエージェントもMCPツールにアクセス可能
# - 正常にデータベースクエリを実行

実践例

データベース操作のサブエージェントへの委譲

bash
# PostgreSQL MCPサーバー設定
~/.claude/settings.json:
{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": {
        "DATABASE_URL": "postgresql://user:pass@localhost/mydb"
      }
    }
  }
}

# メインセッション
claude

> "データ分析エージェントを起動して、売上データを集計させて"

# Task ツールでサブエージェント起動
# サブエージェント内で:
> - query_database ツールを使用して売上データ取得
> - データ集計と分析
> - 結果をメインエージェントに返す

# 修正前: サブエージェントはquery_databaseツールにアクセス不可
# 修正後: 正常にMCPツールを使用して分析を完了

ファイルシステム操作の並列実行

bash
# ファイルシステムMCPサーバー設定
claude mcp add @modelcontextprotocol/server-filesystem

# 複数のサブエージェントで並列処理
claude

> "3つのエージェントを並列起動して、それぞれ異なるディレクトリのファイルを処理して"

# サブエージェント1: /src ディレクトリ
# サブエージェント2: /tests ディレクトリ
# サブエージェント3: /docs ディレクトリ

# 各サブエージェントがファイルシステムMCPツールを使用
# 以前: MCPツールが利用不可、処理失敗
# 現在: すべてのサブエージェントが正常に動作

Web検索の複数タスク分散

bash
# Brave Search MCPサーバー設定
claude mcp add @modelcontextprotocol/server-brave-search

# メインセッション
claude

> "5つのトピックについて並列で調査して。それぞれ専用エージェントを立てて"

# サブエージェント × 5 が並列実行
# 各エージェントがBrave Search MCPツールを使用

# トピック1: AI最新動向 → search_web("AI trends 2026")
# トピック2: React新機能 → search_web("React 19 features")
# トピック3: Python3.13 → search_web("Python 3.13 changelog")
# トピック4: セキュリティ → search_web("security best practices")
# トピック5: DevOps → search_web("DevOps tools 2026")

# 修正前: サブエージェントはMCP search_webツールを使えず、タスク失敗
# 修正後: すべてのサブエージェントが並列で検索実行、結果を統合

カスタムMCPツールのサブエージェント利用

bash
# カスタムMCPサーバー(社内API統合)
~/.claude/settings.json:
{
  "mcpServers": {
    "internal-api": {
      "command": "node",
      "args": ["/path/to/internal-mcp-server.js"],
      "env": {
        "API_KEY": "secret"
      }
    }
  }
}

# 社内APIを使うツール: get_employee_data, create_ticket など

# メインセッション
claude

> "チケット作成エージェントに、バグレポートを5件作成させて"

# サブエージェント内で create_ticket MCPツールを使用
# 以前: カスタムMCPツールがサブエージェントから見えない
# 現在: 正常にチケット作成完了

複雑なワークフローの実現

bash
# 複数のMCPサーバーを組み合わせたワークフロー

# ステップ1: データベースエージェント(PostgreSQL MCP)
> "DBエージェント: ユーザーデータを取得"

# ステップ2: 分析エージェント(Python MCP)
> "分析エージェント: データを集計・分析"

# ステップ3: レポートエージェント(ファイルシステムMCP)
> "レポートエージェント: 分析結果をMarkdownで保存"

# ステップ4: 通知エージェント(Slack MCP)
> "通知エージェント: Slackに結果を投稿"

# すべてのサブエージェントがそれぞれのMCPツールにアクセス可能

注意点

  • 共有アプリケーション状態: MCPツールの情報は、メインエージェントとすべてのサブエージェント間で共有されるグローバル状態として管理されます。

  • ツールの同期タイミング: MCPサーバーが起動されると、ツール情報が自動的に共有状態に同期されます。手動での同期は不要です。

  • サブエージェントの制限: サブエージェントは親エージェントと同じMCPツールにアクセスできますが、以下の制限があります:

    • 独自のMCPサーバーを追加できない
    • 親エージェントのMCP設定を変更できない
  • セキュリティ: MCPツールの権限は、メインエージェントとサブエージェント間で共有されます。機密性の高い操作は注意が必要です。

  • パフォーマンス: 多数のサブエージェントが同時にMCPツールを使用する場合、MCPサーバーの負荷が高くなる可能性があります。

  • エラーハンドリング: サブエージェントでMCPツールがエラーになった場合、エラーは親エージェントに伝播されます。

  • デバッグ: サブエージェントのMCPツール使用をデバッグする場合:

    bash
    # MCP サーバーログを確認
    cat ~/.claude/logs/mcp-*.log
    
    # または /debug コマンド
    /debug
    
    > "サブエージェントがMCPツールにアクセスできているか確認して"

関連情報