あなたの LLM アプリに本当に MCP は必要か?MCP・CLI・関数呼び出しの比較
開発者の会話でよく見る質問があります。LLM 機能からデータベースを検索したい、デプロイコマンドを実行したい。では MCP サーバーを作るべきか。答えが yes のこともあります。しかし多くの場合、正直な答えは「まだ早い」です。
MCP(Model Context Protocol)は、AI アプリケーションがツール、リソース、プロンプトを標準的に発見して使うための仕組みです。価値はあります。ただし、標準であることと、すべての最初の選択肢であることは違います。
まず統合面を見る
関数呼び出し、CLI、MCP は同じ問題を解きます。モデルに安全で構造化された能力を与えることです。違いは契約がどこにあるかです。
ネイティブ関数呼び出しでは、契約はアプリ内にあります。スキーマを定義し、モデルから tool call を受け、サーバー側コードを実行して結果を返します。直接的でデバッグしやすく、多くの場合もっとも早く本番に出せます。
CLI レイヤーでは、契約は実行可能コマンドです。テスト、型チェック、マイグレーション、インフラ計画、リポジトリ検索はすでにコマンドの形をしています。正しい設計は自由な shell ではなく、allowlist、タイムアウト、引数検証、出力制限、ログを持つ狭い broker です。
MCP では、契約は client と server の間のプロトコルになります。同じ能力を複数の AI クライアント、チーム、ランタイムで再利用したいときに強くなります。
関数呼び出しで十分な場合
プロダクト機能の最初のバージョンでは、関数呼び出しがよい出発点です。認証、ログ、レート制限、テナント分離、インシデント対応を、既存のアプリ境界内に保てます。
注文検索、返金草案、アカウント履歴の要約のように、権限と業務ロジックに深く結びついたツールは、最初から MCP にする必要がないことが多いです。
問題は後から起きます。複数チームが同じツールを複数ホストに実装し始めると、統合面が増えます。その段階で MCP の再利用価値が見えてきます。
CLI が適している場合
coding agent やインフラ作業では、CLI が最も正直なインターフェースであることが多いです。ローカルで再現でき、プロジェクト規約を引き継ぎ、人間が読めるログと exit code を返します。
すでにコマンドネイティブなワークフローなら、まず CLI を安全に包みます。モデルには構造化要約を返し、詳細ログは人間のために残します。
MCP が複雑さに見合う場合
同じ能力を複数の AI 環境で使う必要があるなら、MCP は有力です。ナレッジベース検索、リポジトリコンテキスト、デザインシステム、DB メタデータ、監査ログなどは、MCP server として共有しやすい領域です。
本番運用については MCP production integration patterns、SaaS 目線では MCP SaaS integration strategy も参考になります。
ただし MCP は認証、認可、secret、rate limit、telemetry、schema versioning、安全なエラー設計を自動では解決しません。
実用的な判断基準
1 つのクライアントとプロダクト固有ロジックなら関数呼び出し。既存の人間向けコマンドがあるなら CLI broker。複数 AI クライアント、分散 ownership、安定したツール群があるなら MCP。
最良のアーキテクチャは最新のものではありません。安全性、可観測性、再利用への道を保ちながら、境界が最も少ないものです。