Shopify Multi Store

io.github.alex-brecher由 GitHub 账号 alex-brecher 发布v2.0.3更新于 Oct 29, 2026

Connect AI agents to multiple Shopify Admin stores for reports, comparisons, and guarded updates.

概览

AI 生成的概览

将 AI 助手连接到一家或多家 Shopify Admin 商店,用于搜索、对比、生成报表,以及默认试运行的安全更新。

可以做什么
  • 列出已连接的商店、读取店铺身份并检查已授予的 API 权限范围
  • 跨商店搜索和读取商品、集合、订单、客户、库存、元字段、主题等记录
  • 运行跨店报表,如店铺组合快照、价格与库存对比、目录差异和履约时效
  • 创建和更新商品、集合、价格、库存、折扣、元字段、重定向、标签、订单、客户和发货
  • 查找、描述并执行任意 Admin GraphQL 变更,运行只读 GraphQL 查询并校验文档
  • 搜索 Shopify 文档并浏览 Admin GraphQL schema
适用场景
适合需要在一个对话中同时处理多家 Shopify 商店的场景:对比目录、价格和库存,生成店铺组合或履约报表,或对商品和订单做先预览后执行的谨慎修改。
运行要求
以 Node.js npm 包形式在本地运行(npx 或全局安装)。每家商店需要一个别名、其 myshopify.com 域名以及 Admin API 凭据:自定义应用访问令牌,或 Dev Dashboard 应用的 OAuth 客户端凭据/授权码。需为每家商店授予相应的 Admin API 权限范围。Linux 上需要 Secret Service 提供程序来保存凭据。
安装前请注意
它持有各商店的 Admin API 凭据;密钥保存在操作系统凭据库中,但令牌和客户端密钥绝不能提交到代码库。写入工具可修改商品、价格、库存、折扣、重定向、订单、客户和发货,通用操作工具可执行任意 Admin 变更,包括破坏性操作。引导式写入默认 dryRun,破坏性变更需显式确认;执行前请确认目标商店。可选的自托管模式会把 Shopify 令牌保存在服务器上。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Shopify Multi Store,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Shopify Multi-Store MCP

One MCP server. Every Shopify store.

Query, compare, report, and make guarded updates across Shopify stores from Claude, ChatGPT, Codex, Cursor, VS Code, and other MCP clients.

[One MCP server connected to multiple ecommerce stores]

[CI] [npm version] [npm provenance] [Node.js 20+] [MCP ready] [License: MIT]

Demo · Quick start · Reports · AI clients · Security

Version 2.0

Run it locally, or host one server for your team: everyone signs in with their own Shopify staff account and connects from Claude, ChatGPT, Codex or any remote MCP client, with Shopify's own staff permissions deciding what each person can do. Guided Admin workflows, ShopifyQL reports, schema validation, and a generic action surface for any Admin mutation are included. See feature coverage and acceptance requirements. Full Shopify ChatGPT parity is not yet verified.

See it work

[Terminal demonstration of a multi-store Shopify health check and product search]

The demonstration uses sample stores and sample data. The server keeps each real store credential separate.

Quick start

Install the server, connect your stores, and run the health check:

bash
npm install --global shopify-multi-store-mcp-servershopify-multi-store setupshopify-multi-store doctor

Claude Code users can add the server with one command:

bash
claude mcp add shopify-multi-store -- npx -y shopify-multi-store-mcp-server start

Each store gets a permanent alias and a separate secure credential. Every store operation requires that alias.

What you get

CapabilityResult
Multiple active storesKeep every Shopify store available in one AI conversation.
Cross-store reportsSearch products, compare catalogs, find stock gaps, and report fulfillment SLA breaches.
Parallel GraphQLRun one read-only query across up to one hundred stores.
Guarded mutationsTarget one store and pass an explicit confirmation for each update.
Secure credentialsUse macOS Keychain, Windows Credential Manager, or Linux Secret Service.
Portable skillsGuide Claude, Codex, Cursor, and other compatible agents.

This server and Shopify Dev MCP

The two servers solve different problems. Use both when an agent needs Shopify reference material and access to your stores.

