Shopify MCP Pro
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | HTTP port for SSE mode (default: 3000) | |
| TRANSPORT_MODE | No | stdio (default) or sse | |
| SHOPIFY_CLIENT_ID | Yes | From Shopify Dev Dashboard | |
| SHOPIFY_LOG_LEVEL | No | error, warning, info, debug (default: warning) | |
| SHOPIFY_API_VERSION | No | Defaults to 2026-04 | |
| SHOPIFY_STORE_DOMAIN | Yes | e.g. my-store.myshopify.com | |
| SHOPIFY_CLIENT_SECRET | Yes | From Shopify Dev Dashboard |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| listProductsC | List products from the Shopify store |
| getProductA | Get a specific product by ID |
| createProductC | Create a new product |
| updateProductC | Update an existing product |
| listOrdersC | List orders from the Shopify store |
| getOrderA | Get a specific order by ID |
| listCustomersC | List customers from the Shopify store |
| getCustomerB | Get a specific customer by ID |
| getInventoryLevelsC | Get inventory levels for a product variant |
| adjustInventoryC | Adjust inventory quantity |
| setMetafieldC | Set a metafield on a resource |
| listCollectionsC | List collections from the Shopify store |
| listLocationsA | List all store locations |
| getShopInfoB | Get shop information and analytics |
| listDiscountsC | List discount codes and automatic discounts |
| createDiscountCodeD | Create a discount code |
| listFulfillmentOrdersC | List fulfillment orders |
| createFulfillmentC | Create a fulfillment for an order |
| getShippingZonesC | Get shipping zones and rates |
| listTransactionsB | List transactions for an order |
| createRefundC | Create a refund for an order |
| listGiftCardsD | List gift cards |
| createGiftCardC | Create a gift card |
| listPagesC | List store pages |
| createPageC | Create a new page |
| listBlogsD | List blogs |
| createArticleC | Create a blog article |
| createRedirectC | Create a URL redirect |
| listThemesB | List installed themes |
| listWebhooksC | List configured webhooks |
| createWebhookC | Create a webhook subscription |
| listDraftOrdersC | List draft orders |
| createDraftOrderD | Create a draft order |
| listMetaobjectDefinitionsA | List all metaobject type definitions configured in the store. Use this to discover valid |
| listMetaobjectsA | List metaobjects of a given type. The |
| createMetaobjectC | Create a metaobject |
| listMarketsC | List configured markets |
| listPriceRulesC | List discounts (covers code, automatic, BxGy, free-shipping). Replaces deprecated priceRules query with discountNodes in 2026-04+. |
| listAbandonedCheckoutsC | List abandoned checkouts |
| runShopifyQLA | Run an arbitrary ShopifyQL analytics query against the store. Same data as Admin → Analytics. Canonical clause order: FROM → SHOW → WHERE → SINCE/UNTIL/DURING → GROUP BY → ORDER BY → LIMIT. Dates are BARE (no quotes): |
| getSalesReportC | Sales analytics via ShopifyQL. Default columns: total_sales, gross_sales, net_sales, total_orders, average_order_value over the date range. Pass |
| getProductAnalyticsC | Get product performance analytics |
| getCustomerAnalyticsC | Get customer behavior analytics |
| getInventoryReportC | Get inventory analytics and forecasting |
| getMarketingReportC | Get marketing campaign performance |
| getFinancialSummaryC | Get financial summary including revenue, expenses, and profit |
| getConversionReportA | Product performance via ShopifyQL. Default: top 25 products by total_sales over date range. Pass |
| getAbandonmentReportC | Get cart and checkout abandonment analytics |
| getTrafficReportA | Orders grouped by traffic source via ShopifyQL. Default: total_sales/orders/AOV by referrer_source. Pass |
| getCustomReportC | Alias for runShopifyQL — pass a raw ShopifyQL string in |
| listCompaniesC | List B2B companies |
| createCompanyC | Create a B2B company |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| analyze-sales | Analyze sales trends and patterns |
| inventory-check | Check for low inventory items |
| customer-insights | Generate customer insights |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| products | |
| orders |
TDQS
Scored across 52 tools
Many tools target distinct resources, but several analytics tools overlap (e.g., getConversionReport vs getProductAnalytics, getSalesReport vs getFinancialSummary). The presence of getCustomReport as an alias for runShopifyQL adds confusion. Overall, agents can distinguish most tools but may struggle with similar analytics functions.
Most tools follow a consistent verb_noun pattern (createProduct, getProduct, listProducts, updateProduct). However, there are minor inconsistencies: getAbandonmentReport (not getAbandonedCheckoutsReport), runShopifyQL (verb_noun but no underscore), and setMetafield (set instead of create/update). Overall, naming is predictable.
52 tools is on the high side for an MCP server, but Shopify's extensive API justifies many operations. The count is borderline: it covers many areas but feels heavy. Some tools could be merged (e.g., multiple analytics reports), but each addresses a distinct use case.
The tool set covers core CRUD for products, orders, customers, and more, but lacks delete operations (e.g., deleteProduct, deleteOrder). Missing order lifecycle actions like cancelOrder or capture. Analytics are thorough. Notable gaps in basic write operations hinder full lifecycle management.