MCPとは

「AI(LLM)を搭載したアプリが、もっと賢く、もっと便利になるための『共通仕様』や『連携ルール』」です。 AIアプリケーションと各種機能を提供するサーバーとの間で、 効率的かつ標準化された方法でコミュニケーションを行うためのプロトコルです。

MCPってなんだろう?

これまでも、AIがファイルを見たり、作業を実行したり、データベースを参照したりすることは可能でした。

しかし、それぞれのアプリが独自の方法で実装していたため、機能の再利用や共有が難しく、開発者は同じような機能を何度も作り直す必要がありました。

MCPがあることで、これらの「連携」を標準化された方法で実現でき、より効率的に、そして一貫性のある方法でAIアプリケーションを開発できるようになります。

なぜMCPが必要か?

  • 各アプリが独自の方法で機能を実装
  • 機能の再利用が困難
  • 開発の重複が発生
  • 一貫性のある実装が難しい

全体の仕組み「どうやって連携する?」

MCPは、主に3つの登場人物で成り立っています。

ホスト
(Host)

  • AIを搭載したアプリケーション本体
  • 例:Cursor IDE、Claude Desktopなど
  • ユーザーが直接操作するインターフェース

クライアント
(Client)

  • ホストアプリの中で動いている
  • 各機能提供サーバーとの通信を担当
  • 窓口役として機能する

サーバー
(Server)

  • 特定の機能やデータを提供
  • 独立して動作する専門化されたプログラム
  • 例:ファイル操作、DB連携、Git操作など
flowchart LR subgraph "AI搭載アプリ (ホスト)" Client1[MCP クライアント] Client2[MCP クライアント] %% ... 他のクライアント end subgraph Server1[機能提供サーバー 1] MCP1[MCPサーバー: ファイル操作担当] end subgraph Server2[機能提供サーバー 2] MCP2[MCPサーバー: DB連携担当] end Client1 <--> |やり取り| MCP1 Client2 <--> |やり取り| MCP2

クライアントとサーバーは、決められた形式(JSON-RPC)でメッセージを送り合って通信します。 「お願い! (Request)」「できたよ! (Result)」「ごめん、失敗… (Error)」「これ、伝えとくね! (Notification)」 といった種類のメッセージがあります。

サーバーが提供する主要機能「何ができるようになる?」

サーバーは、AIやアプリが利用できる様々な「機能」を提供します。誰が主導権を持って使うか(制御主体)で考えると分かりやすいです。

flowchart LR %% スタイル定義 classDef resource fill:#e3f2fd,stroke:#2196f3,stroke-width:2px classDef prompt fill:#f3e5f5,stroke:#9c27b0,stroke-width:2px classDef tool fill:#e8f5e9,stroke:#4caf50,stroke-width:2px classDef sampling fill:#fff3e0,stroke:#ff9800,stroke-width:2px classDef controller fill:#fafafa,stroke:#616161,stroke-width:2px subgraph Providers[" サーバーが提供する機能"] A[リソース<br>コード・データ・ファイル]:::resource B[プロンプト<br>定型的な指示文]:::prompt C[ツール<br>実行可能な機能]:::tool D[サンプリング<br>AIへの推論依頼]:::sampling end subgraph Controllers[" 利用する主体"] direction TB Client[クライアント<br>アプリケーション]:::controller User[ユーザー]:::controller Model[AI モデル]:::controller Srv[サーバー]:::controller end Client -->|"コンテキスト提供<br>(自動的に)"| A User -->|"選択して実行<br>(明示的に)"| B Model -->|"必要に応じて提案<br>(要承認)"| C Srv -->|"推論を依頼"| D Model -->|"考えて応答"| D
標準化された連携
  • 共通のプロトコルによる効率的な開発
  • 機能の再利用が容易
柔軟な拡張性
  • 新しい機能を簡単に追加可能
  • モジュール式の設計
安全性の確保
  • ユーザー承認ベースの実行制御
  • 明確な権限管理
開発効率の向上
  • 共通基盤の活用
  • 開発時間の短縮

ルート (Roots)「作業場所・範囲の指定」

サーバーに対して「主にこの範囲(フォルダやAPIなど)で作業してね」と作業場所の目安を伝えるための情報です。

アプリ(クライアント)がサーバーに接続する際に、「このプロジェクトフォルダ(file:///...)と、このAPIエンドポイント(https://...)が今回の作業範囲だよ」と伝えます。サーバーはこの情報をヒントに、関連するリソースを探したり、ツールを使ったりします。

まとめ:MCPがもたらすメリット

MCPは、これらの「機能」を組み合わせることで、AIアプリケーションの可能性を大きく広げます。

標準化された連携
  • 共通のプロトコルによる効率的な開発
  • 機能の再利用が容易
柔軟な拡張性
  • 新しい機能を簡単に追加可能
  • モジュール式の設計
安全性の確保
  • ユーザー承認ベースの実行制御
  • 明確な権限管理
開発効率の向上
  • 共通基盤の活用
  • 開発時間の短縮