CapabilityShopify Multi-Store MCPShopify Dev MCP
Primary purposeOperate connected Shopify Admin stores.Search Shopify developer resources.
Store dataRead and compare configured stores.Does not connect to Shopify Admin store data.
Multiple storesKeep named stores active in one session.Not designed for store portfolio operations.
ReportsProvide ready-made operations and catalog reports.Provide developer documentation and API schemas.
UpdatesRun guarded mutations against one selected store.Does not run Admin API updates against your stores.
AuthenticationUse separate credentials for each store.Needs no authentication.

Shopify Dev MCP helps an agent create and examine Shopify code. This server runs the approved operation against the selected store.

Ready-made reports

shopify_report runs one read-only report across selected stores. Set report to one of these:

ReportPurpose
portfolio_snapshotSummarize products, orders, customers, currency, plan, and store identity.
order_summarySummarize order values, discounts, tax, shipping, cancellations, and statuses.
customer_growthCompare new-customer counts across equal periods.
get_product_everywhereFind one exact SKU or handle across stores.
compare_inventoryCompare inventory quantities for selected SKUs across stores.
low_stock_reportFind low inventory and cross-store transfer opportunities.
compare_pricesHighlight price and compare-at-price differences for exact SKUs.
duplicate_sku_reportFind repeated SKUs inside stores and shared SKUs across stores.
list_unfulfilled_ordersList open fulfillment work across selected stores.
fulfillment_sla_reportFind late unfulfilled orders and show age buckets.
compare_catalogCompare products by handle, status, vendor, type, and variants.
catalog_gap_reportFind products that are missing or have different statuses.
catalog_healthFind missing merchandising, SEO, media, alt text, and inventory data.
recent_product_changesList products updated during a selected period.
compare_collectionsCompare collection content and configuration by handle.
store_locationsReview location, fulfillment, inventory, and address coverage.
analyticsRun one ShopifyQL query on each store, with a chart hint. Needs read_reports.

To search products across stores, use shopify_search with resource: "products" and stores.

Try prompts like these:

  • “Give me a portfolio snapshot for every connected store.”
  • “Summarize orders and current order values for the last 30 days. Keep currencies separate.”
  • “Show low, zero, and negative inventory across retail and wholesale.”
  • “Show products that are out of stock here but available in another store.”
  • “Find SKU A123 across every store and compare its status, price, and inventory.”
  • “Search every store for products related to protein.”
  • “Show unfulfilled orders older than two days, grouped by age.”
  • “Find products that are active in one store but missing or draft in another.”
  • “Find price differences and duplicate SKUs across these stores.”
  • “Compare inventory for SKU A123 and B456 across retail and wholesale.”
  • “List unfulfilled orders from the last seven days in three stores.”
  • “Audit catalog health and show the products with missing SEO or media data.”
  • “Compare the active catalog and featured collections across these stores.”

Connect an AI client

The server works in clients that support local stdio MCP servers. Agent Skills improve tool selection when the client supports them.

Claude Code

Add the MCP server:

bash
claude mcp add shopify-multi-store -- npx -y shopify-multi-store-mcp-server start

Copy the included skill for personal use:

bash
mkdir -p ~/.claude/skills/shopify-multi-storecp skills/shopify-multi-store/SKILL.md ~/.claude/skills/shopify-multi-store/SKILL.md
Claude Desktop and Cursor

Add this server to the client's MCP configuration:

json
{  "mcpServers": {    "shopify-multi-store": {      "command": "npx",      "args": ["-y", "shopify-multi-store-mcp-server", "start"]    }  }}
VS Code

Add this server to .vscode/mcp.json:

json
{  "servers": {    "shopify-multi-store": {      "type": "stdio",      "command": "npx",      "args": ["-y", "shopify-multi-store-mcp-server", "start"]    }  }}
Other LLM clients

Use npx as the command and -y shopify-multi-store-mcp-server start as the arguments.

Copy skills/shopify-multi-store/SKILL.md into the client's skills directory when supported. Clients without skill support still get every MCP tool.

Host it for your team

Local use on your own computer (above) is the default. Hosting is optional: whoever wants a shared server runs one, and their team connects from the AI app they already use, on any plan: Claude (personal custom connector), ChatGPT, Codex, Claude Code, Cursor, VS Code, Gemini CLI, Windsurf, or any MCP client that supports remote servers.

People sign in with their own Shopify staff account, and every call runs with that person's own Shopify permissions: Shopify decides what they can do, with no roles or policy file on the server. Shopify tokens stay on the server, encrypted. Reconnecting is at most once a day and one click for all stores. Every tool call is audited.

