shopify-mcp について
shopify-mcpは、Admin GraphQL APIを通じてShopifyストアを管理するMCPサーバーです。オプションのComfyUI連携により、商品画像を生成・補正し、商品の作成や更新に利用できます。
主な機能
- 01商品、注文、顧客の管理
- 02在庫、バリエーション、コレクションの操作
- 03フルフィルメントと下書き注文の管理
- 04メタフィールド、メタオブジェクト、Webhookの操作
- 05ShopifyQL分析クエリの実行
- 06ComfyUIによる商品画像の生成・補正
活用シーン
- 01生成画像付きの商品を作成
- 02商品情報、バリエーション、在庫を更新
- 03下書き注文とフルフィルメントを管理
- 04ストアの売上や商品分析を照会
MCP 対応
Shopify Admin APIの操作機能をMCPクライアントに提供し、商品、注文、在庫、ストア管理などに対応します。ComfyUIを設定すると、画像を生成または補正し、Shopify商品に追加する連携ツールも利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @miller-joe/shopify-mcpSHOPIFY_STOREStore domain, e.g. 'my-store' or 'my-store.myshopify.com'SHOPIFY_ACCESS_TOKENシークレットAdmin API access token (shpat_...). See README for how to create a custom app on a dev store.SHOPIFY_API_VERSIONShopify GraphQL Admin API version (default: 2026-04)COMFYUI_URLComfyUI HTTP URL for bridge tools. When unset, generate_* bridge tools are disabled.COMFYUI_PUBLIC_URLExternally-reachable ComfyUI URL (defaults to COMFYUI_URL)COMFYUI_DEFAULT_CKPTDefault ComfyUI checkpoint filename for bridge tools (default: sd_xl_base_1.0.safetensors)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
shopify-mcp
Shopify 向けの MCP サーバーです。Admin GraphQL API の全機能に加え、ComfyUI による画像生成を介した、AI 主導の商品作成ブリッジを備えています。
ここがポイント
ほかの Shopify MCP はどれも、単なる Admin API のラッパーです。この MCP は @miller-joe/comfyui-mcp と連携するため、次のように指示できます。
「*『Nebula Dreamer』*という商品を作成してください。宇宙をテーマにした抽象的な画像を生成し、雰囲気に合った説明文を付け、タグに astrology を設定し、ステータスを下書きにしてください。」
Claude が ComfyUI を実行して画像を取得し、Shopify 商品を作成して画像を添付するまで、すべてを一度の呼び出しで行います。
インストール
# npx, no install
npx @miller-joe/shopify-mcp \
--shopify-store your-store.myshopify.com \
--shopify-access-token shpat_xxx
# Docker
docker run -p 9110:9110 \
-e SHOPIFY_STORE=your-store.myshopify.com \
-e SHOPIFY_ACCESS_TOKEN=shpat_xxx \
-e COMFYUI_URL=http://comfyui:8188 \
ghcr.io/miller-joe/shopify-mcp:latest
MCP クライアントへの接続
claude mcp add --transport http shopify http://localhost:9110/mcp
または、MCP ゲートウェイの接続先として Streamable HTTP エンドポイントを指定してください。
設定
| CLI フラグ | 環境変数 | デフォルト | 備考 |
|---|---|---|---|
--shopify-store | SHOPIFY_STORE | (必須) | my-store または my-store.myshopify.com |
--shopify-access-token | SHOPIFY_ACCESS_TOKEN | (必須) | Admin API トークン(shpat_…) |
--shopify-api-version | SHOPIFY_API_VERSION | 2026-04 | GraphQL Admin API のバージョン |
--host | MCP_HOST | 0.0.0.0 | バインドするホスト(HTTP モードのみ) |
--port | MCP_PORT | 9110 | バインドするポート(HTTP モードのみ) |
--stdio | MCP_TRANSPORT=stdio | (未設定) | HTTP ではなく、stdio 経由で MCP と通信します。stdio を優先する MCP クライアント(Claude Desktop、mcp-inspector)のサブプロセスとして起動する場合に使用します。 |
--comfyui-url | COMFYUI_URL | (任意) | 設定するとブリッジツールが有効になります |
--comfyui-public-url | COMFYUI_PUBLIC_URL | --comfyui-url と同じ | Shopify に渡す画像参照で使用する外部 URL |
| (フラグなし) | COMFYUI_DEFAULT_CKPT | sd_xl_base_1.0.safetensors | ブリッジツールのデフォルトチェックポイント |
トランスポート
デフォルトでは、サーバーはストリーミング可能な HTTP を使用します(Claude Code、MetaMCP、直接の fetch に最適です)。--stdio を渡すか、MCP_TRANSPORT=stdio を設定すると、stdio モードに切り替わります。Claude Desktop や MCP Inspector など、stdio を優先するクライアントが想定するモードです。
// claude_desktop_config.json
{
"mcpServers": {
"shopify": {
"command": "npx",
"args": ["-y", "@miller-joe/shopify-mcp", "--stdio"],
"env": {
"SHOPIFY_STORE": "my-store.myshopify.com",
"SHOPIFY_ACCESS_TOKEN": "shpat_…"
}
}
}
}
Shopify アクセストークンの取得
簡単な方法(既存の開発ストアの場合): Shopify Admin → アプリ → アプリを開発 → カスタムアプリを作成 → 関連する Admin API スコープ(write_products、read_orders、write_inventory、read_customers)を有効化 → インストール → Admin API アクセストークン(shpat_ で始まる)をコピーします。
新しいアプリの場合(2026 年 1 月以降): 新規作成されたアプリでは、従来のカスタムアプリトークンは非推奨です。Dev Dashboard のトークン交換フローを一度実行して有効なトークンを取得し、ここで指定してください。マルチテナント OAuth は今後の予定です。
ツール
Admin の基本機能
| ツール | 説明 |
|---|---|
list_products | Shopify のクエリ構文を使用した、ページネーション対応の商品検索 |
get_product | バリエーション、画像、メディアを含む商品を 1 件取得 |
create_product | 商品を作成(デフォルトは DRAFT)。画像の添付も可能 |
update_product | タイトル、説明、タグ、ステータスなどを更新 |
upload_product_image | 公開画像 URL を既存の商品に添付 |
list_orders | クエリフィルターを指定して、新しい順に注文を一覧表示 |
get_order | 明細項目を含む注文を 1 件取得 |
set_inventory_quantity | ロケーションの在庫数を絶対値で設定 |
list_locations | ストアのロケーションを一覧表示(在庫操作用) |
list_customers | クエリフィルターを指定して顧客を一覧表示 |
メタフィールド
| ツール | 説明 |
|---|---|
set_metafield | 任意の HasMetafields リソース(商品、バリエーション、コレクション、顧客、注文、ストアなど)のメタフィールドを作成または更新します |
list_metafields | リソースのメタフィールドを一覧表示します。必要に応じてネームスペースで絞り込めます |
delete_metafield | (ownerId, namespace, key) を指定してメタフィールドを削除します |
下書き注文
| ツール | 説明 |
|---|---|
list_draft_orders | Shopify のクエリフィルターを使って下書き注文を一覧表示します |
get_draft_order | 1 件の下書き注文とその明細項目を取得します |
create_draft_order | 下書き注文を作成します。明細項目にはバリエーション参照またはカスタム項目(タイトル+価格)を指定できます。 |
update_draft_order | 顧客、明細項目、タグ、メモ、メールアドレスを更新します |
complete_draft_order | 下書き注文を実際の注文に変換します。paymentPending を指定すると決済の確定をスキップします。 |
delete_draft_order | 完了していない下書き注文を削除します |
Webhook
| ツール | 説明 |
|---|---|
list_webhooks | Webhook サブスクリプションを一覧表示します。トピックで絞り込めます |
get_webhook | 1 件のサブスクリプションを取得します |
create_webhook | HTTPS コールバック URL をトピック(例:ORDERS_CREATE)に登録します |
update_webhook | コールバック URL、形式、フィールド/メタフィールドのフィルターを変更します |
delete_webhook | サブスクリプションを削除します |
Metaobject
| ツール | 説明 |
|---|---|
list_metaobject_definitions | フィールド定義を含む、ストアの metaobject タイプ(スキーマ)を確認します |
list_metaobjects | 指定したタイプの metaobject を一覧表示します |
get_metaobject | 1 件の metaobject とすべてのフィールドを取得します |
create_metaobject | metaobject を作成します(タイプは定義としてすでに存在している必要があります)。ACTIVE/DRAFT ステータスに対応しています。 |
update_metaobject | フィールドを作成または更新し、ハンドルを変更し、公開可能ステータスを切り替えます |
delete_metaobject | metaobject を削除します |
フルフィルメント
| ツール | 説明 |
|---|---|
list_fulfillment_orders | 注文のフルフィルメント注文を一覧表示します(配送ロケーションごとに 1 件)。明細項目ごとの残数量も表示します |
get_fulfillment_order | 1 件のフルフィルメント注文を取得します |
get_fulfillment | 追跡情報を含む 1 件のフルフィルメント(出荷記録)を取得します |
create_fulfillment | フルフィルメント注文(または指定した数量)をフルフィルメント済みとして記録します。必要に応じて追跡情報を追加し、顧客に通知できます。 |
update_fulfillment_tracking | 既存のフルフィルメントの配送業者、追跡番号、URL を更新します |
cancel_fulfillment | ID を指定してフルフィルメントをキャンセルします |
部分的なフルフィルメントに対応しています。各明細の quantity を指定した fulfillmentOrderLineItems を渡すか、配列を省略すると、フルフィルメント注文のすべてをフルフィルメントします。
バリエーションと商品オプション
| ツール | 説明 |
|---|---|
list_variants | 選択済みオプション、価格、SKU、在庫を含む商品のすべてのバリエーションを一覧表示します |
create_variants | オプション値、価格、SKU、compareAtPrice、初期在庫を指定して、バリエーションを一括作成します(最大 100 件) |
update_variants | バリエーションの価格、compareAtPrice、SKU、バーコード、課税対象、inventoryPolicy、オプション値を一括更新します |
delete_variants | 商品のバリエーションを一括削除します |
reorder_variants | バリエーションの位置を 1 始まりの番号で設定します |
add_product_options | オプション(Size/Color など)とその選択可能な値を追加します。商品あたり最大 3 つのオプションを設定できます。 |
まったく新しい商品で最初の実際のバリエーションを作成するには、自動生成された「Default Title」バリエーションを置き換えるため、strategy="REMOVE_STANDALONE_VARIANT" を指定する必要があります。
コレクションとタグ付け
| ツール | 説明 |
|---|---|
list_collections | クエリフィルターを指定してコレクションを一覧表示します |
get_collection | 商品を含む単一のコレクションを取得します |
create_collection | 商品を任意で追加して、手動コレクションを作成します |
update_collection | タイトル、説明、またはハンドルを更新します |
delete_collection | コレクションを削除します |
add_products_to_collection | 手動コレクションに商品を追加します(Shopify 側で非同期ジョブが実行されます) |
remove_products_from_collection | 手動コレクションから商品を削除します |
add_tags | タグ付け可能なあらゆるリソース(Product、Order、Customer、DraftOrder、Collection)にタグを追加します |
remove_tags | タグ付け可能なリソースからタグを削除します |
アナリティクス(ShopifyQL)
| ツール | 説明 |
|---|---|
run_shopifyql_query | ShopifyQL クエリを実行し、結果を ASCII テーブルとして表示します。生の JSON ペイロードを取得するには raw=true を指定します。 |
例:
FROM sales SHOW total_sales BY day SINCE -30d TIMESERIESFROM products SHOW product_title, quantity_sold BY product_id SINCE -7d ORDER BY quantity_sold DESC LIMIT 10
ComfyUI ブリッジ(COMFYUI_URL が設定されている場合)
| ツール | 説明 |
|---|---|
generate_and_create_product | 1 回の呼び出しで画像を生成し、その画像を使って商品を作成します。指定がない場合、タイトルと説明はプロンプトから生成されます。 |
generate_product_image | 画像を生成し、既存の商品に添付します。 |
refine_product_image | 商品の注目画像(または明示的に指定した URL)に img2img を実行し、調整後の画像を添付します。結果が元画像からどの程度変化するかは、denoise(0–1)で調整します。 |
bulk_regenerate_images | クエリに一致するすべての商品に対して、テンプレート化されたプロンプトで画像を生成し、新しい画像を添付します。 |
bulk_regenerate_images のテンプレートプレースホルダー:{title}、{handle}。
例:一度の呼び出しで全体を実現
Claude, use generate_and_create_product:
prompt: "minimalist sunset mountain silhouette, warm gradient, vector style"
title: "Mountain Sunset Poster"
status: DRAFT
tags: ["posters", "nature", "minimalist"]
ComfyUI が画像を生成し、Shopify が画像を添付して商品を作成します。商品 ID と画像 URL が返されます。プロンプト 1 つ、呼び出し 1 回で、実際の商品を掲載できます。
アーキテクチャ
┌────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ MCP client │────▶│ shopify-mcp │────▶│ Shopify Admin │
│ (Claude etc.) │◀────│ (this server) │◀────│ GraphQL API │
└────────────────┘ └────────┬─────────┘ └─────────────────┘
│
│ (bridge tools only)
▼
┌──────────────────┐
│ ComfyUI │
│ (txt2img) │
└──────────────────┘
ブリッジツールは HTTP 経由で ComfyUI を直接呼び出し、画像 URL を取得して Shopify の productCreateMedia ミューテーションに渡します。Shopify が画像を取得し、CDN でホストします。
開発
git clone https://github.com/miller-joe/shopify-mcp
cd shopify-mcp
npm install
npm run dev # hot reload via tsx watch
npm run build
npm run typecheck
npm test
Node 20 以降が必要です。
ロードマップ
リリース済み:
- 商品の基本的な CRUD と画像の添付
- 注文の読み取り、在庫の設定とロケーション、顧客の読み取り
- ComfyUI ブリッジ:
generate_and_create_product、generate_product_image、bulk_regenerate_images - メタフィールド:
set_metafield、list_metafields、delete_metafield - 下書き注文:作成/更新/完了/削除/一覧表示/取得
- コレクションとタグ付け:CRUD、商品の追加/削除、
add_tags/remove_tags - バリエーションと商品オプション:一括作成/更新/削除/並べ替え、および
add_product_options - フルフィルメント:フルフィルメント注文の一覧表示/取得、フルフィルメントの作成(一部対応)、追跡情報の更新、キャンセル
- Webhook:一覧表示/取得/作成/更新/削除
- メタオブジェクト:定義の一覧表示とメタオブジェクトの CRUD
- ShopifyQL アナリティクス:ASCII テーブル表示に対応した
run_shopifyql_query - 画像調整ブリッジ:
refine_product_image(商品画像に対する ComfyUI の img2img)
予定:
- 新しいアプリの認証用 OAuth トークン交換フロー。
ライセンス
MIT © Joe Miller
サポート
このツールで時間を節約できた場合は、開発への支援をご検討ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。