[MCP①]MCPって何者?
MCPって何者なの?
今回はMCPについて、概要編として書いていきたいと思います!
(実際で書いてみたり触ってみたりはまた別記事で書くのでこの記事では記載しません。)
公式Docs:https://docs.anthropic.com/ja/docs/agents-and-tools/mcp
MCPは、アプリケーションがLLMにコンテキストを提供する方法を標準化するオープンプロトコルです。MCPは、AIアプリケーション向けのUSB-Cポートのようなものと考えてください。USB-Cがデバイスを様々な周辺機器やアクセサリーに接続する標準的な方法を提供するように、MCPはAIモデルを異なるデータソースやツールに接続する標準的な方法を提供します。
MCPは「Model Context Protocol」の略で
「AIサービス(LLM)が外部のデータやツールと連携するための共通のルール(プロトコル)」
のことだ。
ところで、なんで標準化しようとしてるの??
↓ ↓ ↓ ↓
MCPが生まれた背景
もともとLLMは「チャットする」だけの存在だったわけだが、
進化とともに、以下のような ツール連携(Tool Use) が求められるようになってきた
「天気予報を調べて」
「最新ニュースを検索して」
「データベースからユーザーを検索して」
しかしそのためには、これまでのアプローチには以下のような課題があった。
-
ツール呼び出しがバラバラ
OpenAI、Anthropic、他社が独自にツール実装していた -
モデルが誤認しやすい
仕様が曖昧で、どのツールをいつ使うべきかの判断が難しい -
管理・拡張が困難
プロンプトで都度対応する必要があり、破綻しやすい
なぜ今、MCPが注目されているのか?
MCPは1年以上前(2023年)に公表されていましたが、なぜ今??
2024年後半から一気に注目を集めるようになった背景には、以下の要因がある。
1. トークン数の増加による処理能力の向上
• Claude 3、GPT-4o などは100k~128k tokens以上のコンテキストを保持可能。
• MCPのような「ツール仕様のカタログ」が全文渡っても破綻しない。
• モデルがツールを正確に理解・選択・実行できる土台が整った。
2. エージェント構築需要の高まり
• ツールを複数呼び出し、状態を保ちながら対話できるエージェント型AIが注目されている。
• その基盤となる「ツール連携の共通プロトコル」としてMCPが最適。
3. オープンソース化・コミュニティの成長
• MCPはオープンプロトコルとして公開されており、誰でもサーバーを実装可能。
• コミュニティによる事例やクライアントSDKも整いつつある。
MCPの構成と仕組み について
コンポーネント(実行構成)について
コンポーネント | 説明 | 具体例 |
---|---|---|
🖥 MCP Hosts | MCPを利用したいアプリケーション本体。Claude Desktop, VS Code, AIエージェントなど。 | Claude Desktop, IDE, エージェントアプリ |
🔌 MCP Clients | MCPサーバーに1対1で接続し、ListTools / CallToolなどのやり取りを仲介するプロトコル実装部分。 | ClaudeやLangChain内のMCP対応モジュール |
🌐 MCP Servers | LLMが呼び出せるツールやデータアクセスを公開する軽量サーバー。JSON-RPC 2.0でやり取り。 | sqlite-mcp-server など |
💾 Local Data Sources | ローカルのファイルやDB、ポートで動いているアプリなど。MCPサーバーから安全にアクセスできるローカルデータ。 | SQLite, JSONファイル, 自作スクリプト |
🌍 Remote Services | MCPサーバー経由で接続する外部APIやクラウドサービス。 | Notion API, Terraform Cloud, Slack API など |
実際に自分で作っていくのは、この中の MCP Server 部分になってて、
MCP Serverは、JSON-RPC 2.0 という決められた形式で LLM とやり取りします。
この中でやりとりされるのは、次の3つのインターフェースです:
• ListTools: 「どんなツールが使えるの?」という一覧の提供
• CallTool: 「このツール使ってね」という呼び出し指示
• ToolResult: 「実行してこうなったよ」という結果の返却
MCPサーバーの3つの提供機能について
MCPサーバーは、LLMに対して主に3種類の機能パーツを提供できて
これが、MCPの中核となる3つの提供機能だ。
パーツ名 | 主な特徴 | 使用例 |
---|---|---|
🛠 Tools | LLMが呼び出すことができる外部の関数やAPI | sendEmail, createUser |
📚 Resources | LLMが参照することができる外部のデータや情報。 | getWeather, listOrders |
💬 Prompts | LLMの出力をガイドするためのテンプレートや指示。 |
最後に
次回の記事では、実際にMCPサーバーを作って動かしてみる編を書く予定です
また👋
Discussion