mcpField

Shopify について

Shopify MCP Serverは、GraphQL経由でShopify Admin APIを操作するMCPサーバーです。店舗管理やEC業務向けに、商品、顧客、注文、在庫、販売チャネルを扱い、一覧の絞り込みやページネーションにも対応します。

主な機能

  1. 01商品、バリエーション、メディアの管理
  2. 02顧客と注文の作成・更新
  3. 03在庫、価格、タグの操作
  4. 04販売チャネルへの商品公開
  5. 05一覧の絞り込み、並べ替え、ページネーション

活用シーン

  1. 01商品カタログとバリエーションの更新
  2. 02顧客注文の確認や管理
  3. 03在庫数と価格の確認

MCP 対応

MCPクライアントにShopify店舗の操作をツールとして公開するMCPサーバーです。クライアント資格情報または静的アクセストークンでShopify GraphQL Admin APIに接続します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"kisasa-shopify": {
"command": "npx",
"args": [
"-y",
"@kisasa/shopify-mcp"
],
"env": {
"MYSHOPIFY_DOMAIN": "<MYSHOPIFY_DOMAIN>",
"SHOPIFY_CLIENT_ID": "<SHOPIFY_CLIENT_ID>",
"SHOPIFY_CLIENT_SECRET": "<SHOPIFY_CLIENT_SECRET>",
"SHOPIFY_ACCESS_TOKEN": "<SHOPIFY_ACCESS_TOKEN>",
"SHOPIFY_API_VERSION": "<SHOPIFY_API_VERSION>"
}
}
}
}
起動コマンドnpx -y @kisasa/shopify-mcp
設定が必要な環境変数
MYSHOPIFY_DOMAINYour store's myshopify.com domain
SHOPIFY_CLIENT_IDClient ID of a Dev Dashboard app (use with SHOPIFY_CLIENT_SECRET, or set SHOPIFY_ACCESS_TOKEN instead)
SHOPIFY_CLIENT_SECRETシークレットClient secret of a Dev Dashboard app
SHOPIFY_ACCESS_TOKENシークレットStatic Admin API access token (shpat_...) for legacy custom apps, instead of client ID/secret
SHOPIFY_API_VERSIONShopify Admin API version

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@kisasa/shopify-mcp1.1.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Shopify MCP サーバー

Shopify API 用の MCP サーバーです。GraphQL API を通じてストアデータを操作できます。このサーバーは、商品、顧客、注文などを管理するためのツールを提供します。

📦 パッケージ名:@kisasa/shopify-mcp 🚀 コマンド:shopify-mcp(shopify-mcp-serverではありません)

lucasjahn/shopify-mcp をベースに構築されています。同プロジェクトは GeLi2001/shopify-mcp のフォークです。クレジットをご覧ください。

機能

  • 商品管理:商品、バリエーション、オプションの完全な CRUD に対応。バリエーション画像と在庫ポリシーも含みます(8 個のツール)
  • 商品メディア:URL で商品に画像を添付し、処理状況を確認します(2 個のツール)
  • 販売チャネルへの公開:販売チャネルの一覧表示、チャネルでの商品公開および非公開に対応します(4 個のツール)
  • 顧客管理:完全な CRUD、統合、住所管理に対応します(8 個のツール)
  • 注文管理:スマート検索、キャンセル、クローズ/オープン、支払い済みへの変更、フルフィルメント、返金に対応します(10 個のツール)
  • メタフィールド管理:任意のリソースのメタフィールドを取得、設定、削除します(3 個のツール)
  • コレクション管理:コレクションの一覧表示と、商品を含むコレクション詳細の取得に対応します(2 個のツール)
  • 設定と情報の検出:ストア情報、メタフィールド定義、ロケーション、マーケットに対応します(5 個のツール)
  • 在庫と価格設定:数量の設定、在庫レベル/商品情報の表示、価格表、詳細なバリエーションに対応します(5 個のツール)
  • タグ管理:一括操作を含め、タグ付け可能な任意のリソースのタグを追加/削除します(2 個のツール)
  • 拡張注文ツール:取引、フルフィルメント注文、返金詳細に対応します(3 個のツール)
  • フィールド選択:すべての GET ツールで fields パラメーターを利用でき、必要なデータのみ取得できます
  • 件数のみのモード:一覧表示ツールで countOnly を指定すると、データを取得せずに結果件数を取得できます
  • ページネーションと並べ替え:すべての一覧クエリでカーソルベースのページネーションとソートキーに対応します
  • 高度なフィルタリング:すべての一覧エンドポイントで Shopify クエリ構文をそのまま渡せます
  • GraphQL 連携:Shopify GraphQL Admin API(2026-10)と直接連携します
  • 包括的なエラー処理:API および認証の問題について、明確なエラーメッセージを表示します

