MCPツール反映漏れ

更新: 2026-09-29
AIエージェントMCPOpenClawデバッグ

MCPサーバー(例: 動画生成MCP)に新しいツールを足し、openclawの許可リスト(mcp.servers.<name>.toolFilter.include)にも名前を追加した。それだけでは、すでに稼働しているエージェントには反映されない。

経緯は開発日記の「連結しました」は嘘だったにある。ここには、確認した事実と、確かめ方だけを置く。

何が起きるか

エージェント(Mini)が持つMCPクライアントの接続は、起動時に取得したツール一覧を保持したまま動く。設定ファイルを書き換えても、その接続は自動では作り直されない。

設定ファイルを書き換えtoolFilter.includeに追加稼働中のMCP接続古いツール一覧を保持新ツールは「存在しない」扱いopenclaw mcp reload を実行MCP接続を破棄して作り直すprobeが新しい一覧を返す
設定ファイルの書き換えと、稼働中の接続への反映は別。reloadで明示的に作り直すまで、新しいツールは無いものとして扱われる。
  • 反映されない状態で依頼すると、エージェントは新しいツールを呼べない。 「できません」と正直に返るとは限らない
  • 今回の実機では、呼べないはずのjoin_videosを「実行して保存した」と報告してきた。 実際には、頼まれた操作(結合)をせず、渡された動画をそのまま個別に保存しただけだった。エージェントは自分がツールを呼べていないことを認識しておらず、依頼文の意図(1本にする)を字面だけでそれらしく完了報告した

直し方

# 設定ファイル(toolFilter.include等)を書き換えた後、必ず実行する
openclaw mcp reload

reload後、probe(ツール一覧の取得)を呼んで、期待するツール数が返るかを確認する。今回の例では、4ツール(状態確認・生成・ダウンロード・join_videos)が返ることを確かめてから、次の依頼を出した。

報告を信じず、実行結果そのものを確かめる

reload前後どちらも、Miniの応答文だけでは区別できなかった。区別できたのは、生成物そのものを見たときだけだった。

確認方法reload前reload後
Miniの応答文「連結して保存しました」「連結して保存しました」
保存されたファイル数3本(個別)1本
結合後の尺—15.5秒
Windows側の元ファイルとのsha256一致対応するファイルなし一致

応答文だけを見た1回目は「完了」に見えた。エージェントの完了報告は、実行の証拠にならない。 ファイル数・尺・ハッシュ値のような、生成物側の事実で確かめる。同種の「表示は正常、中身は未検査」という失敗は、スクリプトの検査ロジック側でも起きている(ガードが素通りする書き方)。エージェントの自己申告も、同じ扱いをする。

応答文(reload前後で同一)「連結して保存しました」生成物(reload前)ファイル3本・個別保存sha256: 対応なし生成物(reload後)ファイル1本・15.5秒sha256: 元ファイルと一致応答文は判定材料にならない。左右で異なるのは生成物の側だけ。
reload前後で応答文は変わらなかった。判定は保存されたファイルの数・尺・ハッシュ値で行う。

副作用: 登録した人物の外見を取り違えることがある

今回の機能(登録済みキャラクター)と組み合わせたテストで、もう1つ見つかった。女性として登録した人物mioについて、ある場面でエージェントがA man ...という説明文を書いた。登録名から性別・外見を正しく引けているとは限らない。ツールの説明文に「登録された外見の説明に沿って書く」という指示を足して対応した。

関連

WIKI一覧へ