# Shopify MCP

> Shopify MCP Server connects your entire e-commerce operation to your AI client. Use it to list products, process orders, check customer profiles, track inventory across locations, and manage discounts—all from natural conversation. Manage everything you need for a modern online store without jumping between dashboards.

## Overview
- **Category:** industry-titans
- **Price:** Free
- **Tags:** storefront-management, product-catalog, order-fulfillment, customer-intelligence, inventory-tracking, pos

## Description

You connect your entire Shopify operation directly to your AI client using this server. It gives your agent the deep access it needs to handle everything from listing products to closing out fulfillment, all without you having to jump between dashboards. You're running complex e-commerce workflows with simple chat prompts.

### Product Catalog Management

You control the core product listings in your store using this suite of tools. When you need details on an item already live, you use `get_product` to pull complete information for a specific ID, covering everything from current pricing structures to available variants. If you just want a quick overview or comparison across many items, you call `list_products`, which gives you a paginated list and lets you control the result size with a limit parameter. Need to build something new? You generate a brand-new product listing using `create_product`; it handles the entire setup and immediately returns the product's ID and current status so you know it worked.

Beyond individual items, you can browse all organized categories in your store by calling `list_collections`. If you just want to see every customer record that’s ever touched the system, `list_customers` gives you a basic list view. But if you need someone specific, use `search_customers`—you can search the database right by name, email, or any other metadata field.

### Order Processing and Fulfillment

When it comes to orders, your agent pulls all the heavy lifting. To get comprehensive data on a single transaction, you call `get_order`, which gives you full details including every line item purchased and all associated shipping information. If you need to know what’s happening with multiple open transactions, `list_orders` lets you fetch that list, giving you filtering options for status—whether it's open, closed, or cancelled. Once the physical goods are shipped out and everything is resolved, you mark the record as fulfilled by running `close_order`. It's a simple command that officially closes the order in your system.

### Customer Profiles and Pricing Control

Need to know who bought something? You don't just get a basic name; you use `get_customer` to pull a detailed profile on any customer, provided you give it their unique identifier or email. For pricing control, the server lets you see every active discount rule in your shop by calling `list_price_rules`. This gives you a complete rundown of all promotional changes and pricing adjustments that are currently set up for sale.

### Inventory and Stock Tracking

You can't afford to run out of stock. You track real-time inventory levels using `list_inventory_levels`. By specifying the product ID and one or more warehouse locations, your agent checks and returns current counts for everything you need to know about your physical goods.

## Tools

### cancel_order
Cannot be undone after cancellation processing.

Cancel an existing order

### close_order
Marks an existing order as fulfilled after manual shipment or resolution.

### count_orders
Filter by status: open, closed, cancelled, or any.

Get total order count

### count_products
Useful for inventory audits and dashboard metrics.

Get total product count

### create_customer
Returns the created customer record with its unique ID.

Create a new customer profile

### create_product
Generates a brand new product listing in the store, returning its ID and status.

### delete_product
This action is irreversible — the product and all its variants are permanently deleted.

Permanently delete a product

### get_customer
Retrieves a detailed profile for a specific customer by their unique identifier or email.

### get_order
Pulls comprehensive data on a single order, including all line items and shipping details.

### get_product
Gets complete information for one specific product ID, covering pricing and variants.

### list_collections
Returns a list of all organized product collections available on the storefront.

### list_customers
Provides a basic list view of all customer records in the store database.

### list_fulfillments
List fulfillments for an order

### list_inventory_levels
Checks and returns current stock counts for products within one or more specified warehouse locations.

### list_locations
Location IDs are required for inventory queries.

List all store locations

### list_orders
Fetches a list of orders, allowing filtering by status (open, closed, cancelled).

### list_pages
) with titles, content, and publication status.

List store pages

### list_price_rules
Displays all active discount rules and pricing changes set up in the store.

### list_products
Retrieves a paginated list of products, using a limit parameter to control result size.

### list_smart_collections
List automated smart collections

### list_themes
List store themes

### search_customers
Searches the customer database by name, email, or specific metadata fields.

### update_product
Pass only the fields you want to change.

Update an existing product

## Prompt Examples

**Prompt:** 
```
Show me the last 10 orders and their status.
```

**Response:** 
```
Here are your last 10 orders:

1. **#1042** — $89.99 — Fulfilled ✅
2. **#1041** — $245.00 — Pending ⏳
3. **#1040** — $32.50 — Shipped 📦
...

Would you like details on any specific order?
```

**Prompt:** 
```
Create a new product called 'Premium Wireless Earbuds' for $79.99
```

**Response:** 
```
✅ Product created successfully!

- **Title**: Premium Wireless Earbuds
- **ID**: 8234567890
- **Status**: Draft

Would you like to add variants, images, or publish it?
```

