Re Reference AI

MCP vs ファンクションコーリング

MCPはLLMアプリケーションと外部ツール・データソースの接続方法を標準化するオープンプロトコル、Function CallingはLLMが構造化された関数呼び出しを出力する仕組み。抽象化のレイヤーが異なり、両者は代替関係ではなく組み合わせて使われる。

MCPファンクションコーリング

3行で違いを説明

  • Function Callingは、LLMが「どの関数をどんな引数で呼ぶか」を決めて構造化データとして出力する仕組み。
  • MCPは、その呼び出し先となるツールやデータソースをどう発見・提供・接続するかを標準化する、より上位のプロトコル。
  • 実際のエージェント開発では、LLM自体はFunction Calling(Tool Calling)でツール利用を判断し、MCPがそのツールの提供・接続方法を統一する、という組み合わせで使われることが多い。

Comparison Table

ItemMCPファンクションコーリング
Purpose外部ツール・データソースとの接続方法の標準化LLMによる関数呼び出し内容の構造化出力
DeveloperAnthropicOpenAI(概念は他ベンダーにも普及)
Release2024年11月2023年6月
Licenseオープン標準(仕様・SDKはオープンソース)該当なし(API機能)
Open SourceMCP仕様・SDKはオープンソース機能自体はクローズドAPIの一部
APIMCPサーバー/クライアントの独自プロトコル(JSON-RPC)Chat Completions API等のリクエストパラメータとして提供
Programming Language各言語向けSDKが提供される(Python/TypeScript等)特定言語に依存しない(API仕様)
EcosystemMCPサーバーのエコシステムが急速に拡大中(FastMCP等)ほぼ全ての主要LLMベンダーが同様の機能を提供

Architecture

MCP

ツール・データを提供する「MCPサーバー」と、それを利用する「MCPクライアント(LLMアプリ)」から構成され、JSON-RPCベースの共通プロトコルでやり取りする。

ファンクションコーリング

LLMへ関数定義(名前・説明・JSON Schema)を渡し、モデルが呼び出すべき関数名と引数をJSON形式で出力する。

Feature Comparison

FeatureMCPファンクションコーリング
複数ツールの動的発見事前定義した関数リストに限定
複数アプリからの再利用性
標準化されたプロトコルベンダーごとに実装が異なる
リモートサーバーへの対応APIを通じた呼び出しが基本

Advantages

MCP

  • 一度実装したMCPサーバーを、複数の異なるLLMアプリケーションから再利用できる
  • ツール・データ連携の実装が標準化され、開発・保守の重複を減らせる

ファンクションコーリング

  • LLMの出力を、プログラムが安定して解釈できる構造化データとして得られる
  • 既存のAPIや社内システムの関数をそのままLLMから呼び出せるように統合しやすい

Disadvantages

MCP

  • 標準化されたプロトコルである分、特殊な連携要件への対応は独自実装より柔軟性に欠けることがある
  • 比較的新しい仕様であり、エコシステムやセキュリティのベストプラクティスが発展途上の部分がある

ファンクションコーリング

  • 引数のスキーマ定義や関数の説明文の質が、呼び出し精度に大きく影響する
  • 定義する関数の数が増えるほど、必要な関数の選択を誤りやすくなる

Best Use Cases

MCP

複数のLLMアプリケーションから同じツール・データソースを再利用したい場合や、サードパーティ製のツールを標準化された方法で組み込みたいエージェント開発。

ファンクションコーリング

単一のアプリケーション内で、あらかじめ決まった少数の関数(社内API呼び出し等)をLLMに使わせたいシンプルなケース。

Migration

既存のFunction Calling実装をMCPへ移行する場合、個々の関数定義をMCPサーバーのツール定義として再実装し、LLMアプリケーション側はMCPクライアントとして接続する構成に変更する。LLM自体がどの関数を呼ぶか判断する部分はFunction Calling(Tool Calling)の仕組みに委ねられる点は変わらない。

FAQ

MCPを使えばFunction Callingは不要になる?

いいえ。両者は代替関係ではなく補完関係にある。LLMがどの関数を呼ぶか判断する部分はFunction Calling(Tool Calling)が担い、その関数(ツール)をどう提供・接続するかをMCPが標準化する。

参考文献