Shopify MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SHOPIFY_DOMAIN | No | Shop domain (e.g., my-store.myshopify.com). Alternative to SHOPIFY_SHOP_DOMAIN. | |
| SHOPIFY_STORES | No | JSON object mapping alias to store config (domain + either client_id/client_secret or access_token). Multi-store mode. | |
| SHOPIFY_CLIENT_ID | No | OAuth client ID for Dev Dashboard. | |
| SHOPIFY_SHOP_DOMAIN | No | Shop domain (alias for SHOPIFY_DOMAIN). | |
| SHOPIFY_ACCESS_TOKEN | No | Legacy access token (shpat_...). | |
| SHOPIFY_CLIENT_SECRET | No | OAuth client secret for 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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| shopify_list_storesA | List all Shopify stores configured for this agent. Returns a JSON array of If only one store is configured, Args: refresh: If True, bypass the shop-name cache and re-fetch from Shopify. Use after a merchant renames a shop in the Shopify admin. |
| shopify_graphql_queryA | Execute a read-only GraphQL query against a Shopify store's Admin API. Universal entry point for reading any data the token's scopes permit: products, variants, orders, customers, inventory, fulfillments, discounts, locations, markets, metafields, metaobjects, segments, shop settings, etc. Full GraphQL reference: https://shopify.dev/docs/api/admin-graphql Write mutations are rejected by design. The query string is parsed and validated as read-only before transmission. Idiomatic patterns:
Args:
query: GraphQL document. Must be a |
| shopify_graphql_introspectA | Introspect a Shopify store's Admin GraphQL schema. Pass Args:
type_name: GraphQL type name (e.g. "Order", "Product", "Customer").
Must match |
| shopify_bulk_queryA | Launch an async bulk export of a read-only GraphQL query. Use for exporting datasets too large for paginated queries (>10k records, or anything you'd otherwise paginate hundreds of times). Shopify runs the query in the background and produces a JSONL file with all results. Restrictions (enforced by Shopify):
Returns the BulkOperation ID - poll with Args: query: Read-only GraphQL document with a single root connection. shop: Store alias or domain. Required when multiple stores are configured. api_version: Override API version (default "2026-04"). |
| shopify_bulk_pollA | Poll a bulk operation's status by ID. Statuses: CREATED, RUNNING, COMPLETED, CANCELED, EXPIRED, FAILED.
On COMPLETED, the Args:
operation_id: Global ID of the bulk operation
(format: |
| shopify_shopifyqlA | Run a ShopifyQL analytics query against a Shopify store. ShopifyQL is Shopify's SQL-like reporting language. Requires Syntax: FROM SHOW [, ...] [BY ] [GROUP BY ] [WHERE ] [SINCE -Nd UNTIL today] [ORDER BY [ASC|DESC]] [LIMIT N] Datasets: sales, orders, products, customers, inventory, sessions. Time tokens: -Nd / -Nw / -Nm / -Nq / -Ny, or named (today, yesterday, this_week, last_week, this_month, last_month, last_year). Examples:
Returns Args: query: ShopifyQL query string. shop: Store alias or domain. Required when multiple stores are configured. api_version: Override API version (default "2026-04"). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 6 tools
Each tool has a distinct role: store discovery, direct GraphQL reads, schema introspection, async bulk exports, bulk status polling, and ShopifyQL analytics. The potential overlap between graphql_query and bulk_query is clearly resolved by scale and execution model guidance.
All tools share a consistent shopify_ prefix and snake_case style, with clear verb/noun combinations like list_stores, bulk_query, and bulk_poll. The name shopify_shopifyql is slightly redundant and breaks the verb-led pattern, but the overall convention remains predictable.
Six tools is well-scoped for a Shopify read/analytics MCP server. Each tool addresses a distinct need without redundancy, and the count is comfortably within the ideal range.
The universal GraphQL query tool provides read access to virtually any Shopify resource, while bulk_query and bulk_poll cover large exports and ShopifyQL covers analytics. Store discovery and schema introspection complete the read-only surface, leaving no significant operational dead ends.