MCPと関数呼び出し:アーキテクチャとユースケース

MCPと関数呼び出し

Scrapeless Agent BrowserはMCPサーバーを介して公開され、互換性のあるエージェントホストがブラウザ機能を発見できる一方で、モデル向けの関数呼び出しメカニズムはツールを選択することがあります。

TL;DR

  • MCPと関数呼び出しは異なる層に存在します。 MCPはホストが機能サーバーに接続する方法を標準化し、関数呼び出しはモデルのツール利用要求を構造化します。
  • 彼らは一般的に一緒に機能します。 ホストはMCPツールを発見し、ネイティブのツール呼び出しを介してモデルに選択したスキーマを提示できます。
  • 関数呼び出しはコードを実行しません。 アプリケーションは要求された関数を検証して実行し、その結果を返します。
  • MCPはツール以上のものを提供します。 プロトコルはリソース、プロンプト、ライフサイクルの動作、および輸送ルールも定義します。
  • セキュリティはホストの責任のままです。 ディスカバリーは信頼と等しくなく、モデル選択は認可と等しくありません。

MCPと関数呼び出し:直接的な答え

関数呼び出しはモデル向けのインタラクションパターンです:アプリケーションはツールスキーマを提供し、モデルは構造化された呼び出しを返し、アプリケーションコードがそれを実行します。モデルコンテキストプロトコルはホストとクライアントがツール、リソース、およびプロンプトを公開するサーバーに接続するためのアプリケーション統合プロトコルです。

メカニズムは相補的です。MCPはエージェントホストと外部機能サーバー間のディスカバリーと呼び出しを標準化できる; その後、ホストはその機能の承認されたサブセットをモデルに対してプロバイダーの関数呼び出しフォーマットを使用して公開できます。

MCPと関数呼び出しの間の有用な境界は責任の単位です。1つのオプションはデータフォーマット、プロトコル、モデル、または自動化ライブラリを定義する可能性がありますが、もう1つはMCPと関数呼び出しの文脈でそれを取り巻くワークフローを定義します。異なる層を代替として扱うことは弱いアーキテクチャの決定をもたらします:チームはラベルを比較し、実行の境界を見逃し、両方のコンポーネントがMCPと関数呼び出しの文脈で必要だったことを後で発見します。健全な比較は、各オプションが受け取るもの、変更するもの、返すもの、そしてMCPと関数呼び出しの文脈で周囲のシステムを操作する人物を示します。

MCPと関数呼び出しについての実装決定には、必要な出力と許可された失敗モードから始めます。MCPと関数呼び出しの文脈でテクノロジーを選択する前に、フレッシュネス、レイテンシ、決定性、ブラウザカバレッジ、データ所有、可観察性、メンテナンスの期待を記録します。この選択はそれらの期待に対してテスト可能であるべきです。馴染みのあるツールは自動的に正しいツールではなく、新しい抽象化は自動的にアップグレードでもありません。小さな決定論的コンポーネントがすでに契約を満たしている場合は特にそうです。

MCPと関数呼び出しの概要

最も重要な行は各メカニズムが標準化する統合境界です。

次元関数呼び出しMCP
境界アプリケーションとモデルAPIホスト/クライアントと機能サーバー
ディスカバリーアプリケーションがスキーマを提供するクライアントがサーバー機能をリストする
実行アプリケーションがカスタムコードを実行するクライアントがサーバーメソッドを呼び出す
追加する表面プロバイダー固有のツール機能ツール、リソース、プロンプト、ライフサイクル
移植性モデルプロバイダーAPIに依存する互換性のあるホストとサーバー間の共有プロトコル

比較マトリックスはMCPと関数呼び出しを具体的にします。なぜなら、各行はマーケティングの形容詞ではなく、運用上の結果を説明するからです。行をワークロードの外側から読みます:まず入力と期待される結果を特定し、その後、MCPと関数呼び出しの文脈で制御フロー、状態、移植性、および運用コストを検査します。行は実際の要件が変更される場合にのみ重要です。たとえば、広範な言語サポートはポリグロット組織にとって価値がありますが、すでにブラウザランタイムを所有している小さなTypeScriptサービスには無関係です。

2つのメカニズムを「ツール」と呼ぶと混乱が生じます。なぜなら、一方はモデルがアクションを要求する方法を説明し、もう一方はソフトウェアが機能を取得し呼び出す方法を説明するからです。ホスト、モデルAPI、MCPクライアント、MCPサーバー、そして下流サービスを別々のボックスとして描きます。

MCPと関数呼び出しが一緒に機能する方法

MCPクライアントはサーバーに接続し、サポートされている機能を交渉し、ツール定義を取得します。ホストは、モデルコンテキストに配置する前に、これらの定義をフィルタリングまたは適合させます。