Two ways to host, both self-hosted by whoever wants a shared server:

  • Cloudflare Workers: [Deploy to Cloudflare] Step-by-step in docs/DEPLOY-CLOUDFLARE.md: create a Shopify app, set four secrets, deploy, add the MCP URL in your AI app.
  • Any server: run shopify-multi-store serve (or the included Dockerfile) and share https://<host>/mcp.

See Connect from your AI app for per-client steps, docs/HOSTED.md for setup, and docs/ACTIONS.md for per-user access and the generic action tools.

Store authentication

MethodCommandBest fit
Admin API access tokenshopify-multi-store setupA custom app you already created in the store admin, with its shpat_ token.
Client credentialsshopify-multi-store oauthA Dev Dashboard app installed on stores in the same Shopify organization as the app.
Authorization codeshopify-multi-store oauthA Dev Dashboard app installed on a store outside that organization.

Authorization code setup uses http://127.0.0.1:3456/oauth/callback. Add it as an allowed redirect URL first.

The default authorization code scopes are read-only. Grant only the Admin API scopes required for the task.

Connect your first store

Each store needs an alias (lowercase letters, digits and hyphens, such as main) and its permanent *.myshopify.com domain, which the store admin shows under Settings > Domains. The credential depends on how you get Admin API access. Shopify now creates new apps in the Dev Dashboard; custom apps made in the store admin keep working where they already exist.

With a Dev Dashboard app (new setups):

  1. Open the Dev Dashboard (dev.shopify.com), choose Apps > Create app, and name it (for example "Multi-Store MCP").
  2. Create a version. Under access scopes, add the scopes you need. read_products,read_orders,read_inventory,read_locations,read_customers covers the read tools; for everything the tools can do, print the full list with node "$(npm root -g)/shopify-multi-store-mcp-server/scripts/print-scopes.mjs" --full and remove any scope your app is not approved for. For the authorization code method, also add the redirect URL http://127.0.0.1:3456/oauth/callback.
  3. Release the version, then install the app on your store from the Dev Dashboard, approving the scopes.
  4. Copy the app's client ID and client secret from its settings.
  5. Run shopify-multi-store oauth. Choose client-credentials if the store is in the same Shopify organization as the app, otherwise authorization-code (a browser window opens to approve). Enter the alias, the *.myshopify.com domain, the client ID and the client secret. With client credentials the server gets and refreshes tokens itself.

With a custom app created in the store admin:

  1. In the store admin, open Settings > Apps (Apps and sales channels in some admins) > Develop apps and open your app. If your admin still offers it, you can create one there.
  2. Under Configuration, give the Admin API the scopes you need, then install the app.
  3. Under API credentials, reveal the Admin API access token (it starts with shpat_; Shopify shows it once).
  4. Run shopify-multi-store setup and enter the alias, the *.myshopify.com domain and the token.

Then run shopify-multi-store doctor to check every store, and repeat for each further store. Secrets go to the operating system credential store, never to the configuration file.

Manage stores

bash
shopify-multi-store listshopify-multi-store doctorshopify-multi-store remove store-alias
Import an existing stores.json file
bash
shopify-multi-store import /absolute/path/to/stores.json

The import copies credentials into the operating system credential store and preserves configured stores. Delete the old credential file after checking the import.

MCP tools

The server exposes 29 tools.

