Skip to content

Repository files navigation

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.

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.

Related

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

About

WooCommerce MCP server: 49 tools for Claude & ChatGPT. Products, variations, inventory, orders, refunds, customers and reports.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages