WooCommerce MCP Server

An MCP server for integrating with the WooCommerce e-commerce platform.

WooCommerce MCP Server On The Luxeon Site

Details about the deployment of a Model Context Protocol (MCP) server on the luxeonstar.com website.

Overview

This MCP server enables interaction with our WooCommerce stores through the WordPress REST API. It provides comprehensive tools for managing all aspects of products, orders, customers, shipping, taxes, discounts, and store configuration using JSON-RPC 2.0 protocol.

A MCP server created using this repo is currently deployed as the luxeon-mcp service on our elestio account our elestio account

The deployment of this repo on elestio was long and complex, but was ultimately successful. See the ai-setup-chat.md document in the docs folder for a complete transcript of the process. Only the very last part is relevant. The first 90% wa just the process of debugging the deployment on elestio.

Deployment on Elestio

This application is a command-line tool and not a standard web server. To deploy it as a web-accessible API in our Elestio account, it must be wrapped in a web server (like Express), and the platform's Docker environment must be configured correctly.

The deployment process requires the following key configurations:

1. Web Server Wrapper

A server.js file has been added to the root of the project. This file creates an Express.js server that listens for HTTP requests and executes the core application (build/index.js) as a child process, piping data back and forth.

2. Environment Variables

The application requires the following environment variables to be set in the Elestio "ENV" tab for the luxeonstar.com site:

DOMAIN=luxeon-mcp-u44324.vm.elestio.app
WORDPRESS_SITE_URL=https://stg-luxeonstarleds-lxplugin.kinsta.cloud/
WOOCOMMERCE_CONSUMER_KEY=ck_xxxxxx
WOOCOMMERCE_CONSUMER_SECRET=cs_xxxxxx
WORDPRESS_USERNAME=ronw
WORDPRESS_PASSWORD=xxxxx
MCP_SERVER_API_KEY=xxxxx

The currently used keys will be visible in the elestio ENV tab.

3. Docker Compose Configuration

The Elestio "Docker Compose" configuration for the app service must be modified to correctly run the application. The final app service definition should look like this:

app:
   build:
    context: ./nodejs
    dockerfile: Dockerfile
    args:
      - SOFTWARE_VERSION_TAG=${SOFTWARE_VERSION_TAG}
   restart: unless-stopped
   container_name: app-nodejs
   ports:
    - '172.17.0.1:3000:3000'
   volumes:
     - /usr/src/app:/usr/src/app
   working_dir: /usr/src/app
   env_file:
     - .env
   command: npm start
   depends_on:
    - redis

API Methods

The server supports both WordPress and WooCommerce API methods. Here's a list of available methods grouped by category:

WordPress Content Management

These methods require WordPress username/password credentials and are independent of the WooCommerce API.

MethodDescription
create_postCreate a new WordPress post
get_postsRetrieve WordPress posts
update_postUpdate an existing WordPress post
get_post_metaGet post metadata
update_post_metaUpdate post metadata
create_post_metaCreate post metadata
delete_post_metaDelete post metadata

WooCommerce Products

MethodDescription
get_productsRetrieve a list of products
get_productGet a single product by ID
create_productCreate a new product
update_productUpdate an existing product
delete_productDelete a product
get_product_metaGet product metadata
create_product_metaCreate/update product metadata
update_product_metaUpdate product metadata (alias for create)
delete_product_metaDelete product metadata

Product Categories

MethodDescription
get_product_categoriesRetrieve product categories
get_product_categoryGet a single product category
create_product_categoryCreate a new product category
update_product_categoryUpdate a product category
delete_product_categoryDelete a product category

Product Tags

MethodDescription
get_product_tagsRetrieve product tags
get_product_tagGet a single product tag
create_product_tagCreate a new product tag
update_product_tagUpdate a product tag
delete_product_tagDelete a product tag

Product Attributes

MethodDescription
get_product_attributesRetrieve product attributes
get_product_attributeGet a single product attribute
create_product_attributeCreate a new product attribute
update_product_attributeUpdate a product attribute
delete_product_attributeDelete a product attribute
get_attribute_termsRetrieve attribute terms
get_attribute_termGet a single attribute term
create_attribute_termCreate a new attribute term
update_attribute_termUpdate an attribute term
delete_attribute_termDelete an attribute term

Product Variations

MethodDescription
get_product_variationsRetrieve product variations
get_product_variationGet a single product variation
create_product_variationCreate a new product variation
update_product_variationUpdate a product variation
delete_product_variationDelete a product variation

Product Reviews

MethodDescription
get_product_reviewsRetrieve product reviews
get_product_reviewGet a single product review
create_product_reviewCreate a new product review
update_product_reviewUpdate a product review
delete_product_reviewDelete a product review

WooCommerce Orders

MethodDescription
get_ordersRetrieve a list of orders
get_orderGet a single order by ID
create_orderCreate a new order
update_orderUpdate an existing order
delete_orderDelete an order
get_order_metaGet order metadata
create_order_metaCreate/update order metadata
update_order_metaUpdate order metadata (alias for create)
delete_order_metaDelete order metadata

Order Notes

MethodDescription
get_order_notesRetrieve order notes
get_order_noteGet a single order note
create_order_noteCreate a new order note
delete_order_noteDelete an order note

Order Refunds

MethodDescription
get_order_refundsRetrieve order refunds
get_order_refundGet a single order refund
create_order_refundCreate a new order refund
delete_order_refundDelete an order refund

WooCommerce Customers