前提条件

  1. Node.js(バージョン 18 以上)
  2. カスタムアプリを設定した Shopify ストア(以下のセットアップ手順をご覧ください)

セットアップ

認証

このサーバーは、2 つの認証方法に対応しています。

オプション 1:クライアント認証情報(Dev Dashboard アプリ、2026 年 1 月以降)

2026 年 1 月 1 日以降、新しい Shopify アプリは Dev Dashboard で作成され、静的アクセストークンの代わりに OAuth クライアント認証情報を使用します。

  1. Shopify 管理画面から、設定 > アプリと販売チャネル に移動します

  2. アプリを開発 > Dev Dashboard でアプリを作成 をクリックします

  3. 新しいアプリを作成し、Admin API スコープ を設定します。基本的なスコープは次のとおりです。

    • read_products, write_products
    • read_customers, write_customers
    • read_orders, write_orders

    一部のツールには追加のスコープが必要です。使用する機能に必要なスコープのみを追加してください。

    スコープ必要な機能
    read_all_orders60 日より前の注文(それ以外の場合、注文ツールで確認できるのは最近の注文のみです)
    read_inventory, write_inventoryget-inventory-levels, inventory-set-quantities
    read_locationsget-locations, get-inventory-levels
    read_marketsget-markets
    read_draft_orders, write_draft_orderscreate-draft-order, complete-draft-order
    read_merchant_managed_fulfillment_orders, write_merchant_managed_fulfillment_ordersget-fulfillment-orders, create-fulfillment
    read_publications, write_publicationsget-publications, get-product-publications, publish-product, unpublish-product

    すべてのツールの完全な一覧は次のとおりです。

    read_products,write_products,read_customers,write_customers,read_orders,write_orders,read_all_orders,read_inventory,write_inventory,read_locations,read_markets,read_draft_orders,write_draft_orders,read_merchant_managed_fulfillment_orders,write_merchant_managed_fulfillment_orders,read_publications,write_publications
    

    スコープを変更した後、新しいアプリバージョンをリリースしてストアで承認し、新しいスコープを含むトークンを取得できるように MCP サーバーを再起動してください。

  4. ストアにアプリをインストールします

  5. アプリの API 認証情報から Client ID と Client Secret をコピーします

サーバーはこれらを自動的にアクセストークンに交換し、有効期限が切れる前に更新します(トークンの有効期間は約 24 時間です)。

オプション 2:静的アクセストークン(レガシーアプリ)

静的な shpat_ アクセストークンを持つ既存のカスタムアプリがある場合は、引き続き直接使用できます。

Claude Desktop での使用方法

クライアント認証情報(推奨):

{
  "mcpServers": {
    "shopify": {
      "command": "npx",
      "args": [
        "@kisasa/shopify-mcp",
        "--clientId",
        "<YOUR_CLIENT_ID>",
        "--clientSecret",
        "<YOUR_CLIENT_SECRET>",
        "--domain",
        "<YOUR_SHOP>.myshopify.com"
      ]
    }
  }
}

環境変数を使用したクライアント認証情報(コマンドラインにシークレットを含めずに済みます):

{
  "mcpServers": {
    "shopify": {
      "command": "npx",
      "args": ["-y", "@kisasa/shopify-mcp"],
      "env": {
        "MYSHOPIFY_DOMAIN": "<YOUR_SHOP>.myshopify.com",
        "SHOPIFY_CLIENT_ID": "<YOUR_CLIENT_ID>",
        "SHOPIFY_CLIENT_SECRET": "<YOUR_CLIENT_SECRET>"
      }
    }
  }
}

複数のストアに接続するには、ストアごとに異なる名前(例:"shopify-store-a"、"shopify-store-b")を指定してエントリを追加します。

静的アクセストークン(レガシー):

{
  "mcpServers": {
    "shopify": {
      "command": "npx",
      "args": [
        "@kisasa/shopify-mcp",
        "--accessToken",
        "<YOUR_ACCESS_TOKEN>",
        "--domain",
        "<YOUR_SHOP>.myshopify.com"
      ]
    }
  }
}

Claude Desktop の設定ファイルの場所:

  • MacOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%/Claude/claude_desktop_config.json
Claude Code での使用方法

クライアント認証情報:

claude mcp add shopify -- npx @kisasa/shopify-mcp \
  --clientId YOUR_CLIENT_ID \
  --clientSecret YOUR_CLIENT_SECRET \
  --domain your-store.myshopify.com

静的アクセストークン(レガシー):

claude mcp add shopify -- npx @kisasa/shopify-mcp \
  --accessToken YOUR_ACCESS_TOKEN \
  --domain your-store.myshopify.com
別の方法:環境変数を使用してローカルで実行する

