Skip to main content

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はオープンソース

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を介して通信します。

stdioトランスポートの例
# 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サービスとして実行されます。

SSEトランスポートの例
# サーバーはURLで実行
http://localhost:3000/sse

メリット: ネットワークアクセス可能、複数クライアント接続可能、ファイアウォール越えも可能 デメリット: より複雑なセットアップ、HTTPサーバーが必要 最適な用途: チーム共有サーバー、リモートアクセス

Streamable HTTP

最新のトランスポートで、オプションのストリーミング付き標準HTTPリクエストを使用。本番デプロイメントに推奨されるトランスポートです。

HTTPトランスポート
# サーバーエンドポイント
http://localhost:3000/mcp

メリット: 標準HTTPセマンティクス、デプロイが容易、ステートフルとステートレスの両方をサポート デメリット: 最新のトランスポート、現在ツールサポートが少ない 最適な用途: 本番デプロイメント、クラウドホストサーバー

Shopify開発にはどのトランスポート?

Claude Codeでのローカル開発にはstdioを使用してください。設定ゼロで済みます -- MCPサーバーコマンドをClaude Codeに指定するだけで、残りは自動的に処理されます。チーム間でMCPサーバーを共有したり、リモートアクセスが必要な場合はSSEまたはHTTPを使用してください。

MCPプリミティブ

MCPは、サーバーが公開できる4つのコアプリミティブを定義しています:

ツール

ツールは、AIモデルがアクションを実行するために呼び出せる関数です。最も一般的に使用されるプリミティブです。

例: Shopify商品検索ツール
{
"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がアクセスできるファイルやドキュメントのようなものです。

例: Shopify APIドキュメントリソース
{
"uri": "shopify://docs/admin-api/products",
"name": "Products API Documentation",
"mimeType": "text/markdown",
"description": "Complete reference for the Shopify Admin API Products endpoints"
}

主な特徴:

  • アプリケーション制御: ホストがいつ読み込むかを決定
  • 読み取り専用(副作用なし)
  • 静的(ドキュメント)または動的(ライブデータ)が可能
  • カスタムスキームでURIベースのアドレッシングをサポート

プロンプト

プロンプトは、ユーザーが一般的なタスクを達成するのを助ける事前作成済みのテンプレートです。ユーザー向けで、提案やスラッシュコマンドとして表示されます。

例: Shopifyアプリスキャフォールディングプロンプト
{
"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は開発用であり、本番用ではない

よくある誤解: MCPはアプリのShopify API統合の代替ではありません。本番アプリは認証済みクライアントを介してShopify Admin APIを直接使用すべきです。MCPは、AIアシスタントにShopifyのエコシステムへの構造化されたアクセスを提供することで開発ワークフローを強化するツールです。

ShopifyのMCPエコシステム

Shopify MCPエコシステムには、それぞれ異なる目的を持つ複数のサーバーが含まれています:

各サーバーは、このモジュールの以降のセクションで詳しく説明します。

最初のMCPサーバーのセットアップ

Claude CodeにMCPサーバーを追加するのがいかに簡単かのプレビュー:

Shopify Dev 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サーバーのセットアップとその機能を探索しましょう。