MethodDescription
get_customersRetrieve a list of customers
get_customerGet a single customer by ID
create_customerCreate a new customer
update_customerUpdate an existing customer
delete_customerDelete a customer
get_customer_metaGet customer metadata
create_customer_metaCreate/update customer metadata
update_customer_metaUpdate customer metadata (alias for create)
delete_customer_metaDelete customer metadata

Shipping

MethodDescription
get_shipping_zonesRetrieve shipping zones
get_shipping_zoneGet a single shipping zone
create_shipping_zoneCreate a new shipping zone
update_shipping_zoneUpdate a shipping zone
delete_shipping_zoneDelete a shipping zone
get_shipping_methodsRetrieve shipping methods
get_shipping_zone_methodsGet shipping methods for a zone
create_shipping_zone_methodCreate a new shipping method for a zone
update_shipping_zone_methodUpdate a shipping method for a zone
delete_shipping_zone_methodDelete a shipping method from a zone
get_shipping_zone_locationsGet locations for a shipping zone
update_shipping_zone_locationsUpdate locations for a shipping zone

Taxes

MethodDescription
get_tax_classesRetrieve tax classes
create_tax_classCreate a new tax class
delete_tax_classDelete a tax class
get_tax_ratesRetrieve tax rates
get_tax_rateGet a single tax rate
create_tax_rateCreate a new tax rate
update_tax_rateUpdate a tax rate
delete_tax_rateDelete a tax rate

Discounts/Coupons

MethodDescription
get_couponsRetrieve coupons
get_couponGet a single coupon
create_couponCreate a new coupon
update_couponUpdate a coupon
delete_couponDelete a coupon

Payment Gateways

MethodDescription
get_payment_gatewaysRetrieve payment gateways
get_payment_gatewayGet a single payment gateway
update_payment_gatewayUpdate a payment gateway

Reports

MethodDescription
get_sales_reportRetrieve sales reports
get_products_reportRetrieve products reports
get_orders_reportRetrieve orders reports
get_categories_reportRetrieve categories reports
get_customers_reportRetrieve customers reports
get_stock_reportRetrieve stock reports
get_coupons_reportRetrieve coupons reports
get_taxes_reportRetrieve taxes reports

Settings

MethodDescription
get_settingsRetrieve all settings
get_setting_optionsRetrieve options for a setting
update_setting_optionUpdate a setting option

System Status

MethodDescription
get_system_statusRetrieve system status
get_system_status_toolsRetrieve system status tools
run_system_status_toolRun a system status tool

Data

MethodDescription
get_dataRetrieve store data
get_continentsRetrieve continents data
get_countriesRetrieve countries data
get_currenciesRetrieve currencies data
get_current_currencyGet the current currency

Method Parameters

All methods follow a similar parameter structure. Here are some examples:

Common Parameters for All Methods

  • siteUrl: (optional if set in env) WordPress site URL

Additional Parameters for WooCommerce Methods

  • consumerKey: (optional if set in env) WooCommerce consumer key
  • consumerSecret: (optional if set in env) WooCommerce consumer secret

Additional Parameters for WordPress Methods

  • username: (optional if set in env) WordPress username
  • password: (optional if set in env) WordPress password

Example Usage

WordPress API Example

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "create_post",
  "params": {
    "siteUrl": "https://your-wordpress-site.com",
    "username": "your-wordpress-username",
    "password": "your-wordpress-password",
    "title": "My New Blog Post",
    "content": "This is the content of my new blog post.",
    "status": "publish"
  }
}

WooCommerce Products Example

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "get_products",
  "params": {
    "perPage": 20,
    "page": 1,
    "filters": {
      "category": 19,
      "status": "publish"
    }
  }
}

Create Product Example

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "create_product",
  "params": {
    "productData": {
      "name": "Premium T-Shirt",
      "type": "simple",
      "regular_price": "29.99",
      "description": "Comfortable cotton t-shirt, available in various sizes.",
      "short_description": "Premium quality t-shirt.",
      "categories": [
        {
          "id": 19
        }
      ],
      "images": [
        {
          "src": "http://example.com/wp-content/uploads/2022/06/t-shirt.jpg"
        }
      ]
    }
  }
}

Product Metadata Example

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "create_product_meta",
  "params": {
    "productId": 456,
    "metaKey": "_custom_product_field",
    "metaValue": {
      "special_attribute": "value",
      "another_attribute": 42
    }
  }
}

Order Metadata Example

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "create_order_meta",
  "params": {
    "orderId": 789,
    "metaKey": "_delivery_instructions",
    "metaValue": "Leave package at the back door"
  }
}

Security Note

For WooCommerce REST API access, you need to generate API keys. You can create them in your WordPress dashboard under WooCommerce → Settings → Advanced → REST API.

Requirements

This project has different requirements depending on whether you are running the pre-compiled code or modifying the source code.

To Run the Deployed Application

  • Node.js 20.0.0 or higher: The execution environment for the server.
  • NPM (Node Package Manager): Required to install dependencies.
  • Express.js: This project uses the Express framework to function as a web server. It is listed as a dependency and will be installed automatically with npm install.

External Services

  • A publicly accessible WordPress site with the WooCommerce plugin installed and active.
  • WooCommerce REST API keys (Consumer Key and Consumer Secret) with Read/Write permissions.
  • A WordPress user account (username and application password) with sufficient permissions to interact with WooCommerce.

To Modify the Source Code (Development)

  • All of the above.
  • TypeScript: The project's source code is written in TypeScript (/src directory). The devDependencies include the necessary TypeScript packages.
  • Build Step: Before the application can be run, the TypeScript source code must be compiled into JavaScript. This is done by running the build script defined in package.json:
# This command compiles the code from /src into JavaScript in the /build directory.
npm run build

License

MIT License - See LICENSE file for details

Related Servers