
こんにちは!tsutsuです!
最近MCPを使用することが増えてきまして、とても便利だなとは思うのですが、
そもそもMCPの理解が微妙なところがあるので、まとめたいと思います。
簡単に言うと、MCPとはAIモデルを外部のアプリケーションとかと繋ぐときに使う共通の決まり事のことです。

外部アプリケーションとは?
AIモデルそのものとは別に存在するシステム・サービス・プログラム のことを指します。例えば以下のようなものがあります。

MCPが生まれた背景には、AIと外部ツール連携における以下の課題があります。
AIモデル単体では、
などは本来できません。
そのため、これまではツール・サービスごとにまったく異なる“連携方法”を自作する必要がありました。
Slackとつなぐ方法、GitHubとつなぐ方法、Google Driveとつなぐ方法
すべて別々の作り方が必要で、開発者の負担が大きく、
ツールごとに専用APIを作り、AI向けに最適化し、モデルごとに別仕様に対応…
という“車輪の再発明”が大量に発生していました。
OpenAIのモデル、Anthropicのモデル、Googleのモデルなど、
それぞれが独自の「ツール統合の仕組み」を持っていました。
そのため、あるツールを「どのAIでも使える」状態にするのが難しかった。
そこで「共通プロトコルを作ろう」という動きが生まれた。
MCPは次のような目的を持っています。
つまり、
「MCPに対応したツールなら、どのAIでもすぐ使える世界を実現するための共通プロトコル」です。
2024年11月、Anthropic がオープンプロトコルとして公開。現在もエコシステムが急速に成長しています。
例えばMCPを使用するとこのようなことがやりやすくなります。
AIが自分のPCやクラウド(Google Drive、Dropboxなど)のファイルを直接扱えるようになります。
業務ツールにまたがった“横断アシスタント”が作れます。
AIがデータベースに直接問い合わせできるので、分析や管理が楽になります。
【例】
AIがAPIを使ってリアルタイム情報を扱えるようになります。
会社や個人が必要なツールを自由に追加でき、AIに「専門の仕事」をやらせられます。
MCPを使えば普段使用しているアプリ、ツール、データをAIから操作したり、分析したりできるかも。
すでにMCPに対応しているアプリ、ツールもたくさんあるので導入してみよう!

MCP では、データや外部機能を提供する側が「MCP サーバー」、
それに接続してツールを呼び出す側が「MCP クライアント」です。
両者は JSON-RPC 2.0 を使って通信します。
※JSON-RPC 2.0とは?
JSON形式で
を定義するための“共通ルール”です。

MCP のメッセージは、原則すべて JSON-RPC 2.0 です。
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "weather_current",
"arguments": {
"location": "San Francisco",
"units": "imperial"
}
}
}
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"content": [
{ "type": "text", "text": "Current weather: 68°F, partly cloudy" }
]
}
}
この「content」部分が LLM (AIモデル)に渡され、自然言語応答の材料になります。
MCPでは、テキストだけではなく、構造化データ(JSON)を返す仕組みがあります。
"structuredContent": {
"temperature": 22.5,
"conditions": "Partly cloudy",
"humidity": 65
}
これにより:
が正確に行えます。
MCPサーバーはクライアントに「利用可能なツール一覧」を返します。
{
"name": "get_weather_data",
"title": "Weather Data Retriever",
"description": "Get current weather data",
"inputSchema": {
"type": "object",
"properties": {
"location": { "type": "string" }
},
"required": ["location"]
},
"outputSchema": {
"type": "object",
"properties": {
"temperature": { "type": "number" },
"conditions": { "type": "string" },
"humidity": { "type": "number" }
},
"required": ["temperature", "conditions", "humidity"]
}
}
これにより、クライアントは:
が可能になります。
MCP のエラーは2種類あります。
"error": {
"code": -32602,
"message": "Invalid params"
}
プロトコル違反、入力が壊れているといったケース。
ツール内での「Not Found」「権限なし」などは
structuredContent 内で表現することが多いです。
"structuredContent": { "error": "NOT_FOUND" }
この住み分けにより、「通信の失敗」と「業務的な失敗」を明確に分けられます。
クライアントがMCPサーバーに接続
MCPサーバーが「利用可能なツール一覧」(name, schema 等) を返す
クライアントがツールを選択し、tools/call を投げる
MCPサーバーが処理をして result を返す
クライアントは content を LLM に渡し、必要なら structuredContent を解析する
MCPは、
などを、標準化された方法でAIアプリに追加できる仕組みです。
AIの能力を“外部ツール”で拡張するための共通規格。
それが Model Context Protocol(MCP)です。
うん、むずかしい!