ToolAction
shopify_list_storesList configured store aliases.
shopify_get_shop_infoRead one store's identity.
shopify_check_accessShow granted scopes and which tools or resources would fail, across one or many stores.
shopify_reportRun a cross-store report (see above).
shopify_searchList or search products, collections, orders, customers, publications, redirects, pages, files, metaobjects, markets, themes, or delivery profiles on one store or several.
shopify_getRead one product, collection, order, inventory, metafield set, theme files, blog articles, uploaded image, or bulk operation by ID.
shopify_update_pricesSet price, compare-at price and unit cost for up to 250 SKUs on one store or several.
shopify_set_inventorySet available inventory with compare-and-set protection.
shopify_create_productCreate a product with options, variants, and images.
shopify_update_productUpdate product fields, variants, media, and tags.
shopify_create_collectionCreate a manual or smart collection and publish it to chosen channels.
shopify_update_collectionUpdate a collection and add products to a manual collection.
shopify_create_discountCreate a percentage discount code.
shopify_upload_imageUpload an image to Shopify Files.
shopify_metafieldsSet and delete metafields for any owner.
shopify_redirectsCreate and delete URL redirects.
shopify_tagsAdd and remove tags on a product, order, customer, or draft order.
shopify_update_orderUpdate order note, email, shipping address, and tags.
shopify_update_customerUpdate customer note, email, and tags.
shopify_create_fulfillmentFulfill an order's open fulfillment orders, with optional tracking.
shopify_find_actionsSearch every Admin API mutation.
shopify_describe_actionDescribe one mutation.
shopify_run_actionRun any mutation on one or more stores.
shopify_graphql_queryRun a read-only Admin GraphQL query.
shopify_graphql_query_manyRun one query across several stores.
shopify_graphql_mutationChange one store after exact authorization.
shopify_graphql_schemaExplore the Admin GraphQL schema.
shopify_validate_graphql_codeblocksValidate GraphQL without running it.
shopify_search_docs_chunksSearch Shopify documentation.

Read-only operations can run in parallel. Mutations stay isolated to the selected stores.

Every guided write tool defaults to dryRun: true, which returns a before/after (or would-create) preview without changing anything; pass dryRun: false, after the user authorizes the exact store and change, to apply it. The tool then reads the result back. Tags on products, orders, and customers change with addTags and removeTags; replaceTags replaces every tag and the preview lists the tags it would remove. Write results are never dropped for size: large results are trimmed, keeping status, counts, and every item that did not apply.

shopify_graphql_mutation and shopify_run_action refuse denylisted mutations and need confirm set to the mutation name for destructive ones, including mutations that are destructive only because of their arguments, such as a product status of ARCHIVED.

Generic action tools

Three tools reach every Shopify Admin API mutation (514 in API 2026-04), including the 483 without a dedicated tool:

ToolAction
shopify_find_actionsSearch all mutations by keyword and category; flags destructive ones and existing dedicated tools.
shopify_describe_actionShow one mutation's arguments, input fields, payload, a ready-to-edit document, and a scope hint.
shopify_run_actionRun a mutation on 1 to 100 stores, with per-store variables. Dry run by default, resolving every record ID it would touch; destructive mutations need confirm set to the mutation name.

A denylist blocks mutations that mint credentials or change the app's own billing. Request the full scope set with node scripts/print-scopes.mjs --full. See docs/ACTIONS.md for worked examples and what no third-party app can do.

Shopify companion skill

Install Shopify's official shopify skill:

bash
shopify-multi-store install-shopify-skills

The command installs the skill for every supported agent it detects. Pass --agent <name> to select one agent, for example --agent claude-code.

The shopify skill is one skill with a routing table. Its admin topic searches Shopify documentation and validates custom Admin GraphQL operations. Its shopifyql topic covers sales, revenue, order, conversion, and trend analysis. Shopify's toolkit 2.0.0 merged the former shopify-admin and shopify-shopifyql skills into this one skill, and the toolkit's ucp skill (a shopping CLI) is not part of this install.

If Shopify renames the skill again, the command exits with status 1, prints the skills the toolkit ships, and shows the npx skills add command to install one by name. It never reports success after installing nothing.

This server still controls store selection, credentials, execution, and mutation authorization. Shopify's skill scripts send usage telemetry by default.

Set OPT_OUT_INSTRUMENTATION=true to turn off that telemetry.

This integration uses the official Shopify AI Toolkit. It also reflects useful patterns from Shopify Admin Skills.

Security model

Secrets never enter the main configuration file.

PlatformCredential backend
macOSKeychain
WindowsCredential Manager
LinuxSecret Service

The configuration stores aliases, domains, API versions, and non-secret OAuth client IDs. Its default path is ~/.config/codex-shopify-multi-store/stores.json.

The codex-shopify-multi-store name, in that path and as the credential store's service name, is a legacy name from the project's first version. It stays so existing installs keep their stores and credentials; it does not mean the server works only with Codex.

Set SHOPIFY_MULTI_STORE_CONFIG to use another configuration path.

  • Never commit access tokens, OAuth client secrets, .env files, or credential-bearing configuration files.
  • Grant only the Shopify Admin API scopes required for the task.
  • Confirm the target store before every mutation.
  • Read SECURITY.md for vulnerability reporting.

