Shopify MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SHOPIFY_STORE_NAME | Yes | Your Shopify store name | |
| SHOPIFY_API_ACCESS_TOKEN | Yes | Your Shopify API access token |
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
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| create_productA | This tool creates a product structure with options (e.g., Color, Size) in DRAFT status. It handles product title, description, vendor, type, tags, and options configuration, but does not create variants with prices. Use this as the first step in product creation. |
| browse_productsA | This tool retrieves a list of products with optional inventory information. It supports pagination and provides key product details like title, description, images, variants, and inventory levels. When provided with a specific product_id, it returns detailed information for that single product. |
| add_product_variantB | Adds a new variant (combination of options like color/size) with its price to an existing product. |
| update_variant_priceA | This tool updates the price and/or compare-at price of a specific product variant. It can set a new regular price, add/update a compare-at price, or remove a compare-at price by passing null or an empty string. |
| list_inventory_itemsA | This tool retrieves a list of inventory items with optional filtering by SKU. It supports pagination and provides inventory details like available quantities, costs, and locations where items are stocked. |
| get_inventory_itemA | This tool retrieves detailed information about a specific inventory item by ID or SKU. It returns comprehensive inventory data including tracked status, available quantities across all locations, and associated variant information. |
| update_inventory_quantityA | This tool updates the available quantity of an inventory item at a specific location. It accepts inventory item ID, location ID, and the new available quantity, returning the updated inventory level after adjustment. |
| browse_ordersA | This tool retrieves Shopify orders with powerful filtering options. It supports filtering by status, date range, customer email, financial status, fulfillment status, and allows searching by order number or customer details. When provided with a specific order_id, it returns detailed information for that single order. |
| get_customer_contactsD | – |
| get_customer_phoneD | – |
| introspect_admin_schemaA | This tool introspects and returns the portion of the Shopify Admin API GraphQL schema relevant to the user prompt. Only use this for the Shopify Admin API, and not any other APIs like the Shopify Storefront API or the Shopify Functions API. |
| query_shopifyA | This tool executes custom GraphQL queries or mutations against the Shopify Admin API. It allows for complete flexibility to access any Shopify Admin API endpoint not covered by the specialized tools, with options to pass variables and enable mutation operations. |
| browse_customersB | This tool retrieves customer information with spending data and advanced filtering options. It supports sorting by multiple fields, filtering by minimum/maximum spend, and returns detailed customer profiles. When provided with a specific customer_id, it returns comprehensive information for that single customer. |
| upload_image_from_urlA | This tool uploads an image from a public URL to the Shopify CDN Files section. It handles the transfer of image data to Shopify's servers, allowing you to specify alt text and optional filename for the uploaded image. |
| get_abandonmentA | This tool retrieves detailed information about cart or checkout abandonments by ID. It returns data about abandoned carts including items, prices, customer information (if available), and abandonment timing. You can customize which fields are returned in the response. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| store-info |
TDQS
Scored across 15 tools
Most resource-specific tools are distinct, but the two undocumented customer tools (get_customer_phone, get_customer_contacts) blur into the same customer area and overlap with browse_customers. Without descriptions, an agent cannot reliably choose among them, and query_shopify is a catch-all that further obscures boundaries.
All names use snake_case verb_noun style, but retrieval verbs are inconsistent: browse_products/browse_orders/browse_customers, list_inventory_items, get_inventory_item, get_customer_phone. This is readable but not a predictable convention.
15 tools is a reasonable size for the broad Shopify Admin domain, covering products, variants, inventory, orders, customers, abandonments, images, and GraphQL access. A few tools (get_customer_phone, get_customer_contacts) seem redundant or narrow, but the count itself is not excessive.
Specialized coverage is strong for product creation and inventory, but missing obvious CRUD operations like updating/deleting products or mutating orders/customers. The query_shopify GraphQL fallback fills these gaps, so agents can complete workflows even if the specialized surface is incomplete.