Content
# Shopify MCP Server
(please leave a star if you like!)
MCP Server for Shopify API, enabling interaction with store data through GraphQL API. This server provides tools for managing products, customers, orders, and more.
<a href="https://glama.ai/mcp/servers/@GeLi2001/shopify-mcp">
<img width="380" height="200" src="https://glama.ai/mcp/servers/@GeLi2001/shopify-mcp/badge" alt="Shopify MCP server" />
</a>
## Features
- **Product Management**: Search and retrieve product information
- **Customer Management**: Load customer data and manage customer tags
- **Order Management**: Advanced order querying and filtering
- **GraphQL Integration**: Direct integration with Shopify's GraphQL Admin API
- **Comprehensive Error Handling**: Clear error messages for API and authentication issues
## Prerequisites
1. Node.js (version 16 or higher)
2. Shopify Custom App Access Token (see setup instructions below)
## Setup
### Shopify Access Token
To use this MCP server, you'll need to create a custom app in your Shopify store:
1. From your Shopify admin, go to **Settings** > **Apps and sales channels**
2. Click **Develop apps** (you may need to enable developer preview first)
3. Click **Create an app**
4. Set a name for your app (e.g., "Shopify MCP Server")
5. Click **Configure Admin API scopes**
6. Select the following scopes:
- `read_products`, `write_products`
- `read_customers`, `write_customers`
- `read_orders`, `write_orders`
7. Click **Save**
8. Click **Install app**
9. Click **Install** to give the app access to your store data
10. After installation, you'll see your **Admin API access token**
11. Copy this token - you'll need it for configuration
### Usage with Claude Desktop
Add this to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"shopify": {
"command": "npx",
"args": [
"shopify-mcp",
"--accessToken",
"<YOUR_ACCESS_TOKEN>",
"--domain",
"<YOUR_SHOP>.myshopify.com"
]
}
}
}
```
Locations for the Claude Desktop config file:
- MacOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%/Claude/claude_desktop_config.json`
### Alternative: Run Locally with Environment Variables
If you prefer to use environment variables instead of command-line arguments:
1. Create a `.env` file with your Shopify credentials:
```
SHOPIFY_ACCESS_TOKEN=your_access_token
MYSHOPIFY_DOMAIN=your-store.myshopify.com
```
2. Run the server with npx:
```
npx shopify-mcp-server
```
### Direct Installation (Optional)
If you want to install the package globally:
```
npm install -g shopify-mcp-server
```
Then run it:
```
shopify-mcp-server --accessToken=<YOUR_ACCESS_TOKEN> --domain=<YOUR_SHOP>.myshopify.com
```
## Available Tools
### Product Management
1. `get-products`
- Get all products or search by title
- Inputs:
- `searchTitle` (optional string): Filter products by title
- `limit` (number): Maximum number of products to return
2. `get-product-by-id`
- Get a specific product by ID
- Inputs:
- `productId` (string): ID of the product to retrieve
### Customer Management
1. `get-customers`
- Get customers or search by name/email
- Inputs:
- `searchQuery` (optional string): Filter customers by name or email
- `limit` (optional number, default: 10): Maximum number of customers to return
2. `update-customer`
- Update a customer's information
- Inputs:
- `id` (string, required): Shopify customer ID (numeric ID only, like "6276879810626")
- `firstName` (string, optional): Customer's first name
- `lastName` (string, optional): Customer's last name
- `email` (string, optional): Customer's email address
- `phone` (string, optional): Customer's phone number
- `tags` (array of strings, optional): Tags to apply to the customer
- `note` (string, optional): Note about the customer
- `taxExempt` (boolean, optional): Whether the customer is exempt from taxes
- `metafields` (array of objects, optional): Customer metafields for storing additional data
3. `get-customer-orders`
- Get orders for a specific customer
- Inputs:
- `customerId` (string, required): Shopify customer ID (numeric ID only, like "6276879810626")
- `limit` (optional number, default: 10): Maximum number of orders to return
### Order Management
1. `get-orders`
- Get orders with optional filtering
- Inputs:
- `status` (optional string): Filter by order status
- `limit` (optional number, default: 10): Maximum number of orders to return
2. `update-order`
- Update an existing order with new information
- Inputs:
- `id` (string, required): Shopify order ID
- `tags` (array of strings, optional): New tags for the order
- `email` (string, optional): Update customer email
- `note` (string, optional): Order notes
- `customAttributes` (array of objects, optional): Custom attributes for the order
- `metafields` (array of objects, optional): Order metafields
- `shippingAddress` (object, optional): Shipping address information
## Debugging
If you encounter issues, check Claude Desktop's MCP logs:
```
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
```
## License
MIT