shopify
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SHOPIFY_CLIENT_ID | Yes | Client ID from your Shopify Dev Dashboard app | |
| SHOPIFY_STORE_DOMAIN | Yes | Your store domain, e.g. your-store.myshopify.com | |
| SHOPIFY_CLIENT_SECRET | Yes | Client Secret from your Shopify Dev Dashboard app |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| shopify_list_productsA | List products with optional Shopify search query syntax (e.g. "status:active vendor:Acme"). Optional pagination via cursor. Default first=50, max=250. |
| shopify_get_productA | Get a product by GID or numeric ID (e.g. "gid://shopify/Product/123" or "123"). Returns full product detail including variants and images, with truncation markers when capped. |
| shopify_search_productsB | Search products by Shopify search query (full-text + filters like "title:T-Shirt status:active"). Required: query. Optional pagination + sort. |
| shopify_create_productA | Create a new product. Required: title. Optional: descriptionHtml, productType, vendor, tags, status (ACTIVE|ARCHIVED|DRAFT, default ACTIVE), handle. Returns product + userErrors. |
| shopify_update_productA | Update fields on an existing product by GID or numeric ID. Required: id. All other fields are optional and only applied if provided. Returns product + userErrors. |
| shopify_archive_productA | Archive a product (sets status to ARCHIVED, hiding it from sale). Reversible. Destructive: requires confirm=true. Without confirm, returns a structured "would do X" response without firing. |
| shopify_add_product_tagA | Add one or more tags to a product. Required: productId, tags (non-empty array). Idempotent server-side. Returns the updated product node + userErrors. |
| shopify_remove_product_tagA | Remove one or more tags from a product. Required: productId, tags (non-empty array). Returns the updated product node + userErrors. |
| shopify_list_ordersC | List orders with optional Shopify search query (e.g. "financial_status:paid created_at:>2026-01-01"). Default first=50, max=250. |
| shopify_get_orderA | Get a single order by GID or numeric ID. Returns full detail including line items (with truncation marker), customer, addresses, and financial totals. |
| shopify_search_ordersC | Search orders by Shopify search query (e.g. "name:#1001 OR email:foo@bar.com"). Required: query. |
| shopify_mark_order_paidA | Mark an order as paid (orderMarkAsPaid). Use for offline payments where the funds were captured outside Shopify. Returns updated order + userErrors. |
| shopify_cancel_orderA | Cancel an order asynchronously (orderCancel returns a job). Destructive: requires confirm=true. Default reason=OTHER, restock=true, refund=false, notifyCustomer omitted. |
| shopify_add_order_noteA | Add a note to an order. mode=append (default) reads the current note and concatenates with two newlines; mode=replace overwrites. Required: id, note. Append makes one extra read query. |
| shopify_list_customersB | List customers with optional Shopify search query (e.g. "orders_count:>0 country:CH"). Default first=50, max=250. |
| shopify_get_customerA | Get a single customer by GID or numeric ID. Returns full detail including default address, addresses (with truncation marker), tags, locale, and lifetime value. |
| shopify_search_customersB | Search customers by Shopify search query (e.g. "email:foo@bar.com OR last_name:Smith"). Required: query. |
| shopify_create_customerA | Create a customer (customerCreate). At least one of email/phone is required. Optional: firstName, lastName, note, tags, locale. |
| shopify_update_customerA | Update a customer (customerUpdate). Required: id. All other fields are optional and only applied if provided. |
| shopify_add_customer_noteA | Add a note to a customer. mode=append (default) reads the current note and concatenates with two newlines; mode=replace overwrites. Append makes one extra read query. |
| shopify_get_inventory_levelB | Get the inventory level (available, on_hand, committed, incoming, reserved) for an inventory item at a single location. Required: inventoryItemId, locationId. |
| shopify_adjust_inventory_levelA | Adjust the available or on_hand quantity at a location by a delta (positive or negative integer, non-zero). Uses inventoryAdjustQuantities. Defaults: name=available, reason=correction. Optional: referenceDocumentUri. |
| shopify_create_draft_orderA | Create a draft order. Required: lineItems (non-empty). Each line item needs quantity, plus either variantId (existing variant) or title+originalUnitPrice (custom item). Optional: email, customerId, note, tags, shippingAddress, billingAddress, useCustomerDefaultAddress. |
| shopify_complete_draft_orderA | Complete a draft order, converting it into a real order (draftOrderComplete). Destructive: requires confirm=true. paymentPending=true marks the resulting order as payment pending instead of paid. |
| shopify_get_shop_infoA | Get shop-level metadata: name, primary domain, currency, timezone, plan, billing address, contact email, weight unit. |
| shopify_list_collectionsC | List collections with optional Shopify search query. Returns id, title, handle, descriptionHtml, sortOrder, productsCount. |
| shopify_list_locationsA | List shop locations (warehouses, retail stores). By default excludes inactive and legacy locations; toggle with includeInactive / includeLegacy. |
| shopify_list_metafieldsB | List metafields on any HasMetafields resource (Product, ProductVariant, Customer, Order, Collection, Shop, Company, Location). Required: ownerId, ownerType. Optional: namespace filter. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AIWerk/mcp-server-shopify'
If you have feedback or need assistance with the MCP directory API, please join our Discord server