Shopify について
Shopify MCP Serverは、GraphQL経由でShopify Admin APIを操作するMCPサーバーです。店舗管理やEC業務向けに、商品、顧客、注文、在庫、販売チャネルを扱い、一覧の絞り込みやページネーションにも対応します。
主な機能
- 01商品、バリエーション、メディアの管理
- 02顧客と注文の作成・更新
- 03在庫、価格、タグの操作
- 04販売チャネルへの商品公開
- 05一覧の絞り込み、並べ替え、ページネーション
活用シーン
- 01商品カタログとバリエーションの更新
- 02顧客注文の確認や管理
- 03在庫数と価格の確認
MCP 対応
MCPクライアントにShopify店舗の操作をツールとして公開するMCPサーバーです。クライアント資格情報または静的アクセストークンでShopify GraphQL Admin APIに接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @kisasa/shopify-mcpMYSHOPIFY_DOMAINYour store's myshopify.com domainSHOPIFY_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 appSHOPIFY_ACCESS_TOKENシークレットStatic Admin API access token (shpat_...) for legacy custom apps, instead of client ID/secretSHOPIFY_API_VERSIONShopify Admin API versionローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
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 および認証の問題について、明確なエラーメッセージを表示します
前提条件
- Node.js(バージョン 18 以上)
- カスタムアプリを設定した Shopify ストア(以下のセットアップ手順をご覧ください)
セットアップ
認証
このサーバーは、2 つの認証方法に対応しています。
オプション 1:クライアント認証情報(Dev Dashboard アプリ、2026 年 1 月以降)
2026 年 1 月 1 日以降、新しい Shopify アプリは Dev Dashboard で作成され、静的アクセストークンの代わりに OAuth クライアント認証情報を使用します。
-
Shopify 管理画面から、設定 > アプリと販売チャネル に移動します
-
アプリを開発 > Dev Dashboard でアプリを作成 をクリックします
-
新しいアプリを作成し、Admin API スコープ を設定します。基本的なスコープは次のとおりです。
read_products,write_productsread_customers,write_customersread_orders,write_orders
一部のツールには追加のスコープが必要です。使用する機能に必要なスコープのみを追加してください。
スコープ 必要な機能 read_all_orders60 日より前の注文(それ以外の場合、注文ツールで確認できるのは最近の注文のみです) read_inventory,write_inventoryget-inventory-levels,inventory-set-quantitiesread_locationsget-locations,get-inventory-levelsread_marketsget-marketsread_draft_orders,write_draft_orderscreate-draft-order,complete-draft-orderread_merchant_managed_fulfillment_orders,write_merchant_managed_fulfillment_ordersget-fulfillment-orders,create-fulfillmentread_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 サーバーを再起動してください。
-
ストアにアプリをインストールします
-
アプリの 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
別の方法:環境変数を使用してローカルで実行する
コマンドライン引数の代わりに環境変数を使用する場合:
-
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 -
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 個のツール)
-
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 }のみを返します
-
get-product-by-id- SEO、オプション、メディア、バリエーション、コレクションを含む詳細情報とともに、IDを指定して商品を取得します
- 入力:
productId(文字列、必須):Shopifyの商品GID
- 返される情報:
productType、descriptionHtml、seo、options(optionValuesを含む)、media(画像)、variants、collections、tags、vendor、価格帯、在庫
-
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
- 新しい商品を作成します。
-
update-product- 既存商品のフィールドを更新します
- 入力:
id(string, required):Shopify 商品の GIDtitle(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):商品を追加するコレクションの GIDcollectionsToLeave(array of strings, optional):商品を削除するコレクションの GIDredirectNewHandle(boolean, optional):true の場合、古いハンドルから新しいハンドルへリダイレクトします
-
delete-product- 商品を削除します
- 入力:
id(string, required):Shopify 商品の GID
-
manage-product-options- 商品オプション(例:サイズ、色)を作成、更新、または削除します
- 入力:
productId(string, required):Shopify 商品の GIDaction(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):更新するオプションの GIDname(string, optional):オプションの新しい名前position(number, optional):新しい位置valuesToAdd(array of strings, optional):追加する値valuesToDelete(array of strings, optional):削除する値の GID
action: "delete"の場合:optionIds(array of strings, required):削除するオプションの GID
-
manage-product-variants- 商品のバリエーションを一括作成または更新します
- 入力:
productId(string, required):Shopify 商品の GIDstrategy(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"のタグ付きで)返されるため、必ず確認してください
-
delete-product-variants- 商品から1つ以上のバリエーションを削除します
- 入力:
productId(文字列、必須):Shopify の商品 GIDvariantIds(文字列の配列、必須):削除するバリエーションの GID
商品メディア(2 個のツール)
-
add-product-media- 公開 URL を使って既存の商品に画像を添付します(
mediaを指定したproductUpdateを使用します。productCreateMediaは非推奨です) - 入力:
productId(文字列、必須):Shopify の商品 GIDmedia(配列、必須):添付する画像。各項目は{ originalSource, alt? }です。originalSourceは、Shopify がダウンロードできる一般公開 URL である必要があります
- 戻り値:
{ productId, media, userErrors }。新しい各メディア項目にはid、status、alt、imageUrl、mediaErrorsが含まれます - Shopify はメディアを非同期で処理します。新しい項目は通常、
imageUrl: nullの状態でUPLOADEDまたはPROCESSINGから始まります。get-product-mediaを使ってREADYに到達したことを確認してください
- 公開 URL を使って既存の商品に画像を添付します(
-
get-product-media- 処理状況とともに商品のメディアを一覧表示します
- 入力:
productId(文字列、必須):Shopify の商品 GID
- 戻り値:各項目の
id、status(UPLOADED/PROCESSING/READY/FAILED)、mediaContentType、alt、imageUrl、およびmediaErrors(FAILEDステータスの理由を説明します)
例:バリエーションに専用の画像を設定する
- 画像 URL を指定して
add-product-mediaを実行します - 新しい項目が
READYになるまでget-product-mediaを実行し、そのidをコピーします { id: "<variant GID>", mediaId: "<media GID>" }を指定してmanage-product-variantsを実行します
販売チャネルへの公開(4 個のツール)
これらのツールは、アプリカタログを持つ販売チャネル(Online Store や Point of Sale などの公開先)を対象とします。マーケットカタログと B2B カタログは対象外です。read_publications と write_publications のスコープが必要です。
-
get-publications- ストアの販売チャネルを一覧表示します
- 入力:なし
- 戻り値:各チャネルの
id、name(例:"Online Store")、handle(例:"online_store")、autoPublish、およびsupportsFuturePublishing
-
get-product-publications- 各販売チャネルで商品が公開されているかどうかを表示します
- 入力:
productId(文字列、必須):Shopify の商品 GID
- 戻り値:
{ productId, title, publications }。各チャネルについてpublicationId、name、published、publishDateが含まれます
-
publish-product- 1 つ以上の販売チャネルに商品を公開します(
publishablePublishを使用します) - 入力:
productId(文字列、必須):Shopify の商品 GIDpublicationIds(文字列の配列、任意):get-publicationsで取得した公開先 GIDpublicationNames(文字列の配列、任意):get-publicationsが返すチャネル名と完全に一致する名前。例:["Online Store", "Point of Sale"]publicationIdsとpublicationNamesのいずれか一方だけを指定してください。どのチャネルにも一致しない名前、または複数のチャネルに一致する名前が指定された場合、変更を行う前に拒否されます
- 戻り値:その後のすべてのチャネルにおける商品の状態と
userErrors
- 1 つ以上の販売チャネルに商品を公開します(
-
unpublish-product- 1 つ以上の販売チャネルから商品を非公開にします(
publishableUnpublishを使用します) - 入力:
publish-productと同じです - 戻り値:その後のすべてのチャネルにおける商品の状態と
userErrors
- 1 つ以上の販売チャネルから商品を非公開にします(
顧客管理(8 個のツール)
-
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(文字列、任意):ページネーションカーソル
-
get-customer-by-id- ID を指定して、詳細情報を含む単一の顧客を取得します
- 入力:
id(文字列、必須):Shopify の顧客 ID(数値のみ、例:"6276879810626")
- 戻り値:名前、メールアドレス、電話番号、住所、タグ、メモ、免税ステータス、利用金額、注文数、メタフィールド
-
create-customer- 新しい顧客を作成します
- 入力:
firstName(文字列、任意):顧客の名lastName(文字列、任意):顧客の姓email(文字列、任意):顧客のメールアドレスphone(文字列、任意):顧客の電話番号tags(文字列の配列、任意):適用するタグnote(文字列、任意):顧客に関するメモtaxExempt(ブール値、任意):顧客が免税対象かどうかmetafields(オブジェクトの配列、任意):カスタムメタフィールド(namespace、key、value、type)addresses(オブジェクトの配列、任意):顧客の住所(address1、address2、city、provinceCode、zip、country、phone)
-
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(オブジェクトの配列、任意):顧客のメタフィールド
-
delete-customer- 顧客を削除します
- 入力:
id(文字列、必須):Shopify の顧客 ID(数値のみ、例:"6276879810626")
-
customer-merge- 2 件の顧客レコードを 1 件に統合します
- 入力:
customerOneId(文字列、必須):1 人目の顧客の GIDcustomerTwoId(文字列、必須):2 人目の顧客の GIDoverrideFields(オブジェクト、任意):どちらの顧客のフィールドを保持するかを指定して上書きします(firstName、lastName、email、phone、defaultAddress、note、tags)
-
manage-customer-address- 顧客の送付先住所を作成、更新、または削除します
- 入力:
customerId(文字列、必須):顧客の GIDaction(文字列、必須):"create"、"update"、または"delete"addressId(文字列、任意):住所の GID(update/delete の場合は必須)address(オブジェクト、任意):住所のフィールド(create/update の場合は必須):address1、address2、city、company、countryCode、firstName、lastName、phone、provinceCode、zipsetAsDefault(ブール値、任意):顧客のデフォルト住所に設定します
注文管理(10 個のツール)
-
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(文字列、任意):ページネーションカーソル
-
get-order-by-id- スマート検索で特定の注文を ID から取得します。注文名(
#77235または77235)、数値 ID(8054938337547)、完全な GID(gid://shopify/Order/...)を指定できます - 入力:
orderId(文字列、必須):注文名、数値 ID、または完全な GID
- 返される情報:価格、顧客、配送先/請求先住所、明細項目、タグ、メモ、メタフィールド、キャンセル理由、返品状況、割引コード、PO 番号、タイムスタンプ
- スマート検索で特定の注文を ID から取得します。注文名(
-
update-order- 既存の注文を更新します
- 入力:
id(文字列、必須):Shopify の注文 GIDtags(文字列の配列、任意):注文に付ける新しいタグemail(文字列、任意):注文の顧客メールアドレスを更新しますnote(文字列、任意):注文メモphone(文字列、任意):注文の電話番号poNumber(文字列、任意):発注書番号customAttributes(オブジェクトの配列、任意):カスタムのキーと値の属性metafields(オブジェクトの配列、任意):注文のメタフィールドshippingAddress(オブジェクト、任意):配送先住所のフィールド
-
get-customer-orders- ページネーションと並べ替えを使って特定の顧客の注文を取得します
- 入力:
customerId(文字列、必須):Shopify の顧客 ID(数値のみ。例:"6276879810626")limit(数値、デフォルト:10):返す注文の最大数sortKey(文字列、任意):get-ordersと同じ並べ替えキーreverse(ブール値、任意):並べ替え順を逆にしますafter/before(文字列、任意):ページネーションカーソル
-
order-cancel- 返金、在庫の再入庫、顧客への通知を指定して注文をキャンセルします。取り消しできません。
- 入力:
orderId(文字列、必須):注文 GIDreason(文字列、必須):"CUSTOMER"、"DECLINED"、"FRAUD"、"INVENTORY"、"OTHER"、または"STAFF"restock(ブール値、必須):在庫を再入庫するかどうかnotifyCustomer(ブール値、デフォルト:false):顧客に通知しますstaffNote(文字列、任意):内部メモrefund(ブール値、任意):元の支払い方法に返金します
-
order-close-open- 注文をクローズまたは再オープンします
- 入力:
orderId(文字列、必須):注文 GIDaction(文字列、必須):"close"または"open"
-
order-mark-as-paid- 注文を支払い済みにします(手動/オフラインでの支払い用)
- 入力:
orderId(文字列、必須):注文 GID
-
create-fulfillment- フルフィルメントを作成し(商品を発送済みにし)、必要に応じて追跡情報を設定します
- 入力:
lineItemsByFulfillmentOrder(配列、必須):フルフィルメント対象のフルフィルメント注文と明細項目trackingInfo(オブジェクト、任意):追跡情報{ number, url, company }notifyCustomer(ブール値、デフォルト:false):配送通知を送信します
-
refund-create- 全額または一部の返金を行います。オプションで再入庫も指定できます
- 入力:
orderId(文字列、必須):注文のGIDrefundLineItems(配列、任意):返金する明細項目。lineItemId、quantity、restockType(CANCEL/RETURN/NO_RESTOCK)、locationIdを指定しますshipping(オブジェクト、任意):送料の返金を指定する{ amount, fullRefund }note(文字列、任意):返金に関するメモnotify(ブール値、任意):返金通知を送信するかどうか
-
create-draft-order- 電話やチャットでの販売、請求書の発行、卸売向けに下書き注文を作成します
- 入力:
lineItems(配列、必須):商品バリエーション(variantId)またはカスタム商品(title+価格)。最大499件customerId(文字列、任意):顧客のGIDemail、phone、note、tags、poNumber(任意)shippingAddress、billingAddress(オブジェクト、任意)appliedDiscount(オブジェクト、任意):注文単位の割引を指定する{ title, value, valueType }
下書き注文の管理(1ツール)
-
complete-draft-order- 下書き注文を確定し、通常の注文に変換します
- 入力:
draftOrderId(文字列、必須):下書き注文のGIDpaymentGatewayId(文字列、任意):決済ゲートウェイのGID
メタフィールドの管理(3ツール)
-
get-metafields- 任意のShopifyリソース(商品、注文、顧客、バリエーション、コレクションなど)のメタフィールドを取得します
- 入力:
ownerId(文字列、必須):任意のリソースのGIDnamespace(文字列、任意):名前空間で絞り込みますfirst(数値、デフォルト:25):取得するメタフィールドの数after(文字列、任意):ページネーションカーソル
-
set-metafields- 任意のShopifyリソースにメタフィールドを設定します。最大25件のメタフィールドをアトミックに作成または更新します
- 入力:
metafields(配列、必須):設定するメタフィールド。それぞれにownerId、key、valueと、任意でnamespace、typeを指定します
-
delete-metafields- 任意のShopifyリソースからメタフィールドを削除します
- 入力:
metafields(配列、必須):削除するメタフィールド。それぞれにownerId、namespace、keyを指定します
在庫の管理(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 個のツール)
-
manage-tags- 注文、商品、顧客、下書き注文、記事など、タグを付けられるリソースにタグを追加または削除します
- 入力:
id(string、必須):リソースの GID(例:gid://shopify/Product/123)tags(文字列の配列、必須):追加または削除するタグaction(string、必須):"add"または"remove"
-
manage-tags-bulk- 1 回の呼び出しで最大 100 個のリソースにタグを一括追加または削除します(ミューテーションを並列実行します)
- 入力:
ids(文字列の配列、必須):リソースの GID(最大 100 個)。それより多い場合は複数回呼び出してくださいtags(文字列の配列、必須):追加または削除するタグaction(string、必須):"add"または"remove"
コレクション管理(2 個のツール)
-
get-collections- 検索、ページネーション、並べ替えを指定してコレクションを一覧表示します
- 入力:
query(string、任意):Shopify クエリ構文limit(number、デフォルト:10):返すコレクションの最大数sortKey、reverse、after/before:標準のページネーションと並べ替えfields、countOnly:標準のフィールド選択と件数のみのモード
-
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 個のツール)
get-shop-info— ショップの詳細(名前、ドメイン、プラン、通貨、タイムゾーンなど)を取得しますget-metafield-definitions— ページネーションを使用して、任意のオーナータイプのメタフィールド定義を一覧表示しますget-locations— 住所とフルフィルメントサービス情報を含む、すべての有効なロケーションを一覧表示しますget-markets— 地域、通貨、ドメインを含むすべてのマーケットを一覧表示します
注文とフルフィルメントの拡張(3 個のツール)
get-order-transactions— 注文の決済トランザクション(ゲートウェイ、ステータス、金額、カードの詳細)を取得しますget-fulfillment-orders— 注文のフルフィルメント注文(明細商品、割り当てられたロケーション、ステータス)を取得しますget-order-refund-details— 注文の返金履歴(明細商品、金額、再入庫)を取得します
在庫と価格(4 個のツール)
在庫管理の inventory-set-quantities も参照してください。
get-inventory-levels— 複数のロケーションにまたがる商品の在庫レベルを取得しますget-inventory-items— 商品の在庫アイテム(原価、追跡、原産国)を取得しますget-price-lists— 固定価格と数量ルールを含む価格リストを一覧表示しますget-product-variants-detailed— バリアントの詳細情報(在庫、価格、画像、メタフィールド)を取得します
注文クエリフィルターのリファレンス
get-orders ツールの query パラメーターは、Shopify 検索構文に対応しています。
| フィルター | 例 |
|---|---|
name | name:#77235 |
created_at | created_at:>2024-01-01 または created_at:2024-01-01..2024-03-31 |
updated_at | updated_at:>2024-06-01 |
financial_status | financial_status:paid |
fulfillment_status | fulfillment_status:shipped |
status | status:open |
email | email:[email protected] |
tag/tag_not | tag:vip tag_not:wholesale |
discount_code | discount_code:SUMMER20 |
sku | sku:PROD-001 |
risk_level | risk_level:high |
gateway | gateway:shopify_payments |
test | test: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 によってリリースが自動的に公開されます。
- PR で
package.jsonのversionとserver.jsonの両方のversionフィールドを更新します(一致していない場合、ワークフローは失敗します)。 mainにマージします。ワークフローによって npm への公開(プロベナンス付き)、MCP Registry への公開、およびvX.Y.ZGitHub リリースの作成が行われます。
バージョンに変更がないマージでは、何も公開されません。
謝辞
このプロジェクトは、次の取り組みを基盤にしています。
- GeLi2001/shopify-mcp:元となる Shopify MCP サーバー
- lucasjahn/shopify-mcp:元のプロジェクトをフォークし、フィールド選択、件数のみのモード、多数の読み取り専用ツールを追加したもの
両プロジェクトとその貢献者の皆様に感謝します。
ライセンス
MIT です。LICENSE を参照してください。元の著作権表示は保持されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。