← Back to directory
S

Shopify MCP Server

Community
Manage your Shopify store's products, customers, and orders through natural language.
GitHub source repository ↗
★ 236 Stars Category · Other Popular Source revision c90faaf43402
56FMRS · C
Reliability
8/20
Security and permissions
9/20
Maintenance
10/20
Documentation
16/20
Setup experience
13/20

The source material contains no third-party review or user rating data; the above is based solely on the project's README description.

Read the FMRS scoring method →

Shopify MCP Server is a community-built TypeScript project that exposes Shopify's GraphQL Admin API (2026-01) to MCP hosts such as Claude and Cursor. It provides 31 tools covering product, customer, order, draft order, metafield, inventory, and tag management, with cursor-based pagination, sorting, and Shopify query-syntax filtering across list endpoints. Authentication supports two modes: OAuth client credentials (Client ID/Secret) for apps created in Shopify's Dev Dashboard since January 2026 — with automatic token exchange and refresh — or a legacy static shpat_ access token for existing custom apps. The project is MIT-licensed and maintained by an individual developer (GeLi2001), not by Shopify.

Tools

get-products
List or search products by title, with pagination, sorting, and Shopify query-syntax filtering.
get-product-by-id
Fetch full details for a single product by GID, including SEO, options, media, variants, and collections.
create-product
Create a new product; when using productOptions, Shopify only generates one default variant, so use manage-product-variants afterward to create real variants.
update-product
Update an existing product's title, description, status, tags, SEO, metafields, and collection membership.
delete-product
Delete a product.
manage-product-options
Create, update, or delete product options such as size or color.
manage-product-variants
Bulk create or update product variants (price, SKU, tracking, barcode, weight, option values).
delete-product-variants
Delete one or more variants from a product.
get-customers
List customers with free-text or Shopify query-syntax search, pagination, and sorting.
get-customer-by-id
Fetch full details for a single customer by numeric ID, including addresses, tags, spend, and metafields.
create-customer
Create a new customer with name, contact info, tags, note, tax status, address, and metafields.
update-customer
Update a customer's information, including email marketing consent and metafields.
delete-customer
Delete a customer.
customer-merge
Merge two customer records into one, optionally choosing which record's fields to keep.
manage-customer-address
Create, update, or delete a customer's mailing address, and optionally set it as default.
get-orders
Get orders filtered by status or raw Shopify query syntax, with pagination and sorting.
get-order-by-id
Look up an order by name (#77235), numeric ID, or full GID, returning pricing, addresses, line items, discounts, and refund status.
update-order
Update an order's tags, email, note, phone, PO number, custom attributes, metafields, or shipping address.
get-customer-orders
List orders for a specific customer, with pagination and sorting.
order-cancel
Cancel an order with options for refunding, restocking, and customer notification. Irreversible.
order-close-open
Close or reopen an order.
order-mark-as-paid
Mark an order as paid for manual or offline payments.
create-fulfillment
Create a fulfillment (mark items shipped) with optional tracking information.
refund-create
Create a full or partial refund with optional restocking.
create-draft-order
Create a draft order for phone/chat sales, invoicing, or wholesale, with variant or custom line items.
complete-draft-order
Convert a draft order into a real order.
get-metafields
Get metafields for any Shopify resource such as products, orders, or customers.
set-metafields
Create or update up to 25 metafields atomically on any resource.
delete-metafields
Delete metafields from any Shopify resource.
inventory-set-quantities
Set absolute available or on-hand inventory quantities at specific locations.
manage-tags
Add or remove tags on any taggable resource such as orders, products, customers, or draft orders.

Setup

  1. Ensure Node.js 18 or higher is installed. 2. In Shopify admin, create a custom app: as of January 2026, new apps are created in the Dev Dashboard with Admin API scopes for read/write_products, read/write_customers, and read/write_orders, then installed to obtain a Client ID and Client Secret; alternatively, reuse an existing app's static shpat_ access token. 3. Add the mcpServers entry from the README to the Claude Desktop config file (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json; Windows: %APPDATA%/Claude/claude_desktop_config.json), or register it with Claude Code via claude mcp add shopify -- npx shopify-mcp ...; alternatively, set the credentials as environment variables in a .env file and run npx shopify-mcp, or install globally with npm install -g shopify-mcp and run the shopify-mcp command directly. 4. Optionally pin the Shopify API version with --apiVersion or SHOPIFY_API_VERSION (default 2026-01).
claude_desktop_config.json
{"mcpServers":{"shopify":{"command":"npx","args":["shopify-mcp","--clientId","<YOUR_CLIENT_ID>","--clientSecret","<YOUR_CLIENT_SECRET>","--domain","<YOUR_SHOP>.myshopify.com"]}}}

Fit and risk

Best for

  • Shopify merchants or support staff who want conversational access to store data
  • Developers building e-commerce operations assistants on Claude Desktop, Claude Code, or Cursor
  • Technical users comfortable creating a Shopify custom app and obtaining API credentials

Not for

  • Users without a Shopify custom app or unable to obtain a Client ID/Secret or access token
  • Storefront/customer-facing checkout use cases — this tool operates against the Admin API only
  • Compliance scenarios requiring strict audit trails or permission scoping beyond what the README's Admin API scopes provide

Required permissions

  • Shopify Admin API scopes: read_products / write_products
  • read_customers / write_customers
  • read_orders / write_orders
  • Full read/write access to the connected store via OAuth Client ID/Secret or a static shpat_ access token

Risks and side effects

  • The README explicitly flags order-cancel as an irreversible operation
  • Full read/write access to customer personal data (name, email, phone, address) creates exposure risk from data leaks or misuse
  • Client Secret or static access tokens configured as plaintext CLI arguments or environment variables risk credential exposure
  • This is an independently maintained third-party open-source project, not an official Shopify release, so users should review the code themselves

Troubleshooting

  1. Check Claude Desktop's MCP logs: `tail -n 20 -f ~/Library/Logs/Claude/mcp*.log`
  2. Confirm the installed package is `shopify-mcp`, not the similarly named `shopify-mcp-server`
  3. Verify Node.js version is 18 or higher
  4. Confirm the Shopify custom app has the required Admin API scopes configured and installed
  5. Make sure the authentication method used (client credentials vs. static token) matches what's in the config
  6. Verify the --domain value is formatted as `<store>.myshopify.com`

Use cases

Querying, creating, and updating the product catalog conversationally
Support staff quickly looking up customer details and order history
Processing order cancellations, refunds, and fulfillments
Bulk adjusting inventory quantities or product/customer tags
Creating and completing draft orders for phone, chat, or wholesale sales

Supported clients

Claude DesktopFull support
Claude CodeFull support
CursorPartial support