Claude CodeのMCPツールはサブエージェントから使えない【回避策あり】

スポンサーリンク

Claude CodeにMCPサーバーを登録して「よし、サブエージェントにも使わせよう」と思ったら、あっさり使えなかった。同じ罠にハマりそうな人のために、原因と回避策をまとめておく。

やろうとしたこと

GA4とSearch ConsoleのデータをMCPサーバー経由で取得する仕組みを作っていた。~/.claude/.mcp.json にサーバーを登録済みで、メインセッションではちゃんと ga4_run_reportsearch_console_query が呼べる状態だった。

「複数クライアントのデータを並行して取りたい」と思い、Task toolでサブエージェントを生成してMCPツールを呼ばせることにした。

Task tool → サブエージェント生成 → 「search_console_list_sitesを呼んで」

ハマったポイント:サブエージェントはMCPに繋がらない

サブエージェントは search_console_list_sites が見つからないとして処理を止めた。いろいろ調べると、構造的な理由があった。

  • MCPサーバーはメインセッションのプロセスに接続されている
  • Task toolで生成されるサブエージェントは、独立した別プロセスとして動く
  • そのため、メインセッションが持つMCPサーバーの接続をサブエージェントは引き継げない

つまり ~/.claude/.mcp.json に何を登録していても、Task toolのサブエージェントからはMCPツールは一切見えない。

回避策:Pythonで直接APIを叩く

MCPサーバーが「何をやっているか」を考えると、回避策は自然と見えてくる。MCPサーバーはAPIへの認証済みアクセスを中継しているだけなので、同じことをPythonスクリプトで直接やればいい。

# MCPを使わずPythonで直接GA4 APIを呼ぶ
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.oauth2 import service_account

creds = service_account.Credentials.from_service_account_file(
    'path/to/key.json',
    scopes=['https://www.googleapis.com/auth/analytics.readonly']
)
client = BetaAnalyticsDataClient(credentials=creds)
# 以降は通常のAPIコールと同じ

サブエージェントにこのPythonスクリプトを実行させれば、MCPを介さずに同じデータが取れる。

整理:どこでMCPを使うか

実行場所MCPツール向いている使い方
メインセッション(直接会話)✅ 使えるインタラクティブなデータ確認・試行
Task toolのサブエージェント❌ 使えない
Bashツールでのスクリプト実行不要バッチ処理・複数クライアント対応

MCPはメインセッションでの「インタラクティブな試行」に向いていて、「バッチ処理」や「並列実行」はPython直接呼び出しで対応する、という使い分けが実用的だと思う。

まとめ

  • Claude CodeのMCPツールはTask toolのサブエージェントからは使えない(プロセス分離が原因)
  • 回避策はMCPサーバーと同じAPIをPythonで直接呼び出すこと
  • MCPはメインセッション専用、バッチ・並列はPythonスクリプトで、と使い分けると迷わない

「MCPで登録したのにサブエージェントで使えない」と詰まっている人は、同じ構造的な理由のはずなので、ぜひPython直接呼び出しを試してほしい。

コメント

タイトルとURLをコピーしました