Linux credential storage requires a Secret Service provider, such as GNOME Keyring or KWallet.

Other installation options

Run a health check without a global install:

bash
npx -y shopify-multi-store-mcp-server doctor

Install directly from GitHub (npm runs the prepare script, which builds the server):

bash
npm install --global github:alex-brecher/shopify-multi-store

Development

bash
git clone https://github.com/alex-brecher/shopify-multi-store.gitcd shopify-multi-storenpm cinpm testnpm run test:livenpm pack --dry-run

The live test uses configured stores and performs read-only Shopify Admin API calls.

License

MIT

Read the changelog, contribution guide, security policy, and directory submission guide.

来源:README.md,提交 5eabaec

工具

29

shopify_graphql_schema

Explore the Admin GraphQL schema for this store's API version.

输入参数store必填type_name必填

shopify_validate_graphql_codeblocks

Validate Admin GraphQL operations against this store's API version without executing them.

输入参数store必填codeblocks必填

shopify_create_product

Create a product with options, variants and images, and optionally add it to a manual collection. Defaults to status DRAFT and to dryRun:true, which previews the input without creating anything.

输入参数tagspricestore必填title必填dryRunimagesstatusvendoroptionsvariantsproductTypecollectionId另有 1 个

shopify_update_product

Update product fields, variants, media and tags. dryRun:true (the default) returns the current product and the change without applying it; dryRun:false applies it and returns before and after. Tags: addTags and removeTags change only the named tags; replaceTags replaces all tags. A status of ARCHIVED or DRAFT takes the product off every sales channel.

输入参数id必填store必填titledryRunimagesstatusvendoraddTagsvariantsremoveTagsproductTypereplaceTags另有 2 个

shopify_create_collection

Create a manual collection (optional productIds) or a smart collection (ruleSet). Pass publicationIds to publish to explicitly selected channels. Defaults to dryRun:true, which previews the input without creating anything.

输入参数imagestore必填title必填dryRunruleSetsortOrderproductIdspublicationIdsdescriptionHtml

shopify_update_collection

Update collection fields, rules or image, and add products to a manual collection (addProductIds). dryRun:true (the default) returns the current collection and the change without applying it; dryRun:false applies it and returns before and after.

输入参数id必填imagestore必填titledryRunruleSetsortOrderaddProductIdsdescriptionHtml

shopify_set_inventory

Set available inventory at one location using compare-and-set protection: compareQuantity must equal the current available quantity. Read inventory first (shopify_get resource inventory). dryRun:true (the default) checks and previews without changing anything.

输入参数store必填dryRunreasonquantity必填locationId必填idempotencyKeycompareQuantity必填inventoryItemId必填

shopify_create_discount

Create a percentage discount code with an explicit start date and customer audience. Defaults to dryRun:true, which resolves segments and previews the discount without creating it.

输入参数code必填store必填title必填dryRunendsAtstartsAt必填percentage必填productIdsusageLimitcollectionIdminimumQuantitycustomerSegments另有 3 个

shopify_upload_image

Upload a local image file or an HTTPS image to Shopify Files, wait for processing, and return its CDN URL (check it later with shopify_get resource uploaded_image). Defaults to dryRun:true, which previews the upload without sending anything.

输入参数altstore必填dryRunfilenameimageFilesourceUrl

shopify_update_prices

Set price, compareAtPrice and/or unit cost for up to 250 SKUs on one store (store) or the same list on several stores in parallel (stores). Resolves each SKU to the variants whose SKU matches exactly (Shopify search is a prefix match) and groups writes by product. A SKU shared by several variants is skipped unless allowDuplicates:true. Duplicate SKU rows with conflicting values are rejected before any write; identical duplicates are collapsed. After a write, verifies each variant with a separate read-back query and reports per-item outcome (applied, applied_unverified, rejected, not_found, ambiguous, unknown, skipped, mismatch) and a store status (ok, unverified, partial, failed, unknown). Large results are trimmed, never dropped: status, counts and every item that did not apply are always returned. Defaults to dryRun:true.

输入参数skus必填storedryRunstoresallowDuplicates

shopify_metafields

