Shopify MCP Server
by asaricorp
README.md
# Shopify MCP Server
MCP Server for Shopify API, enabling interaction with store data through GraphQL API. This server provides tools for managing products, customers, orders, and more.
## Features
- **Product Management**: Search and retrieve product information
- **Customer Management**: Load customer data and manage customer tags
- **Order Management**: Advanced order querying and filtering
- **Collection Management**: Create and manage collections
## 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`
- `read_collections`, `write_collections`
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
```
### Direct Installation (Optional)
If you want to install the package globally:
```
npm install -g shopify-mcp
```
Then run it:
```
shopify-mcp --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
4. `create-customer`
- Create a new customer in Shopify
- Inputs:
- `email` (string, required): Customer's email address
- `firstName` (string, optional): Customer's first name
- `lastName` (string, optional): Customer's last name
- `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
- `password` (string, optional): Password for the customer account
- `passwordConfirmation` (string, optional): Confirmation of the password
- `addresses` (array of objects, optional): Customer's addresses
- `metafields` (array of objects, optional): Customer metafields for storing additional data
### 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. `get-order-by-id`
- Get a specific order by ID
- Inputs:
- `orderId` (string, required): Full Shopify order ID (e.g., "gid://shopify/Order/6090960994370")
3. `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
4. `create-order`
- Create a new draft order in Shopify
- Inputs:
- `lineItems` (array of objects, required): Products to include in the order
- `variantId` (string, required): ID of the product variant
- `quantity` (number, required): Quantity of the product
- `customAttributes` (array of objects, optional): Custom attributes for the line item
- `email` (string, optional): Customer email
- `phone` (string, optional): Customer phone number
- `note` (string, optional): Order notes
- `tags` (array of strings, optional): Tags for the order
- `customAttributes` (array of objects, optional): Custom attributes for the order
- `metafields` (array of objects, optional): Order metafields
- `billingAddress` (object, optional): Billing address information
- `shippingAddress` (object, optional): Shipping address information
- `customerId` (string, optional): ID of an existing customer
- `shippingLine` (object, optional): Shipping method and price
- `taxExempt` (boolean, optional): Whether the order is exempt from taxes
- `presentmentCurrencyCode` (string, optional): Currency code for the order
5. `create-fulfillment`
- Create a new fulfillment for an order in Shopify
- Inputs:
- `orderId` (string, required): ID of the order to fulfill
- `notifyCustomer` (boolean, default: true): Whether to notify the customer about the fulfillment
- `trackingInfo` (object, optional): Tracking information
- `number` (string, optional): Tracking number
- `url` (string, optional): Tracking URL
- `company` (string, optional): Shipping company
- `lineItems` (array of objects, optional): Specific line items to fulfill
- `id` (string, required): ID of the line item
- `quantity` (number, required): Quantity to fulfill
- `locationId` (string, optional): ID of the location fulfilling the order
- `trackingNumbers` (array of strings, optional): Multiple tracking numbers
- `trackingUrls` (array of strings, optional): Multiple tracking URLs
- `metadata` (object, optional): Additional metadata for the fulfillment
### Collection Management
1. `create-collection`
- Create a new manual or automated collection in Shopify
- Inputs:
- `title` (string, required): Collection title
- `description` (string, optional): Collection description
- `descriptionHtml` (string, optional): HTML version of the description
- `handle` (string, optional): URL handle for the collection
- `isPublished` (boolean, optional): Whether the collection is published
- `seo` (object, optional): SEO settings
- `title` (string, optional): SEO title
- `description` (string, optional): SEO description
- `image` (object, optional): Collection image
- `src` (string, required): Image URL
- `altText` (string, optional): Alt text for the image
- `productsToAdd` (array of strings, optional): Product IDs to add to the collection
- `sortOrder` (string, optional): How products are sorted in the collection
- Options: "MANUAL", "BEST_SELLING", "ALPHA_ASC", "ALPHA_DESC", "PRICE_DESC", "PRICE_ASC", "CREATED", "CREATED_DESC", "ID_DESC", "RELEVANCE"
- `templateSuffix` (string, optional): Template suffix for custom templates
- `privateMetafields` (array of objects, optional): Private metafields for the collection
- `owner` (string, required): Metafield owner
- `namespace` (string, required): Metafield namespace
- `key` (string, required): Metafield key
- `value` (string, required): Metafield value
- `valueType` (string, required): Type of the value (e.g., "STRING", "INTEGER", etc.)
- `ruleSet` (object, optional): Rules for automated collections
- `rules` (array of objects, required): Collection rules
- `column` (string, required): Rule column (e.g., "TAG", "TITLE", etc.)
- `relation` (string, required): Rule relation (e.g., "EQUALS", "CONTAINS", etc.)
- `condition` (string, required): Rule condition value
- `appliedDisjunctively` (boolean, optional, default: true): Whether rules are combined with OR (true) or AND (false)
- `metafields` (array of objects, optional): Public metafields for the collection
- `namespace` (string, required): Metafield namespace
- `key` (string, required): Metafield key
- `value` (string, required): Metafield value
- `type` (string, required): Metafield type
- `publications` (array of objects, optional): Publication settings
- `publicationId` (string, required): ID of the publication
- `publishDate` (string, optional): Date to publish the collection
## License
MIT
TDQS
D1.8/5.0
Scored across 21 tools
Disambiguation3/5
Tool names are distinct but some pairs like get-products and get-product-by-id could cause confusion for an agent without descriptions. Overall, names help differentiate but overlap exists.
Naming Consistency5/5
All tools follow a consistent verb_noun snake_case pattern (e.g., get-products, create-order), with no mixed conventions.
Tool Count4/5
21 tools is on the higher side but still reasonable for an e-commerce platform covering products, customers, orders, inventory, and collections.
Completeness3/5
Core CRUD operations are present for customers and orders, but missing delete and product update. Inventory tools are thorough. Gaps in product lifecycle affect completeness.
Maintenance
ActivityInactive
ResponsivenessNo issues