セッションログで AI のツール呼び出しを検出するときは、ツール名の完全一致でなく MCP prefix を前提に suffix 照合する
MCP
AI協働
ログ解析
知識
運用
AI セッションの転写(JSONL 等)から特定のツール呼び出し(知見保存ツール等)を検出するとき、call エントリ(tool_use / function_call)の name を裸のツール名と完全一致で見ると実データでほぼ拾えないことがある。クライアント(MCP 経由)はツール名にサーバー prefix を付けて記録するためで、同じツールが mcp__<server>__<tool> の形で現れる(実測: あるツールは prefix 付き 768 件に対し裸名 2 件だけだった)。
判定
- 裸名の完全一致に加えて、
__区切りの suffix 一致(name === TOOL または name.endsWith('__' + TOOL))も受理する。單なる substring 包含ではなく suffix にする(別ツールの誤ヒットを避ける)。 - 文字列 grep ではなく call エントリの形状(tool_use / function_call payload)で判定する:ツール定義・指示文にもツール名が現れるため。
- クライアントごとに prefix の有無・形式が違う(同じツールでも一方は裸名、他方は prefix 付き)ので、両形式を拾える判定にする。
検証
実コーパスで prefix 付きと裸名の分布を集計し、完全一致のみの対照実装が prefix 付き fixture を検出できずに落ちることを確認する(検知器なら故意ずれ検体で)。裸名完全一致のままだと、検出はテストで green のまま実データでは系統的に false になる嬉れない不具合になる。