# Shopify MCP

Read-only Shopify Admin GraphQL integration for AI agents. Run queries, fetch analytics via ShopifyQL, and export large datasets safely without write risks.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 1
- Author: scalably-io
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/scalably-io/shopify-mcp
- Updated: 2026-09-09
- HTML: https://affpapa.org/en/nevibecode/mcp/shopify-mcp

## What it does

This server connects coding agents to the Shopify Admin GraphQL API (version 2026-04) strictly in read mode. To prevent accidental inventory or pricing updates, an internal `graphql-core` parser validates every payload beforehand. The process rejects all mutations, subscriptions, syntax mistakes, and queries exceeding 100KB before any network call reaches Shopify. The sole exception is `bulkOperationCancel`, which aborts an active background job.

Six tools cover schema introspection, general GraphQL querying, ShopifyQL reporting, and large JSONL bulk exports. Multi-store setups are supported through the `SHOPIFY_STORES` environment variable, keeping rate limits isolated per store. When Shopify throttles requests, the server calculates sleep duration automatically and retries up to three times.

Running the server requires `uvx`, a store domain, and either an access token (`SHOPIFY_ACCESS_TOKEN`) or a client credentials pair (`SHOPIFY_CLIENT_ID` and `SHOPIFY_CLIENT_SECRET`).

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `SHOPIFY_STORES`, `SHOPIFY_SHOP_DOMAIN`, `SHOPIFY_CLIENT_ID`, `SHOPIFY_CLIENT_SECRET`, `SHOPIFY_ACCESS_TOKEN` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env SHOPIFY_STORES=<SHOPIFY_STORES> --env SHOPIFY_SHOP_DOMAIN=<SHOPIFY_SHOP_DOMAIN> --env SHOPIFY_CLIENT_ID=<SHOPIFY_CLIENT_ID> --env SHOPIFY_CLIENT_SECRET=<SHOPIFY_CLIENT_SECRET> --env SHOPIFY_ACCESS_TOKEN=<SHOPIFY_ACCESS_TOKEN> --transport stdio shopify-mcp -- uvx scalably-shopify-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from scalably-shopify-mcp <command>

### Codex

**Platform CLI**
```bash
codex mcp add shopify-mcp --env SHOPIFY_STORES=<SHOPIFY_STORES> --env SHOPIFY_SHOP_DOMAIN=<SHOPIFY_SHOP_DOMAIN> --env SHOPIFY_CLIENT_ID=<SHOPIFY_CLIENT_ID> --env SHOPIFY_CLIENT_SECRET=<SHOPIFY_CLIENT_SECRET> --env SHOPIFY_ACCESS_TOKEN=<SHOPIFY_ACCESS_TOKEN> -- uvx scalably-shopify-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from scalably-shopify-mcp <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "shopify-mcp": {
            "command": "uvx",
            "args": [
                "scalably-shopify-mcp"
            ],
            "env": {
                "SHOPIFY_STORES": "<SHOPIFY_STORES>",
                "SHOPIFY_SHOP_DOMAIN": "<SHOPIFY_SHOP_DOMAIN>",
                "SHOPIFY_CLIENT_ID": "<SHOPIFY_CLIENT_ID>",
                "SHOPIFY_CLIENT_SECRET": "<SHOPIFY_CLIENT_SECRET>",
                "SHOPIFY_ACCESS_TOKEN": "<SHOPIFY_ACCESS_TOKEN>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from scalably-shopify-mcp <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "shopify-mcp": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "scalably-shopify-mcp"
            ],
            "env": {
                "SHOPIFY_STORES": "<SHOPIFY_STORES>",
                "SHOPIFY_SHOP_DOMAIN": "<SHOPIFY_SHOP_DOMAIN>",
                "SHOPIFY_CLIENT_ID": "<SHOPIFY_CLIENT_ID>",
                "SHOPIFY_CLIENT_SECRET": "<SHOPIFY_CLIENT_SECRET>",
                "SHOPIFY_ACCESS_TOKEN": "<SHOPIFY_ACCESS_TOKEN>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from scalably-shopify-mcp <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e SHOPIFY_STORES=<SHOPIFY_STORES> -e SHOPIFY_SHOP_DOMAIN=<SHOPIFY_SHOP_DOMAIN> -e SHOPIFY_CLIENT_ID=<SHOPIFY_CLIENT_ID> -e SHOPIFY_CLIENT_SECRET=<SHOPIFY_CLIENT_SECRET> -e SHOPIFY_ACCESS_TOKEN=<SHOPIFY_ACCESS_TOKEN> shopify-mcp uvx scalably-shopify-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from scalably-shopify-mcp <command>

## When to use it
- Inspect store schemas and retrieve GraphQL records without edit access
- Export large product and order catalogs asynchronously via JSONL bulk jobs
- Query sales metrics using ShopifyQL reports
- Manage multiple Shopify store connections within one agent session

## Example prompts
- List configured shops using `shopify_list_stores`
- Execute a read-only query with `shopify_graphql_query` to check inventory levels for recent products
- Run a ShopifyQL query via `shopify_shopifyql` to summarize total sales by day

## Similar
- [MCP Toolbox for Databases](https://affpapa.org/en/nevibecode/mcp/googleapis-mcp-toolbox-for-databases.md) — MCP server · ★ 16730
- [PostHog MCP Server](https://affpapa.org/en/nevibecode/mcp/posthog-mcp-server.md) — MCP server · ★ 40459
- [OpenWork MCP Gateway](https://affpapa.org/en/nevibecode/mcp/openwork-mcp-gateway.md) — MCP server · ★ 24271
- [Keploy](https://affpapa.org/en/nevibecode/mcp/keploy.md) — MCP server · ★ 18779
- [Nhost](https://affpapa.org/en/nevibecode/mcp/nhost.md) — MCP server · ★ 9369
- [basebalance.cloud — x402 RPC & MCP gateway](https://affpapa.org/en/nevibecode/mcp/basebalancecloud-x402-rpc-mcp-gateway.md) — MCP server · ★ 7548

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
