目次

AIエージェントが外部のツールやサービスと連携するとき、その橋渡しをする技術として「Function Calling」と「MCP(Model Context Protocol)」が広く使われている。どちらも「LLMにツールを呼び出させる」という目的のためにあるが、設計思想と適用場面が異なる。

Function Callingの仕組み

Function Calling(OpenAIではToolsとも呼ばれる)は、特定のLLMプロバイダーが提供するAPIの機能として実装されたツール呼び出しの仕組みだ。

基本的な動作は以下の通りだ。開発者はツールをJSON Schema形式で定義し、APIリクエストに含める。LLMはユーザーの要求を分析し、ツールを呼び出すべきと判断した場合、ツール名と引数を構造化されたJSON形式で返す。アプリケーション側でそのJSONを解析し、実際の関数を呼び出す。実行結果をLLMにフィードバックし、最終回答を生成させる。

// ツール定義の例
{
  "type": "function",
  "function": {
    "name": "get_weather",
    "description": "指定した都市の天気を取得する",
    "parameters": {
      "type": "object",
      "properties": {
        "city": {
          "type": "string",
          "description": "都市名"
        }
      },
      "required": ["city"]
    }
  }
}

Function Callingの特徴は、アプリケーション固有のツールを柔軟に定義できることだ。開発者が必要なツールをその都度設計・実装する。特定のデータベース操作、社内システムとの連携、ビジネスロジックの実行など、完全にカスタマイズされたツール群を持てる。

MCPの設計思想

MCP(Model Context Protocol)はAnthropicが策定したオープン標準プロトコルで、LLMとツール・データソースを接続するための汎用インタフェースだ。

Function Callingが「アプリケーション内でツールを定義・実装する」のに対して、MCPは「ツールをサーバーとして独立させ、標準プロトコルでLLMと通信する」アーキテクチャを採用している。

MCPの構成は3要素だ。MCPクライアント(LLMアプリケーション)、MCPサーバー(ツールを提供するサービス)、MCPプロトコル(両者の通信規格)。

MCPサーバーはツールの定義と実装を持ち、MCPクライアントからの要求に応じてツールを実行する。重要なのは、一度MCPサーバーを実装すれば、MCPに対応するすべてのクライアント(LLMアプリケーション)から利用できる点だ。

MCPクライアント(Claude等)
    ↕ MCPプロトコル
MCPサーバー(ファイルシステム)
MCPサーバー(データベース)
MCPサーバー(GitHub)

設計思想の違い

Function CallingとMCPの根本的な違いは「誰が何を管理するか」という設計思想にある。

Function Callingは「アプリケーション中心」の設計だ。アプリケーション(LLMクライアント)がツールを所有し管理する。ツールはアプリケーションのコードの一部として実装される。アプリケーションが変われば、ツールの実装も再度行う必要がある。

MCPは「ツール中心」の設計だ。ツールが独立したサーバーとして存在し、複数のアプリケーションから再利用できる。たとえばGitHubのMCPサーバーを一度実装すれば、Claude、その他のMCP対応LLMのすべてから同じサーバーを使えるインフラになる。

もう一つの違いは「リアルタイム性」だ。MCPはサーバーとのステートフルなセッションを維持でき、ツールが長時間実行するタスクや、非同期の更新通知(サーバーからクライアントへのプッシュ)をサポートする設計だ。Function Callingは基本的にステートレスなリクエスト・レスポンス型だ。

適用場面の違い

両者の使い分けは、ユースケースによって明確になる。

Function Callingが適している場面:特定のアプリケーションのロジックに密結合したツール(ビジネスルールの実行、専用データベースへのアクセス等)、迅速なプロトタイピング、シンプルなツール連携、特定のLLMプロバイダーのエコシステム内での開発。

MCPが適している場面:複数のLLMアプリケーション・エージェントから共通して使いたいツール(ファイルシステム・バージョン管理ツール・コミュニケーションツールのアクセス等)、ツールのエコシステムを構築したい場合(誰でも接続できるMCPサーバーとして公開したい)、ステートフルなセッションや非同期通知が必要な場合。

共存と補完の関係

Function CallingとMCPは競合関係ではなく、補完的な技術だ。

実際のシステムでは、MCPクライアントがFunction Callingをツール呼び出しの内部実装として使うことがある。あるいは、MCP対応LLMがFunction Callingも別途サポートすることもある。

MCPが目指す「ツールの標準プロトコル化」は、AIエージェントのエコシステムを拡張する可能性を持つ。異なる会社が作ったLLMと異なる会社が作ったツールサーバーが、標準プロトコルで接続できれば、組み合わせの爆発的な拡張が可能になる。


まとめ

Function Callingは「アプリケーションがツールを所有する」設計であり、特定のアプリケーションに密結合したツール連携に適している。

MCPは「ツールが独立したサーバーとして存在する」設計であり、複数のLLMアプリケーション間でのツール再利用と標準化を目指したプロトコルだ。

どちらを使うかは「ツールを誰が管理し、誰が再利用するか」という設計上の決定による。局所的なツール連携にはFunction Calling、エコシステムとしてのツール共有にはMCPが適している。

免責事項 — 掲載情報は執筆時点のものです。料金・機能は変更される場合があります。最新情報は各公式サイトをご確認ください。