Skip to main content

Shopify Store MCPサーバー

公式のShopify Dev MCPが開発者ドキュメントとスキーマイントロスペクションを提供する一方、ストアMCPサーバーはShopifyストアのAdmin APIに直接接続します。AIツールが実際の操作 -- 商品の作成、注文の取得、在庫の管理、顧客の更新 -- をすべて自然言語で行えるようにします。

コミュニティによって構築された複数のMCPサーバーがストア接続性を提供しています。このガイドでは、最も成熟して広く使用されているオプションを説明します。

学習には開発ストアを使用

ストアMCPサーバーはShopifyストアに対して実際の操作を実行します。「すべての下書き商品を削除」というコマンドは実際に削除します。学習とテストの際は必ず開発ストアを使用してください。どの操作が実行されるかを正確に理解するまで、本番ストアを接続しないでください。

認証: アクセストークン vs OAuth

ストアMCPサーバーをセットアップする前に、2025年1月に大幅に変更されたShopifyの認証モデルを理解する必要があります。

カスタムアプリアクセストークン(レガシーおよび既存アプリ)

2025年1月以前に作成されたアプリ、またはShopify管理画面から作成されたカスタムアプリの場合:

  1. Shopify管理画面 > 設定 > アプリと販売チャネルに移動
  2. アプリを開発 > アプリを作成をクリック
  3. Admin APIスコープを設定(必要な権限を選択)
  4. アプリをインストールし、Admin APIアクセストークンをコピー
アクセストークンの形式
shpat_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

OAuth資格情報(2025年1月以降の新しいアプリ)

Shopifyは2025年1月から新しいパブリックアプリとカスタムアプリの直接アクセストークン作成を廃止しました。新しいアプリはOAuthクライアント資格情報を使用します:

  1. Shopifyパートナーダッシュボードでアプリを作成
  2. Client IDClient Secretを記録
  3. OAuthフローを使用してアクセストークンを取得
  4. MCPサーバーがトークンの更新を自動的に処理
どの方法が必要か?
  • カスタムアプリの開発ストア: アクセストークンを使用(シンプルなセットアップ)
  • パートナーダッシュボード経由の新しいアプリ: OAuth資格情報を使用
  • 保存されたトークンのある既存アプリ: 既存のアクセストークンを使用

ほとんどのMCPサーバーは両方の方法をサポートしています。特定のサーバーのドキュメントで設定オプションを確認してください。

GeLi2001によるshopify-mcp

ほぼすべてのAdmin API操作をカバーする70以上のツールを持つ、最も包括的なコミュニティMCPサーバーです。完全なストア管理に推奨される選択肢です。

リポジトリ: github.com/GeLi2001/shopify-mcp

Claude Code用インストール

アクセストークンでインストール
claude mcp add shopify-store -- npx -- -y shopify-mcp --accessToken shpat_your_token_here --domain your-store.myshopify.com
OAuth資格情報でインストール
claude mcp add shopify-store -- npx -- -y shopify-mcp --clientId your_client_id --clientSecret your_client_secret --domain your-store.myshopify.com

Cursor用設定

.cursor/mcp.json
{
"mcpServers": {
"shopify-store": {
"command": "npx",
"args": [
"-y",
"shopify-mcp",
"--accessToken", "shpat_your_token_here",
"--domain", "your-store.myshopify.com"
]
}
}
}

利用可能な操作

サーバーはリソースタイプごとに整理されたツールを提供します:

商品(15以上のツール)

ツール説明
get_productsフィルタリングとページネーション付きで商品を一覧
get_productIDで単一商品を取得
create_productバリアント付きで新しい商品を作成
update_product商品フィールドを更新
delete_product商品を削除
get_product_variants商品のバリアントを一覧
create_product_variant商品にバリアントを追加
update_product_variantバリアント詳細を変更
get_product_images商品画像を一覧
upload_product_image商品に画像を追加
例: 商品の作成
> Create a new product called "Organic Cotton T-Shirt" with sizes
S, M, L, XL. Price the small at $29.99 and add $2 for each
size up. Set inventory to 50 units per variant at our main location.

注文(10以上のツール)

ツール説明
get_ordersステータスフィルター付きで注文を一覧
get_orderラインアイテム付きで単一注文を取得
create_fulfillment注文をフルフィルメント
cancel_order注文をキャンセル
create_draft_order下書き注文を作成
get_order_risks注文の不正リスクを確認
例: 未発送の注文を検索
> Show me all unfulfilled orders from the last 48 hours with
their customer email and total value.

顧客(8以上のツール)

ツール説明
get_customers検索付きで顧客を一覧
get_customer顧客詳細を取得
create_customer新しい顧客を作成
update_customer顧客情報を更新
get_customer_orders顧客の注文を一覧
search_customersメール、名前などで検索

コレクション(6以上のツール)

