Skip to main content
Glama
keysersoft

WooCommerce MCP Server

WooCommerce MCP Server

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.

Quick start (AnythingMCP Cloud)

  1. Sign in at cloud.anythingmcp.com and open the install link.

  2. Enter WOOCOMMERCE_URL, WOOCOMMERCE_CONSUMER_KEY, WOOCOMMERCE_CONSUMER_SECRET (see Authentication).

  3. 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.

Related MCP server: WooCommerce MCP Server

Self-hosted (Docker)

Needs Docker 24+, openssl and Node 18+.

git clone https://github.com/keysersoft/woocommerce-mcp-server.git
cd woocommerce-mcp-server
./scripts/install.sh

install.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

Connect Claude, ChatGPT, Copilot or Cursor

  • 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, key servers instead of mcpServers, 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 localhost URL does not work there.

Tools

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

Example prompts

  • 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.

Authentication

This connector talks to the WooCommerce REST API v3 (/wp-json/wc/v3). Works against any WordPress + WooCommerce site. HTTPS required.

Setup

  1. WOOCOMMERCE_URL — site root (e.g. https://shop.example.com). Do NOT include /wp-json; the adapter appends /wp-json/wc/v3.

  2. 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).

Pagination

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).

Bulk writes

For ≥ 3 product updates use woocommerce_batch_update_products (one call, up to 100 entries). Don't fan out single update_product calls.

SEO meta (Yoast / Rank Math) on products

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).

Multi-step workflows

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.

Enum reference cards

Valid values for order status / product type / stock status / report period / payment methods → call woocommerce_list_*_options.

Permissions cheat-sheet

  • 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.

Security

  • 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_coupon can 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.

FAQ

Is there a WooCommerce MCP server?

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.

What do I need to connect my shop?

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.

Can the AI change my shop?

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.

Does it work with ChatGPT and Copilot?

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.

My shop is on a local or staging server. Does that work?

Yes, with a self-hosted AnythingMCP that can reach it; add the host to SSRF_ALLOWED_HOSTS.

Troubleshooting

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.

License

AGPL-3.0-only. The adapter definition in adapter/ comes from AnythingMCP (AGPL-3.0).

Related MCP Connectors

Related MCP Servers