MCPツール反映漏れ
MCPサーバー(例: 動画生成MCP)に新しいツールを足し、openclawの許可リスト(mcp.servers.<name>.toolFilter.include)にも名前を追加した。それだけでは、すでに稼働しているエージェントには反映されない。
経緯は開発日記の「連結しました」は嘘だったにある。ここには、確認した事実と、確かめ方だけを置く。
何が起きるか
エージェント(Mini)が持つMCPクライアントの接続は、起動時に取得したツール一覧を保持したまま動く。設定ファイルを書き換えても、その接続は自動では作り直されない。
- 反映されない状態で依頼すると、エージェントは新しいツールを呼べない。 「できません」と正直に返るとは限らない
- 今回の実機では、呼べないはずの
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回目は「完了」に見えた。エージェントの完了報告は、実行の証拠にならない。 ファイル数・尺・ハッシュ値のような、生成物側の事実で確かめる。同種の「表示は正常、中身は未検査」という失敗は、スクリプトの検査ロジック側でも起きている(ガードが素通りする書き方)。エージェントの自己申告も、同じ扱いをする。
副作用: 登録した人物の外見を取り違えることがある
今回の機能(登録済みキャラクター)と組み合わせたテストで、もう1つ見つかった。女性として登録した人物mioについて、ある場面でエージェントがA man ...という説明文を書いた。登録名から性別・外見を正しく引けているとは限らない。ツールの説明文に「登録された外見の説明に沿って書く」という指示を足して対応した。
関連
- 開発日記: 「連結しました」は嘘だった — この日の通しテストの記録
- ガードが素通りする書き方 — 「表示は正常、中身は未検査」の同系統の失敗(検査スクリプト側)