
Model Context Protocol(MCP)とは、AIモデルと外部システムを統合するためのオープンプロトコルです。
従来、個別に設定が必要だったAI開発を効率化し、コード管理やデータベース連携を簡単に実現できます。
オープンプロトコルとして採用が拡大しており、ClaudeやChatGPTなどで利用可能です。
本記事ではMCPの概要や混同しやすいRAGとの違い、そして具体的な使い方について詳しく解説します。
Model Context Protocol(MCP)とは?基本と仕組み

まずは、Model Context Protocol(MCP)の基本や仕組みについて、その優位性も踏まえて解説します。
Model Context Protocol(MCP)の定義と目的
Model Context Protocol(MCP)とは、Anthropicが開発した、AIモデルが外部ツールやデータソースと安全に連携するための標準化されたプロトコルです。
MCPはホスト、クライアント、サーバーの3つのコンポーネントで構成されています。ホストはClaudeやChatGPTなどのAIアプリケーション本体、クライアントはホスト内でMCP接続を管理する機能、サーバーは外部システムへのアクセスを提供する軽量プログラムです。
MCPの目的は、AI統合の複雑さを軽減し、セキュアで拡張可能なエコシステムを構築することにあります。
この構造により、AIモデルは様々な外部リソースに統一的な方法でアクセスでき、開発者は一度サーバーを実装すれば複数のAIアプリケーションで再利用できます。
従来、LLMアプリケーションを異なるデータソースと統合するには個別にカスタム統合コードを書く必要がありました。
一方で、MCPはAIアプリケーションとデータソースを統一規格で接続する橋渡しの役割を果たすため、開発者は個別のデータソースごとにカスタム統合コードを作成する必要がなくなります。
MCPサーバーの主要機能と承認フロー
MCPでは、サーバーが提供する際にツール・リソース・プロンプトの3つの主要機能のうちいずれかを含んでいる必要があります。
ツールはファイル作成やAPI呼び出しなどのAIが実行できる関数、リソースはファイル内容やデータベースレコードなどのAIが読み取れるデータ、プロンプトは定型化された指示テンプレートです。
また、安全性を確保するため、MCPは明示的な承認フローを採用しており、ファイル削除やデータ送信などといった重要な操作を実行する前にユーザーの許可を求めます。この「許可制」のアプローチにより、AIが誤って危険な操作を実行するリスクを最小限に抑えられます。
開発者はサーバー実装時に各ツールの危険度を設定でき、ユーザーは操作内容を確認してから承認できる透明性の高い仕組みとなっています。
API・プラグイン・Functionとの違い
従来のAPIやプラグイン、Function CallingとMCPとの最大の違いは、双方向通信であることです。AIからサーバーへの要求だけでなく、サーバーからクライアントへの通知やデータ更新も可能です。
既存のAPIは、主にユーザーがモデルに指示を与え、モデルがそれに従ってツールを受動的に実行する一方向のフローが中心でした。しかしMCPは、モデルが自ら必要なツールやリソースを動的に検出し、ユーザーに対して使用許可を能動的に求める双方向の対話を実現します。
また、従来のプラグインが静的に定義されがちなのに対し、MCPはIDEの現在開いているファイルや利用可能なコマンドなど、リアルタイムの環境コンテキストを扱えます。
この「双方向性」「動的検出」「許可制」の3点が、MCPと従来技術との違いとなっています。
対応クライアントとエコシステム
MCPは、AnthropicがClaude、OpenAIがChatGPTやAgents SDKでネイティブサポートを表明したことで、業界標準の地位を急速に確立しました。
クライアント側では、CursorやVisual Studio CodeといったIDE、Figmaなどの専門ツールでの実装が先行しており、公式デスクトップアプリもハブとして機能します。開発者はTypeScriptやPythonなど主要言語のSDKを使い、カスタムクライアントを容易に構築できます。
2025年9月にプレビュー公開された公式「MCPレジストリ」は、信頼できるサーバーやツールを発見・共有するための中核的なハブとして機能します。さらに、2025年3月26日版のMCP仕様でOAuth 2.1ベースの認可フロー要件が提示され、エコシステム全体のセキュリティが強化されています。
MCPとRAGの違い