Set (metafieldsSet) and/or delete (metafieldsDelete) up to 25 metafields each, for any owner GID. Read them with shopify_get resource metafields. Defaults to dryRun:true.

输入参数setstore必填deletedryRun

shopify_redirects

Create and/or delete up to 100 URL redirects each, with a per-redirect outcome (applied, rejected or unknown) and a store status. List them with shopify_search resource redirects. Requires write_online_store_navigation. Defaults to dryRun:true.

输入参数store必填createdeletedryRun

shopify_update_order

Update order note, email, shipping address and tags (orderUpdate). dryRun:true (the default) returns the current order and the change without applying it; dryRun:false applies it and returns before and after. Tags: addTags and removeTags change only the named tags; replaceTags replaces all tags. Requires write_orders.

输入参数id必填noteemailstore必填dryRunaddTagsremoveTagsreplaceTagsshippingAddress

shopify_tags

Add and/or remove tags on a product, order, customer or draft order by GID (tagsAdd/tagsRemove). Defaults to dryRun:true.

输入参数addstore必填dryRunremoveownerId必填

shopify_update_customer

Update customer note, email and tags (customerUpdate). dryRun:true (the default) returns the current customer and the change without applying it; dryRun:false applies it and returns before and after. Tags: addTags and removeTags change only the named tags; replaceTags replaces all tags. Email marketing consent is out of scope. Requires write_customers.

输入参数id必填noteemailstore必填dryRunaddTagsremoveTagsreplaceTags

shopify_create_fulfillment

Fulfill the remaining quantities of an order's OPEN and IN_PROGRESS fulfillment orders with optional tracking. notifyCustomer defaults to false. Requires read_merchant_managed_fulfillment_orders and write_merchant_managed_fulfillment_orders (Shopify reports any other missing scope, such as for fulfillment orders assigned to a fulfillment service). Defaults to dryRun:true.

输入参数store必填dryRunorderId必填trackingUrlnotifyCustomertrackingNumbertrackingCompany

shopify_check_access

For one or many stores, report the shop identity and granted Admin API access scopes, compare them against every tool's requirement (see src/scope-requirements.ts; tools with several resources or reports are listed as tool:resource), and report missing scopes and which tools would fail. Omit stores to check every configured store.

输入参数stores

shopify_get

Get a Shopify Record

Read one record by GID from one store. Follow each returned cursor independently. Resources: - product: Product details, variants (first/after) and media (mediaAfter). id: Product GID. - collection: Collection details, rules and a page of products. id: Collection GID. - order: Order, shipping, fulfillment, tracking and a page of line items. id: Order GID. - inventory: Inventory by product (id: Product GID) or inventory item (id: InventoryItem GID, pages through locations). - metafields: Metafields of any owner (id: owner GID); optional namespace and key. - theme_files: Theme file contents. id: OnlineStoreTheme GID; optional filenames, else pages through every file. - blog_articles: A blog's articles. id: Blog GID. - uploaded_image: Image processing status and CDN URL. id: MediaImage GID. - bulk_operation: A bulk operation's status and result URLs. id: BulkOperation GID. Partial exports stay marked incomplete.

输入参数id必填keyafterfirststore必填resource必填filenamesnamespacemediaAfter

shopify_report

Run a Shopify Report

Run one read-only report across selected stores; each store returns its own result and completeness indicators. Reports: - portfolio_snapshot: Shop identity and product, order, customer and location counts. stores optional (all stores). - store_locations: Active, inactive, legacy, fulfillment, inventory and address status of locations. stores optional (all stores). - compare_inventory: Inventory, price, status and catalog details for exact SKUs. Needs skus (1-50). - compare_prices: Price and compare-at price for exact SKUs, with mismatches and missing variants. Needs skus (1-50). - get_product_everywhere: One exact SKU or handle across stores. Needs identifier and matchBy (sku or handle). - compare_catalog: Titles, status, vendor, type and inventory for exact product handles. Needs handles (1-50). - compare_collections: Titles, sort order, product counts, SEO and images for exact collection handles. Needs handles (1-50). - catalog_gap_report: Products missing or with different status across stores. first: products scanned per store (default 250). - catalog_health: Missing vendor, type, SEO, media, alt text, and active products without inventory. first (default 100). - duplicate_sku_report: SKUs repeated inside a store and shared across stores. first: variants scanned per store (default 250). - low_stock_report: Active variants at or below threshold (default 10), separating low, zero and negative. - recent_product_changes: Products updated in the last days (default 7). first (default 100). - list_unfulfilled_orders: Recent open unfulfilled orders. days (default 7), first (default 25). - fulfillment_sla_report: Open unfulfilled orders by age bucket and SLA breaches. lookbackDays (default 90), slaDays (default 2), first (default 100). - order_summary: Order values, discounts, shipping, tax, cancellations and statuses; currencies separate. days (default 30), first (default 100). - customer_growth: New customers in the current and previous period of days (default 30). -

