MCP vs ファンクションコーリング
MCPはLLMアプリケーションと外部ツール・データソースの接続方法を標準化するオープンプロトコル、Function CallingはLLMが構造化された関数呼び出しを出力する仕組み。抽象化のレイヤーが異なり、両者は代替関係ではなく組み合わせて使われる。
3行で違いを説明
- Function Callingは、LLMが「どの関数をどんな引数で呼ぶか」を決めて構造化データとして出力する仕組み。
- MCPは、その呼び出し先となるツールやデータソースをどう発見・提供・接続するかを標準化する、より上位のプロトコル。
- 実際のエージェント開発では、LLM自体はFunction Calling(Tool Calling)でツール利用を判断し、MCPがそのツールの提供・接続方法を統一する、という組み合わせで使われることが多い。
Comparison Table
| Item | MCP | ファンクションコーリング |
|---|---|---|
| Purpose | 外部ツール・データソースとの接続方法の標準化 | LLMによる関数呼び出し内容の構造化出力 |
| Developer | Anthropic | OpenAI(概念は他ベンダーにも普及) |
| Release | 2024年11月 | 2023年6月 |
| License | オープン標準(仕様・SDKはオープンソース) | 該当なし(API機能) |
| Open Source | MCP仕様・SDKはオープンソース | 機能自体はクローズドAPIの一部 |
| API | MCPサーバー/クライアントの独自プロトコル(JSON-RPC) | Chat Completions API等のリクエストパラメータとして提供 |
| Programming Language | 各言語向けSDKが提供される(Python/TypeScript等) | 特定言語に依存しない(API仕様) |
| Ecosystem | MCPサーバーのエコシステムが急速に拡大中(FastMCP等) | ほぼ全ての主要LLMベンダーが同様の機能を提供 |
Architecture
Feature Comparison
| Feature | MCP | ファンクションコーリング |
|---|---|---|
| 複数ツールの動的発見 | ○ | 事前定義した関数リストに限定 |
| 複数アプリからの再利用性 | ○ | — |
| 標準化されたプロトコル | ○ | ベンダーごとに実装が異なる |
| リモートサーバーへの対応 | ○ | 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が標準化する。
参考文献
- Official WebsiteModel Context Protocol
- DocumentationOpenAI: Function calling