MCPと混同しやすい用語にRAGがあります。
ここでは、MCPとRAGの違いや使い分けについてご紹介します。
用語整理:RAGとMCPの定義
RAG(Retrieval-Augmented Generation)は、外部のドキュメントやナレッジベースから関連情報を検索し、その内容をAIの回答生成に活用する知識拡張の仕組みです。その主な目的は、AIの知識を最新化し、ハルシネーションを抑え、事実に基づいた回答をさせることです。

一方MCPは、AIが外部のシステムやツールと対話し、操作するための標準規格です。MCPの目的は、AIが能動的にファイル操作、API実行、コード解析といったアクションを安全に実行できるようにすることにあります。
端的に言えば、RAGはAIが「知っていること」を増やすための知識検索であり、MCPはAIが「できること」を増やすための外部操作・システム連携の仕組みです。
適用領域・データフロー比較表
MCPとRAGは、システム設計上のトレードオフが異なります。それぞれの主な違いは以下の通りです。
| 項目 | MCP | RAG |
|---|---|---|
| 主要目的 | AIが外部システムやツールを操作 | AIの知識を外部データベースで補強・最新化 |
| 主なユースケース | AIコーディング支援 ファイル自動整理 外部API連携 | FAQボット 最新ニュースの要約 社内文書検索 |
| データフロー | 双方向 | 一方向 |
| 主な利点 | AIの能動的な操作 リアルタイム環境との連携 | 知識の最新化 ハルシネーション抑制 回答の根拠提示 |
| 限界 | 知識の補強が主目的ではない ユーザー承認待ちが発生 | 外部への操作は不可 検索品質に強く依存 |
| 安全性 | ユーザーによる明示的な許可制 | 知識ソースの信頼性に依存 |
RAGは、ベクトル検索のステップが加わるため遅延が発生しやすいですが、最新の情報を参照することで回答の正確性と更新性を劇的に高めます。
一方、MCPは安全性を最優先に設計されています。モデルがツールやリソースを使用する際は、必ずホストの明示的な許可が必要なため、意図しない操作を防ぐことが可能です。
データフローにおいて、RAGは「データベース→AIモデル」という一方向な情報取得が主ですが、MCPは「AIモデル↔ホスト」間で行われる双方向のリクエストと承認のやり取りが最大の特徴です。

どちらを選ぶ?ユースケース別の意思決定チャート
ユースケースに応じて、RAGとMCPのどちらを選ぶべきか、あるいは両方が必要かを判断します。
例えば、最新の社内規定やマニュアルに基づいて回答するFAQボットを作りたい場合、RAGを使用します。これは、AIの知識を特定のドキュメント群で補強する必要があるためです。
また、AIにローカルのコードを解析させ、自動でリファクタリングさせたい場合は、MCPが最適です。なぜなら、AIが能動的にファイルシステムを読み書きする操作を安全に行う必要があるからです。
さらに、顧客DBから最新の注文履歴を検索し、その結果に基づき在庫APIを叩いて発送処理を行いたい場合は、注文履歴はRAG、APIの使用はMCPといった併用が必要となります。
併用パターン:RAG×MCPのハイブリッド設計
RAGとMCPを組み合わせることで、より高度なAIアプリケーションを構築できます。この設計では、まずRAGが情報収集を担当し、MCPがその情報に基づく行動を担当します。
例えば、開発者が最新の仕様書を読み込ませて、該当するモジュールのコードを修正させるケースが挙げられます。この場合、AIはまずRAGを使ってVector DBから仕様書の最新情報を検索・取得します。次に、その仕様変更を理解した上で、MCPを介してホストに操作リクエストを送信し、承認を得て実行します。
このように、RAGが「何をすべきか」のコンテキストを提供し、MCPが「それをどう実行するか」の手段を提供することで、高度な自律操作が実現します。
MCPの使い方|ChatGPT・Claude・自作サーバー

