1.14.0 • Published 5 months ago

@commercetools-demo/mcp v1.14.0

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

Commercetools Model Context Protocol

Setup

To run the commercetools MCP server using npx, use the following command:

# To set up all available tools
npx -y @commercetools-demo/mcp --tools=all --clientId=CLIENT_ID --clientSecret=CLIENT_SECRET --projectKey=PROJECT_KEY --authUrl=AUTH_URL --apiUrl=API_URL --isAdmin=true

# To set up all read-only tools
npx -y @commercetools-demo/mcp --tools=all.read --clientId=CLIENT_ID --clientSecret=CLIENT_SECRET --projectKey=PROJECT_KEY --authUrl=AUTH_URL --apiUrl=API_URL --isAdmin=true
# To set up specific tools
npx -y @commercetools-demo/mcp --tools=products.read,products.create --clientId=CLIENT_ID --clientSecret=CLIENT_SECRET --projectKey=PROJECT_KEY --authUrl=AUTH_URL --apiUrl=API_URL --isAdmin=true

# Additional optional parameters (providing one of the following parameters is required)
# --isAdmin           Enable admin access for backend operations (not restricted to a specific customer)
# --customerId        Restrict operations to a specific customer (e.g., --customerId=CUSTOMER_ID)
# --cartId            Restrict operations to a specific cart (e.g., --cartId=CART_ID)
# --storeKey          Restrict operations to a specific store (e.g., --storeKey=STORE_KEY)
# --businessUnitKey   Restrict operations to a specific business unit (e.g., --businessUnitKey=BUSINESS_UNIT_KEY)
#                     Note: When using businessUnitKey, customerId is also required for associate operations

Make sure to replace CLIENT_ID, CLIENT_SECRET, PROJECT_KEY, AUTH_URL, and API_URL with your actual values. If using the customerId parameter, replace CUSTOMER_ID with the actual customer ID. Alternatively, you could set the API_KEY in your environment variables.

Note: Providing one of the following parameters is required: --isAdmin, --customerId, --storeKey, or both --customerId and --businessUnitKey for associate operations

Usage with Claude Desktop

Add the following to your claude_desktop_config.json. See here for more details.

{
  "mcpServers": {
    "commercetools": {
      "command": "npx",
      "args": [
        "-y",
        "@commercetools-demo/mcp@latest",
        "--tools=all",
        "--clientId=CLIENT_ID",
        "--clientSecret=CLIENT_SECRET",
        "--authUrl=AUTH_URL",
        "--projectKey=PROJECT_KEY",
        "--apiUrl=API_URL"
        // Optional: add "--isAdmin" for admin access
        // Optional: add "--customerId=CUSTOMER_ID" to restrict to a specific customer
        // Optional: add "--cartId=CART_ID" to restrict to a specific cart
        // Optional: add "--storeKey=STORE_KEY" to restrict to a specific store
        // Optional: add "--businessUnitKey=BUSINESS_UNIT_KEY" to restrict to a specific business unit
        //          Note: When using businessUnitKey, customerId is also required for associate operations
      ]
    }
  }
}

Alternative: To use only read-only tools, replace "--tools=all" with "--tools=all.read"

Available tools

Special Tool Options

ToolDescription
allEnable all available tools (read, create, and update operations)
all.readEnable all read-only tools (safe for read-only access)

Individual Tools

ToolDescription
products.readRead product information
products.createCreate product information
products.updateUpdate product information
project.readRead project information
product-search.readRead product search information
category.readRead category information
category.createCreate category information
category.updateUpdate category information
channel.readRead channel information
channel.createCreate channel
channel.updateUpdate channel information
product-selection.readRead product selection information
product-selection.createCreate product selection information
product-selection.updateUpdate product selection information
order.readRead order information
order.createCreate order (from cart, quote, import)
order.updateUpdate order information
cart.readRead cart information
cart.createCreate cart
cart.updateUpdate cart information
customer.readRead customer information
customer.createCreate customer
customer.updateUpdate customer information
customer-group.readRead customer group information
customer-group.createCreate customer group
customer-group.updateUpdate customer group information
quote.readRead quote information
quote.createCreate quote (from staged quote)
quote.updateUpdate quote information
quote-request.readRead quote request information
quote-request.createCreate quote request
quote-request.updateUpdate quote request information
staged-quote.readRead staged quote information
staged-quote.createCreate staged quote
staged-quote.updateUpdate staged quote information
standalone-price.readRead standalone price information
standalone-price.createCreate standalone price
standalone-price.updateUpdate standalone price information
product-discount.readRead product discount information
product-discount.createCreate product discount
product-discount.updateUpdate product discount information
cart-discount.readRead cart discount information
cart-discount.createCreate cart discount
cart-discount.updateUpdate cart discount information
discount-code.readRead discount code information
discount-code.createCreate discount code
discount-code.updateUpdate discount code information
product-type.readRead product type information
product-type.createCreate product type
product-type.updateUpdate product type information
bulk.createCreate bulk entities
bulk.updateUpdate bulk entities
inventory.readRead inventory information
inventory.createCreate inventory
inventory.updateUpdate inventory information
store.readRead store information
store.createCreate store
store.updateUpdate store information
business-unit.readRead business unit information
business-unit.createCreate business unit
business-unit.updateUpdate business unit information