**Prompt:** 
```
Check inventory levels at our main warehouse.
```

**Response:** 
```
Inventory at Location #12345:

| Product | SKU | Available |
|---------|-----|----------|
| Wireless Earbuds | WE-001 | 142 |
| Phone Case | PC-100 | 87 |
| USB Cable | UC-200 | 334 |

3 items are below reorder point.
```

## Capabilities

### Manage Product Listings
Create new products or pull detailed information on existing items in your catalog.

### Process and Update Orders
Fetch full order details, view line item breakdowns, and close orders once fulfillment is complete.

### Search Customer Records
Find specific customer profiles using name or email, pulling their purchase history instantly.

### Track Multi-Location Inventory
Get real-time stock counts for products at a specified warehouse location.

### Control Pricing and Collections
Browse available product collections and view all active discount rules applied to your store.

## Use Cases

### The 'Where's My Stuff?' Inquiry
A support rep gets an email asking about order #1042. Instead of manually looking up the ID, checking shipping status, and then checking discounts, the agent runs `get_order` to pull line items and `list_price_rules` to explain any applied coupon in one go.

### End-of-Quarter Inventory Audit
The warehouse manager needs a full count for 20 SKUs across three locations. They prompt the agent, which executes `list_inventory_levels` multiple times and compiles a single spreadsheet-ready report.

### Launching a New Product Line
A marketing lead drafts a product description and needs to make it available immediately. The agent uses `create_product`, populating the title, price, and initial variant data so the item goes live instantly.

### Targeted Customer Outreach
You need to follow up with high-value customers who haven't ordered recently. You use `search_customers` filtered by 'High Value' status, then run `get_order` on their last purchase to customize the outreach message.

## Benefits

- Stop switching tabs. You can pull order details (`get_order`) and customer history in one prompt instead of navigating through three separate dashboards.
- Inventory tracking is instant. Use `list_inventory_levels` to check stock at a specific location immediately, without logging into the warehouse portal.
- Product creation gets faster. The agent handles calling `create_product`, ensuring required fields like ID and status are populated correctly every time.
- Customer service improves drastically. Instead of manual lookups, you use `search_customers` to instantly pull a profile and their last ten orders.
- Pricing is visible upfront. Running `list_price_rules` lets your agent tell you exactly why a customer sees a specific discount before they ask.

## How It Works

The bottom line is, your AI client acts as an API wrapper for Shopify. It handles the tool calling sequence so you don't have to write any code.

1. Subscribe to the server and provide your Shopify store name along with an Admin API access token.
2. Your AI client connects via the MCP protocol, giving it direct read/write access to your defined tools.
3. You issue a prompt (e.g., 'Find orders over $50 from John Doe'). The agent maps this request to `list_orders` and `get_customer`, executes them, and returns a single, synthesized answer.

## Frequently Asked Questions

**Can I use the Shopify MCP Server to list product variants?**
Yes. You can get detailed information on products using `get_product`, which pulls variant and pricing details. This is usually more reliable than just listing all products with `list_products`.

**How do I close an order using the Shopify MCP Server?**
You call the dedicated `close_order` tool after you've completed manual fulfillment or resolved a shipping issue. You just need to provide the correct order ID for the action.

**Does the search_customers tool work globally?**
No, it searches by specific fields like email or name. It doesn't perform a general chat-like search across all customer data; you must provide a query parameter to narrow down the results.

**What if I need to create a product with variants?**
You use `create_product`. While it creates the base product, the agent can often handle subsequent calls or prompt follow-ups to add specific variant details and images afterward.

**What credentials do I need when using the `list_orders` tool?**
You must provide your Shopify store name and an Admin API access token. This token authenticates your agent, granting it permission to read order data on your behalf.

**What if I try to use the `close_order` tool on a cancelled order?**
The server validates the current status before taking action. Instead of failing, it returns an error message specifying why closure isn't possible, letting your agent know exactly what went wrong.

**Are there rate limits when running multiple calls to `list_products`?**
Shopify’s underlying API limits apply directly to all requests. While Vinkius handles basic throttling, complex workflows must respect standard e-commerce quota rules.

**Does the `get_customer` tool provide a full purchase history?**
It provides detailed profile information and links to order IDs. Your agent uses this data, combined with calls to `get_order`, to build a comprehensive view of their spending.

**Can I create products directly from my AI agent?**
Yes! Use the `create_product` tool with a title, description, vendor, and product type. The product will be created in your store instantly.

**How do I track which orders need fulfillment?**
Run `list_orders` with status 'open' to see all unfulfilled orders. Then use `get_order` for details.

**Can I search for a specific customer by email?**
Yes! Use `search_customers` with query 'email:customer@example.com' for exact email matches.