Zilmac ブログ
← 技術ノートに戻る

2026 AI Agent 技術スタック:GPT・Gemini・Claude・MCP・Function Calling・JSON Schema の協調

Agent スタック ·約 14 分

Mac 上で GPT・Gemini・Claude のツール呼び出しと MCP・JSON Schema を一つの AI Agent ランタイムに接続する開発者

2026 年の AI Agent 議論は、もはや「GPT・Gemini・Claude のどれか」ではありません。本番可否を決めるのは、モデルが Function Calling で構造化リクエストを出す方法、JSON Schema が引数を縛る方法、MCP がツールとコンテキストをランタイムへ挿す方法です。この三層が揃って初めて、監査でき、モデルを差し替えられるスタックになります。

チャットボットを実行可能な Agent に上げるチーム向けに、責務の切り方、一回分のツールループ、クラウド Mac 上のビルドツール境界を整理します。コストは OpenRouter 上の Claude / GPT / Gemini 料金、ワークスペース隔離は Agent 仮想ファイルシステム、セッションを跨ぐ状態は Agent Memory 比較を参照してください。

3
モデル層:GPT · Gemini · Claude(差し替え可能な推論エンジン)
1
契約層:Function Calling + JSON Schema
MCP
スロット層:ツール・リソース・プロンプトの標準転送

まずスタックを分解する:モデルが全体ではない

Agent を「話すモデル」と捉えると、信頼性を支える三層を見落とします。

  1. 推論エンジン:GPT、Gemini、Claude。計画、ツール選択、観測の解釈。
  2. 呼び出し契約:Function Calling(tool use)と JSON Schema。「何を呼べるか、引数の形」。
  3. ランタイムスロット: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 は高リスクなコード変更で、越権呼び出しをより慎重に拒否したい経路に向く。

本番では単一モデル信仰よりルーティングが普通です。計画は強い推論、大量の構造化抽出は安いモデル、機微な書き込みは確認付きの保守的な枠。料金分解は マルチモデルコスト比較。

エンジニアが GPT・Gemini・Claude のツール呼び出しと MCP サーバーを一つの Agent ランタイムに接続している
典型構成:ユーザー意図 → モデル計画 → JSON Schema 検証付きツール呼び出し → MCP / ローカル実行 → 観測をコンテキストへ戻す

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 を出す」。典型的な順序は次です。

  1. ユーザー意図。ホストが方針を注入(証明書禁止、本番シークレット禁止)。
  2. モデルがツール一覧を読む(静的登録または MCP list_tools)。
  3. fetch_ci_log の Function Call。引数は JSON Schema 検証。
  4. 実行器がサンドボックスまたは クラウド Mac でログを取得。過大な出力は VFS へ。
  5. 結果を戻し、モデルが apply_patch。書き込みは確認か読み取り専用 diff。
  6. 「前回 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 関数サンドボックスには向きません。

実務的な分割:

  1. 対話と計画:任意クラウド上の GPT / Gemini / Claude。
  2. リポジトリ I/O:VFS または MCP filesystem、パス許可リスト。
  3. 実ビルドと実機: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 プランを見る

期間限定

Zilmac

クラウド Mac・リモート開発・Mac VPS で iOS / クロスプラットフォームチームを支援。

ホームへ
期間限定 プランを見る