shopify/shopify

MCP Server

Shopify Admin MCP Server - products, collections, inventory, customers, orders, and discounts via the Admin API

Shopify Admin MCP server (@acodera/shopify-admin-mcp, a community server; Shopify publishes no Admin MCP of its own). It talks to the Admin GraphQL API 2026-10 and covers products and variants, collections, metafields, inventory, customers, orders, discounts, files, markets, and themes, plus raw GraphQL and live schema search. Toolsets, read-only mode, and theme-write switches narrow what an agent can call; the app's access scopes are the real limit.

MCP Server

  • Package: @acodera/shopify-admin-mcp (pinned in the capability file)
  • Transport: stdio
  • Command: npx -y @acodera/[email protected] --toolsets products,collections,metafields,customers,orders,inventory,discounts --disable-theme-writes
  • Runtime: Node.js 22.12+

Authentication

Create an app in the Shopify Dev Dashboard, give it only the scopes the agent needs, release a version, and install it on the store (app and store in the same Shopify organization). The server exchanges the client ID and secret for 24-hour tokens and refreshes them itself. Stores with a legacy custom app can use its shpat_ token instead.

VariableRequiredDescription
SHOPIFY_STOREYesmystore or mystore.myshopify.com
SHOPIFY_CLIENT_IDYes (client credentials)Dev Dashboard app client ID
SHOPIFY_CLIENT_SECRETYes (client credentials)Dev Dashboard app client secret
SHOPIFY_ACCESS_TOKENLegacy onlyshpat_ token of a legacy custom app, instead of the ID and secret

Scopes for store operations without refunds: read_products,write_products,read_inventory,write_inventory,read_locations,read_customers,write_customers,read_orders,read_draft_orders,write_draft_orders,read_discounts,write_discounts (add read_all_orders for orders older than 60 days). Customer personal data also needs Shopify's protected customer data approval.

Available Tools

ToolDescription
shopify_products_list, shopify_product_get, shopify_product_create, shopify_product_updateCatalog
shopify_product_variants_create, shopify_product_variants_updateVariants, prices, SKUs, barcodes
shopify_collections_list, shopify_collection_get, shopify_collection_create, shopify_collection_updateCollections
shopify_metafields_list, shopify_metafields_set, shopify_metafield_definitions_listStructured attributes
shopify_inventory_get_levels, shopify_inventory_adjustStock per location (adjust needs the expected current quantity)
shopify_customers_list, shopify_customer_get, shopify_customer_updateCustomers
shopify_orders_list, shopify_order_getOrders (read)
shopify_discounts_list, shopify_discount_get, shopify_discount_amount_off_create, shopify_discount_free_shipping_create, shopify_discount_bxgy_create, shopify_discount_codes_addDiscounts
shopify_graphqlAny Admin GraphQL query or mutation the scopes allow (draft orders, reports)
shopify_schema_search, shopify_schema_detailsFind types, queries, and mutations in the live schema

Configuration Example

toml
[[mcp.servers]]
name = "shopify"
type = "stdio"
command = "npx"
args = ["-y", "@acodera/[email protected]", "--toolsets", "products,collections,metafields,customers,orders,inventory,discounts", "--disable-theme-writes"]
timeout_seconds = 120
env = { SHOPIFY_STORE = "{{ENV:SHOPIFY_STORE}}", SHOPIFY_CLIENT_ID = "{{ENV:SHOPIFY_CLIENT_ID}}", SHOPIFY_CLIENT_SECRET = "{{ENV:SHOPIFY_CLIENT_SECRET}}" }
tools = []

Add --read-only for reporting-only agents, and --disable-raw-graphql to keep an agent to the listed toolsets.