shopify-multi-store について
複数のShopify Adminストアを管理するチーム向けのMCPサーバーです。ストア横断レポートと確認付き更新に対応し、ローカルまたはチーム用サーバーとして運用できます。各ユーザーのShopifyスタッフ権限が適用されます。
主な機能
- 011つのセッションで複数ストアに接続
- 02商品、在庫、注文の横断レポート
- 03複数ストアへの読み取り専用GraphQLクエリ
- 04更新ごとに明示的な確認を要求
- 05OSの資格情報ストアにシークレットを保存
- 06Shopify Adminのガイド付きワークフロー
活用シーン
- 01ストア間の商品カタログと価格の比較
- 02在庫不足やストア間の在庫差の発見
- 03未発送注文の集計とSLA超過の確認
- 04確認後に指定ストアを更新
MCP 対応
Shopify Adminのストアデータと操作ツールをMCPクライアントに公開し、ローカルstdioとリモートサーバー接続に対応します。各ストア操作にはエイリアスが必要で、更新は単一ストアを対象とし、明示的な確認を求めます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
29掲載時のツール一覧 · 5 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| store | string | はい | |
| type_name | string | はい |
詳細
Shopify Multi-Store MCP
1 つの MCP サーバーで、すべての Shopify ストアに対応します。
Claude、ChatGPT、Codex、Cursor、VS Code、その他の MCP クライアントから、複数の Shopify ストアを横断して検索、比較、レポート作成を行い、保護された更新を実行できます。
バージョン 2.0
ローカルで実行することも、チーム向けに 1 つのサーバーをホストすることもできます。各ユーザーが自分の Shopify スタッフアカウントでサインインし、Claude、ChatGPT、Codex、または任意のリモート MCP クライアントから接続します。各ユーザーが実行できる操作は、Shopify 独自のスタッフ権限によって決まります。ガイド付きの Admin ワークフロー、ShopifyQL レポート、スキーマ検証、あらゆる Admin ミューテーションに対応する汎用アクション機能を備えています。 機能の網羅状況と受け入れ要件をご覧ください。 Shopify と ChatGPT の完全な互換性はまだ検証されていません。
動作を見る
このデモでは、サンプルストアとサンプルデータを使用しています。サーバーは、実際の各ストアの認証情報を個別に保持します。
クイックスタート
サーバーをインストールし、ストアを接続して、ヘルスチェックを実行します。
npm install --global shopify-multi-store-mcp-server
shopify-multi-store setup
shopify-multi-store doctor
Claude Code ユーザーは、次の 1 つのコマンドでサーバーを追加できます。
claude mcp add shopify-multi-store -- npx -y shopify-multi-store-mcp-server start
各ストアには固定のエイリアスと個別の安全な認証情報が割り当てられます。ストアに対するすべての操作で、そのエイリアスが必要です。
利用できる機能
| 機能 | 結果 |
|---|---|
| 複数のアクティブなストア | 1 つの AI との会話で、すべての Shopify ストアを利用できます。 |
| ストア横断レポート | 商品を検索し、カタログを比較し、在庫不足を見つけ、フルフィルメント SLA 違反をレポートできます。 |
| 並列 GraphQL | 最大 100 のストアを対象に、読み取り専用クエリを 1 つ実行できます。 |
| 保護されたミューテーション | 1 つのストアを対象とし、更新ごとに明示的な確認を渡します。 |
| 安全な認証情報 | macOS Keychain、Windows Credential Manager、または Linux Secret Service を使用します。 |
| ポータブルなスキル | Claude、Codex、Cursor、その他の互換性のあるエージェントをガイドします。 |
このサーバーとShopify Dev MCP
この2つのサーバーは、それぞれ異なる課題を解決します。エージェントがShopifyの参考資料とストアへのアクセスの両方を必要とする場合は、両方を使用してください。
| 機能 | Shopify Multi-Store MCP | Shopify Dev MCP |
|---|---|---|
| 主な目的 | 接続されたShopify Adminストアを操作します。 | Shopify開発者向けリソースを検索します。 |
| ストアデータ | 設定済みのストアを読み取り、比較します。 | Shopify Adminストアデータには接続しません。 |
| 複数ストア | 1つのセッションで名前付きストアをアクティブに保ちます。 | ストアポートフォリオの操作向けには設計されていません。 |
| レポート | すぐに使える運用レポートとカタログレポートを提供します。 | 開発者向けドキュメントとAPIスキーマを提供します。 |
| 更新 | 選択した1つのストアに対して、ガード付きの変更操作を実行します。 | ストアに対するAdmin APIの更新は実行しません。 |
| 認証 | ストアごとに個別の認証情報を使用します。 | 認証は不要です。 |
Shopify Dev MCPは、エージェントによるShopifyコードの作成や調査を支援します。このサーバーは、選択したストアに対して承認済みの操作を実行します。
すぐに使えるレポート
shopify_reportは、選択したストア全体に対して1つの読み取り専用レポートを実行します。reportには次のいずれかを指定します。
| レポート | 目的 |
|---|---|
portfolio_snapshot | 商品、注文、顧客、通貨、プラン、ストアの識別情報を要約します。 |
order_summary | 注文金額、割引、税金、配送料、キャンセル、ステータスを要約します。 |
customer_growth | 同じ期間における新規顧客数を比較します。 |
get_product_everywhere | すべてのストアから、完全一致するSKUまたはハンドルを1つ検索します。 |
compare_inventory | 選択したSKUの在庫数をストア間で比較します。 |
low_stock_report | 在庫が少ない商品と、ストア間での移送の候補を見つけます。 |
compare_prices | 完全一致するSKUの価格と比較価格の違いを明らかにします。 |
duplicate_sku_report | ストア内で重複しているSKUと、ストア間で共有されているSKUを見つけます。 |
list_unfulfilled_orders | 選択したストア全体の未処理のフルフィルメント業務を一覧表示します。 |
fulfillment_sla_report | フルフィルメントが遅れている注文を見つけ、経過時間別に表示します。 |
compare_catalog | ハンドル、ステータス、ベンダー、タイプ、バリエーションごとに商品を比較します。 |
catalog_gap_report | 欠落している商品や、ステータスが異なる商品を見つけます。 |
catalog_health | 販促情報、SEO、メディア、代替テキスト、在庫データの欠落を見つけます。 |
recent_product_changes | 選択した期間内に更新された商品を一覧表示します。 |
compare_collections | ハンドルごとにコレクションの内容と設定を比較します。 |
store_locations | ロケーション、フルフィルメント、在庫、住所のカバー状況を確認します。 |
analytics | 各ストアでShopifyQLクエリを1つ実行し、チャートのヒントを付けます。read_reportsが必要です。 |
ストア間で商品を検索するには、resource: "products"とstoresを指定してshopify_searchを使用します。
次のようなプロンプトを試してください。
- 「接続されているすべてのストアのポートフォリオスナップショットを表示してください。」
- 「過去30日間の注文と現在の注文金額を要約してください。通貨は分けてください。」
- 「小売店と卸売店全体で、在庫が少ない商品、在庫切れの商品、在庫数がマイナスの商品を表示してください。」
- 「このストアでは在庫切れですが、別のストアでは在庫がある商品を表示してください。」
- 「すべてのストアからSKU A123を見つけ、ステータス、価格、在庫を比較してください。」
- 「すべてのストアで、プロテイン関連の商品を検索してください。」
- 「経過時間別に、2日以上前の未処理の注文を表示してください。」
- 「あるストアでは公開中ですが、別のストアでは欠落しているか下書きになっている商品を見つけてください。」
- 「これらのストアの価格差と重複SKUを見つけてください。」
- 「小売店と卸売店全体で、SKU A123とB456の在庫を比較してください。」
- 「3つのストアについて、過去7日間の未処理の注文を一覧表示してください。」
- 「カタログの健全性を監査し、SEOまたはメディアデータが欠落している商品を表示してください。」
- 「これらのストアの公開中のカタログと注目のコレクションを比較してください。」
AI クライアントを接続する
このサーバーは、ローカルの stdio MCP サーバーに対応したクライアントで動作します。クライアントがエージェントスキルに対応している場合、ツールの選択が改善されます。
Claude Code
MCP サーバーを追加します:
claude mcp add shopify-multi-store -- npx -y shopify-multi-store-mcp-server start
付属のスキルを個人用にコピーします:
mkdir -p ~/.claude/skills/shopify-multi-store
cp skills/shopify-multi-store/SKILL.md ~/.claude/skills/shopify-multi-store/SKILL.md
Claude Desktop and Cursor
このサーバーをクライアントの MCP 設定に追加します:
{
"mcpServers": {
"shopify-multi-store": {
"command": "npx",
"args": ["-y", "shopify-multi-store-mcp-server", "start"]
}
}
}
VS Code
このサーバーを .vscode/mcp.json に追加します:
{
"servers": {
"shopify-multi-store": {
"type": "stdio",
"command": "npx",
"args": ["-y", "shopify-multi-store-mcp-server", "start"]
}
}
}
Other LLM clients
コマンドに npx、引数に -y shopify-multi-store-mcp-server start を指定します。
対応している場合は、skills/shopify-multi-store/SKILL.md をクライアントのスキルディレクトリにコピーします。スキルに対応していないクライアントでも、すべての MCP ツールを利用できます。
チーム向けにホストする
自分のコンピューターでローカルに使う方法(上記)が標準です。ホスティングは任意です。共有サーバーが必要な人がサーバーを実行し、チームは、どのプランでも、普段使っている AI アプリ(Claude(個人用カスタムコネクター)、ChatGPT、Codex、Claude Code、Cursor、VS Code、Gemini CLI、Windsurf、またはリモートサーバーに対応した任意の MCP クライアント)から接続できます。
各自が自分の Shopify スタッフアカウントでサインインし、すべての呼び出しはその人自身の Shopify 権限で実行されます。サーバー上にロールやポリシーファイルは必要なく、各自ができる操作は Shopify が決定します。Shopify のトークンはサーバー上で暗号化されて保管されます。再接続は最大でも1日に1回で、すべてのストアをワンクリックで再接続できます。すべてのツール呼び出しは監査されます。
共有サーバーを必要とする人がセルフホストする方法は2つあります。
- Cloudflare Workers:
手順については、docs/DEPLOY-CLOUDFLARE.md をご覧ください:Shopify アプリを作成し、4つのシークレットを設定してデプロイし、AI アプリに MCP URL を追加します。
- 任意のサーバー:
shopify-multi-store serve(または付属の Dockerfile)を実行し、https://<host>/mcpを共有します。
クライアントごとの手順はAI アプリから接続する、セットアップは docs/HOSTED.md、ユーザーごとのアクセスと汎用アクションツールについては docs/ACTIONS.md をご覧ください。
ストアの認証
| 方法 | コマンド | 最適な用途 |
|---|---|---|
| Admin API アクセストークン | shopify-multi-store setup | ストア管理画面ですでに作成したカスタムアプリの shpat_ トークンを使う場合。 |
| クライアント認証情報 | shopify-multi-store oauth | アプリと同じ Shopify 組織内のストアにインストールされた Dev Dashboard アプリを使う場合。 |
| 認可コード | shopify-multi-store oauth | その組織外のストアにインストールされた Dev Dashboard アプリを使う場合。 |
認可コードのセットアップでは http://127.0.0.1:3456/oauth/callback を使用します。先に、許可されたリダイレクト URL として追加してください。
認可コードのデフォルトのスコープは読み取り専用です。タスクに必要な Admin API スコープのみを付与してください。
最初のストアを接続する
各ストアには、エイリアス(main のような小文字、数字、ハイフン)と、ストア管理画面の「設定」>「ドメイン」に表示される固定の *.myshopify.com ドメインが必要です。認証情報は、Admin API へのアクセス方法によって異なります。Shopify では現在、新しいアプリは Dev Dashboard で作成します。ストア管理画面で作成したカスタムアプリは、すでに存在する場所で引き続き動作します。
Dev Dashboard アプリの場合(新規セットアップ):
- Dev Dashboard(dev.shopify.com)を開き、「Apps」>「Create app」を選択して、名前を付けます(例:「Multi-Store MCP」)。
- バージョンを作成します。「Access scopes」で必要なスコープを追加します。
read_products,read_orders,read_inventory,read_locations,read_customersで読み取りツールを利用できます。ツールの全機能を利用する場合は、node "$(npm root -g)/shopify-multi-store-mcp-server/scripts/print-scopes.mjs" --fullを実行して全リストを表示し、アプリで承認されていないスコープを削除してください。認可コード方式を使う場合は、リダイレクト URLhttp://127.0.0.1:3456/oauth/callbackも追加します。 - バージョンをリリースしてから、Dev Dashboard でストアにアプリをインストールし、スコープを承認します。
- アプリの設定からクライアント ID とクライアントシークレットをコピーします。
shopify-multi-store oauthを実行します。ストアがアプリと同じ Shopify 組織内にある場合はclient-credentialsを選択し、それ以外の場合はauthorization-codeを選択します(承認用のブラウザーウィンドウが開きます)。エイリアス、*.myshopify.comドメイン、クライアント ID、クライアントシークレットを入力します。クライアント認証情報を使う場合、サーバーがトークンを自動で取得・更新します。
ストア管理画面で作成したカスタムアプリの場合:
- ストア管理画面で「設定」>「アプリ」(一部の管理画面では「アプリと販売チャネル」)>「アプリを開発」を開き、アプリを選択します。管理画面で引き続き作成できる場合は、そこでアプリを作成できます。
- 「設定」で、Admin API に必要なスコープを設定し、アプリをインストールします。
- 「API 認証情報」で、Admin API アクセストークンを表示します(
shpat_で始まるトークンで、Shopify は一度だけ表示します)。 shopify-multi-store setupを実行し、エイリアス、*.myshopify.comドメイン、トークンを入力します。
次に shopify-multi-store doctor を実行してすべてのストアを確認し、追加するストアごとに同じ手順を繰り返します。シークレットはオペレーティングシステムの認証情報ストアに保存され、設定ファイルには保存されません。
ストアを管理する
shopify-multi-store list
shopify-multi-store doctor
shopify-multi-store remove store-alias
既存の stores.json ファイルをインポートする
shopify-multi-store import /absolute/path/to/stores.json
インポートすると、認証情報がオペレーティングシステムの認証情報ストアにコピーされ、設定済みのストアはそのまま保持されます。インポートを確認した後、古い認証情報ファイルを削除してください。
サーバーは29個のツールを公開しています。
| ツール | 操作 |
|---|---|
shopify_list_stores | 設定済みのストアエイリアスを一覧表示します。 |
shopify_get_shop_info | 1つのストアの識別情報を読み取ります。 |
shopify_check_access | 1つまたは複数のストアについて、許可されたスコープと、失敗するツールまたはリソースを表示します。 |
shopify_report | 複数ストアにまたがるレポートを実行します(上記を参照)。 |
shopify_search | 1つまたは複数のストアの商品、コレクション、注文、顧客、販売チャネル、リダイレクト、ページ、ファイル、メタオブジェクト、マーケット、テーマ、配送プロファイルを一覧表示または検索します。 |
shopify_get | IDを指定して、1つの商品、コレクション、注文、在庫、メタフィールドセット、テーマファイル、ブログ記事、アップロード済み画像、または一括操作を読み取ります。 |
shopify_update_prices | 1つまたは複数のストアで、最大250 SKUの価格、比較価格、単位原価を設定します。 |
shopify_set_inventory | 比較・設定による保護機能を使って、在庫数を設定します。 |
shopify_create_product | オプション、バリエーション、画像を指定して商品を作成します。 |
shopify_update_product | 商品のフィールド、バリエーション、メディア、タグを更新します。 |
shopify_create_collection | 手動コレクションまたはスマートコレクションを作成し、選択したチャネルに公開します。 |
shopify_update_collection | コレクションを更新し、手動コレクションに商品を追加します。 |
shopify_create_discount | 割引率を指定したディスカウントコードを作成します。 |
shopify_upload_image | Shopify Files に画像をアップロードします。 |
shopify_metafields | 任意のオーナーのメタフィールドを設定および削除します。 |
shopify_redirects | URLリダイレクトを作成および削除します。 |
shopify_tags | 商品、注文、顧客、または下書き注文のタグを追加および削除します。 |
shopify_update_order | 注文のメモ、メールアドレス、配送先住所、タグを更新します。 |
shopify_update_customer | 顧客のメモ、メールアドレス、タグを更新します。 |
shopify_create_fulfillment | 任意で追跡情報を指定して、注文の未処理のフルフィルメント注文を処理します。 |
shopify_find_actions | Admin API のすべてのミューテーションを検索します。 |
shopify_describe_action | 1つのミューテーションについて説明します。 |
shopify_run_action | 1つまたは複数のストアで任意のミューテーションを実行します。 |
shopify_graphql_query | 読み取り専用の Admin GraphQL クエリを実行します。 |
shopify_graphql_query_many | 複数のストアに対して1つのクエリを実行します。 |
shopify_graphql_mutation | 正確な認可を得たうえで、1つのストアを変更します。 |
shopify_graphql_schema | Admin GraphQL スキーマを調べます。 |
shopify_validate_graphql_codeblocks | GraphQLを実行せずに検証します。 |
shopify_search_docs_chunks | Shopify ドキュメントを検索します。 |
読み取り専用の操作は並列で実行できます。ミューテーションは、選択したストアに限定されます。
すべてのガイド付き書き込みツールは、デフォルトで dryRun: true に設定されています。これにより、何も変更せずに変更前後(または作成予定)のプレビューを返します。ユーザーが対象のストアと変更内容を正確に承認した後、適用するには dryRun: false を指定してください。ツールはその後、結果を読み取って確認します。商品、注文、顧客のタグは addTags と removeTags で変更します。replaceTags はすべてのタグを置き換え、プレビューには削除予定のタグが一覧表示されます。書き込み結果がサイズを理由に破棄されることはありません。大きな結果は、ステータス、件数、適用されなかったすべての項目を残して切り詰められます。
shopify_graphql_mutation と shopify_run_action は拒否リストに登録されたミューテーションを拒否します。また、引数によってのみ破壊的となるもの(商品ステータスに ARCHIVED を指定する場合など)を含む破壊的なミューテーションでは、ミューテーション名を confirm に設定する必要があります。
汎用アクションツール
3つのツールで、Shopify Admin API のすべてのミューテーション(API 2026-04 では514件)にアクセスできます。これには、専用ツールがない483件も含まれます。
| ツール | アクション |
|---|---|
shopify_find_actions | すべてのミューテーションをキーワードとカテゴリで検索し、破壊的なものと、専用ツールがすでにあるものを示します。 |
shopify_describe_action | 1つのミューテーションについて、引数、入力フィールド、ペイロード、編集可能なドキュメント、必要なスコープのヒントを表示します。 |
shopify_run_action | 1〜100個のストアで、ストアごとの変数を指定してミューテーションを実行します。デフォルトではドライランになり、操作対象となるすべてのレコード ID を解決します。破壊的なミューテーションでは、confirm にミューテーション名を設定する必要があります。 |
認証情報を発行するミューテーションや、アプリ自体の課金を変更するミューテーションは、拒否リストによってブロックされます。スコープ一式を取得するには、node scripts/print-scopes.mjs --full を実行してください。実用的な例や、サードパーティ製アプリではできないことについては、docs/ACTIONS.md を参照してください。
Shopify コンパニオンスキル
Shopify 公式の shopify スキルをインストールします。
shopify-multi-store install-shopify-skills
このコマンドは、検出したすべての対応エージェントにスキルをインストールします。エージェントを1つ選ぶには、--agent <name> を指定します。たとえば、--agent claude-code のように指定します。
shopify スキルは、ルーティングテーブルを備えた1つのスキルです。admin トピックでは、Shopify のドキュメントを検索し、カスタムの Admin GraphQL オペレーションを検証します。shopifyql トピックでは、売上、収益、注文、コンバージョン、トレンドを分析します。Shopify の toolkit 2.0.0 では、以前の shopify-admin スキルと shopify-shopifyql スキルがこの1つのスキルに統合されました。また、toolkit の ucp スキル(ショッピング用 CLI)は、このインストールには含まれません。
Shopify が再びスキルの名前を変更した場合、コマンドはステータス1で終了し、toolkit に含まれるスキルを表示して、名前を指定してインストールするための npx skills add コマンドを示します。何もインストールしていないのに成功を報告することはありません。
ストアの選択、認証情報、実行、ミューテーションの認可は、引き続きこのサーバーが管理します。Shopify のスキルスクリプトは、デフォルトで使用状況のテレメトリーを送信します。
テレメトリーを無効にするには、OPT_OUT_INSTRUMENTATION=true を設定してください。
この統合では、Shopify 公式の Shopify AI Toolkit を使用しています。また、Shopify Admin Skills の有用なパターンも取り入れています。
セキュリティモデル
シークレットがメインの設定ファイルに保存されることはありません。
| プラットフォーム | 認証情報バックエンド |
|---|---|
| macOS | Keychain |
| Windows | Credential Manager |
| Linux | Secret Service |
設定には、エイリアス、ドメイン、API バージョン、シークレットではない OAuth クライアント ID が保存されます。デフォルトのパスは ~/.config/codex-shopify-multi-store/stores.json です。
パス内および認証情報ストアのサービス名として使われている codex-shopify-multi-store は、プロジェクトの初期バージョンから引き継がれた名前です。既存のインストール環境でストアと認証情報を引き続き利用できるよう、この名前を維持しています。このサーバーが Codex 専用であるという意味ではありません。
別の設定パスを使うには、SHOPIFY_MULTI_STORE_CONFIG を設定してください。
- アクセストークン、OAuth クライアントシークレット、
.envファイル、認証情報を含む設定ファイルは、絶対にコミットしないでください。 - タスクに必要な Shopify Admin API スコープのみを付与してください。
- ミューテーションを実行する前に、必ず対象のストアを確認してください。
- 脆弱性の報告については、SECURITY.md をお読みください。
Linux で認証情報を保存するには、GNOME Keyring や KWallet などの Secret Service プロバイダーが必要です。
その他のインストール方法
グローバルインストールせずにヘルスチェックを実行します。
npx -y shopify-multi-store-mcp-server doctor
GitHub から直接インストールします(npm はサーバーをビルドする prepare スクリプトを実行します)。
npm install --global github:alex-brecher/shopify-multi-store
開発
git clone https://github.com/alex-brecher/shopify-multi-store.git
cd shopify-multi-store
npm ci
npm test
npm run test:live
npm pack --dry-run
ライブテストでは、設定済みのストアを使用して、読み取り専用の Shopify Admin API 呼び出しを実行します。
ライセンス
MIT
changelog、貢献ガイド、セキュリティポリシー、ディレクトリへの登録ガイドをお読みください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。