コマンドライン引数の代わりに環境変数を使用する場合:

  1. Shopify の認証情報を含む .env ファイルを作成します。

    クライアント認証情報:

    SHOPIFY_CLIENT_ID=your_client_id
    SHOPIFY_CLIENT_SECRET=your_client_secret
    MYSHOPIFY_DOMAIN=your-store.myshopify.com
    

    静的アクセストークン(レガシー):

    SHOPIFY_ACCESS_TOKEN=your_access_token
    MYSHOPIFY_DOMAIN=your-store.myshopify.com
    
  2. npx でサーバーを実行します。

    npx @kisasa/shopify-mcp
    
直接インストール(任意)

パッケージをグローバルにインストールする場合:

npm install -g @kisasa/shopify-mcp

続いて実行します。

shopify-mcp --clientId=<ID> --clientSecret=<SECRET> --domain=<YOUR_SHOP>.myshopify.com
追加オプション
  • --apiVersion:Shopify API のバージョンを指定します(デフォルト:2026-10)。SHOPIFY_API_VERSION 環境変数でも設定できます。

⚠️ 重要: コマンドライン引数を使用しているときに「SHOPIFY_ACCESS_TOKEN environment variable is required」というエラーが表示される場合は、別のパッケージがインストールされている可能性があります。shopify-mcp-server やスコープなしの shopify-mcp ではなく、@kisasa/shopify-mcp を使用していることを確認してください。

利用可能なツール(51)

共通機能

すべてのリスト取得ツール(get-products、get-customers、get-orders、get-customer-orders、get-collections)は、以下をサポートします。

  • カーソルベースのページネーション:after / before(カーソル文字列)。レスポンスにはpageInfo(hasNextPage、hasPreviousPage、startCursor、endCursor)が含まれます
  • 並べ替え:sortKey(リソースごとに異なる列挙型)とreverse(ブール値)
  • 高度なフィルタリング:Shopifyのクエリ構文を受け付けるqueryまたはsearchQueryパラメーター
  • フィールド選択:特定のフィールドのみを取得してレスポンスサイズを削減するfieldsパラメーター
  • 件数のみのモード:countOnlyパラメーターは、リソースデータを取得せずに{ count: N }を返します。ページネーション前にクエリの規模を把握するのに便利です
