はじめに
Model Context Protocol(MCP)は、Anthropicが2024年に発表したAIとツールを接続するための標準プロトコルです。
しかし、僕が思うに名前から想像される「単なる通信プロトコル」以上に、深い設計思想を持つアーキテクチャパターンでもあると考えています。
本記事では、MCPの表面的な仕組みや実装ではなく、その背後にある設計思想と本質について深掘りしていきます。
間違いもあると思いますのでそちらに関してはご指摘いただければと思います!
あくまで自己流の理解となります!
想定している読者
- MCPに登場する概念"クライアント"・"サーバー"・"ホスト"の簡単な関係性は知っている
- 簡単なMCPサーバーを立ち上げたことがある
MCPの基本概念
簡単に
よく言われているのは、AIが外部リソースにアクセスするための道具です。
この意見は正しいと思っている一方でもう少し本質を掘り下げられると思っています。
それをこの後解説していきます。
従来のアーキテクチャとの決定的な違い
まず、MCPのアーキテクチャを学ぶとクライアントやサーバといった単語が出てきますね。
しかし、従来のネットワークで用いた解釈でMCPを学ぶと違和感を覚えるはずです。
従来のサーバークライアント
MCPのアーキテクチャ(サーバー=MCPサーバー)
ここに重要な逆転現象があります。
MCPでは、従来「サーバー」が担っていた問題解決の役割を「クライアント(AI)」が担います。
MCPではサーバーが提供するものはクライアントが解決するために必要な情報だけです。
それをクライアントが組み合わせて解決するのです。
(厳密には、MCPの場合はクライアントを内蔵しているホストが解決します。
ただ、この説明では従来との違いを明確にするためこのような表記をしました。
以降ではホストと表現します)
MCPの真の本質
「AIのパフォーマンスを最大限発揮させる」
これがMCPの本質だと考えています。
AIの得意領域
- 判断・推論・組み合わせ・文脈理解
- 複雑な問題を分解して解決戦略を立てる
- 異なる情報源を統合して新しい価値創造
AIの苦手領域
- 外部データの取得
- 特定システムとの連携
- リアルタイム情報へのアクセス
MCPは、AIが苦手な部分を補完し、得意な部分に集中できる環境を作ります。
設計思想の核心:手段と目的の分離
例えば、任意のYouTubeチャンネルから当該チャンネルと相性の良いタグを考える場合を想像します。
アンチパターン:目的を直接解決するツール
// 直接タグを生成する機能をAIに提供(❌ MCPの思想に反する)
{
"name": "generate_tags",
"description": "YouTubeチャンネルのタグを生成する"
}
正しいパターン:手段を提供するツール
// AIが必要となるであろう手段だけを提供する(✅ MCPの思想に沿う)
// AIはチャンネル情報を使ってYouTube検索やWeb検索を組み合わせてAI(ホスト)自身がタグを生成
{
"name": "youtube_info",
"description": "YouTube情報を取得する"
},
{
"name": "web_search",
"description": "Web検索を実行する"
}
MCPサーバーは「素材」を提供し、AI(ホスト)が「料理」するという関係です。
実装例で理解する
間違った実装(目的を直接解決)
private async onGenerateTagsRequest(request: MCPRequest): Promise<MCPResponse> {
// 全ての処理を内包
const channelInfo = await getYouTubeInfo();
const searchResults = await webSearch();
const tags = await generateTags();
return { result: tags };
}
正しい実装(手段の提供)
// ツール一覧
this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [
{
name: "youtube_channel_info",
description: "Get YouTube channel information",
inputSchema: { /* ... */ }
},
{
name: "web_search",
description: "Search the web for information",
inputSchema: { /* ... */ }
}
]
}));
実際の動作フロー
1. ユーザー:「YouTubeチャンネルのタグを生成して」
2. Claude:「情報収集が必要だな」
→ youtube_channel_info 実行
→ web_search 実行(複数回)
3. Claude:「収集した情報を分析してタグを生成しよう」
→ 自身の推論能力でタグ生成
MCPの「自律性」について
制約のある自律性
MCPが提供するのは「完全な自律性」ではなく「制約のある自律性」です。
- 道具の選択・組み合わせ → AI が自律的に判断
- 道具の機能・仕様 → 標準化・透明化
- 最終目標 → プロンプトで指定
ツールの透明性
// ホストはサーバーが提供する全ツールの詳細を把握
{
"tools": [
{
"name": "web_search",
"description": "Search the web",
"inputSchema": { /* 完全な仕様 */ }
}
]
}
まとめ
MCPの本質は「AIのパフォーマンスを最大限発揮させる」ための設計思想です。
- 役割の逆転 - 問題解決はホスト(AI)、手段提供はサーバー
- 手段と目的の分離 - MCPサーバーは基本的なツールのみ提供
- 制約のある自律性 - AIが道具を選択・組み合わせて問題解決
- 透明性の確保 - ツールの機能は完全に可視化
この設計により、AIの強み(判断・推論・組み合わせ)を最大限活用しつつ、弱み(外部連携)を補完する環境が実現されます。
MCPは単なるプロトコルではなく、AI時代の新しいパラダイムと言えるかもしれません!