Shopify MCP server
Last verified: 2026-09
Catalog and orders on a Shopify store.
Community Chat, mail & docs Needs a secret Claude Desktop, Cursor, Windsurf, Claude Code
What it does
Shopify Admin GraphQL via MCP. Products, customers, orders — read and write depending on the custom app scopes (read_products vs write_orders, etc.).
It sits in Chat, mail & docs: These servers act as the bot or the integration you install.
Good for
- get-products on a dev store with a small page size.
- Read orders on a staging shop, never write_orders on live.
- Look up a customer the support thread named — on a copy store.
- Use cursor pagination instead of asking for 'all orders'.
Tools
- get-products / get-customers / get-orders / get-customer-orders — List with cursor pagination and query filters.
- write counterparts — When the app has write_* scopes — check the connected tool list.
Config (Claude Desktop / Cursor / Windsurf)
Paste the JSON below. Same mcpServers shape. Replace placeholder paths and secrets.
Windows paths look like C:\\Users\\you\\project, not /path/to.
Host-side steps →
Claude Desktop
| OS | Config file |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json
(usually C:\Users\<you>\AppData\Roaming\Claude\) |
| Linux | ~/.config/Claude/claude_desktop_config.json |
Cursor
| Scope | macOS / Linux | Windows |
|---|---|---|
| This project | .cursor/mcp.json in the repo root | |
| This user | ~/.cursor/mcp.json |
%USERPROFILE%\.cursor\mcp.json |
Windsurf
| OS | Config file |
|---|---|
| macOS / Linux | ~/.codeium/windsurf/mcp_config.json |
| Windows | %USERPROFILE%\.codeium\windsurf\mcp_config.json |
{
"mcpServers": {
"shopify": {
"command": "npx",
"args": [
"-y",
"shopify-mcp"
],
"env": {
"SHOPIFY_ACCESS_TOKEN": "shpat_...",
"SHOPIFY_DOMAIN": "store.myshopify.com"
}
}
}
}
Windsurf remote MCP: use serverUrl instead of url if the block below is HTTP.
One-liner: npx -y shopify-mcp
Secrets it wants: SHOPIFY_ACCESS_TOKEN, SHOPIFY_DOMAIN
How to get started
- Create a custom app on the store. Grant the smallest Admin scopes. Copy the Admin API token and shop domain.
- Ask for get-products with a small page size.
- Never give write_orders on a live store to evaluate the server.
Access risk
Customer PII and the ability to mutate inventory/orders. This is the store.
When to skip it
Skip it for Stripe-only billing or a HubSpot CRM that is not the store.
Vs alternatives
| Server | Official? | Needs a secret? | Best for |
|---|---|---|---|
| Shopify | No | Yes | Catalog and orders on a Shopify store. |
| Stripe | No | Yes | Look up customers, payments, and products. |
| HubSpot | No | Yes | Contacts and deals in HubSpot. |
| Airtable | No | Yes | Read and write Airtable bases. |
More in Chat, mail & docs
FAQ
Which token?
A custom app Admin API token on one shop. Grant read_products first. write_orders on a live store is how inventory and refunds go wrong.
PII?
Customers and orders are other people's data. GDPR still applies in a chat.
Shopify or Stripe?
Store vs payments. If checkout is Shopify, start here. If billing is Stripe-only, use Stripe.
GraphQL or REST?
This community server is Admin GraphQL-shaped (get-products, etc.).