MCP(Model Context Protocol)とは、AIアプリと外部のデータ・機能を共通の方法で接続するためのプロトコルです。対応するクライアントは、MCP Serverが公開するTools、Resources、Promptsを見つけて利用できます。
MCPを使うと、AIアプリごとに個別の連携方法を作る負担を減らせます。ただし、接続しただけで安全になるわけではありません。どのServerを信頼し、何を許可し、いつ確認を求めるかはHost側の設計が必要です。
この記事では、Host・Client・Serverの構成、3つのprimitive、通信方法、Tool Callingとの違い、安全に試すための確認点を解説します。
情報確認日:2026年7月17日(日本時間)
結論:MCPはAI連携の共通コネクタ
利用者
↓
Host(AIアプリ)
├─ Client A ←→ MCP Server A(ローカルファイル)
├─ Client B ←→ MCP Server B(社内データ)
└─ Client C ←→ MCP Server C(外部サービス)
各Serverが公開:
- Tools
- Resources
- Prompts
Hostは利用者が操作するAIアプリです。Hostは接続するServerごとにClientを作り、ClientがMCPの通信を担当します。Serverは特定のデータや処理をMCP形式で公開します。
Host・Client・Serverの役割
| 要素 | 役割 | 例 |
|---|---|---|
| Host | AI、利用者UI、権限、承認、複数接続を管理 | デスクトップAI、IDE、コーディングエージェント |
| Client | 1つのServerとのMCPセッションを管理 | Host内部の接続コンポーネント |
| Server | Tools、Resources、Promptsを公開 | ファイル、DB、Git、業務APIの接続口 |
Serverはモデルそのものではありません。外部能力を標準化して公開するプログラムです。また、Clientは利用者向けのアプリ全体ではなく、通常はHostの内部でServerとの接続を受け持ちます。
Tools・Resources・Promptsとは
Tools:実行できる処理
Toolsは、検索、計算、ファイル作成、API呼び出しなどの処理です。名前、説明、入力スキーマをServerが公開し、Hostとモデルが利用候補として扱います。副作用のあるToolには確認と最小権限が必要です。
Resources:読み取れるコンテキスト
Resourcesは、文書、設定、データベースの読み取り結果などをURI付きで公開する仕組みです。アプリや利用者が選択し、モデルへ渡す文脈として使います。
Prompts:再利用する入力テンプレート
Promptsは、「この差分をレビューする」「会議内容を要約する」といった再利用可能な指示テンプレートです。利用者が明示的に選ぶワークフローの入口として使えます。
| primitive | 中心となる用途 | 例 |
|---|---|---|
| Tools | 処理を実行する | issue作成、検索、計算 |
| Resources | 情報を読み取る | README、仕様書、DBスキーマ |
| Prompts | 手順や指示を再利用する | レビュー、要約、調査テンプレート |
MCPとTool Callingの違い
Tool Callingは、モデルがツール名と引数を出し、アプリが実行して結果を返す処理パターンです。MCPは、そのツールやデータ、テンプレートをClientとServer間で発見・利用する共通規約です。
| 比較 | MCP | Tool Calling |
|---|---|---|
| 主眼 | 外部能力の接続と発見 | モデルが処理を選び引数を作る |
| 範囲 | Client・Server間のプロトコル | モデル・アプリ間の実行フロー |
| 扱うもの | Tools、Resources、Prompts | 主にツール呼び出し |
| 併用 | MCP ToolをモデルのTool Callingへ渡す構成が可能 | |
Tool Calling自体の流れはTool Callingとはで詳しく解説しています。
stdioとStreamable HTTP
stdio:ローカルプロセスを起動する
HostがローカルのMCP Serverを子プロセスとして起動し、標準入力と標準出力で通信します。ファイルや開発ツールのローカル連携に向きます。Serverの標準出力へデバッグ文字列を混ぜるとプロトコルを壊すため、ログは標準エラーなどへ分けます。
Streamable HTTP:リモートServerへ接続する
HTTPを使って離れたMCP Serverへ接続します。複数利用者や業務サービスとの連携に使えますが、TLS、認証、認可、セッション、Origin、レート制限、監査ログが必要です。
| transport | 主な配置 | 確認点 |
|---|---|---|
| stdio | 同じ端末 | 実行ファイル、引数、環境変数、ローカル権限 |
| Streamable HTTP | ネットワーク先 | URL、TLS、認証・認可、公開範囲、ログ |
MCP接続で何が起きるか
- HostがServerへ接続する
- ClientとServerが対応機能を初期化時に確認する
- Hostが利用可能なTools、Resources、Promptsを取得する
- 利用者の依頼に応じてResourceやPromptを選ぶ
- モデルがTool呼び出しを提案する場合がある
- Hostが権限と承認を確認して実行する
- 結果をモデルと利用者へ返す
MCPはJSON-RPCメッセージで通信しますが、初学者はまず「能力を発見する」「呼び出す」「結果を返す」という流れを理解すれば十分です。
安全に使うためのチェックリスト
- Serverの配布元とコード、更新履歴を確認した
- Serverが読めるファイル、環境変数、ネットワークを限定した
- APIキーを設定ファイルやログへ直接書いていない
- 削除、送信、公開、購入は実行前に確認する
- Tool名だけでなく説明と入力スキーマを確認した
- 外部Resourceを信頼できない入力として扱う
- リモートServerの認証と利用者ごとの認可を分けた
- 利用しないServerとToolを無効にできる
注意:知らないMCP Serverを接続することは、知らないプログラムへファイルや認証情報のアクセスを与えることに近い行為です。設定例をコピーする前に、実行内容と権限を確認してください。
どんな用途に向いているか
- 複数のAIクライアントから同じ業務ツールを使いたい
- IDEからリポジトリ、issue、ドキュメントを参照したい
- 社内データへ統一したアクセス層を用意したい
- 再利用できるAIワークフローをPromptとして共有したい
- クライアントごとの独自連携を減らしたい
AIが目標を分解して外部処理を進める全体像はAIエージェントとはも参考になります。
まとめ
MCPは、AIアプリと外部機能をHost・Client・Serverの構成でつなぐ共通プロトコルです。ServerはTools、Resources、Promptsを公開し、ローカルではstdio、リモートではStreamable HTTPが使われます。
利便性と安全性は別です。接続先の信頼性、最小権限、外部データの扱い、危険操作の承認をHost側で設計してから導入してください。