モデルが関数またはツール呼び出しを返すと、ホストは名前と引数を検証し、呼び出しをMCPツールにマッピングし、サーバーにプロトコルリクエストを送信します。結果はホストを通じて再び移動し、モデル入力になります。この翻訳により、1つのサーバーが複数のホストと連携できる一方で、各ホストはモデルプロバイダーの詳細、承認、およびコンテキスト管理を制御できます。

MCPと関数呼び出しのプロダクションデザインは、これらの内部段階をログとメトリクスで公開する必要があります。選択されたパス、パスに供給された入力、返されたアーティファクトのアイデンティティ、および検証結果をMCPと関数呼び出しの文脈で記録します。ステージレベルの証拠なしで成功したネットワークリクエストは空のデータを隠すことができ、流暢なモデル応答は欠落したツール呼び出しを隠す可能性があり、ブラウザスクリプトはMCPと関数呼び出しの文脈で間違ったページへのナビゲーションを隠すことができます。可視性は意味が変わる境界に属します。

関数呼び出し、MCP、またはその両方を使用する場合

システム内のクライアント、サーバー、所有権の境界からメカニズムを選択してください。

直接的な関数呼び出しを使用する

1つのアプリケーションは小さなローカル関数のセットを所有し、再利用可能なサーバー境界は必要ありません。

MCPを使用する

機能は発見可能でなければならず、いくつかの互換性のあるホスト間で再利用できるか、別のチームによって維持される必要があります。

両方を使用する

ホストはMCPツールを発見し、モデルはネイティブツール呼び出しを通じて承認されたサブセットの中から選択します。

どちらも使用しない

モデルの決定が必要ない場合、決定論的なアプリケーション呼び出しは明確です。

上記のケースは出発点であり、永久的なラベルではありません。データソース、ブラウザマトリックス、モデルの動作、コンプライアンス境界、またはチームの所有権が変更された場合、MCPと関数呼び出しを再評価してください。プロトタイプはセットアップ速度を最適化することが多いですが、製品システムはMCPと関数呼び出しの文脈において証拠、アクセス制御、予測可能な失敗、サポート性を最適化する必要があります。選択を短い決定記録に記録して、次の移行が原則に基づいて行われるようにしてください。

MCPは、ローカル関数に必要のないプロトコル、プロセス、輸送、および信頼の境界を導入します。これらの境界は再利用性と相互運用性を生み出しますが、ライフサイクル管理、スキーマガバナンス、サーバーのアイデンティティ、および権限レビューも必要とします。

MCPとツール呼び出しの誤り

ほとんどの統合の欠陥は、発見、選択、および認証を1つのステップに圧縮することから来ます。

  • 発見されたツールを信頼されたものとして扱う。 ホストはサーバーのアイデンティティ、構成、および許可された機能の範囲を確認する必要があります。
  • すべてのツールをモデルに送信する。 大規模なツールセットはコンテキストコストと選択の曖昧さを増加させます。タスクとユーザーの権限でフィルタリングしてください。
  • 引数の検証をスキップする。 構造化された出力は形を狭めますが、セマンティックな安全性や認証を証明するものではありません。
  • 曖昧な記述で副作用を隠す。 ツールの名前や説明は、読み込み、書き込み、コスト、および外部コミュニケーションを明確にする必要があります。
  • 信頼できないコンテンツを指示として返す。 ツールの出力はデータであり、プロンプトインジェクションや誤解を招く制御テキストを含む可能性があります。

各MCP対関数呼び出しの落とし穴は観察可能なチェックにマッピングする必要があります。最終ページまたはソースのアイデンティティを検証し、ステータスコードを信頼するのではなく必要なフィールドを検査し、結果を生成した正確な構成を保持し、MCPと関数呼び出しの文脈における取得と変換を分離します。これにより、ツールに関する議論が失敗した契約に関する診断に変わります。また、広範な変更が最初の破損した境界を隠すことを防ぎます。

セキュリティとコンプライアンスはMCPと関数呼び出しの設計の内部に保持してください。承認された公開ソースを使用し、適用される条件とクローラーの設定を尊重し、保持データを最小限に抑え、MCPと関数呼び出しの文脈でログとコンテンツの外部に資格情報を保持してください。技術的に有能なブラウザ、スクレーパー、エージェント、またはAPIクライアントは、許可を与えるものではありません。オペレーターはターゲット範囲、データ処理、ワークロードの制限、およびMCPと関数呼び出しの文脈での重要な行動に対する人間の承認に対して責任を持ち続けます。

統合境界を設計する

アダプタコードを書く前にシステムをマッピングし、各信頼の決定に明示的な所有者を持たせます。

  1. ユーザーの目標をリストし、どのアクションが本当にモデルの選択を必要とするかを特定します。
  2. 狭いスキーマと明確な副作用を持つローカル関数またはMCPサーバー機能を定義します。
  3. サーバーを認証し、機能をユーザーとワークスペースの権限にバインドします。
  4. モデルコンテキストに入る前にツールセットをフィルタリングします。
  5. 要求された引数をすべて検証し、重要なアクションに承認を要求します。
  6. プロトコルエラー、ツールエラー、拒否されたアクション、および無効な結果を別々に分類します。

