MCPとは
Model Context Protocol
LLMアプリケーションと外部のツール・データソースを標準化された方法で接続するオープンプロトコル
ひとことで言うと
AIと外部のツールやデータを、決まったやり方でつなげるための共通規格。
概要
MCP(Model Context Protocol)とは、LLMアプリケーションが外部のツール・データソース・システムと連携するためのインターフェースを標準化するオープンプロトコル。 従来、LLMを様々な外部システム(ファイルシステム、データベース、SaaSサービス等)と連携させるには、連携先ごとに個別の実装が必要だった。 MCPは、ツールやデータソースを提供する側(MCPサーバー)と、それを利用するLLMアプリケーション側(MCPクライアント)のやり取りを共通のプロトコルとして定義し、一度実装したMCPサーバーを複数のLLMアプリケーションから再利用できるようにする。 AnthropicがOSSとして公開し、対応するLLMアプリケーションやツール提供元が急速に増えたことで、エージェント開発における事実上の標準インターフェースの1つになりつつある。
背景
LLMアプリケーションが増えるにつれ、同じ外部システム(GitHub、Slack、社内データベース等)への接続をアプリケーションごとに個別実装する重複が問題になっていた。 MCPは、USB等ハードウェアインターフェースの標準化と同様の発想で、ツール・データ連携の実装を標準化し再利用しやすくするため考案された。
歴史
2024年11月: Anthropicが、LLMアプリケーションと外部データ・ツールを接続するオープン標準としてMCPを公開。 2025年: OpenAIやGoogle DeepMind等、他の主要なAIベンダーもMCPのサポートを表明し、業界横断的な標準として採用が広がる。
アーキテクチャ
MCPは、ツールやデータへのアクセスを提供する「MCPサーバー」と、それを利用する「MCPクライアント(LLMアプリケーション)」から構成される。 サーバーは、利用可能なツール・リソース・プロンプトのテンプレート等を標準化された形式でクライアントへ公開し、クライアントは、タスクの遂行に必要なものを選んで呼び出す。 通信にはJSON-RPCが用いられる。
ワークフロー
MCPサーバーが利用可能なツール・リソースを公開 → MCPクライアントが接続しJSON-RPCで一覧を取得 → LLMがタスクに応じてツールを選択・呼び出し → サーバーが実行結果を返し応答生成に利用する。
コード例
FastMCPで簡単なMCPサーバーを実装する
from fastmcp import FastMCP
mcp = FastMCP("Weather")
@mcp.tool()
def get_weather(city: str) -> str:
"""指定した都市の現在の天気を返す"""
return f"{city}は晴れです"
if __name__ == "__main__":
mcp.run()利点
- 一度実装したMCPサーバーを、複数の異なるLLMアプリケーションから再利用できる
- ツール・データ連携の実装が標準化され、開発・保守の重複を減らせる
- FastMCP等のSDKが整備されており、既存のAPIをMCPサーバーとして素早く公開できる
欠点
- 標準化されたプロトコルである分、特殊な連携要件への対応は独自実装より柔軟性に欠けることがある
- 比較的新しい仕様であり、エコシステムやセキュリティのベストプラクティスが発展途上の部分がある
- MCPサーバーには接続先の外部システムへの強い権限が付与されるため、認可やアクセス制御の設計が重要になる
比較
- ツールコーリング — MCPは、Tool Callingで使うツールの提供方法を標準化するプロトコル
- A2A — MCPがLLMアプリケーションとツール・データの接続を標準化するのに対し、A2Aはエージェント同士の連携を標準化する
- AIエージェント — AIエージェントは、MCPを通じて様々な外部ツール・データソースへ標準化された方法で接続できる
- Claude — MCPは、Claudeの開発元であるAnthropicが公開したツール連携プロトコル
- AgentCore — AWSのAgentCoreは、Gatewayコンポーネントを通じて既存APIをMCP互換のツールへ変換する機能を提供する
- FastMCP — FastMCPは、MCPプロトコルに対応するサーバー・クライアントをPythonのデコレータ構文で簡潔に実装できるフレームワーク
関連用語
よくある質問
MCPとFunction Callingの違いは?
Function Calling(Tool Calling)は、LLMが単一の呼び出しの中でどの関数をどんな引数で呼ぶかを決める仕組み。 MCPは、そうした呼び出しの対象となるツールやデータソースをどう発見・提供・接続するかを標準化するプロトコルという、より上位のレイヤーに位置する。
参考文献
- Official WebsiteModel Context Protocol
- BlogAnthropic: Introducing the Model Context Protocol