ここでは、ChatGPT・Claude・自作サーバーにおけるMCPの実際の使い方をステップごとに紹介します。
ChatGPTでのMCPコネクタ:有効化の流れ
ChatGPTでは、有料プランユーザーが使用できる開発者モードで、リモートMCPサーバーを使用することができます。
使い方は以下の通りです。
ChatGPTにアクセスし、設定を開きます。

「アプリとコネクター」タブを開き、「高度な設定」をクリックします。

「開発者モード」を有効化しましょう。

開発者モードを有効化すると、設定の「アプリとコネクター」内に「作成する」ボタンが追加されます。

ここをクリックすると、新しいMCPサーバーを追加できます。
名前や説明、MCPサーバーのURLを入力して「作成する」をクリックしましょう。

今回はDeepWikiのMCPサーバーを追加しました。

MCPサーバーを追加できたら、チャットから実際に使ってみましょう。
「+」をクリックし、「さらに表示」を選ぶと、先ほど追加したMCPサーバーが表示されます。

MCPサーバーを選択し、使用するツールを明示して指示を出しましょう。

実際にMCPサーバーと通信する際に許可を求められるため、「Ask Question」をクリックして許可します。

しばらくするとMCPサーバーを通じて得られた回答が出力されます。


Claude DesktopのローカルMCPサーバー
Claudeでは、Claude Desktopを使うことでMCPサーバーを導入できます。
使い方は以下の通りです。
Claude Desktopを開き、画面左下のアイコンをクリックして設定を開きます。

「開発者」タブに移動し、「設定を編集」をクリックしましょう。

claude_desktop_config.jsonファイルが格納されたフォルダが開かれるので、claude_desktop_config.jsonをエディタで開きます。
ファイル内にMCPサーバーの設定を書き込みます。
今回は以下の内容を書き込み、DeepWikiを使用できるようにしました。
{
"mcpServers": {
"deepwiki": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.deepwiki.com/sse"
]
}
}
}
JSONファイルの編集が完了したら、Claude Desktopを一度再起動します。
再起動後、先ほどの「開発者」タブを見ると追加したMCPサーバーが表示されています。

新規チャットを作成し、「検索とツール」から先ほど追加したMCPサーバーを有効化します。

これでMCPサーバーが利用可能となったので、ChatGPTと同様に使用するツールを明示しつつ指示を与えましょう。
許可を求められるので、「一度だけ許可」または「常に許可」をクリックすることで、MCPを通じた回答が出力されます。



自作MCPサーバーの最小実装
ChatGPTやClaudeなどで使用するMCPサーバーは、自作することも可能です。
ここでは、Python公式SDKを使った天気予報サービスの実装例をもとに、MCPサーバーを自作する方法を解説します。
まずはPythonプロジェクト管理のためのuvをインストールし、Pythonプロジェクトと環境を設定します。
ターミナルで以下のコマンドを実行してください。
# MacOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
コマンドの実行が完了したら、一度ターミナルを再起動しましょう。
以下のコマンドを実行し、プロジェクトのためのディレクトリを作成して移動します。
uv init weather
cd weather

続いて仮想環境を作成し、アクティベートします。
以下のコマンドを実行してください。
# MacOS/Linux
uv venv
source .venv/bin/activate
# Windows
uv venv
.venv\Scripts\activate

