MCP(Model Context Protocol)はAnthropicが提唱したオープンプロトコルで、AIモデルと外部ツール・データソースの接続を標準化する仕組みです。しばしば「AIのUSB-C」と呼ばれ、これまでLLMプロバイダごとにバラバラだったツール連携を一本化します。ひとつのMCPサーバーを作れば、対応する任意のAIクライアントから利用できる――この相互運用性こそがMCPの最大の価値です。
MCPとは何か
MCP(Model Context Protocol)は、2024年末にAnthropicが公開したオープンプロトコルです。目的は、LLMとツール・データソースの接続方式を標準化することにあります。これまではLLMプロバイダごとにFunction Callingの仕様が微妙に異なり、ある仕組みで作ったツールを別のLLMで使い回すのは一苦労でした。MCPはその壁を取り払い、ひとつの標準規格で統一します。
【MCPのアーキテクチャ】
[ホスト(Claude Desktop等)]
|
v
[MCPクライアント]
|
v
[MCPサーバー]
| | |
v v v
[ツールA] [ツールB] [データソース]
(API) (DB) (ファイル)
MCPのキャッチコピーは「AIのUSB-C」です。USB-Cが、PC・スマホ・周辺機器の接続を1本のケーブルで統一したのと同じ発想で、AIエージェント界隈の「ツール接続のケーブル問題」を解決しようとしています。Function CallingやLLMゲートウェイと併せて理解するとスッキリ整理できます。
MCPが解決する問題
従来、AIエージェントを作ろうとすると、各LLMプロバイダのFunction Calling仕様を調べ、それぞれに合わせてツール定義を書き直す必要がありました。さらに、ツールを他社LLMで再利用したくても、スキーマとコード両方を書き換えなければなりません。これは「N×M問題」と呼ばれ、N個のAIモデルとM個のツールの組み合わせぶんの接続コードが必要になる、という意味です。
| 比較軸 | MCPなし | MCPあり | メリット |
|---|---|---|---|
| 接続コード | LLM×ツール数 | ツール数のみ | 実装コストが激減 |
| LLM切替 | 全コード書き換え | クライアント差し替えのみ | ベンダーロックイン解消 |
| ツール共有 | 実装依存 | 公開サーバーとして共有 | エコシステム拡大 |
| スキーマ | 独自形式 | 標準形式 | 互換性の保証 |
| デバッグ | ツールごとに分散 | プロトコル単位で統一 | 運用負担削減 |
MCPを導入すれば、N×Mは「N+M」に縮減されます。AIモデルを切り替えても、ツール側を書き換える必要がなくなる――これがMCPの最大の利便性です。
MCPの仕組み――3つのコンポーネント
MCPは、ホスト、クライアント、サーバーの3コンポーネントで構成されます。ホストはユーザー向けアプリケーション、クライアントはホスト内でMCPプロトコルを話す層、サーバーは実際にツールやデータを提供する側です。通信はJSON-RPC 2.0ベースで行われ、ローカルなら標準入出力、リモートならHTTP/SSEが使えます。
| コンポーネント | 役割 | 実装例 | 通信方式 |
|---|---|---|---|
| MCPホスト | ユーザー向けアプリ | Claude Desktop、VS Code拡張 | 内部通信 |
| MCPクライアント | プロトコル仲介層 | ホスト内部ライブラリ | JSON-RPC |
| MCPサーバー | ツール・データ提供 | 自作/公式/サードパーティ | stdio or HTTP/SSE |
MCPサーバーが提供する機能は3種類のプリミティブで表現されます。Resources(AIが参照できるデータ)、Tools(AIが呼び出せる関数)、Prompts(再利用可能なテンプレート)です。以下は最小限のMCPサーバーの実装例です。
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("sample-server")
@mcp.tool()
def add(a: int, b: int) -> int:
"""2つの整数を加算します"""
return a + b
@mcp.resource("greeting://{name}")
def greeting(name: str) -> str:
"""名前を受けて挨拶を返すリソース"""
return f"こんにちは、{name}さん"
if __name__ == "__main__":
mcp.run()
FastMCPを使えば、デコレータを書くだけでツールとリソースが公開できます。この簡潔さこそが、MCPがエコシステムを急速に広げている理由のひとつです。
MCPサーバーの構築実践
実務で多いシナリオは、社内データベースやAPIをMCPサーバー経由でAIに公開するケースです。たとえば、顧客情報を検索するMCPサーバーは次のように実装できます。
from mcp.server.fastmcp import FastMCP
import psycopg2
mcp = FastMCP("customer-db")
def get_conn():
return psycopg2.connect("dbname=crm user=readonly password=xxx host=db.internal")
@mcp.tool()
def search_customers(query: str, limit: int = 10) -> list:
"""顧客名や業種で検索し、一致する顧客リストを返します"""
with get_conn() as conn, conn.cursor() as cur:
cur.execute(
"SELECT id, name, industry FROM customers "
"WHERE name ILIKE %s OR industry ILIKE %s LIMIT %s",
(f"%{query}%", f"%{query}%", limit)
)
return [
{"id": row[0], "name": row[1], "industry": row[2]}
for row in cur.fetchall()
]
@mcp.tool()
def get_customer_detail(customer_id: int) -> dict:
"""顧客IDから詳細情報を取得します"""
with get_conn() as conn, conn.cursor() as cur:
cur.execute("SELECT * FROM customers WHERE id = %s", (customer_id,))
row = cur.fetchone()
return dict(zip([d[0] for d in cur.description], row)) if row else {}
if __name__ == "__main__":
mcp.run()
このサーバーをClaude DesktopやVS Codeに登録するだけで、AIが自然言語で顧客検索を実行できるようになります。読み取り専用アカウントで接続する、取得件数に上限を設けるといった安全策は、実装時点で組み込むべきです。
MCPエコシステムの現状と展望
2026年現在、MCPはAnthropicのClaude Desktopを皮切りに、VS Code、Cursor、Zed、Windsurf等の主要AIクライアントに対応しています。公開MCPサーバーもGitHub、Slack、Google Drive、Postgres、Playwrightなど多岐にわたり、日々新しいサーバーが公開されています。
標準化の次のステップは、認証・認可のセキュリティ強化と、大規模運用時の観測性向上です。OAuthベースの認可、構造化ログ出力、モニタリングAPIといった企業利用に必要な機能が順次加わっています。MCPは今後のAIエージェント基盤の中核となる可能性が高く、今のうちに基礎を押さえておく価値があります。
まとめ
- MCPはAIモデルとツールの接続を標準化するオープンプロトコル
- N×M問題を解消し、ベンダーロックインを回避できる
- ホスト・クライアント・サーバーの3構成で、Resources・Tools・Promptsの3プリミティブを扱う
- FastMCPを使えばデコレータだけで簡単にサーバーを構築できる
よくある質問
MCPとは何ですか
Model Context Protocol(MCP)は、AIモデルが外部のツールやデータソースに標準的な方式で接続するためのオープンプロトコルです。Anthropic社が提唱し、AIのツール連携を「USBのように」標準化することを目指しています。
MCPとFunction Callingの違いは
Function CallingはLLM APIの機能として特定プロバイダに依存しますが、MCPはプロバイダに依存しない標準プロトコルです。MCPで構築したツール連携は、MCP対応のどのAIクライアントからでも利用できます。
MCPサーバーを構築するのは難しいですか
基本的なMCPサーバーは数十行のPythonコードで構築できます。公式SDKが提供されており、既存のAPIやデータベースをMCPサーバーとしてラップすることで、AI対応のツールとして公開できます。