get-productsLABSCO SUMMARY
The write side of Shopify admin, with the sharp edges labelled.
Two behaviours are worth knowing before you start. Creating a product with inline options registers the values but produces a single default variant, so the real variants are a second call with the standalone-variant strategy. And cancelling an order is irreversible - reason and restock are required arguments, not defaults you can shrug at.
What it is
A full-coverage Shopify admin server. It speaks the GraphQL Admin API and covers the write side as well as the read side, with cursor pagination, sort keys and raw Shopify query syntax available on every list call.
What you get
- Products: list and search, read one in full, create, update, delete, and manage options and variants in bulk
- Customers: list, read, create, update, delete, merge two records, and create, update or delete an address
- Orders: filtered listing, smart lookup by order name, numeric ID or GID, update, cancel, close or reopen, and mark as paid
- Fulfillment and money: create a fulfillment with tracking, create a full or partial refund with restocking, and turn a draft order into a real one
- Metafields on any resource - read, set up to 25 at once, delete
- Inventory quantities set per location, and tags added or removed on any taggable resource
Requirements
Node.js version 18 or higher, and a Shopify store with an app you control. Apps created from January 2026 use OAuth client credentials - the server exchanges the client ID and secret for an access token and refreshes it before it expires; older apps can still pass a static access token. Scopes needed are read and write on products, customers and orders. Credentials go on the command line or in SHOPIFY_CLIENT_ID, SHOPIFY_CLIENT_SECRET and MYSHOPIFY_DOMAIN. The package is shopify-mcp - a differently named package will reject the command-line arguments.
Setup effort
One command plus credentials — npx shopify-mcp, then supply credentials
USE CASES
Setting up a product with real variants and prices
Create the product with its options, then create the variants in bulk with the strategy that removes the placeholder, so prices and SKUs land correctly.
Working through today's unshipped orders
Filter orders by fulfillment status, read one in full, and create the fulfillment with tracking details and a customer notification.
Handling a return
Look the order up by its name, refund the specific line items with the right restock type, and note why on the order.
Cleaning up duplicate customer records
Search customers with Shopify query syntax, merge the two records choosing which fields survive, and fix the default address.
Taking a phone order
Build a draft order with the line items, discount and addresses, then complete it into a real order once payment is agreed.
31 tools
Listed in project docs. Your client may show a different list.
get-product-by-idcreate-productupdate-productdelete-productmanage-product-optionsmanage-product-variantsdelete-product-variantsget-customersget-customer-by-idcreate-customerupdate-customerdelete-customercustomer-mergemanage-customer-addressget-ordersget-order-by-idupdate-orderget-customer-ordersorder-cancelorder-close-openorder-mark-as-paidcreate-fulfillmentrefund-createcreate-draft-ordercomplete-draft-orderget-metafieldsset-metafieldsdelete-metafieldsinventory-set-quantitiesmanage-tagsBEFORE YOU INSTALL
What to know first
Tools you get
31 tools named in the project's documentation.
Requires
- Node.js 18 or higher (npx on PATH)
- a Shopify custom app: its Client ID and Client Secret (apps created from January 2026), or its static access token (older apps) — one or the other, not both
- your store's myshopify.com domain
Where it runs
Both documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
npx shopify-mcpMCP Clients
Claude Desktop
{
"mcpServers": {
"shopify": {
"command": "npx",
"args": [
"shopify-mcp",
"--clientId",
"<YOUR_CLIENT_ID>",
"--clientSecret",
"<YOUR_CLIENT_SECRET>",
"--domain",
"<YOUR_SHOP>.myshopify.com"
]
}
}
}The credentials go in the arguments: <YOUR_CLIENT_ID> and <YOUR_CLIENT_SECRET> are your app's Client ID and Client Secret, and <YOUR_SHOP> is your store name. For an older custom app with a static shpat_ token, use "--accessToken", "<YOUR_ACCESS_TOKEN>" instead of the client ID and secret pair.
Claude Code
claude mcp add shopify -- npx shopify-mcp --clientId <YOUR_CLIENT_ID> --clientSecret <YOUR_CLIENT_SECRET> --domain <YOUR_STORE>.myshopify.com<YOUR_CLIENT_ID>, <YOUR_CLIENT_SECRET> and <YOUR_STORE> are your app's credentials and store name. For an older custom app with a static token, use --accessToken <YOUR_ACCESS_TOKEN> instead of --clientId and --clientSecret.