Debugging locally

#  navigate to ../typescript
pnpm run build
# navigate to ../modelcontextprotocol

# link the local package
pnpm add link:../typescript

# run the server in terminal
npx ts-node src/index.ts --tools=products.read --clientId=CLIENT_ID --clientSecret=CLIENT_SECRET --authUrl=AUTH_URL --projectKey=PROJECT_KEY --apiUrl=API_URL
# Optional: add --isAdmin for admin access
# Optional: add --customerId=CUSTOMER_ID to restrict to a specific customer
# Optional: add --businessUnitKey=BUSINESS_UNIT_KEY to restrict to a specific business unit
#          Note: When using businessUnitKey, customerId is also required for associate operations

# test using mcptools : Install mcptools from https://github.com/f/mcptools
mcp call list_products --params '{"limit": 2}' npx ts-node /<absolute-path>/ct-agent-toolkit/modelcontextprotocol/src/index.ts --tools=all \
--projectKey="PROJECT_KEY" \
--clientSecret="CLIENT_SECRET" \
--clientId="CLIENT_ID" \
--authUrl="AUTH_URL" \
--apiUrl="API_URL"
# Optional: add --isAdmin for admin access
# Optional: add --customerId="CUSTOMER_ID" to restrict to a specific customer
# Optional: add --cartId="CART_ID" to restrict to a specific cart
# Optional: add --businessUnitKey="BUSINESS_UNIT_KEY" to restrict to a specific business unit
#          Note: When using businessUnitKey, customerId is also required for associate operations

Do not commit the linked package in package.json to the repo

Testing Using Claude Desktop

NOTE: This will not work with Claude Desktop unless you uninstall node v16 from your machine!

#  navigate to ../typescript
pnpm run build

# navigate to ../modelcontextprotocol

# link the local package
pnpm add link:../typescript

Configure MCP servers in Claude Desktop

{
  "mcpServers": {
    "commercetools": {
      "command": "npx",
      "args": [
        "ts-node",
        "/<absolute-path>/ct-agent-toolkit/modelcontextprotocol/src/index.ts",
        "--tools=all",
        "--projectKey=PROJECT_KEY",
        "--clientSecret=CLIENT_SECRET",
        "--clientId=CLIENT_ID",
        "--authUrl=AUTH_URL",
        "--apiUrl=API_URL"
        // Optional: add "--isAdmin" for admin access
        // Optional: add "--customerId=CUSTOMER_ID" to restrict to a specific customer
        // Optional: add "--cartId=CART_ID" to restrict to a specific cart
        // Optional: add "--storeKey=STORE_KEY" to restrict to a specific store
        // Optional: add "--businessUnitKey=BUSINESS_UNIT_KEY" to restrict to a specific business unit
        //          Note: When using businessUnitKey, customerId is also required for associate operations
      ]
    }
  }
}

Debugging the Server

To debug your server, you can use the MCP Inspector.

First build the server

npm run build

Run the following command in your terminal:

# Start MCP Inspector and server with all tools
npx @modelcontextprotocol/inspector node dist/index.js --tools=all --clientId=CLIENT_ID --clientSecret=CLIENT_SECRET --projectKey=PROJECT_KEY --authUrl=AUTH_URL --apiUrl=API_URL
# Optional: add --isAdmin for admin access
# Optional: add --customerId=CUSTOMER_ID to restrict to a specific customer
# Optional: add --cartId=CART_ID to restrict to a specific cart
# Optional: add --storeKey=STORE_KEY to restrict to a specific store
# Optional: add --businessUnitKey=BUSINESS_UNIT_KEY to restrict to a specific business unit
#          Note: When using businessUnitKey, customerId is also required for associate operations

Instructions

  1. Replace CLIENT_ID, CLIENT_SECRET, PROJECT_KEY, AUTH_URL, and API_URL with your actual values.
  2. Run the command to start the MCP Inspector.
  3. Open the MCP Inspector UI in your browser and click Connect to start the MCP server.
  4. You can see the list of tools you selected and test each tool individually.
1.14.0

5 months ago

1.13.0-beta.5

5 months ago

1.13.0-beta.4

5 months ago

1.13.0-beta.3

5 months ago

1.13.0-beta.2

5 months ago

1.13.0-beta.1

5 months ago

1.12.0

6 months ago

1.11.0

6 months ago

1.10.0

6 months ago

1.9.0

6 months ago

1.7.0

6 months ago

1.6.0

6 months ago

1.4.0

6 months ago

1.3.0

6 months ago

1.2.0

6 months ago

1.1.0

6 months ago

0.1.4

6 months ago

0.1.3

6 months ago