プラットフォーム全体の移行にコミットする前に、小規模な代表的なコーパスを使用してMCPと関数呼び出しの評価を実施します。通常のケース、欠落フィールドのケース、関連する動的またはステートフルなケース、意図的に無効な制御を含めます。無効な制御は重要です:通過する場合、受け入れテストはMCPと関数呼び出しの文脈での正確性よりも輸送を測定しています。証拠を決定記録のそばに保持し、将来のバージョン変更がMCPと関数呼び出しの文脈で同じワークロードに対して評価できるようにします。

契約テストは、広告されたスキーマ、ホストアダプタ、サーバーの実際の検証を比較する必要があります。発見に表示されるが、文書化された入力を拒否するツールは、相互運用可能な機能ではありません。

MCPツールスタックで測定すべきこと

プロトコルの成功は、役立つツール呼び出しの最初の層に過ぎません。

信号測定すべきことなぜ重要か
発見予想される機能名とスキーマバージョンサーバーまたはアダプタのドリフトを検出します。
選択タスクに適したツールが選ばれます。モデル指向の品質を測定します。
認証許可された、拒否された、そして承認が必要な呼び出しポリシーの施行を測定します
実行有効な結果、ツールエラー、およびレイテンシーサーバーの信頼性を測定します

MCPと関数呼び出しの比較を行うユーザーが価値を受け取るレイヤーで測定します。フレームワークの起動時間、トークン数、または応答ステータスは役立つ診断かもしれませんが、どれもMCPと関数呼び出しの文脈で出力が正しいことを証明するものではありません。オペレーショナルメジャーを意味的な受け入れとペアにします:期待されるレコード数、サポートされる引用、必要なブラウザ状態、スキーマに準拠した文書、またはMCPと関数呼び出しの文脈で確認されたアクション。失敗をカテゴリ別に保存し、チームが入力、制御フロー、実行、または検証によって品質が制限されているかどうかを確認できるようにします。

主要な参照が比較の基盤となります: モデルコンテキストプロトコルツール仕様, OpenAI Responses APIツール定義、および JSON-RPC 2.0仕様。これらのソースは技術自体を定義しています。これは、MCPと関数呼び出しの文脈で比較ページ間でコピーされたフィーチャーテーブルよりも強力な証拠です。バージョン固有の詳細は、実装がアップグレードされたときに再確認する必要があります。

MCPはシステムを接続します;関数呼び出しはモデルをガイドします

関数呼び出しを使用してモデルの要求されたアクションを構成し、MCPを使用して再利用可能な能力サーバーを標準化し、ホストがポータブルな統合とモデル指向のツール選択を必要とする場合は両方を使用します。

MCPと関数呼び出しの比較の実際的な結果は境界であり、普遍的な勝者ではありません。現在の契約を満たす最小のシステムを選択し、意味が変わる場所で計器を設置し、MCPと関数呼び出しの文脈でまだ存在しない要件に対してアップグレードパスを保持します。ワークロードが管理されたレンダリングやエージェント制御のブラウザセッションを必要とする場合、エージェントブラウザはその実行レイヤーを提供できますが、アプリケーションはMCPと関数呼び出しの文脈で目標、スキーマ、および受け入れチェックの所有権を保持し続けます。

エージェントにブラウザツールを与える準備はできましたか?

選択したホストを通じてエージェントブラウザを接続し、機能フィルタリング、承認、および検証を明示的に保持します。

今日サインアップして $5の無料クレジットを得るクレジットカードは不要です.

あなたの$5クレジットを請求する →

FAQ

MCPは関数呼び出しの代替ですか?

いいえ。MCPと関数呼び出しは異なる境界を扱い、一般に1つのホストにまとめられます。

関数呼び出しは関数を実行しますか?

いいえ。モデルは構造化されたリクエストを返します。アプリケーションコードは、結果を検証、認可、実行、および返す必要があります。

MCPはLLMを必要としますか?

いいえ。MCPはアプリケーションプロトコルです。クライアントはモデルがアクションを選択することなく、決定論的に能力をリストし、呼び出すことができます。

MCPツールは自動的に安全ですか?

いいえ。ツールのメタデータとサーバーの発見は信頼を確立しません。ホストは認証、権限、承認ルール、引数の検証、および出力の処理を必要とします。

ローカル関数はMCPよりも簡単な場合はいつですか?

ローカル関数は、1つのアプリケーションが小さな能力セットを所有し、再利用可能なサーバーやホスト間の統合が不要な場合に簡単です。

参考文献