Connect WooCommerce to Claude, ChatGPT and Copilot: products, variations, inventory, orders, refunds, customers and reports as MCP tools. Powered by AnythingMCP.
WooCommerce MCP Server gives Claude, ChatGPT, Copilot and Cursor 49 tools for WooCommerce: products, variations, inventory, orders, refunds, customers and reports. 30 tools read and 19 can change data. It runs on AnythingMCP: one click on AnythingMCP Cloud, or self-hosted with Docker. Credentials are stored encrypted and every call is audited.
Last verified: 2026-09-26 against WooCommerce 11.1.2 on WordPress 7.1.2 (a local test shop) (38 of the 40 API tools called through MCP, reads and writes, no errors).
Adapter synced: 2026-09-26
Maintained by @keysersoft, an AnythingMCP maintainer. Built on AnythingMCP by helpcode.ai.
- Sign in at cloud.anythingmcp.com and open the install link.
- Enter
WOOCOMMERCE_URL,WOOCOMMERCE_CONSUMER_KEY,WOOCOMMERCE_CONSUMER_SECRET(see Authentication). - Copy the URL of your MCP server under MCP Servers and add it to your AI client (below).
AnythingMCP Cloud is the same open-source code, operated by helpcode.ai in Frankfurt, Germany.
Needs Docker 24+, openssl and Node 18+.
git clone https://github.com/keysersoft/woocommerce-mcp-server.git
cd woocommerce-mcp-server
./scripts/install.shinstall.sh writes .env with fresh secrets, starts AnythingMCP, creates the first admin, installs the connector if WOOCOMMERCE_URL and WOOCOMMERCE_CONSUMER_KEY and WOOCOMMERCE_CONSUMER_SECRET are set in .env and creates an MCP API key. Without credentials it prints the install link instead: http://localhost:3000/connectors/store?install=woocommerce. Then check the whole chain:
npm install && node scripts/smoke.mjs-
Claude (claude.ai, Desktop, mobile): Customize → Connectors → Add custom connector, paste your MCP server URL and sign in. Claude connects from Anthropic's cloud, so the URL must be public HTTPS: your AnythingMCP Cloud URL, or your own instance behind TLS.
-
Claude Code:
claude mcp add --transport http woocommerce-mcp-server http://localhost:4000/mcp --header "X-API-Key: <MCP_API_KEY>" -
Cursor (
.cursor/mcp.json) and VS Code / GitHub Copilot (.vscode/mcp.json, keyserversinstead ofmcpServers, plus"type": "http"):{ "mcpServers": { "woocommerce-mcp-server": { "url": "http://localhost:4000/mcp", "headers": { "X-API-Key": "<MCP_API_KEY>" } } } } -
ChatGPT: add the public HTTPS URL as a connector (app) in ChatGPT's settings. A
localhostURL does not work there.
49 tools, generated from adapter/woocommerce.json. read tools cannot change anything in the source system.
| Tool | What it does | Access |
|---|---|---|
woocommerce_search_products |
Search/list products with rich filters — keyword (search), SKU, status, type (simple/variable/grouped/external), stock_status, on_sale, price range,… |
read |
woocommerce_get_product |
Get a single product by id, including all fields: name, slug, description, short_description, sku, price/regular_price/sale_price, stock_quantity,… | read |
woocommerce_create_product |
Create a product. | write |
woocommerce_update_product |
Partial-update a product by id. | write |
woocommerce_delete_product |
Move a product to trash, or pass force=true to delete permanently (cannot be undone). |
write |
woocommerce_batch_update_products |
Bulk create / update / delete products in a single call. | write |
woocommerce_list_product_variations |
List variations for a variable product. | read |
woocommerce_update_product_variation |
Update a single variation of a variable product — price, SKU, stock, attributes. | write |
woocommerce_list_product_categories |
List product categories. | read |
woocommerce_create_product_category |
Create a product category. | write |
woocommerce_list_product_tags |
List product tags. | read |
woocommerce_list_product_attributes |
List the global attribute definitions configured for the store (e.g. | read |
woocommerce_find_low_stock |
Find products that are out of stock OR have manage_stock=true with stock_quantity at/below threshold. |
read |
woocommerce_update_stock |
Convenience wrapper over update_product: enables stock management and sets quantity + status in one call. |
write |
woocommerce_list_orders |
List orders with status, date, customer, and product filters. | read |
woocommerce_get_order |
Get a single order by id — full payload incl. | read |
woocommerce_update_order_status |
Set an order's status (e.g. | write |
woocommerce_add_order_note |
Add a note to an order. | write |
woocommerce_list_refunds |
List refunds attached to an order. | read |
woocommerce_create_refund |
Create a refund against an order. | write |
woocommerce_list_customers |
List customers. | read |
woocommerce_get_customer |
Get a customer by id (includes billing/shipping addresses, order count, total spent, last_order info). | read |
woocommerce_sales_report |
Sales report for a date window or named period. | read |
woocommerce_top_sellers_report |
Top-selling products for a date window or named period. | read |
woocommerce_coupons_totals_report |
Coupon counts grouped by discount type (percent | fixed_cart | fixed_product). | read |
woocommerce_orders_totals_report |
Counts of orders grouped by status (pending, processing, completed, ...). | read |
woocommerce_update_customer |
Partial-update a customer by id. | write |
woocommerce_delete_customer |
Permanently delete a customer. | write |
woocommerce_create_customer |
Create a customer account. | write |
woocommerce_create_order |
Create an order. | write |
woocommerce_delete_order |
Move an order to trash, or pass force=true to delete permanently. |
write |
woocommerce_list_order_notes |
List notes attached to an order (both internal admin notes and customer-visible notes). | read |
woocommerce_get_order_note |
Retrieve a single order note by id. | read |
woocommerce_delete_order_note |
Delete an order note. | write |
woocommerce_list_coupons |
List discount coupons in the store. | read |
woocommerce_create_coupon |
Create a discount coupon. | write |
woocommerce_get_coupon |
Get a single coupon by id, including full usage stats (usage_count, used_by array). |
read |
woocommerce_update_coupon |
Partial-update a coupon. | write |
woocommerce_delete_coupon |
Move a coupon to trash, or pass force=true to delete permanently. |
write |
woocommerce_list_order_status_options |
Reference card: valid order status slugs. | read |
woocommerce_list_product_type_options |
Reference card: valid type values for woocommerce_create_product / woocommerce_update_product and product type filter on search. |
read |
woocommerce_list_stock_status_options |
Reference card: valid stock_status values for product create/update + list filter. |
read |
woocommerce_list_report_period_options |
Reference card: valid period values for woocommerce_sales_report and woocommerce_top_sellers_report. |
read |
woocommerce_skill_inventory_optimization |
Skill recipe: find out-of-stock and low-stock products, cross-reference with demand (top sellers), and bulk-bump stock via batch update. | read |
woocommerce_skill_product_seo_optimization |
Skill recipe: optimise a product's name, description, slug, and Yoast/Rank Math SEO meta. | read |
woocommerce_skill_upsell_cross_sell |
Skill recipe: build upsell + cross-sell relationships for a product based on category, price tier, and tags. | read |
woocommerce_skill_low_conversion_analysis |
Skill recipe: identify products visible in the catalogue but not selling, with an honest framing of what WooCommerce REST can and cannot measure. | read |
woocommerce_skill_abandoned_order_triage |
Skill recipe: process stuck orders (pending / on-hold / failed) — chase or cancel based on age and reason. | read |
woocommerce_skill_revenue_kpi_snapshot |
Skill recipe: build a one-page KPI snapshot — revenue, AOV, top sellers, pipeline state, coupon mix. | read |
- Which products are low on stock, and how many of each did we sell last month?
- Show order 1042 with its items and the customer's address.
- Which orders are still "processing" after three days?
- Put order 1042 on hold and add a note that the customer called about the delivery date. (write)
- Refund 10 EUR on order 1042 for a scratched door. (write)
- What were our sales and order totals last week?
More in examples/prompts.md.
This connector talks to the WooCommerce REST API v3 (/wp-json/wc/v3). Works against any WordPress + WooCommerce site. HTTPS required.
WOOCOMMERCE_URL— site root (e.g.https://shop.example.com). Do NOT include/wp-json; the adapter appends/wp-json/wc/v3.WOOCOMMERCE_CONSUMER_KEY+WOOCOMMERCE_CONSUMER_SECRET— generate in WP admin → WooCommerce → Settings → Advanced → REST API → Add key. Use Read/Write for full functionality.
HTTPS is mandatory: on HTTP, WC requires OAuth1 instead of Basic Auth (the connector only does Basic Auth).
List endpoints default to per_page=10, max 100. Pass explicit per_page + iterate page for full catalog scans. Total counts are in X-WP-Total / X-WP-TotalPages headers (not returned in the JSON body).
For ≥ 3 product updates use woocommerce_batch_update_products (one call, up to 100 entries). Don't fan out single update_product calls.
Meta lives in the meta_data array on the product. Set it via woocommerce_update_product:
"meta_data": [
{ "key": "_yoast_wpseo_metadesc", "value": "..." },
{ "key": "_yoast_wpseo_focuskw", "value": "..." }
]Rank Math: rank_math_description, rank_math_focus_keyword, rank_math_title. Full reference: wordpress_list_seo_meta_keys (sibling WordPress connector).
For inventory optimisation, product SEO, upsell/cross-sell, low-conversion analysis, abandoned-order triage, or KPI snapshots → call the dedicated woocommerce_skill_* tool. It returns the step-by-step playbook on demand. Don't preload that knowledge here.
Valid values for order status / product type / stock status / report period / payment methods → call woocommerce_list_*_options.
- All list / get / reports: Read-only key.
- Product create/update/delete, order update, refund, batch: Read/Write key.
- Customer create / coupon create: Read/Write key.
- Read or write is your choice. 30 of the tools only read;
woocommerce_create_product,woocommerce_update_product,woocommerce_delete_product,woocommerce_batch_update_products,woocommerce_update_product_variation,woocommerce_create_product_category,woocommerce_update_stock,woocommerce_update_order_status,woocommerce_add_order_note,woocommerce_create_refund,woocommerce_update_customer,woocommerce_delete_customer,woocommerce_create_customer,woocommerce_create_order,woocommerce_delete_order,woocommerce_delete_order_note,woocommerce_create_coupon,woocommerce_update_coupon,woocommerce_delete_couponcan change data. Assign the connector to an MCP server whose role whitelists only the tools you want, and the rest are invisible to that client. - Credentials are encrypted with AES-256-GCM and never shown to the model.
- Response mapping drops or reshapes fields per tool before they reach the model, e.g. bank details or personal data.
- Audit log: every call is recorded with input, output, duration and status, in your own database when self-hosted.
- SSO, RBAC and SCIM are included in the self-hosted build.
Yes, this one. It connects the WooCommerce REST API v3 to Claude, ChatGPT and Copilot through AnythingMCP: 49 tools for products, variations, stock, orders, refunds, customers, coupons and reports, plus a few built-in playbooks.
The shop's URL and a REST API key: WordPress admin → WooCommerce → Settings → Advanced → REST API → Add key. Choose Read for a read-only setup, Read/Write if the AI may change things. The site must use HTTPS, because WooCommerce only accepts the key over HTTPS.
Only if you let it. Many tools write (products, stock, orders, refunds, coupons, customers). Create the key with Read permission, or give the MCP server a role that whitelists only the read tools.
Yes. The same MCP server works in ChatGPT (with a public HTTPS URL such as AnythingMCP Cloud), GitHub Copilot in VS Code, Cursor and Claude Code.
Yes, with a self-hosted AnythingMCP that can reach it; add the host to SSRF_ALLOWED_HOSTS.
| Problem | Fix |
|---|---|
401 / 403 from the vendor |
The credentials are wrong or lack rights. Re-enter them on the connector page; the import runs a test call and shows the result. |
| Tools missing in the AI client | The connector is not assigned to the MCP server the client uses. Check MCP Servers, then run node scripts/smoke.mjs. |
| The host is on your internal network | Self-host AnythingMCP on that network and add the hostname to SSRF_ALLOWED_HOSTS, or the outbound guard blocks the call. |
| Works locally, fails on AnythingMCP Cloud | The system must be reachable from the internet with a valid TLS certificate. |
- ecommerce-mcp-server: E-commerce MCP server: connect Amazon, eBay, WooCommerce, Shopware, Kaufland, OTTO and 7 more to Claude & ChatGPT.
- shopware-mcp-server: Shopware 6 MCP server: let Claude & ChatGPT search your Shopware catalog: products, categories and cross-sells (Store API).
- magento-mcp-server: Magento MCP server: Claude & ChatGPT manage products, stock, orders and customers in Magento 2 / Adobe Commerce.
- AnythingMCP: the open-source MCP server and gateway this repository is built on.
AGPL-3.0-only. The adapter definition in adapter/ comes from AnythingMCP (AGPL-3.0).