@thatworkagency/mcp-shopify

thatworkagency/mcp-shopify
0 starsCommunity

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

Model Context Protocol server providing read-only access to Shopify Admin API for products, orders, customers, and shop information with multi-store support via HTTP.

README.md

@thatworkagency/mcp-shopify

Model Context Protocol (MCP) server for Shopify Admin API. Provides read-only access to products, orders, customers, and shop information with multi-store support.

Features

  • Read-only operations — Safe for exploration and reporting
  • HTTP transport — Remote/multi-client capable
  • Multi-store support — Pass store credentials per-request via headers
  • GraphQL-based — Efficient data fetching with Shopify Admin API

Tools

| Tool | Description | |------|-------------| | get_shop_info | Get store details (name, email, domain, plan) | | get_products | Fetch products with filtering and pagination | | get_product | Fetch single product by ID or handle | | search_products | Search products by title, SKU, or tags | | get_orders | Fetch orders with filtering and pagination | | get_order | Fetch single order by ID | | get_customers | Fetch customers with filtering and pagination | | get_customer | Fetch single customer by ID | | get_inventory_levels | Fetch inventory levels for a variant |

Installation

npm install
npm run build

Usage

Start the server

npm start
# or
npm run dev

Server runs on http://0.0.0.0:3000 by default. Configure with env vars:

  • PORT — server port (default: 3000)
  • HOST — server host (default: 0.0.0.0)

Authentication

Pass Shopify credentials via HTTP headers on every request:

| Header | Description | |--------|-------------| | x-shopify-store | Store domain (e.g., mystore.myshopify.com) | | x-shopify-token | Admin API access token (shpat_xxx) |

Using with mcporter

# Add server to mcporter config
mcporter config add mcp-shopify \
  --url http://localhost:3000 \
  --headers '{"x-shopify-store":"mystore.myshopify.com","x-shopify-token":"shpat_xxx"}'

# List tools
mcporter list mcp-shopify --schema

# Call a tool
mcporter call mcp-shopify.get_shop_info
mcporter call mcp-shopify.get_products first=5
mcporter call mcp-shopify.search_products query="t-shirt" first=10
mcporter call mcp-shopify.get_order id="gid://shopify/Order/1234567890"

Using with Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "shopify": {
      "url": "http://localhost:3000",
      "headers": {
        "x-shopify-store": "mystore.myshopify.com",
        "x-shopify-token": "shpat_xxx"
      }
    }
  }
}

API Examples

Get shop info

{
  "name": "get_shop_info",
  "arguments": {}
}

List products

{
  "name": "get_products",
  "arguments": {
    "first": 10,
    "query": "status:active"
  }
}

Get product by handle

{
  "name": "get_product",
  "arguments": {
    "handle": "my-product"
  }
}

Search products

{
  "name": "search_products",
  "arguments": {
    "query": "shirt",
    "first": 20
  }
}

List orders

{
  "name": "get_orders",
  "arguments": {
    "first": 5,
    "query": "status:open"
  }
}

Get order

{
  "name": "get_order",
  "arguments": {
    "id": "gid://shopify/Order/1234567890"
  }
}

List customers

{
  "name": "get_customers",
  "arguments": {
    "first": 10,
    "query": "email:john@example.com"
  }
}

Get customer

{
  "name": "get_customer",
  "arguments": {
    "id": "gid://shopify/Customer/9876543210"
  }
}

Get inventory levels

{
  "name": "get_inventory_levels",
  "arguments": {
    "variantId": "gid://shopify/ProductVariant/1111111111"
  }
}

Development

# Install dependencies
npm install

# Run in dev mode with hot reload
npm run dev

# Type check
npm run typecheck

# Build
npm run build

# Start production build
npm start

Docker

# Build
docker build -t mcp-shopify .

# Run
docker run -p 3000:3000 mcp-shopify

License

MIT

Related MCP servers

Browse all →