Shopify MCP Server

Read and edit a Shopify store's products, customers and orders through the GraphQL Admin API

By Donny Li (individual) TypeScript Local · stdio E-commerce

57 popularity score ★ 239 ↓ 2.4k/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs SHOPIFY_CLIENT_ID, SHOPIFY_CLIENT_SECRET, MYSHOPIFY_DOMAIN. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add shopify -e SHOPIFY_CLIENT_ID=<SHOPIFY_CLIENT_ID> -e SHOPIFY_CLIENT_SECRET=<SHOPIFY_CLIENT_SECRET> -e MYSHOPIFY_DOMAIN=<MYSHOPIFY_DOMAIN> -- npx -y shopify-mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "shopify": {
      "command": "npx",
      "args": [
        "-y",
        "shopify-mcp"
      ],
      "env": {
        "SHOPIFY_CLIENT_ID": "<SHOPIFY_CLIENT_ID>",
        "SHOPIFY_CLIENT_SECRET": "<SHOPIFY_CLIENT_SECRET>",
        "MYSHOPIFY_DOMAIN": "<MYSHOPIFY_DOMAIN>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "shopify": {
      "command": "npx",
      "args": [
        "-y",
        "shopify-mcp"
      ],
      "env": {
        "SHOPIFY_CLIENT_ID": "<SHOPIFY_CLIENT_ID>",
        "SHOPIFY_CLIENT_SECRET": "<SHOPIFY_CLIENT_SECRET>",
        "MYSHOPIFY_DOMAIN": "<MYSHOPIFY_DOMAIN>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "shopify": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "shopify-mcp"
      ],
      "env": {
        "SHOPIFY_CLIENT_ID": "<SHOPIFY_CLIENT_ID>",
        "SHOPIFY_CLIENT_SECRET": "<SHOPIFY_CLIENT_SECRET>",
        "MYSHOPIFY_DOMAIN": "<MYSHOPIFY_DOMAIN>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.shopify]
command = "npx"
args = ["-y", "shopify-mcp"]

[mcp_servers.shopify.env]
SHOPIFY_CLIENT_ID = "<SHOPIFY_CLIENT_ID>"
SHOPIFY_CLIENT_SECRET = "<SHOPIFY_CLIENT_SECRET>"
MYSHOPIFY_DOMAIN = "<MYSHOPIFY_DOMAIN>"
Gemini CLITerminal
gemini mcp add --scope user -e SHOPIFY_CLIENT_ID=<SHOPIFY_CLIENT_ID> -e SHOPIFY_CLIENT_SECRET=<SHOPIFY_CLIENT_SECRET> -e MYSHOPIFY_DOMAIN=<MYSHOPIFY_DOMAIN> shopify npx -- -y shopify-mcp

Settings 5

SHOPIFY_CLIENT_ID Required: Client ID of a Dev Dashboard app (or --clientId). Use SHOPIFY_ACCESS_TOKEN instead for a legacy custom app.
SHOPIFY_CLIENT_SECRET Required: Client Secret of the same app (or --clientSecret); swapped for an access token at start.
MYSHOPIFY_DOMAIN Required: The store's domain, e.g. your-store.myshopify.com (or --domain); the server exits without it.
SHOPIFY_ACCESS_TOKEN Optional: Static shpat_ token of a legacy custom app (or --accessToken), used in place of the client ID and secret.
SHOPIFY_API_VERSION Optional: Admin API version to call (or --apiVersion); 2026-01 by default.

What it does

A community-built server that runs on your own machine over stdio and talks to one Shopify store through the GraphQL Admin API (version 2026-01 by default, changeable with --apiVersion or SHOPIFY_API_VERSION). It is meant for store owners and developers who want an assistant to look up and change catalogue and customer data without opening the Shopify admin.

In the published npm release, 1.0.8, it has 14 tools: list and fetch products, create, update and delete them, manage product options and variants in bulk, list and fetch customers and update them, and list and fetch orders, read a customer's orders and update an order's tags, notes, contact details and shipping address. List tools take a result limit, Shopify search syntax, sort keys and pagination cursors.

The GitHub README describes a larger set of 31 tools (order cancellation, refunds, fulfilments, draft orders, metafields, inventory, tags, customer creation, deletion and merging), and the registry file on the main branch already registers 44. None of those extra tools are in the 1.0.8 package that npx installs (checked in dist/index.js of 1.0.8); they arrive only when a newer version is published.

It signs in either with a Dev Dashboard app's client ID and secret, which it swaps for an access token and refreshes itself, or with a legacy custom app's static shpat_ token.

What it needs

RuntimeNode.js 18+

Node.js 18 or newer with npx. A Shopify store and an app installed on it with Admin API scopes read_products, write_products, read_customers, write_customers, read_orders and write_orders. Either a Dev Dashboard app's Client ID and Client Secret (new apps from January 2026), or a legacy custom app's static access token, plus the store's myshopify.com domain.

Limits

The 1.0.8 package on npm has 14 tools, not the 31 the GitHub README lists: cancelling, closing or marking orders paid, refunds, fulfilments, draft orders, metafield tools, inventory and tag tools, and creating, deleting or merging customers are not released yet. It works on one store per running instance and has no tools for collections management, discounts, themes or storefront content in 1.0.8. List tools return 10 items by default unless limit is set. The README warns that a different package, shopify-mcp-server, uses other settings; the command must name shopify-mcp.

Who it suits

Suits a Shopify merchant or agency developer who wants an assistant to search and edit products and variants, look up customers and orders, and adjust order details on a single store, and who can create an app with Admin API scopes. Because its tools write to live catalogue and customer data, it fits best on a development store or with a client that confirms each call. It is a third-party project, not Shopify's own. Anyone who needs order cancellation, refunds or fulfilment today should wait for a release that carries them or build from the main branch.

Tools 14

get-products
List products, optionally filtered by title or a Shopify query, with sorting and pagination
get-product-by-id
Fetch one product with its options, variants, media, SEO fields and collections
create-product
Create a product with optional description, tags, status, SEO, metafields and options
update-product
Change an existing product's fields, tags, status, SEO, metafields or collections
delete-product
Delete a product
manage-product-options
Add, rename, reorder or remove product options such as size or colour
manage-product-variants
Create or update a product's variants in bulk, including price, SKU and inventory tracking
delete-product-variants
Remove one or more variants from a product
get-customers
List customers with free-text or query search, sorting and pagination
update-customer
Edit a customer's name, contact details, tags, note, tax status, marketing consent or metafields
get-orders
List orders by status or Shopify query, with sorting and pagination
get-order-by-id
Fetch one order with line items, addresses, customer and pricing
get-customer-orders
List the orders of one customer
update-order
Change an order's tags, email, note, phone, attributes, metafields or shipping address

Similar servers