2026 年の AI Agent 議論は、もはや「GPT・Gemini・Claude のどれか」ではありません。本番可否を決めるのは、モデルが Function Calling で構造化リクエストを出す方法、JSON Schema が引数を縛る方法、MCP がツールとコンテキストをランタイムへ挿す方法です。この三層が揃って初めて、監査でき、モデルを差し替えられるスタックになります。
チャットボットを実行可能な Agent に上げるチーム向けに、責務の切り方、一回分のツールループ、クラウド Mac 上のビルドツール境界を整理します。コストは OpenRouter 上の Claude / GPT / Gemini 料金、ワークスペース隔離は Agent 仮想ファイルシステム、セッションを跨ぐ状態は Agent Memory 比較を参照してください。
まずスタックを分解する:モデルが全体ではない
Agent を「話すモデル」と捉えると、信頼性を支える三層を見落とします。
- 推論エンジン:GPT、Gemini、Claude。計画、ツール選択、観測の解釈。
- 呼び出し契約:Function Calling(tool use)と JSON Schema。「何を呼べるか、引数の形」。
- ランタイムスロット:Model Context Protocol(MCP) がファイルシステム、リポジトリ、ブラウザ、内部 API をホストへ標準接続します。
2025–2026 年の合意は、モデルは替えてよいが、契約とスロットは安定させることです。ベンダー固有の関数名に業務を縛らず、ツール一覧・Schema・実行サンドボックスで設計します。
GPT・Gemini・Claude の役割分担
三社ともツール呼び出しはできます。差は主に既定の文体、マルチモーダル入口、長文脈、危険な呼び出しへの慎重さであり、「function call の有無」ではありません。
- GPT:ツールループの文書が成熟。OpenAI Function Calling と Responses / Chat Completions の生態系が大きく、既定のオーケストレータやゲートウェイ向き。
- Gemini:マルチモーダルと長文脈が強い。公式 Function Calling は文書・スクリーンショット・リポジトリツリーを同時に渡す Agent に向く。
- Claude:コード/コンピュータ操作での tool use が安定。Anthropic tool use は高リスクなコード変更で、越権呼び出しをより慎重に拒否したい経路に向く。
本番では単一モデル信仰よりルーティングが普通です。計画は強い推論、大量の構造化抽出は安いモデル、機微な書き込みは確認付きの保守的な枠。料金分解は マルチモデルコスト比較。
Function Calling:世界への正規インターフェース
Function Calling の本質は「モデルが関数を実行すること」ではなく、約定に沿った呼び出し意図を出し、ホストが実行可否を決めることです。
- モデル:ツール名の選択、引数の充填、観測に基づく再計画。
- ホスト:認証、レート制限、検証、実 I/O、結果のメッセージ列への編入。
フィールド名は違いますが(tools / function / input_schema)、ループは同じです。ツール宣言 → tool call → 実行 → tool result → 再推論。シェル文字列を「ツール」にしないでください。Schema を迂回し、注入リスクをプロンプトに押し付けます。
実装の下限
- ツール名は安定、副作用の種類は一つ。
- 読み取りと書き込みを分離。書き込みは確認またはサンドボックスが既定。
- 結果に
call_idを残し、監査と再試行に使う。
JSON Schema:ツールの型システム
Agent スタックにおける JSON Schema はコンパイル時の型 + 実行時検証です。必須欠落、enum 逸脱、余分なプロパティは業務ロジックの前に失敗させ、モデルに検証エラーを見せて再試行させます。
各ツールの parameters / input_schema はバージョン管理できる Schema にします(JSON Schema)。プロンプトの「repo と branch を渡して」では足りません。
Schema に書くべき制約
type、required、additionalProperties: falseで幻覚フィールドを減らす。- パス、URL、列挙は
pattern/enum。自由記述を識別子にしない。 - 巨大なログや diff は引数に入れず、ワークスペースへ書いてパスを返す。VFS のオンデマンド読み取りと揃える。
- バージョンは Schema かツール名接尾辞(
deploy_v2)。古い Agent と曖昧な契約を共有しない。
検証はモデル出力の後、副作用の前。システムプロンプトに JSON と書くだけでは本番制御になりません。
MCP:ツールとコンテキストの共通スロット
MCP は Function Calling の上で発見と転送を解きます。ツールはアプリにハードコードせず、MCP Server が tools / resources / prompts を列挙できます。ホスト(Claude Code、IDE Agent、自前オーケストレータ)が標準プロトコルで複数 Server に接続します。
ベンダーごとのプラグイン SDK と比べた価値は次です。
- 着脱可能なツール:Git、ブラウザ、社内チケットを別 Server にし、ホストは接続と権限だけ持つ。
- 参照可能なコンテキスト:リソース URI で巨大ファイルを prompt に丸ごと入れない。
- モデル非依存:同じ MCP カタログを GPT / Gemini / Claude の Function Calling 層へ渡せる。
実装では MCP ツールを JSON Schema 付き function 宣言へ写し、ホストでパス許可リストを掛けます。MCP 自体はセキュリティ境界ではなく標準プラグです。サンドボックス、秘密情報、監査はホスト側に残します。
一連のループ:意図からツール結果まで
例:「失敗した iOS ビルドログから修正 PR を出す」。典型的な順序は次です。
- ユーザー意図。ホストが方針を注入(証明書禁止、本番シークレット禁止)。
- モデルがツール一覧を読む(静的登録または MCP
list_tools)。 fetch_ci_logの Function Call。引数は JSON Schema 検証。- 実行器がサンドボックスまたは クラウド Mac でログを取得。過大な出力は VFS へ。
- 結果を戻し、モデルが
apply_patch。書き込みは確認か読み取り専用 diff。 - 「前回 Profile が期限切れ」などは Memory へ。Schema 引数に詰め込まない。Memory 選定。
失敗は検証失敗・権限拒否・タイムアウトなどの構造化エラーにします。自然文だけだと再試行が当てずっぽうになります。
対照表と選定
| 層 | 担うこと | 担わないこと | 2026 年の典型 |
|---|---|---|---|
| GPT / Gemini / Claude | 計画、ツール選択、観測の説明 | 実 I/O、認可 | タスク別にルーティングし、差し替え可能にする |
| Function Calling | 意図を id 付きツール要求にする | 業務の権限モデル | 各社 tool use、ホストで一系統に合わせる |
| JSON Schema | 引数の形、必須、列挙 | 実行時副作用 | 版付き Schema、実行前検証 |
| MCP | ツール/リソース発見と標準転送 | サンドボックスと秘密管理の代替 | システム種別ごとに Server + ホスト方針 |
本番:検証・権限・失敗時の退避
接続後、公開前に少なくとも四つの関門を通します。
- Schema 敵対テスト:欠落・余剰・不正 enum。ホストが拒否し、モデルがエラーから直せるか。
- 越権ツール:一覧にない名前、古い MCP Server、偽造
call_idは必ず失敗。 - 副作用の隔離:ビルド、署名、デプロイを会話プロセスから分離。Agent は既定で本番資格情報を持たない。
- 可観測性:ツール名、Schema 版、レイテンシ、成功/検証失敗/権限失敗を記録。
OWASP は過剰権限とプロンプト注入を LLM アプリの中核リスクに挙げます。「モデルが呼べと言ったから実行」は方針になりません。OWASP LLM Top 10 を監査の錨にできます。
クラウド Mac で Agent ツールチェーンを動かす
iOS / クロスプラットフォームでは、MCP に xcodebuild、シミュレータ、証明書寄りのツールが現れます。これらはmacOS と Apple ツールチェーンに紐づくため、汎用 Linux 関数サンドボックスには向きません。
実務的な分割:
- 対話と計画:任意クラウド上の GPT / Gemini / Claude。
- リポジトリ I/O:VFS または MCP filesystem、パス許可リスト。
- 実ビルドと実機:Zilmac クラウド Mac 上の制御された MCP Server または CI。秘密はビルド機に残す。
モデルスタックは替えられ、Schema と MCP カタログは安定し、Apple 側の副作用はノート PC ではなく回収可能なクラウド Mac セッションに落ちます。
よくある質問
Function Calling と MCP は重複しますか?
しません。Function Calling はモデルがツール要求を出す方法、MCP はホストがツール/リソースを発見して接続するプロトコルです。MCP の各 tool は Function Calling 宣言に写ります。
三社のモデルを全部つなぐ必要がありますか?
不要です。まず一社で契約と MCP を安定させ、同じ Schema で二社目をルーティングします。評価のために三社つなぐと、未検証のツール面だけが広がります。
JSON Schema はシステムプロンプトだけでもよいですか?
唯一の制御にしてはいけません。プロンプトは引数充填の補助、不正引数の拒否はホスト検証器で行います。注入やドリフトがバックエンドへ直撃します。
特定ベンダー API へのロックインをどう避けますか?
内部では「ツール名 + JSON Schema + 実行結果」に統一し、GPT / Gemini / Claude はアダプタにします。MCP Server は同一カタログをホストへ出し、課金とフェイルオーバーはゲートウェイに置きます。
モデルは替えられる。ビルド機は曖昧にできない
GPT・Gemini・Claude を同じ Function Calling と MCP 契約に載せたあとも、iOS 納品を止めるのは Apple ツールチェーンです。Zilmac クラウド Mac は制御された実行端になります。Agent は Schema の下でタスクを出し、署名と xcodebuild は隔離された macOS で完了します。
実機 Mac を自前で持たなくても、監査可能なビルドスロットを Agent に渡せます。 — クラウド Mac プランを見る