次に以下のコマンドを実行して依存関係をインストールします。
# MacOS/Linux
uv add "mcp[cli]" httpx
# Windows
uv add mcp[cli] httpx
インストールが完了したら、以下のコマンドでサーバー用のファイルを作成しましょう。
# MacOS/Linux
touch weather.py
# Windows
new-item weather.py
先ほど作成したweather.pyをエディタで開き、内容を編集します。
まずは先頭に以下のコードを追加しましょう。
from typing import Any
import httpx
from mcp.server.fastmcp import FastMCP
# Initialize FastMCP server
mcp = FastMCP("weather")
# Constants
NWS_API_BASE = "https://api.weather.gov"
USER_AGENT = "weather-app/1.0"
次にAPIからのデータをクエリしてフォーマットするためのヘルパー関数を追加します。
async def make_nws_request(url: str) -> dict[str, Any] | None:
"""Make a request to the NWS API with proper error handling."""
headers = {
"User-Agent": USER_AGENT,
"Accept": "application/geo+json"
}
async with httpx.AsyncClient() as client:
try:
response = await client.get(url, headers=headers, timeout=30.0)
response.raise_for_status()
return response.json()
except Exception:
return None
def format_alert(feature: dict) -> str:
"""Format an alert feature into a readable string."""
props = feature["properties"]
return f"""
Event: {props.get('event', 'Unknown')}
Area: {props.get('areaDesc', 'Unknown')}
Severity: {props.get('severity', 'Unknown')}
Description: {props.get('description', 'No description available')}
Instructions: {props.get('instruction', 'No specific instructions provided')}
"""
続いてツールを実行するためのコードを追加します。
@mcp.tool()
async def get_alerts(state: str) -> str:
"""Get weather alerts for a US state.
Args:
state: Two-letter US state code (e.g. CA, NY)
"""
url = f"{NWS_API_BASE}/alerts/active/area/{state}"
data = await make_nws_request(url)
if not data or "features" not in data:
return "Unable to fetch alerts or no alerts found."
if not data["features"]:
return "No active alerts for this state."
alerts = [format_alert(feature) for feature in data["features"]]
return "\n---\n".join(alerts)
@mcp.tool()
async def get_forecast(latitude: float, longitude: float) -> str:
"""Get weather forecast for a location.
Args:
latitude: Latitude of the location
longitude: Longitude of the location
"""
# First get the forecast grid endpoint
points_url = f"{NWS_API_BASE}/points/{latitude},{longitude}"
points_data = await make_nws_request(points_url)
if not points_data:
return "Unable to fetch forecast data for this location."
# Get the forecast URL from the points response
forecast_url = points_data["properties"]["forecast"]
forecast_data = await make_nws_request(forecast_url)
if not forecast_data:
return "Unable to fetch detailed forecast."
# Format the periods into a readable forecast
periods = forecast_data["properties"]["periods"]
forecasts = []
for period in periods[:5]: # Only show next 5 periods
forecast = f"""
{period['name']}:
Temperature: {period['temperature']}°{period['temperatureUnit']}
Wind: {period['windSpeed']} {period['windDirection']}
Forecast: {period['detailedForecast']}
"""
forecasts.append(forecast)
return "\n---\n".join(forecasts)
最後に、ツールを初期化して実行するためのコードを追加します。
def main():
# Initialize and run the server
mcp.run(transport='stdio')
if __name__ == "__main__":
main()
コードの編集が完了したら、ターミナルで以下のコマンドを実行することでMCPサーバーを起動できます。
uv run weather.py
起動ができたら、動作確認をしてみましょう。
ここでは、Claude Desktopを使って確認します。
claude_desktop_config.jsonに以下の記述を追加します。
{
"mcpServers": {
"weather": {
"command": "uv",
"args": [
"--directory",
"C:\\ABSOLUTE\\PATH\\TO\\PARENT\\FOLDER\\weather",
"run",
"weather.py"
]
}
}
}
なお、C:\\ABSOLUTE\\PATH\\TO\\PARENT\\FOLDER\\weatherには作成したプロジェクトのフルパスを記述してください。
Claude Desktopを再起動すると、自作したMCPサーバーが使えるようになります。

実際にチャットで使用できるか見てみましょう。
MCPサーバーの使用時には許可を求められるため、許可をします。

