MCP と REST API:根本的な違い
REST API と Model Context Protocol(MCP)を比較することは、カテゴリの誤りです。これらは異なる抽象化レイヤーで動作し、AI システムにおいて根本的に異なる目的を果たしています。
アーキテクチャ上の違い
| 機能 | MCP | REST API |
|---|---|---|
| 状態管理 | ステートフル – インタラクション間でコンテキストを維持 | ステートレス – 各リクエストは独立している |
| 接続タイプ | 永続的で双方向の接続 | 単方向のリクエスト/レスポンス |
| 通信スタイル | JSON-RPC に基づく継続的なセッション | HTTP に基づく離散的なリクエスト |
| コンテキスト処理 | コンテキストがプロトコルに内在 | コンテキストは手動で管理する必要あり |
| ツールの発見 | 実行時に利用可能なツールを動的に発見 | 設計時に統合され、事前の知識が必要 |
| 統合アプローチ | 実行時の統合で動的機能を提供 | 設計時の統合でコード変更が必要 |
異なるレイヤー、異なる目的
REST API と MCP は技術スタックの異なるレイヤーで機能します:
- REST:リソース操作を公開するための低レベルな Web 通信パターン
- MCP:ツールの使用をオーケストレーションし、コンテキストを維持するための高レベルな AI プロトコル
MCP は内部で REST API を利用することもありますが、AI システムからはその詳細を抽象化します。MCP はミドルウェアのようなもので、個別の Web サービスを AI エージェントが操作できる統一環境に変換します。
コンテキスト保持:AI ワークフローの要
MCP のステートフル設計は、AI アプリケーションにおける REST の重要な制限に対処します:
- REST アプローチ:各呼び出しは孤立しており、ステップ間でコンテキストを手動で引き渡す必要がある
- MCP アプローチ:複数のツール呼び出しにわたって会話コンテキストが持続される
たとえばコードベースのデバッグ時、AI はファイルを開き、テストを実行し、バグを特定しても、ステップ間でコンテキストを失いません。MCP セッションは過去のアクションと結果を認識し続けます。
動的なツール発見
MCP により、AI は実行時にツールを発見・利用できます:
// AI が利用可能なツールを発見
{
"tools": [
{
"name": "readFile",
"description": "ファイルからコンテンツを読み込む",
"parameters": {
"path": { "type": "string", "description": "ファイルパス" }
}
},
{
"name": "createTicket",
"description": "課題トラッカーにチケットを作成",
"parameters": {
"title": { "type": "string" },
"description": { "type": "string" }
}
}
]
}この「プラグアンドプレイ」機能により、AI 自体を再デプロイまたは修正することなく新しいツールを追加できます。
実践例:マルチツールワークフロー
「最近のコミットを確認し、バグ修正の JIRA チケットを作成して Slack に投稿する」といった複数のサービスを要するタスクを考えてみましょう。
REST ベースのアプローチ:
- Git、JIRA、Slack の各 API に対して個別の統合が必要
- 呼び出し間のコンテキスト管理にカスタムコードが必要
- いずれかのサービス API が変更されるとワークフローが破損
MCP ベースのアプローチ:
- すべてのツールに対して統一されたプロトコルを使用
- ワークフロー全体を通してコンテキストを維持
- コード変更なしに新しいツールをシームレスに差し替え可能
VJSP が MCP を採用する理由
VJSP は MCP を活用することで以下を実現しています:
- 拡張性:公式統合を待つことなく無制限のカスタムツールを追加可能
- コンテキスト認識:ツールが会話履歴やプロジェクトコンテキストにアクセス可能
- 簡素化された統合:複数の API パラダイムではなく単一の標準プロトコル
- 実行時柔軟性:新しい機能を動的に発見・利用可能
MCP は VJSP と外部サービスとの間のユニバーサルコネクターとして機能します—これらのサービス自体は裏側で REST API を使っていることが多いのです。
結論:競合ではなく補完関係にある技術
MCP は REST API を置き換えるものではありません—むしろその上に構築されます。REST は個別のサービス提供に優れ、MCP はそれらのサービスを AI エージェント向けにオーケストレーションすることに優れています。
重要な違いは、MCP が AI ネイティブであることです。MCP はモデルをファーストクラスのユーザーとして扱い、AI エージェントが複雑な環境で効果的に動作するために必要な、コンテキストを持ちステートフルなインタラクションレイヤーを提供します。