ツール説明
get_collectionsすべてのコレクションを一覧
get_smart_collectionsスマート(自動化)コレクションを一覧
create_collectionカスタムコレクションを作成
add_product_to_collectionコレクションに商品を追加
get_collection_productsコレクション内の商品を一覧

在庫(5以上のツール)

ツール説明
get_inventory_levelsロケーションでの在庫を確認
adjust_inventory在庫数量を調整
get_locationsストアロケーションを一覧
set_inventory_level絶対在庫レベルを設定

ディスカウント(6以上のツール)

ツール説明
get_price_rules価格ルールを一覧
create_price_ruleディスカウントルールを作成
create_discount_codeディスカウントコードを生成
get_discount_codes価格ルールのコードを一覧

ページネーションパターン

ShopifyのAPIはカーソルベースのページネーションを使用します。MCPサーバーがこれを処理しますが、パターンを理解することで効果的なリクエストが可能になります:

ページネーションリクエスト
> List all products (I have about 500). Fetch them in batches
of 50 and compile the complete list.

MCPサーバーは裏で複数のページネーションAPI呼び出しを行い、pageInfo.hasNextPageに従い、後続のリクエストにendCursorを使用します。

すべてを取得するのを避ける

MCPサーバーがページネーションを処理しても、数千のアイテムを取得するとトークンと時間を消費します。具体的にしてください:「全商品を一覧」より「最近更新された20商品を一覧」の方が、完全なカタログが不要な場合は適切です。

実践的なワークフロー

ワークフロー1: 商品カタログ監査

監査ワークフロー
> Analyze our product catalog:
1. List all products with no images
2. Find products with variants that have $0 price
3. Identify products with no inventory at any location
4. List products without descriptions

Compile this into a report with product titles and IDs.

ワークフロー2: 注文調査

注文調査
> A customer (email: customer@example.com) says they haven't
received their order. Look up their recent orders, check
fulfillment status, and summarize what I should tell them.

ワークフロー3: 一括操作

一括更新
> Add the tag "summer-2026" to all products in the "Summer
Collection" collection. Also set a metafield
custom.seasonal = "summer" on each one.

ワークフロー4: 在庫照合

在庫チェック
> Compare inventory levels between our "Main Warehouse" and
"Retail Store" locations. List any products where the total
across both locations is under 10 units.

セキュリティベストプラクティス

スコープの最小化

ワークフローに必要なスコープのみでアクセストークンを作成してください:

ワークフロー最小スコープ
商品管理read_products, write_products
注文閲覧read_orders
完全なストア管理read_products, write_products, read_orders, write_orders, read_customers, read_inventory, write_inventory
MCPに完全な管理者アクセスを使用しない

「念のため」とすべてのスコープを付与する誘惑に抗ってください。MCPワークフローが注文の読み取りのみの場合、read_ordersのみを付与してください。MCPサーバーが侵害されたり誤用されたりした場合、制限されたスコープが被害を限定します。コミュニティが構築したサーバーを使用する場合に特に重要です。

トークンのローテーション

アクセストークンを定期的にローテーションしてください:

  1. 同じスコープで新しいカスタムアプリを作成
  2. 新しいトークンでMCPサーバー設定を更新
  3. 古いカスタムアプリをアンインストール

環境変数

バージョン管理にコミットされる設定ファイルにトークンをハードコードしないでください:

環境変数を使用
# シェルプロファイルに
export SHOPIFY_MCP_TOKEN=shpat_your_token_here
export SHOPIFY_MCP_DOMAIN=your-store.myshopify.com

# Claude Code MCP設定で
claude mcp add shopify-store -- npx -- -y shopify-mcp --accessToken $SHOPIFY_MCP_TOKEN --domain $SHOPIFY_MCP_DOMAIN

トラブルシューティング

「Unauthorized」エラー

  • アクセストークンが正しく、取り消されていないことを確認
  • トークンに操作に必要なスコープがあることを確認
  • ストアドメインが正しいことを確認(.myshopify.comドメインを使用)

レート制限

一括操作中にレート制限エラーが発生する場合:

レート制限されたリクエスト
> Retry the operation with a 500ms delay between API calls.
My store is rate-limited right now.

ほとんどのMCPサーバーはレート制限を自動的に処理しますが、非常に積極的な一括操作では制限に達する場合があります。

データの欠落

クエリが予期しない空の結果を返す場合:

  • 商品/注文が期待されるステータス(アクティブ、下書き/アーカイブではない)であることを確認
  • 日付範囲フィルターが正しい形式であることを確認
  • アクセストークンがリソースタイプのread_スコープを持っていることを確認

次のステップ

ストアデータアクセスが設定されたら、アナリティクスでワークフローをさらに強化できます。Analytics MCPに進んで、MCP経由でShopifyアナリティクスとレポートツールを接続する方法を学びましょう。