実際の出力結果がこちらです。

セキュリティ実務
MCPサーバーの運用では、セキュリティを確保するための実務的な対策が不可欠です。
最小権限の原則に基づき、各MCPサーバーには必要最小限のアクセス権限のみを付与し、不要なファイルシステムやネットワークへのアクセスを制限するようにしましょう。
RBAC(ロールベースアクセス制御)を実装する場合は、ユーザーやアプリケーションごとに明確な役割を定義し、環境変数やアクセストークンの管理を厳密に行います。
また、監査ログについては、MCPサーバーへのアクセス履歴、API呼び出し、エラー発生時の詳細を記録し、定期的にレビューする体制を整えます。
さらに、APIキーや認証トークンなどの鍵管理では、平文での保存を避け、環境変数や専用のシークレット管理ツールの活用が推奨されます。
実際にMCPサーバーを使用する際は、具体的なチェックリストとして以下の項目を確認するようにしましょう。
- MCPサーバーの設定ファイルに不要な権限が含まれていないか
- 機密情報がハードコードされていないか
- ログに個人情報や認証情報が含まれていないか
- 定期的な権限の棚卸しと見直しが実施されているか
これらの対策を組み合わせることで、MCPサーバーを安全に運用できる環境を構築できます。
MCPの利用にかかる料金

続いて、MCPを利用する際にかかる料金について解説します。
「MCPそのもの」は無料
MCP自体はオープンソースの標準規格として公開されており、プロトコルの使用や実装に関するライセンス料は一切かかりません。GitHubで公開されている仕様書やSDK、サンプルコードは誰でも自由に利用でき、商用・非商用を問わず無料で実装できます。
ただし、MCPを実際に運用する際には、LLMサービスの利用料金、サーバーのホスティング費用、ネットワーク通信コストなど、周辺のインフラやサービスに対して費用が発生します。つまり、規格は無料ですが、実装・運用には費用がかかります。
個人の小規模な実験であれば最小限のコストで始められますが、企業での本格運用では複数の費用項目を考慮した予算計画が必要になります。
必要コストの内訳
MCPを利用したシステムを構築・運用する場合、コストは大きく以下の5つの要素に分けられます。
- LLM利用料
-
ClaudeやChatGPTなどのAIモデルを利用するためのAPI料金、または月額サブスクリプション費用です。
- サーバーホスティング費
-
作成したMCPサーバーを常時稼働させるためのクラウド費用や、ローカルマシンのリソースコストです。
- ネットワーク・通信費
-
外部APIとの通信や、大量のデータをやり取りする場合のデータ転送コストが含まれます。
- 監査・セキュリティ費
-
安全性を担保するための監査ログの保存ストレージ料金や、OAuthなどの認証基盤の利用料です。
- 運用・開発人件費
-
システムの構築・保守・トラブル対応を行うエンジニアやセキュリティ担当者の人件費です。
これらのコストを総合的に見積もり、ROIを評価することが、MCP導入の成否を分ける鍵となります。
ホストとして使えるツールのプラン比較(ChatGPT/Claude)
MCPを使用するには、ホストが必要です。
この記事でホストとしてご紹介したChatGPTやClaudeの料金プランは以下の通りです。
| サービス | プラン | MCPの利用 | 月額料金 | 年払い料金 |
|---|---|---|---|---|
| ChatGPT | Free | 無料 | なし | |
| Plus | $20 | なし | ||
| Pro | $200 | なし | ||
| Business | $30/ユーザー | $25/ユーザー/月 | ||
| Enterprise | 要問い合わせ | なし | ||
| Claude | Free | 無料 | なし | |
| Pro | $20 | $17/月 | ||
| Max 5x | $100 | なし | ||
| Max 20x | $200 | なし | ||
| Team | $30/ユーザー (標準シート) $150/ユーザー (プレミアムシート) | $25/ユーザー/月 (標準シート) $150/ユーザー/月 (プレミアムシート) | ||
| Enterprise | 要問い合わせ | なし |
ChatGPTでは有料プランユーザーのみが開発者モードを利用できます。そのため、MCPを利用したい場合はPlusプラン以上の契約が必要です。
一方でClaudeは無料プランユーザーでもMCPを利用することが可能です。とりあえずMCPを使ってみたいという方におすすめです。
ただし、無料プランの場合はメッセージの送信などの利用制限が厳しくなるため、本格的に使用する場合は有料プランにアップグレードすることをおすすめします。
コスト最適化Tips
MCPの運用コストを削減するための主要な戦略は、「M×N問題」の解消です。これは、M個のアプリケーションとN個のデータソースを接続する際、個別統合ではM×N個の接続が必要になる問題を指します。
共通MCPサーバーを構築し、複数のクライアントから同一のMCPサーバーを参照する設計にすることで、接続数をM+Nに削減でき、開発・保守コストを大幅に削減できます。
また、社内で頻繁に使われるMCPサーバーを中央にホスティングし、複数のクライアントから共有することで、サーバーリソースを節約できます。
さらに、APIコールの結果をMCPサーバー側で適切にキャッシュすることで、外部サービスのAPI利用料やLLMのトークン消費を抑える設計も、長期的なコスト削減に有効です。
MCPの活用事例

