# mcp-shopify

Wires your agent to the Shopify Admin REST API for orders, products, customers, stock and fulfillment. Useful when merchant tooling has to talk to Shopify directly instead of a regional platform.

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

## What it does

The server exposes 28 tools over the Admin REST API. Orders can be listed, created, edited or cancelled; products come with variants and images; customers get created on the spot. Stock moves through `adjust_inventory`, which targets one inventory item at one location and takes a delta. Fulfillments carry a tracking number and carrier, refunds hit individual line items, and discounts come in two steps: a price rule first, then the code that hangs off it.

Setup happens on the Shopify side. Make a custom app in admin under Settings → Apps and sales channels → Develop apps, grant Admin API scopes for orders, products, customers, inventory and fulfillments, then install it to get the token. Subdomain and token go into `SHOPIFY_SHOP` and `SHOPIFY_ACCESS_TOKEN`. The API version sits at `2024-01` unless `SHOPIFY_API_VERSION` says otherwise. Miss the token and every call fails at auth.

stdio is the default transport, so `npx @codespar/mcp-shopify` is enough for Cursor or Claude Desktop. Set `MCP_HTTP=true` and `MCP_PORT=3000` for server-to-server testing. The token carries whatever the app's scopes allow, so keep the scope list tight: this runs against a live store where `cancel_order` and `create_refund` do real damage.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `SHOPIFY_SHOP`, `SHOPIFY_ACCESS_TOKEN`, `SHOPIFY_API_VERSION` — 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_SHOP=<SHOPIFY_SHOP> --env SHOPIFY_ACCESS_TOKEN=<SHOPIFY_ACCESS_TOKEN> --env SHOPIFY_API_VERSION=<SHOPIFY_API_VERSION> --transport stdio shopify -- npx -y @codespar/mcp-shopify
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
codex mcp add shopify --env SHOPIFY_SHOP=<SHOPIFY_SHOP> --env SHOPIFY_ACCESS_TOKEN=<SHOPIFY_ACCESS_TOKEN> --env SHOPIFY_API_VERSION=<SHOPIFY_API_VERSION> -- npx -y @codespar/mcp-shopify
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "shopify": {
            "command": "npx",
            "args": [
                "-y",
                "@codespar/mcp-shopify"
            ],
            "env": {
                "SHOPIFY_SHOP": "<SHOPIFY_SHOP>",
                "SHOPIFY_ACCESS_TOKEN": "<SHOPIFY_ACCESS_TOKEN>",
                "SHOPIFY_API_VERSION": "<SHOPIFY_API_VERSION>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "shopify": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@codespar/mcp-shopify"
            ],
            "env": {
                "SHOPIFY_SHOP": "<SHOPIFY_SHOP>",
                "SHOPIFY_ACCESS_TOKEN": "<SHOPIFY_ACCESS_TOKEN>",
                "SHOPIFY_API_VERSION": "<SHOPIFY_API_VERSION>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e SHOPIFY_SHOP=<SHOPIFY_SHOP> -e SHOPIFY_ACCESS_TOKEN=<SHOPIFY_ACCESS_TOKEN> -e SHOPIFY_API_VERSION=<SHOPIFY_API_VERSION> shopify npx -y @codespar/mcp-shopify
```
Replace <…> with your own values

## When to use it
- pull orders for a date range with filters
- top up stock for one variant at one location
- ship an order with a tracking number attached
- issue a discount code against an existing price rule
- refund selected line items on an order

## Example prompts
- List last week's orders and flag the ones not shipped yet
- Add a variant with a new SKU to that product and set its price
- Refund two line items and register a webhook for `orders/paid`

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119160
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47392
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43872

From the same set: [codespar/mcp-dev-latam](https://affpapa.org/en/nevibecode/by/codespar/mcp-dev-latam.md) — 124 cards

---
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
