Shopify remote MCP
OFFICIAL SERVERShopify's hosted endpoint for building a new store or running an existing one over OAuth
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
Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs SHOPIFY_CLIENT_ID, SHOPIFY_CLIENT_SECRET, MYSHOPIFY_DOMAIN. Replace each <NAME> with your value.
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{
"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>"
}
}
}
}{
"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>"
}
}
}
}{
"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>"
}
}
}
}[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 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-mcpSHOPIFY_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. |
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.
| Runtime | Node.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.
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.
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.
get-productsget-product-by-idcreate-productupdate-productdelete-productmanage-product-optionsmanage-product-variantsdelete-product-variantsget-customersupdate-customerget-ordersget-order-by-idget-customer-ordersupdate-order