商品管理(8 個のツール)
  1. get-products

    • すべての商品を取得するか、タイトルで検索します。ページネーションと並べ替えに対応しています
    • 入力:
      • searchTitle(文字列、任意):タイトルで商品を絞り込みます(title:*...*に変換されます)
      • limit(数値、デフォルト:10):返す商品の最大数
      • query(文字列、任意):Shopifyの生クエリ文字列(例:"status:active vendor:Nike tag:sale")
      • sortKey(文字列、任意):CREATED_AT、ID、INVENTORY_TOTAL、PRODUCT_TYPE、PUBLISHED_AT、RELEVANCE、TITLE、UPDATED_AT、VENDORのいずれか
      • reverse(ブール値、任意):並べ替え順を逆にします
      • after / before(文字列、任意):ページネーション用カーソル
      • fields(配列、任意):取得するフィールド。利用可能なフィールド:id、title、description、handle、status、createdAt、updatedAt、totalInventory、vendor、productType、tags、mediaCount、priceRange、media、variants(先頭10件。id、title、price、inventoryQuantity、sku、barcode、inventoryPolicyを含む)
      • countOnly(ブール値、任意):{ count: N }のみを返します
  2. get-product-by-id

    • SEO、オプション、メディア、バリエーション、コレクションを含む詳細情報とともに、IDを指定して商品を取得します
    • 入力:
      • productId(文字列、必須):Shopifyの商品GID
    • 返される情報:productType、descriptionHtml、seo、options(optionValuesを含む)、media(画像)、variants、collections、tags、vendor、価格帯、在庫
  3. create-product

    • 新しい商品を作成します。productOptionsを使用すると、Shopifyはすべてのオプション値を登録しますが、デフォルトのバリエーションは1つだけ作成します(各オプションの最初の値、価格は$0)。その後、価格付きのすべての実際のバリエーションを作成するには、strategy: REMOVE_STANDALONE_VARIANTを指定してmanage-product-variantsを使用します。
    • 入力:
      • title(文字列、必須):商品のタイトル
      • descriptionHtml(文字列、任意):HTML形式の商品説明
      • handle(文字列、任意):URLスラッグ。省略するとタイトルから自動生成されます
      • vendor(文字列、任意):商品の販売元
      • productType(文字列、任意):商品の種類
      • tags(文字列の配列、任意):商品タグ
      • status(文字列、任意):"ACTIVE"、"DRAFT"、または"ARCHIVED"。デフォルトは"DRAFT"
      • seo(オブジェクト、任意):検索エンジン向けの{ title, description }
      • metafields(オブジェクトの配列、任意):カスタムメタフィールド(namespace、key、value、type)
      • productOptions(オブジェクトの配列、任意):インラインで作成するオプション。例:[{ name: "Size", values: [{ name: "S" }, { name: "M" }] }]。オプションは最大3つです。
      • collectionsToJoin(文字列の配列、任意):商品を追加するコレクションのGID
  4. update-product

    • 既存商品のフィールドを更新します
    • 入力:
      • id (string, required):Shopify 商品の GID
      • title (string, optional):新しいタイトル
      • descriptionHtml (string, optional):新しい説明
      • handle (string, optional):新しい URL スラッグ
      • vendor (string, optional):新しいベンダー
      • productType (string, optional):新しい商品タイプ
      • tags (array of strings, optional):新しいタグ(既存のタグを上書きします)
      • status (string, optional):"ACTIVE"、"DRAFT"、または "ARCHIVED"
      • seo (object, optional):検索エンジン向けの { title, description }
      • metafields (array of objects, optional):設定または更新するメタフィールド
      • collectionsToJoin (array of strings, optional):商品を追加するコレクションの GID
      • collectionsToLeave (array of strings, optional):商品を削除するコレクションの GID
      • redirectNewHandle (boolean, optional):true の場合、古いハンドルから新しいハンドルへリダイレクトします
  5. delete-product

    • 商品を削除します
    • 入力:
      • id (string, required):Shopify 商品の GID
  6. manage-product-options

    • 商品オプション(例:サイズ、色)を作成、更新、または削除します
    • 入力:
      • productId (string, required):Shopify 商品の GID
      • action (string, required):"create"、"update"、または "delete"
      • variantStrategy (string, optional):"LEAVE_AS_IS"(デフォルト)または "CREATE" — オプション追加時に新しいバリエーションの組み合わせを生成するかどうかを制御します
      • action: "create" の場合:
        • options (array, required):作成するオプション。例:[{ name: "Size", values: ["S", "M", "L"] }]
      • action: "update" の場合:
        • optionId (string, required):更新するオプションの GID
        • name (string, optional):オプションの新しい名前
        • position (number, optional):新しい位置
        • valuesToAdd (array of strings, optional):追加する値
        • valuesToDelete (array of strings, optional):削除する値の GID
      • action: "delete" の場合:
        • optionIds (array of strings, required):削除するオプションの GID
  7. manage-product-variants

    • 商品のバリエーションを一括作成または更新します
    • 入力:
      • productId (string, required):Shopify 商品の GID
      • strategy (string, optional):作成時のデフォルトバリエーションの処理方法です。"DEFAULT"(「Default Title」を自動的に削除します)、"REMOVE_STANDALONE_VARIANT"(詳細に制御する場合に推奨)、または "PRESERVE_STANDALONE_VARIANT"
      • variants (array, required):作成または更新するバリエーション。各バリエーションには次の項目があります:
        • id (string, optional):更新するバリエーションの GID。新規作成する場合は省略します
        • price (string, optional):価格。例:"49.00"
        • compareAtPrice (string, optional):割引表示用の比較価格
        • sku (string, optional):SKU(inventoryItem.sku にマッピングされます)
        • tracked (boolean, optional):在庫を追跡するかどうか。プリントオンデマンドの場合は false に設定します
        • taxable (boolean, optional):バリエーションが課税対象かどうか
        • barcode (string, optional):バーコード
        • weight (number, optional):バリエーションの重量
        • weightUnit (string, optional):"GRAMS"、"KILOGRAMS"、"OUNCES"、または "POUNDS"
        • optionValues (array, optional):オプションの値。例:[{ optionName: "Size", name: "A4" }]
        • mediaId (string, optional):バリエーションの画像として使用する商品メディアの GID(gid://shopify/MediaImage/...)。メディアは事前に商品に追加されている必要があり(add-product-media を参照)、ステータスが READY である必要があります
        • inventoryPolicy (string, optional):"DENY" は在庫が 0 の場合に販売を停止し、"CONTINUE" は在庫を超えて販売できます
    • 戻り値:{ created, updated, userErrors }。各バリエーションには inventoryPolicy、mediaId、imageUrl が含まれます。userErrors はスローされず(operation: "create" または "update" のタグ付きで)返されるため、必ず確認してください
  8. delete-product-variants

    • 商品から1つ以上のバリエーションを削除します
    • 入力:
      • productId(文字列、必須):Shopify の商品 GID
      • variantIds(文字列の配列、必須):削除するバリエーションの GID
商品メディア(2 個のツール)
  1. add-product-media

    • 公開 URL を使って既存の商品に画像を添付します(media を指定した productUpdate を使用します。productCreateMedia は非推奨です)
    • 入力:
      • productId(文字列、必須):Shopify の商品 GID
      • media(配列、必須):添付する画像。各項目は { originalSource, alt? } です。originalSource は、Shopify がダウンロードできる一般公開 URL である必要があります
    • 戻り値:{ productId, media, userErrors }。新しい各メディア項目には id、status、alt、imageUrl、mediaErrors が含まれます
    • Shopify はメディアを非同期で処理します。新しい項目は通常、imageUrl: null の状態で UPLOADED または PROCESSING から始まります。get-product-media を使って READY に到達したことを確認してください
  2. get-product-media

    • 処理状況とともに商品のメディアを一覧表示します
    • 入力:
      • productId(文字列、必須):Shopify の商品 GID
    • 戻り値:各項目の id、status(UPLOADED / PROCESSING / READY / FAILED)、mediaContentType、alt、imageUrl、および mediaErrors(FAILED ステータスの理由を説明します)

例:バリエーションに専用の画像を設定する

  1. 画像 URL を指定して add-product-media を実行します
  2. 新しい項目が READY になるまで get-product-media を実行し、その id をコピーします
  3. { id: "<variant GID>", mediaId: "<media GID>" } を指定して manage-product-variants を実行します
販売チャネルへの公開(4 個のツール)

これらのツールは、アプリカタログを持つ販売チャネル(Online Store や Point of Sale などの公開先)を対象とします。マーケットカタログと B2B カタログは対象外です。read_publications と write_publications のスコープが必要です。

  1. get-publications

    • ストアの販売チャネルを一覧表示します
    • 入力:なし
    • 戻り値:各チャネルの id、name(例:"Online Store")、handle(例:"online_store")、autoPublish、および supportsFuturePublishing
  2. get-product-publications

    • 各販売チャネルで商品が公開されているかどうかを表示します
    • 入力:
      • productId(文字列、必須):Shopify の商品 GID
    • 戻り値:{ productId, title, publications }。各チャネルについて publicationId、name、published、publishDate が含まれます
  3. publish-product

    • 1 つ以上の販売チャネルに商品を公開します(publishablePublish を使用します)
    • 入力:
      • productId(文字列、必須):Shopify の商品 GID
      • publicationIds(文字列の配列、任意):get-publications で取得した公開先 GID
      • publicationNames(文字列の配列、任意):get-publications が返すチャネル名と完全に一致する名前。例:["Online Store", "Point of Sale"]
      • publicationIds と publicationNames のいずれか一方だけを指定してください。どのチャネルにも一致しない名前、または複数のチャネルに一致する名前が指定された場合、変更を行う前に拒否されます
    • 戻り値:その後のすべてのチャネルにおける商品の状態と userErrors
  4. unpublish-product

    • 1 つ以上の販売チャネルから商品を非公開にします(publishableUnpublish を使用します)
    • 入力:publish-product と同じです
    • 戻り値:その後のすべてのチャネルにおける商品の状態と userErrors
顧客管理(8 個のツール)
  1. get-customers

    • 検索、ページネーション、並べ替えを使って顧客を一覧表示します
    • 入力:
      • searchQuery(文字列、任意):自由形式のテキスト、または Shopify のクエリー構文(例:"country:US tag:vip orders_count:>5")
      • limit(数値、デフォルト:10):返す顧客の最大数
      • sortKey(文字列、任意):CREATED_AT、ID、LAST_UPDATE、LOCATION、NAME、ORDERS_COUNT、RELEVANCE、TOTAL_SPENT、UPDATED_AT のいずれか
      • reverse(ブール値、任意):並べ替え順を逆にします
      • after / before(文字列、任意):ページネーションカーソル
  2. get-customer-by-id

    • ID を指定して、詳細情報を含む単一の顧客を取得します
    • 入力:
      • id(文字列、必須):Shopify の顧客 ID(数値のみ、例:"6276879810626")
    • 戻り値:名前、メールアドレス、電話番号、住所、タグ、メモ、免税ステータス、利用金額、注文数、メタフィールド
  3. create-customer

    • 新しい顧客を作成します
    • 入力:
      • firstName(文字列、任意):顧客の名
      • lastName(文字列、任意):顧客の姓
      • email(文字列、任意):顧客のメールアドレス
      • phone(文字列、任意):顧客の電話番号
      • tags(文字列の配列、任意):適用するタグ
      • note(文字列、任意):顧客に関するメモ
      • taxExempt(ブール値、任意):顧客が免税対象かどうか
      • metafields(オブジェクトの配列、任意):カスタムメタフィールド(namespace、key、value、type)
      • addresses(オブジェクトの配列、任意):顧客の住所(address1、address2、city、provinceCode、zip、country、phone)
  4. update-customer

    • 顧客情報を更新します
    • 入力:
      • id(文字列、必須):Shopify の顧客 ID(数値のみ、例:"6276879810626")
      • firstName(文字列、任意):顧客の名
      • lastName(文字列、任意):顧客の姓
      • email(文字列、任意):顧客のメールアドレス
      • phone(文字列、任意):顧客の電話番号
      • tags(文字列の配列、任意):顧客に適用するタグ
      • note(文字列、任意):顧客に関するメモ
      • taxExempt(ブール値、任意):顧客が免税対象かどうか
      • emailMarketingConsent(オブジェクト、任意):メールマーケティングの同意設定
        • marketingState(文字列、必須):"NOT_SUBSCRIBED"、"SUBSCRIBED"、"UNSUBSCRIBED"、または "PENDING"
        • consentUpdatedAt(文字列、任意):ISO 8601 タイムスタンプ
        • marketingOptInLevel(文字列、任意):"SINGLE_OPT_IN"、"CONFIRMED_OPT_IN"、または "UNKNOWN"
      • metafields(オブジェクトの配列、任意):顧客のメタフィールド
  5. delete-customer

    • 顧客を削除します
    • 入力:
      • id(文字列、必須):Shopify の顧客 ID(数値のみ、例:"6276879810626")
  6. customer-merge

    • 2 件の顧客レコードを 1 件に統合します
    • 入力:
      • customerOneId(文字列、必須):1 人目の顧客の GID
      • customerTwoId(文字列、必須):2 人目の顧客の GID
      • overrideFields(オブジェクト、任意):どちらの顧客のフィールドを保持するかを指定して上書きします(firstName、lastName、email、phone、defaultAddress、note、tags)
  7. manage-customer-address

    • 顧客の送付先住所を作成、更新、または削除します
    • 入力:
      • customerId(文字列、必須):顧客の GID
      • action(文字列、必須):"create"、"update"、または "delete"
      • addressId(文字列、任意):住所の GID(update/delete の場合は必須)
      • address(オブジェクト、任意):住所のフィールド(create/update の場合は必須):address1、address2、city、company、countryCode、firstName、lastName、phone、provinceCode、zip
      • setAsDefault(ブール値、任意):顧客のデフォルト住所に設定します
注文管理(10 個のツール)
  1. get-orders

    • フィルタリング、ページネーション、並べ替えを使って注文を取得します
    • 入力:
      • status(文字列、任意):"any"、"open"、"closed"、または "cancelled"。デフォルトは "any"
      • limit(数値、デフォルト:10):返す注文の最大数
      • query(文字列、任意):Shopify の生のクエリ文字列(例:"financial_status:paid fulfillment_status:shipped tag:rush")
      • sortKey(文字列、任意):CREATED_AT、ORDER_NUMBER、TOTAL_PRICE、FINANCIAL_STATUS、FULFILLMENT_STATUS、UPDATED_AT、CUSTOMER_NAME、PROCESSED_AT、ID、RELEVANCE のいずれか
      • reverse(ブール値、任意):並べ替え順を逆にします
      • after / before(文字列、任意):ページネーションカーソル
  2. get-order-by-id

    • スマート検索で特定の注文を ID から取得します。注文名(#77235 または 77235)、数値 ID(8054938337547)、完全な GID(gid://shopify/Order/...)を指定できます
    • 入力:
      • orderId(文字列、必須):注文名、数値 ID、または完全な GID
    • 返される情報:価格、顧客、配送先/請求先住所、明細項目、タグ、メモ、メタフィールド、キャンセル理由、返品状況、割引コード、PO 番号、タイムスタンプ
  3. update-order

    • 既存の注文を更新します
    • 入力:
      • id(文字列、必須):Shopify の注文 GID
      • tags(文字列の配列、任意):注文に付ける新しいタグ
      • email(文字列、任意):注文の顧客メールアドレスを更新します
      • note(文字列、任意):注文メモ
      • phone(文字列、任意):注文の電話番号
      • poNumber(文字列、任意):発注書番号
      • customAttributes(オブジェクトの配列、任意):カスタムのキーと値の属性
      • metafields(オブジェクトの配列、任意):注文のメタフィールド
      • shippingAddress(オブジェクト、任意):配送先住所のフィールド
  4. get-customer-orders

    • ページネーションと並べ替えを使って特定の顧客の注文を取得します
    • 入力:
      • customerId(文字列、必須):Shopify の顧客 ID(数値のみ。例:"6276879810626")
      • limit(数値、デフォルト:10):返す注文の最大数
      • sortKey(文字列、任意):get-orders と同じ並べ替えキー
      • reverse(ブール値、任意):並べ替え順を逆にします
      • after / before(文字列、任意):ページネーションカーソル
  5. order-cancel

    • 返金、在庫の再入庫、顧客への通知を指定して注文をキャンセルします。取り消しできません。
    • 入力:
      • orderId(文字列、必須):注文 GID
      • reason(文字列、必須):"CUSTOMER"、"DECLINED"、"FRAUD"、"INVENTORY"、"OTHER"、または "STAFF"
      • restock(ブール値、必須):在庫を再入庫するかどうか
      • notifyCustomer(ブール値、デフォルト:false):顧客に通知します
      • staffNote(文字列、任意):内部メモ
      • refund(ブール値、任意):元の支払い方法に返金します
  6. order-close-open

    • 注文をクローズまたは再オープンします
    • 入力:
      • orderId(文字列、必須):注文 GID
      • action(文字列、必須):"close" または "open"
  7. order-mark-as-paid

    • 注文を支払い済みにします(手動/オフラインでの支払い用)
    • 入力:
      • orderId(文字列、必須):注文 GID
  8. create-fulfillment

    • フルフィルメントを作成し(商品を発送済みにし)、必要に応じて追跡情報を設定します
    • 入力:
      • lineItemsByFulfillmentOrder(配列、必須):フルフィルメント対象のフルフィルメント注文と明細項目
      • trackingInfo(オブジェクト、任意):追跡情報 { number, url, company }
      • notifyCustomer(ブール値、デフォルト:false):配送通知を送信します
  9. refund-create

    • 全額または一部の返金を行います。オプションで再入庫も指定できます
    • 入力:
      • orderId(文字列、必須):注文のGID
      • refundLineItems(配列、任意):返金する明細項目。lineItemId、quantity、restockType(CANCEL/RETURN/NO_RESTOCK)、locationIdを指定します
      • shipping(オブジェクト、任意):送料の返金を指定する{ amount, fullRefund }
      • note(文字列、任意):返金に関するメモ
      • notify(ブール値、任意):返金通知を送信するかどうか
  10. create-draft-order

    • 電話やチャットでの販売、請求書の発行、卸売向けに下書き注文を作成します
    • 入力:
      • lineItems(配列、必須):商品バリエーション(variantId)またはカスタム商品(title+価格)。最大499件
      • customerId(文字列、任意):顧客のGID
      • email、phone、note、tags、poNumber(任意)
      • shippingAddress、billingAddress(オブジェクト、任意)
      • appliedDiscount(オブジェクト、任意):注文単位の割引を指定する{ title, value, valueType }
下書き注文の管理(1ツール)
  1. complete-draft-order

    • 下書き注文を確定し、通常の注文に変換します
    • 入力:
      • draftOrderId(文字列、必須):下書き注文のGID
      • paymentGatewayId(文字列、任意):決済ゲートウェイのGID
メタフィールドの管理(3ツール)
  1. get-metafields

    • 任意のShopifyリソース(商品、注文、顧客、バリエーション、コレクションなど)のメタフィールドを取得します
    • 入力:
      • ownerId(文字列、必須):任意のリソースのGID
      • namespace(文字列、任意):名前空間で絞り込みます
      • first(数値、デフォルト:25):取得するメタフィールドの数
      • after(文字列、任意):ページネーションカーソル
  2. set-metafields

    • 任意のShopifyリソースにメタフィールドを設定します。最大25件のメタフィールドをアトミックに作成または更新します
    • 入力:
      • metafields(配列、必須):設定するメタフィールド。それぞれにownerId、key、valueと、任意でnamespace、typeを指定します
  3. delete-metafields

    • 任意のShopifyリソースからメタフィールドを削除します
    • 入力:
      • metafields(配列、必須):削除するメタフィールド。それぞれにownerId、namespace、keyを指定します
在庫の管理(1ツール)
  1. inventory-set-quantities

    • 指定したロケーションにある商品の在庫数を絶対値で設定します
    • 入力:
      • reason(文字列、必須):変更理由(例:"correction"、"cycle_count_available")
      • name(文字列、必須):"available"または"on_hand"
      • quantities(配列、必須):inventoryItemId、locationId、quantityと、任意のchangeFromQuantityを含む商品
        • changeFromQuantity(整数またはnull、任意):現在保管されていると想定する数量です。Shopifyは、この値が現在の数量と一致する場合にのみ変更を適用します。一致しない場合はCHANGE_FROM_QUANTITY_STALEエラーを返します。このチェックなしで数量を設定するには、省略するかnullを渡してください
      • idempotencyKey(文字列、任意):リクエストの冪等性キー。Admin API 2026-04以降では必須です。省略すると、呼び出しごとに新しいUUIDが生成されます。同じキーを再利用できるのは、まったく同じリクエストを再試行する場合に限ります
    • 戻り値:{ idempotencyKey, adjustmentGroup, userErrors }。userErrorsにはcode(例:CHANGE_FROM_QUANTITY_STALE、IDEMPOTENCY_KEY_PARAMETER_MISMATCH)が含まれ、例外としてスローされずに返されるため、必ず確認してください
タグ管理(2 個のツール)
  1. manage-tags

    • 注文、商品、顧客、下書き注文、記事など、タグを付けられるリソースにタグを追加または削除します
    • 入力:
      • id(string、必須):リソースの GID(例:gid://shopify/Product/123)
      • tags(文字列の配列、必須):追加または削除するタグ
      • action(string、必須):"add" または "remove"
  2. manage-tags-bulk

    • 1 回の呼び出しで最大 100 個のリソースにタグを一括追加または削除します(ミューテーションを並列実行します)
    • 入力:
      • ids(文字列の配列、必須):リソースの GID(最大 100 個)。それより多い場合は複数回呼び出してください
      • tags(文字列の配列、必須):追加または削除するタグ
      • action(string、必須):"add" または "remove"
コレクション管理(2 個のツール)
  1. get-collections

    • 検索、ページネーション、並べ替えを指定してコレクションを一覧表示します
    • 入力:
      • query(string、任意):Shopify クエリ構文
      • limit(number、デフォルト:10):返すコレクションの最大数
      • sortKey、reverse、after/before:標準のページネーションと並べ替え
      • fields、countOnly:標準のフィールド選択と件数のみのモード
  2. get-collection-by-id

    • 商品、ルール(スマートコレクション)、SEO、画像など、詳細情報を含む単一のコレクションを取得します
    • 入力:
      • collectionId(string、必須):コレクション ID(例:gid://shopify/Collection/123 または 123 のみ)
      • productsFirst(number、デフォルト:25):含める商品の数(0 で省略)
      • fields(配列、任意):取得するコレクションレベルのフィールド(id、title、handle、descriptionHtml、sortOrder、templateSuffix、updatedAt、productsCount、ruleSet、image、seo)
設定と検出(4 個のツール)
  1. get-shop-info — ショップの詳細(名前、ドメイン、プラン、通貨、タイムゾーンなど)を取得します
  2. get-metafield-definitions — ページネーションを使用して、任意のオーナータイプのメタフィールド定義を一覧表示します
  3. get-locations — 住所とフルフィルメントサービス情報を含む、すべての有効なロケーションを一覧表示します
  4. get-markets — 地域、通貨、ドメインを含むすべてのマーケットを一覧表示します
注文とフルフィルメントの拡張(3 個のツール)
  1. get-order-transactions — 注文の決済トランザクション(ゲートウェイ、ステータス、金額、カードの詳細)を取得します
  2. get-fulfillment-orders — 注文のフルフィルメント注文(明細商品、割り当てられたロケーション、ステータス)を取得します
  3. get-order-refund-details — 注文の返金履歴(明細商品、金額、再入庫)を取得します
在庫と価格(4 個のツール)

在庫管理の inventory-set-quantities も参照してください。

  1. get-inventory-levels — 複数のロケーションにまたがる商品の在庫レベルを取得します
  2. get-inventory-items — 商品の在庫アイテム(原価、追跡、原産国)を取得します
  3. get-price-lists — 固定価格と数量ルールを含む価格リストを一覧表示します
  4. get-product-variants-detailed — バリアントの詳細情報(在庫、価格、画像、メタフィールド)を取得します
注文クエリフィルターのリファレンス

get-orders ツールの query パラメーターは、Shopify 検索構文に対応しています。

フィルター例
namename:#77235
created_atcreated_at:>2024-01-01 または created_at:2024-01-01..2024-03-31
updated_atupdated_at:>2024-06-01
financial_statusfinancial_status:paid
fulfillment_statusfulfillment_status:shipped
statusstatus:open
emailemail:[email protected]
tag/tag_nottag:vip tag_not:wholesale
discount_codediscount_code:SUMMER20
skusku:PROD-001
risk_levelrisk_level:high
gatewaygateway:shopify_payments
testtest:true

デバッグ

問題が発生した場合は、Claude Desktop の MCP ログを確認してください。

macOS:

tail -n 20 -f ~/Library/Logs/Claude/mcp*.log

Windows(PowerShell):

Get-Content "$env:APPDATA\Claude\logs\mcp*.log" -Tail 20 -Wait

よくある原因:

  • 「… field のアクセスが拒否されました」:アプリにスコープが設定されていません。認証の下にあるスコープ表を確認し、新しいバージョンのアプリをリリースしてストアで承認を受けた後、サーバーを再起動してください。
  • ツールが表示されない:設定を編集した後、Claude Desktop を完全に終了して再起動してください。

リリース

バージョンの更新が main に反映されると、.github/workflows/publish.yml によってリリースが自動的に公開されます。

  1. PR で package.json の version と server.json の両方の version フィールドを更新します(一致していない場合、ワークフローは失敗します)。
  2. main にマージします。ワークフローによって npm への公開(プロベナンス付き)、MCP Registry への公開、および vX.Y.Z GitHub リリースの作成が行われます。

バージョンに変更がないマージでは、何も公開されません。

謝辞

このプロジェクトは、次の取り組みを基盤にしています。

  • GeLi2001/shopify-mcp:元となる Shopify MCP サーバー
  • lucasjahn/shopify-mcp:元のプロジェクトをフォークし、フィールド選択、件数のみのモード、多数の読み取り専用ツールを追加したもの

両プロジェクトとその貢献者の皆様に感謝します。

ライセンス

MIT です。LICENSE を参照してください。元の著作権表示は保持されています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。