WooCommerce MCP Server
# mcp-woocommerce
Production-grade MCP server for the **WooCommerce REST API** -- 73 tools for products, variations, attributes, orders, customers, coupons, reviews, reports, shipping, payments, webhooks, batch operations, inventory, and system management.
## Why This Exists
WooCommerce powers **36% of all e-commerce** (5M+ active stores) but has zero comprehensive MCP servers. This fills that gap with 73 production-ready tools covering the entire WooCommerce REST API v3 with full CRUD on every core resource.
## Features
- **73 tools** across 18 categories -- the most comprehensive WooCommerce MCP server available
- **Full CRUD** for products, variations, attributes, attribute terms, categories, tags, reviews, orders, customers, coupons, and webhooks
- **Inventory management** -- list out-of-stock and low-stock products
- **Batch operations** -- bulk update products and orders in a single call
- **Reports & analytics** -- sales reports, top sellers, order/product totals
- **Store configuration** -- settings, tax classes, shipping classes, currencies, countries
- **Webhook management** -- create, update, list, delete webhooks for real-time events
- **System diagnostics** -- WooCommerce/WordPress versions, plugins, server environment
- **Error-safe** -- every tool wrapped with error handling, never crashes on API failures
- **Simple auth** -- consumer key + secret via environment variables
## Quick Start
### Install
```bash
pip install mcp-woocommerce
```
### Configure
Set your WooCommerce REST API credentials as environment variables:
```bash
export WOOCOMMERCE_URL="https://yourstore.com"
export WOOCOMMERCE_KEY="ck_your_consumer_key"
export WOOCOMMERCE_SECRET="cs_your_consumer_secret"
```
Generate API keys at: **WordPress Admin > WooCommerce > Settings > Advanced > REST API**
### Run
```bash
mcp-woocommerce
```
Or run as a module:
```bash
python -m mcp_woocommerce
```
### Use with Claude Desktop
Add to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"woocommerce": {
"command": "mcp-woocommerce",
"env": {
"WOOCOMMERCE_URL": "https://yourstore.com",
"WOOCOMMERCE_KEY": "ck_your_consumer_key",
"WOOCOMMERCE_SECRET": "cs_your_consumer_secret"
}
}
}
}
```
### Use with Claude Code
```bash
claude mcp add woocommerce -- mcp-woocommerce
```
Then set environment variables in your shell before running Claude Code.
## Tools (73)
### Store (1)
| Tool | Description |
|------|-------------|
| `ping` | Validate connection and get store info |
### Products (8)
| Tool | Description |
|------|-------------|
| `list_products` | List products with filters (status, category, search, on_sale) |
| `get_product` | Full product details (pricing, inventory, images, attributes) |
| `create_product` | Create a product (simple, variable, grouped, external) |
| `update_product` | Update product fields (price, stock, status, etc.) |
| `delete_product` | Delete or trash a product |
| `search_products` | Search by name or SKU |
| `list_low_stock_products` | List products by stock status (out-of-stock, on-backorder) |
### Product Categories (4)
| Tool | Description |
|------|-------------|
| `list_product_categories` | List categories with hierarchy |
| `create_product_category` | Create a category (with optional parent for subcategories) |
| `update_product_category` | Update category name, description, slug, parent |
| `delete_product_category` | Delete a category |
### Product Variations (5)
| Tool | Description |
|------|-------------|
| `list_product_variations` | List all variations for a variable product |
| `get_product_variation` | Full variation details (pricing, stock, attributes) |
| `create_product_variation` | Create a variation with attributes and pricing |
| `update_product_variation` | Update variation price, stock, status |
| `delete_product_variation` | Delete a variation |
### Product Attributes (5)
| Tool | Description |
|------|-------------|
| `list_product_attributes` | List all attributes (e.g. Color, Size) |
| `get_product_attribute` | Get attribute details with its terms |
| `create_product_attribute` | Create an attribute (select or text type) |
| `update_product_attribute` | Update attribute name, slug, ordering |
| `delete_product_attribute` | Delete an attribute from all products |
### Attribute Terms (4)
| Tool | Description |
|------|-------------|
| `list_attribute_terms` | List terms for an attribute (e.g. Red, Blue for Color) |
| `create_attribute_term` | Add a term to an attribute |
| `update_attribute_term` | Update a term's name, slug, description |
| `delete_attribute_term` | Delete a term |
### Product Tags (3)
| Tool | Description |
|------|-------------|
| `list_product_tags` | List tags with optional search |
| `create_product_tag` | Create a product tag |
| `delete_product_tag` | Delete a product tag |
### Product Reviews (4)
| Tool | Description |
|------|-------------|
| `list_product_reviews` | List reviews (filter by product or status) |
| `get_product_review` | Full review details |
| `create_product_review` | Create a review with rating |
| `delete_product_review` | Delete a review |
### Orders (10)
| Tool | Description |
|------|-------------|
| `list_orders` | List orders with filters (status, customer, date range) |
| `get_order` | Full order details (items, billing, shipping, payment) |
| `create_order` | Create an order with line items |
| `update_order_status` | Change order status (pending, processing, completed, etc.) |
| `update_order` | Edit order billing/shipping addresses and customer note |
| `delete_order` | Delete or trash an order |
| `list_order_notes` | Get all notes on an order |
| `create_order_note` | Add staff or customer-facing notes |
| `create_refund` | Issue a refund |
| `list_refunds` | List all refunds for an order |
### Customers (6)
| Tool | Description |
|------|-------------|
| `list_customers` | List customers with filters (role, search) |
| `get_customer` | Full customer details with addresses and order stats |
| `create_customer` | Create a new customer |
| `update_customer` | Update customer info, billing/shipping addresses |
| `delete_customer` | Delete a customer (with optional order reassignment) |
| `search_customers` | Search by name or email |
### Coupons (5)
| Tool | Description |
|------|-------------|
| `list_coupons` | List coupons with search |
| `get_coupon` | Full coupon details (restrictions, limits, usage) |
| `create_coupon` | Create percent, fixed cart, or fixed product coupons |
| `update_coupon` | Update coupon amount, expiry, limits, etc. |
| `delete_coupon` | Delete a coupon |
### Reports (4)
| Tool | Description |
|------|-------------|
| `get_sales_report` | Sales totals by period (week, month, year, custom range) |
| `get_top_sellers` | Top-selling products by period |
| `get_order_totals` | Order counts by status |
| `get_product_totals` | Product counts by type |
### Settings (1)
| Tool | Description |
|------|-------------|
| `get_store_settings` | Read store settings by group (general, products, tax, etc.) |
### Shipping & Payments (5)
| Tool | Description |
|------|-------------|
| `list_shipping_zones` | Shipping zones with their methods |
| `list_payment_gateways` | Payment gateways with enabled status |
| `list_tax_rates` | All configured tax rates |
| `list_tax_classes` | Tax classes (standard, reduced, zero rate) |
| `list_shipping_classes` | Product shipping classes |
### Webhooks (4)
| Tool | Description |
|------|-------------|
| `list_webhooks` | List all webhooks |
| `create_webhook` | Create webhooks for order/product/customer events |
| `update_webhook` | Update webhook URL, topic, status |
| `delete_webhook` | Delete a webhook |
### Batch Operations (2)
| Tool | Description |
|------|-------------|
| `batch_update_products` | Bulk update multiple products in one call |
| `batch_update_orders` | Bulk update multiple orders in one call |
### Data (2)
| Tool | Description |
|------|-------------|
| `list_currencies` | All supported currencies with codes and symbols |
| `list_countries` | All countries with states/provinces |
### System (1)
| Tool | Description |
|------|-------------|
| `get_system_status` | WooCommerce/WordPress versions, plugins, server environment |
## Authentication
WooCommerce uses **consumer key + consumer secret** for REST API auth. This server uses HTTP Basic Authentication over HTTPS.
1. Go to **WordPress Admin > WooCommerce > Settings > Advanced > REST API**
2. Click **Add key**
3. Set permissions to **Read/Write**
4. Copy the consumer key (`ck_...`) and consumer secret (`cs_...`)
> **Important:** Your store must use HTTPS for Basic Auth to work securely.
## Requirements
- Python 3.10+
- WooCommerce 3.5+ with REST API v3
- HTTPS enabled on your store
## License
MIT
TDQS
Scored across 34 tools
Most tools have distinct purposes targeting specific resources and actions, but there is some overlap between list_customers and search_customers, and list_products and search_products, which could cause minor confusion in tool selection. However, descriptions clarify their differences.
Tool names follow a highly consistent verb_noun pattern throughout, such as create_coupon, get_customer, list_orders, and update_order_status. There are no deviations in naming conventions, making the set predictable and easy to navigate.
With 34 tools, the count is on the high side for a typical MCP server, bordering on heavy. While it covers many aspects of WooCommerce, it may feel overwhelming, but it's not extreme and aligns with the platform's broad scope.
The tool set provides comprehensive coverage of the WooCommerce domain, including CRUD operations for key resources (coupons, customers, orders, products, webhooks), reporting, system status, and administrative functions. There are no obvious gaps that would hinder agent workflows.