输入参数daysskusfirstqueryreport必填storeshandlesmatchByslaDaysthresholdidentifierlookbackDays

shopify_search_docs_chunks

Search Shopify documentation and return source links. No store credentials are sent.

输入参数prompt必填api_namemax_num_results

shopify_find_actions

Find Shopify Admin Actions

Search every Shopify Admin API mutation (hundreds of write actions, most without a dedicated tool) by keyword and optional category. Returns each action's name, one-line description, category, whether it is destructive, which dedicated tools already cover it, and a scope hint. Next: shopify_describe_action for the full signature, then shopify_run_action.

输入参数limitquerystoreoffsetcategoryapiVersionincludeDeprecated

shopify_describe_action

Describe a Shopify Admin Action

Full signature of one Admin API mutation: arguments with types, the expanded input object fields (required markers, enum values, descriptions), the payload fields, a ready-to-edit GraphQL document with a default selection, a variables template with the required fields, a scope hint, and whether it is destructive (then shopify_run_action needs confirm set to the mutation name).

输入参数depthstoremutation必填apiVersion

shopify_run_action

Run a Shopify Admin Action

Run any Shopify Admin API mutation on one to one hundred stores. Give a mutation name (a default document is built) or a full single-mutation document, plus variables shared by every store and/or variablesByStore (IDs differ per store). dryRun (the default) validates the document and variables against each store's API version and looks up every record ID in the variables and the document; nothing is changed. The preview says whether it is complete: targets chosen by a search, saved search, filter, or "all" flag, more than 250 IDs, or IDs that do not resolve make it incomplete, and then applying also needs acknowledgeIncompletePreview: true. dryRun false applies it; every ID is looked up again first, and IDs that do not resolve refuse the apply unless acknowledgeIncompletePreview is true. Destructive actions (delete, cancel, refund and similar) need confirm set to the mutation name. Mutations are never retried automatically. On a hosted server in per-user mode, Shopify limits this to what your own staff account may do.

输入参数dryRunstores必填confirmdocumentmutationvariablesvariablesByStoreacknowledgeIncompletePreview

shopify_list_stores

List Shopify Stores

List every Shopify Admin store that remains connected to this plugin. On a hosted server in per-user mode, lists only the stores you have connected with your own Shopify account and names the others with a link to connect them. This tool does not expose access tokens.

无需输入参数。

shopify_get_shop_info

Get Shopify Store Information

Get identity and account information from one named Shopify Admin store. Use this tool before a sensitive change to make sure that the selected store is correct.

输入参数store必填

shopify_graphql_query

Query a Shopify Store

Run one read-only GraphQL Admin API query against one named store. Use cursor pagination and request only necessary fields.

输入参数query必填store必填variables

shopify_graphql_query_many

Query Multiple Shopify Stores

Run the same read-only GraphQL Admin API query across multiple named stores in parallel. Each store returns its own success or error result.

输入参数query必填stores必填variables

shopify_graphql_mutation

Change a Shopify Store

Run one GraphQL Admin API mutation against one named store. Set confirm to true only after the user authorizes the exact store and change. Destructive mutations (see shopify_describe_action; some are destructive only with certain arguments, such as a product status of ARCHIVED or notifyCustomer true) need confirm set to the mutation name instead, and denylisted mutations are refused, exactly as in shopify_run_action. The result reports each top-level mutation field as applied, rejected, or unknown, and the store as applied, rejected, partial, or unknown; after partial or unknown, retry only the rejected fields in a new document.

输入参数store必填confirm必填mutation必填variables

版本历史

4
  1. v2.0.3最新Oct 23, 2026
  2. v2.0.2Oct 19, 2026
  3. v2.0.1Sep 28, 2026
  4. v1.6.0Sep 16, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分