ここでは、ビジネスシーンや個人利用におけるMCPの活用事例を紹介します。
なお、おすすめのMCPサーバーについては以下の記事をご覧ください。

AIによるリアルタイムデータの活用
MCPを活用することで、AIは以下のようなリアルタイムの外部データにアクセスし、正確で最新の情報をもとに応答を生成できるようになります。
- マーケットデータの照会(金融・投資アプリケーション)
- 医療データの分析(電子カルテ・診断支援)
- 業務データの自動処理(CRM・ERPシステムと連携)
AI駆動の自動化とアクション実行
MCPは、AIが外部システムへ単にデータを要求するだけでなく、アクションをトリガーすることも可能にします。
- AIがサーバーのステータスを確認し、異常があれば自動で修復
- ユーザーの権限を管理し、適切なアクセス制御を実施
- AIが在庫を確認し、自動で補充を発注
- ユーザーからの問い合わせに基づいて、注文変更やキャンセル処理を実施
AIとビジネスツールの統合
MCPを利用することで、ClaudeなどのAIはさまざまなビジネスツールと統合し、業務を自動化できます。
- CRMとの連携
-
顧客の問い合わせ履歴を分析し、適切な対応を提案
- プロジェクト管理ツールとの統合
-
タスクの作成・進捗管理を自動化
- データベース・APIの活用
-
企業の内部データをリアルタイムで取得し、意思決定を支援

個人利用:AIアシスタントの活用
個人での活用事例としては、さまざまなシーンでのAIアシスタントとしての利用が挙げられます。
MCPを活用することで、AIアシスタントは以下のようなタスクを実行できます。
- 航空会社のAPIに接続し、フライトのスケジュールや料金を取得
- ユーザーのカレンダーを参照し、空き時間を確認
- 決済ゲートウェイと連携し、予約を確定
- ユーザーへ確認メールを送信
MCPなしでは、それぞれの操作ごとにカスタム統合が必要になり、開発プロセスが複雑で時間がかかります。
しかし、MCPがあれば統一規格で複数の外部システムと連携できるため、開発の効率化を図れます。
まとめ
本記事では、AIモデルと外部システムやツールを統合するためのオープンプロトコルであるModel Context Protocol(MCP)について解説してきました。
MCPは採用が拡大しており、ChatGPTやClaudeなどで利用可能です。
MCPを活用することで、リアルタイムデータの取得やAIアシスタントを通じて、業務や個人利用の効率を向上させます。
特に、企業の内部システムやクラウドツールとの統合を簡素化し、AIがより高度な意思決定や自動化を実行できる環境を提供し、業務効率化への貢献も見込まれます。

