この章の答え
外部ツールを発見し、呼び出せる形に対応付け、結果を Agent Loop へ返す。
外部サービスのツールも、モデルから見れば名前と入力の仕様を持つ道具です。ただし実行先は別のサーバーにあります。ツール一覧の取得と、実際の一回の呼び出しを分けて追います。
01|図でつかむ
発見に成功しても、呼び出し・認証・結果処理の確認は別に必要。
02|3つのポイントで理解する
1. ツールの存在を知る
接続先から利用できるツールの情報を受け取ります。McpRuntime 周辺を読み、接続とツール一覧の取得がどの状態で管理されるかを見ます。
2. 内部の呼び出しへ橋を架ける
McpBinding や Handler は、内部のツール呼び出しと外部サーバーの操作を結びます。同じような名前のツールがある場合、どの接続先を使うかが重要になります。
3. 成功と失敗を結果として戻す
外部呼び出しには通信、認証、ツール自身の失敗があります。どこで失敗したかを保持して返せば、Agent Loop は結果に応じて次の判断を行えます。
03|ソースで確かめる
以下の検索は Codex リポジトリのルートで実行します。最初に対象 commit を記録し、検索結果から定義と呼び出し元を一つずつ開いてください。
git rev-parse --short HEAD
rg -n "McpRuntime|McpBinding" codex-rs
読む入口: codex-rs/codex-mcp/src/runtime.rs 。リンク先は照合に使った固定 commit のファイルです。手元の版と異なる場合は、上の検索語から探し直します。
小さく試す
読み取り専用のツールを一つ選び、一覧の名前、呼び出し先、返った結果の三点を対応付けます。
04|30秒で復習
- 発見と実行を分ける。
- Binding が内部と外部の対応を持つ。
- 通信・認証・操作の失敗を区別する。