MCPの基礎
Model Context Protocol (MCP) は、AIモデルが外部のデータソースやツールにどのように接続するかを定義する、Anthropicが作成したオープンスタンダードです。ユニバーサルアダプターのようなもので、すべてのAIアプリケーションがすべてのサービスとカスタム統合を構築する代わりに、MCPは任意のAIホストが任意のMCP対応サーバーと通信するための標準化されたプロトコルを提供します。
Shopify開発者にとって、MCPは特に強力です。Claude Code(および他のAIツール)がShopifyのAPIと直接やり取りし、ドキュメントを読み、テーマを検証し、ストアデータを管理できるようにします -- すべて標準化された構成可能なインターフェースを通じて。
MCPが存在する理由
MCP以前は、AIモデルを外部サービスに接続するには、すべての統合に対してカスタムコードが必要でした。ClaudeをShopify、GitHub、Slackと連携させたい場合、異なる認証フロー、データ形式、エラー処理パターンを持つ3つの別々のカスタム統合が必要でした。
MCPは単一のプロトコルでこれを解決します:
- ツール開発者向け: 1つのMCPサーバーを構築すれば、すべてのMCP対応AIホストで動作します
- AIホスト向け: MCPを1度サポートすれば、ツールのエコシステム全体にアクセスできます
- エンドユーザー向け: 統合コードを書かずにツールを組み合わせられます
MCPはTypeScript、Python、Java、Kotlin、C#、Swift、GoでSDKが利用可能なオープン仕様です。誰でもMCPサーバーやクライアントを構築できます。仕様とSDKはmodelcontextprotocol.ioで入手可能です。
アーキテクチャ
MCPは3つの異なるレイヤーを持つクライアント-サーバーアーキテクチャに従います:
3つのレイヤー
ホスト: ユーザーが操作するアプリケーション。Claude Code、Cursor、Claude Desktop、VS Code CopilotはすべてMCPホストの例です。ホストはユーザーインターフェースを管理し、AIモデルとMCPクライアント間を調整します。
クライアント: ホストによって作成され、サーバー接続ごとに1つのクライアントがあります。クライアントはプロトコルネゴシエーション、機能交換、メッセージルーティングを処理します。通常、クライアントと直接やり取りすることはありません -- ホストがそれらを管理します。
サーバー: 特定の機能を公開する軽量プログラム。Shopify MCPサーバーは、商品を照会するツール、ドキュメントを読むためのリソース、一般的な操作のためのプロンプトを公開する場合があります。
トランスポートタイプ
MCPは、クライアントとサーバー間の通信に複数のトランスポートメカニズムをサポートしています。各トランスポートには異なるトレードオフがあります。
stdio(標準入出力)
ローカル開発で最も一般的なトランスポート。ホストがMCPサーバーを子プロセスとして起動し、stdin/stdoutを介して通信します。
# Claude Codeがこのプロセスを起動し、stdin/stdout経由で通信
npx -y @anthropic-ai/shopify-dev-mcp@latest
メリット: シンプルなセットアップ、ネットワーク設定不要、安全(ローカルのみ) デメリット: ローカルのみ、サーバーインスタンスごとに1クライアント 最適な用途: 開発ツール、Claude Code、Cursor
SSE(Server-Sent Events)
ストリーミングレスポンス用にServer-Sent Eventsを使用するHTTP。サーバーはWebサービスとして実行されます。
# サーバーはURLで実行
http://localhost:3000/sse
メリット: ネットワークアクセス可能、複数クライアント接続可能、ファイアウォール越えも可能 デメリット: より複雑なセットアップ、HTTPサーバーが必要 最適な用途: チーム共有サーバー、リモートアクセス
Streamable HTTP
最新のトランスポートで、オプションのストリーミング付き標準HTTPリクエストを使用。本番デプロイメントに推奨されるトランスポートです。
# サーバーエンドポイント
http://localhost:3000/mcp
メリット: 標準HTTPセマンティクス、デプロイが容易、ステートフルとステートレスの両方をサポート デメリット: 最新のトランスポート、現在ツールサポートが少ない 最適な用途: 本番デプロイメント、クラウドホストサーバー
Claude Codeでのローカル開発にはstdioを使用してください。設定ゼロで済みます -- MCPサーバーコマンドをClaude Codeに指定するだけで、残りは自動的に処理されます。チーム間でMCPサーバーを共有したり、リモートアクセスが必要な場合はSSEまたはHTTPを使用してください。
MCPプリミティブ
MCPは、サーバーが公開できる4つのコアプリミティブを定義しています:
ツール
ツールは、AIモデルがアクションを実行するために呼び出せる関数です。最も一般的に使用されるプリミティブです。
{
"name": "search_products",
"description": "Search for products in the Shopify store by title, vendor, or tag",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search query string"
},
"limit": {
"type": "number",
"description": "Maximum results to return",
"default": 10
}
},
"required": ["query"]
}
}
主な特徴:
- モデル制御: AIがいつ呼び出すかを決定
- 副作用を持つことがある(作成、更新、削除)
- 構造化された結果を返す
- 明確で説明的な名前と説明が必要
リソース
リソースは、コンテキストに読み込める読み取り専用データを提供します。AIがアクセスできるファイルやドキュメントのようなものです。
{
"uri": "shopify://docs/admin-api/products",
"name": "Products API Documentation",
"mimeType": "text/markdown",
"description": "Complete reference for the Shopify Admin API Products endpoints"
}
主な特徴:
- アプリケーション制御: ホストがいつ読み込むかを決定
- 読み取り専用(副作用なし)
- 静的(ドキュメント)または動的(ライブデータ)が可能
- カスタムスキームでURIベースのアドレッシングをサポート
プロンプト
プロンプトは、ユーザーが一般的なタスクを達成するのを助ける事前作成済みのテンプレートです。ユーザー向けで、提案やスラッシュコマンドとして表示されます。
{
"name": "scaffold_shopify_app",
"description": "Generate a complete Shopify app scaffold",
"arguments": [
{
"name": "app_type",
"description": "Type of app (remix, custom, hydrogen)",
"required": true
},
{
"name": "features",
"description": "Comma-separated list of features to include",
"required": false
}
]
}
主な特徴:
- ユーザー制御: ユーザーが明示的に選択
- メッセージテンプレートを返す(生データではない)
- リソースからの動的コンテンツを含むことができる
- 会話のスターターやワークフローのトリガーとして機能
サンプリング
サンプリングにより、MCPサーバーがAIモデルにテキスト生成を要求できます。これにより、サーバーがAIの推論を活用するエージェンティックなサーバーサイドワークフローが可能になります。
主な特徴:
- サーバー主導: サーバーがAI補完を要求
- ヒューマンインザループ: ホストはユーザーに承認/拒否を許可すべき
- サーバーロジック内での多段階推論を可能に
- 複雑なツールオーケストレーションに使用
ほとんどのShopify MCPサーバーはサンプリングを使用しません。主に、ツール実行の一部として複雑な推論を行う必要があるカスタムMCPサーバーを構築する場合に有用です。既存のMCPサーバーを使用するだけの場合は、今のところサンプリングを安全にスキップできます。
MCP対従来のAPI統合
MCPが直接API統合とどう異なるかを理解すると、各アプローチをいつ使うべきかが明確になります。
| 側面 | 直接API統合 | MCP統合 |
|---|---|---|
| セットアップ | APIごとにカスタムコード | 標準化されたプロトコル |
| 認証 | APIごとの認証フロー | サーバーが処理 |
| ディスカバリ | ドキュメントを読んでコードを書く | 自動ツールディスカバリ |
| 更新 | 手動コード変更 | サーバーが独立して更新 |
| 構成可能性 | 組み合わせが困難 | サーバーの組み合わせが自由 |
| AI認識 | モデルはAPIの存在を知らない | モデルがツールを動的に発見 |
直接API呼び出しを使うべき場合
- 本番アプリコード: ShopifyアプリはMCP経由ではなく、Admin APIを直接呼び出すべき
- 高パフォーマンスパス: MCPはプロトコルレイヤーを追加するため、レイテンシに敏感な操作ではスキップ
- シンプルで安定した統合: 1つのAPIエンドポイントのみ必要な場合、MCPは過剰
MCPを使うべき場合
- AI支援開発: 開発中にClaude CodeがShopifyとやり取りする場合
- マルチツールワークフロー: Shopifyデータを他のサービス(アナリティクス、CMS、配送)と組み合わせる場合
- 探索とプロトタイピング: コードを書かずにAPI操作を素早くテストする場合
- ドキュメントとスキーマアクセス: ShopifyのドキュメントとGraphQLスキーマをAIコンテキストに取り込む場合
よくある誤解: MCPはアプリのShopify API統合の代替ではありません。本番アプリは認証済みクライアントを介してShopify Admin APIを直接使用すべきです。MCPは、AIアシスタントにShopifyのエコシステムへの構造化されたアクセスを提供することで開発ワークフローを強化するツールです。
ShopifyのMCPエコシステム
Shopify MCPエコシステムには、それぞれ異なる目的を持つ複数のサーバーが含まれています:
各サーバーは、このモジュールの以降のセクションで詳しく説明します。
最初のMCPサーバーのセットアップ
Claude CodeにMCPサーバーを追加するのがいかに簡単かのプレビュー:
claude mcp add shopify-dev-mcp -s user -- npx -- -y @anthropic-ai/shopify-dev-mcp@latest
この1つのコマンドでShopify Dev MCPサーバーがグローバルに登録されます。次回Claude Codeを起動すると、Shopifyドキュメント検索、GraphQLスキーマイントロスペクション、テーマ検証に自動的にアクセスできるようになります。
各MCPサーバーについては、以降のページで詳しく説明します。
次のステップ
MCPのアーキテクチャとプリミティブを理解したら、Shopify Dev MCPサーバーに進んで、Shopifyの公式MCPサーバーのセットアップとその機能を探索しましょう。