社内システムやSaaSとLLM(大規模言語モデル)を連携させる設計を検討しているアーキテクトやバックエンドエンジニアに向けた内容です。統合方式をAPI個別実装にするか、共通プロトコルにするかで悩んでいる方の参考になれば幸いです。
Model Context Protocol(MCP)は、AIアシスタントと外部ツール・データソースをつなぐための、JSON-RPC(軽量なリモート手続き呼び出し規格)ベースの通信規約です。LLMは学習データの時点で知識が止まっており、社内DBやリアルタイムAPIには自力でアクセスできません。この制約を埋めるための「標準インターフェース」として設計されています。
開発元はこれを「AI統合におけるUSB規格」と例えています。USBが周辺機器の接続方式を統一したように、MCPはAIと外部システムの接続方式を統一しようとしています。この比喩自体はマーケティング的な表現ですが、アーキテクチャ設計の観点では「統合の再利用性」という具体的な問題を指しています。
MCPが解決しようとしている構造的な問題
LLMを業務システムに組み込む際、従来は個別のAPI連携コードをツールごとに書く必要がありました。天気APIと連携する処理、社内DBと連携する処理、Slack連携処理はそれぞれ別の実装になります。
この状態は、統合先が増えるほど組み合わせ爆発を起こします。N個のAIクライアントとM個の外部サービスがあれば、最悪N×M通りの個別接続コードが必要になる計算です。MCPはここに「AIクライアント」「MCPサーバー」「外部サービス」という3層構造を挟み、接続部分を標準化します。
具体的には、MCPサーバーは以下の3つの要素を外部に公開します。
- Tools(ツール): 天気取得やDB検索など、AIが呼び出せる実行可能な関数
- Resources(リソース): ファイル内容やDBレコードなど、読み取り専用のデータ
- 入力スキーマ: JSON Schemaで定義された、各ツールが受け取るパラメータの型定義
ツール定義には名前・説明・入力スキーマ・実行ハンドラが含まれます。たとえば天気取得ツールなら、cityという必須パラメータとunitsという省略可能なパラメータをJSON Schemaで宣言し、AIクライアント側がその型情報を見て呼び出し方を判断します。
通信の流れは、初期化(クライアントがサーバーに接続し利用可能な機能を取得)、ツール検出(サーバーが利用可能なツールとスキーマを公開)、呼び出し、レスポンス、コンテキスト更新という5段階で進みます。この手順自体はREST APIのOpenAPI仕様や、gRPCのサービス定義に近い発想です。違いは、呼び出し元が人間ではなくLLMであり、LLMがツールの説明文を読んで自律的に使うかどうかを判断する点にあります。
既存の統合方式との比較で見えるトレードオフ
アーキテクチャ選定の観点で重要なのは、MCPが万能の代替ではなく、特定の文脈に最適化されたプロトコルだという点です。
REST APIやgRPCとの比較で考えると分かりやすくなります。REST APIは人間やアプリケーションが仕様書を読んで実装する前提です。MCPはLLMが実行時にツールの説明文とスキーマを読み取り、動的に呼び出し方を組み立てる前提になっています。つまり「誰が呼び出すのか」という利用主体の違いが、プロトコル設計の違いに直結しています。
この違いは非機能要件に直接影響します。まず可用性の面では、MCPサーバーはLLMからの予測しづらい呼び出しパターンを受けることになります。人間が操作するAPIクライアントと違い、LLMは同じツールを想定外の順序・頻度で呼ぶ可能性があります。レート制限やタイムアウト設計は、通常のAPI以上に保守的に設計する必要があります。
セキュリティ面では、認証・認可の設計がより重要になります。MCPサーバーが公開するツールの中に、ファイル書き込みやDB更新など副作用のある操作が含まれる場合、LLMの判断ミスやプロンプトインジェクション(悪意ある入力でLLMの挙動を誘導する攻撃)によって意図しない実行が起きるリスクがあります。ツール単位でのスコープ制限、実行前の承認フロー、監査ログの整備は設計段階で組み込むべき項目です。
導入検討で今日確認できること
MCP導入を具体的に検討する際は、以下の観点を順に確認すると判断がしやすくなります。
- 統合先の数: 連携する外部サービスが2〜3個程度なら個別実装で十分な場合が多く、5個以上に増える見込みがあるならプロトコル標準化のメリットが出やすくなります
- 副作用の有無: 公開予定のツールが読み取り専用(Resources)中心か、書き込みを伴う操作(Tools)を含むかで、必要なセキュリティ設計の重さが変わります
- クライアント側の対応状況: 利用予定のAIアシスタントやIDEがMCPクライアントとして対応しているか、公式ドキュメントの対応表を確認します
- 既存の技術的負債: 既にAPI Gatewayや内部RPC基盤が整備済みなら、MCPサーバーをその配下に追加する形で段階的に導入できるか検討します
性能面では、MCPサーバーがステートレス(状態を持たない)に作れるかどうかも確認ポイントです。ステートレスに設計できれば、水平スケール(サーバー台数を増やして負荷分散すること)がしやすくなり、可用性設計がシンプルになります。逆に会話履歴やセッション状態を持たせる設計にすると、スケールアウト時にセッション共有の仕組みが追加で必要になります。
まとめ
MCPは、LLMと外部システムを接続する部分を標準化するプロトコルです。ツール・リソース・スキーマという3要素で構成され、JSON-RPCベースの通信で動作します。
アーキテクチャ判断としては、統合先の数が少ないうちは個別実装でも問題ありません。統合先が増える見込みがあり、かつ複数のAIクライアントから同じツール群を再利用したい場合に、標準化のメリットが出てきます。
導入を検討する際は、公開するツールに副作用があるかどうかをまず洗い出してください。副作用がある場合は、認証・認可・監査ログの設計を先に固めてから実装に入ることをおすすめします。ステートレス設計にできるかどうかも、可用性とスケーラビリティを左右する重要な判断軸になります。