create_applicationsLABSCO SUMMARY
Your Project's API, narrowed to what one agent should touch.
The control worth understanding is the pairing of two things: the API Client sets the ceiling on what is possible and --tools sets what is actually offered. Start with a read-only client and a short list, then widen it once you can see which tools the agent really calls.
What it is
Commercetools' own MCP server for a Composable Commerce Project, now called Commerce MCP. It exposes the Project's resources as tools an assistant can call, using the API Client credentials you hand it.
What you get
- Catalogue work: read_products, update_products, read_product_projections and read_product_search
- Cart and order operations, including create_carts, update_carts, create_orders and update_orders
- Customer data through read_customers, update_customers and read_customer_search
- Pricing and promotions: standalone prices, cart discounts, discount codes, shipping methods and tax categories
- A tool allow-list — pass the tools you want and nothing else is exposed
- Field filtering and redaction, so a read-only agent stays read-only
- Two ways to run it: managed servers configured in the Merchant Center, or the self-hosted package, with the same tools and filtering either way
Requirements
A commercetools Project and an API Client whose scopes cover the tools you enable — an Admin Client with manage and view scopes sees all of them. The self-hosted package runs with npx -y @commercetools/commerce-mcp and takes --projectKey, --clientId and --clientSecret; stdio is the default transport and --remote=true switches it to Streamable HTTP.
Setup effort
One command plus credentials — npx -y @commercetools/commerce-mcp --tools=all --isAdmin=true --authType=client_credentials --clientId=<YOUR_CLIENT_ID> --clientSecret=<YOUR_CLIENT_SECRET> --projectKey=<YOUR_PROJECT_KEY> --authUrl=<YOUR_AUTH_URL> --apiUrl=<YOUR_API_URL>, then supply credentials
USE CASES
Answering catalogue questions without writing an API call
Ask about a product in words; the agent reads it out of the Project and comes back with the fields you left visible.
Looking into an order a customer is asking about
Pull the order and the customer behind it in the same thread, with fields you chose to redact left out.
Applying a change you have already agreed on
Let the agent update the product or the order directly — this is the point where the API Client needs manage scopes, not just view.
Keeping an assistant read-only on purpose
Give it a client with view scopes and start the server with only the read tools listed; nothing else reaches the Project.
120 tools
Listed in project docs. Your client may show a different list.
read_applicationsupdate_applicationscreate_attribute_groupsread_attribute_groupsupdate_attribute_groupscreate_bulkupdate_bulkcreate_business_unitsread_business_unitsupdate_business_unitscreate_cart_discountsread_cart_discountsupdate_cart_discountscreate_cartsread_cartsupdate_cartsreplicate_cartscreate_categoriesread_categoriesupdate_categoriescreate_channelsread_channelsupdate_channelscreate_custom_objectsread_custom_objectsupdate_custom_objectscreate_customer_groupsread_customer_groupsupdate_customer_groupsread_customer_searchcreate_customersread_customersupdate_customerscreate_discount_codesread_discount_codesupdate_discount_codescreate_extensionsread_extensionsupdate_extensionscreate_inventoryread_inventoryupdate_inventoryread_messagescreate_ordersread_ordersupdate_orderscreate_payment_integrationsread_payment_integrationsupdate_payment_integrationsupdate_payment_intentscreate_payment_methodsread_payment_methodsupdate_payment_methodscreate_paymentsread_paymentsupdate_paymentscreate_product_discountsread_product_discountsupdate_product_discountsread_product_projectionsread_product_searchcreate_product_selectionsread_product_selectionsupdate_product_selectionscreate_product_tailoringread_product_tailoringupdate_product_tailoringcreate_product_typesread_product_typesupdate_product_typescreate_productsread_productsupdate_productsread_projectupdate_projectcreate_quote_requestsread_quote_requestsupdate_quote_requestscreate_quotesread_quotesupdate_quotescreate_recurring_ordersread_recurring_ordersupdate_recurring_orderscreate_reviewsread_reviewsupdate_reviewscreate_shipping_methodsread_shipping_methodsupdate_shipping_methodscreate_shopping_listsread_shopping_listsupdate_shopping_listscreate_staged_quotesread_staged_quotesupdate_staged_quotescreate_standalone_pricesread_standalone_pricesupdate_standalone_pricescreate_statesread_statesupdate_statescreate_storesread_storesupdate_storescreate_subscriptionsread_subscriptionsupdate_subscriptionscreate_tax_categoriesread_tax_categoriesupdate_tax_categoriescreate_transactionsread_transactionscreate_typesread_typesupdate_typescreate_zonesread_zonesupdate_zonesBEFORE YOU INSTALL
What to know first
Tools you get
120 tools named in the project's documentation.
Requires
- npx on PATH
- Node.js 18 or later
- A commercetools API Client (project key, client ID and secret, auth URL and API URL) whose scopes cover the tools you enable; an Admin Client sees them all
INSTALLATION
Connect your client
Server setup
npx -y @commercetools/commerce-mcp --tools=all --isAdmin=true --authType=client_credentials --clientId=<YOUR_CLIENT_ID> --clientSecret=<YOUR_CLIENT_SECRET> --projectKey=<YOUR_PROJECT_KEY> --authUrl=<YOUR_AUTH_URL> --apiUrl=<YOUR_API_URL>MCP Clients
VS Code
{
"servers": {
"commerce-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@commercetools/commerce-mcp@latest",
"--tools=all",
"--isAdmin=true",
"--dynamicToolLoadingThreshold=450",
"--authType=client_credentials",
"--clientId=<YOUR_CLIENT_ID>",
"--clientSecret=<YOUR_CLIENT_SECRET>",
"--authUrl=<YOUR_AUTH_URL>",
"--projectKey=<YOUR_PROJECT_KEY>",
"--apiUrl=<YOUR_API_URL>"
]
}
}
}Cursor
{
"mcpServers": {
"commerce-mcp": {
"command": "npx",
"args": [
"-y",
"@commercetools/commerce-mcp@latest",
"--tools=all",
"--isAdmin=true",
"--dynamicToolLoadingThreshold=450",
"--authType=client_credentials",
"--clientId=<YOUR_CLIENT_ID>",
"--clientSecret=<YOUR_CLIENT_SECRET>",
"--authUrl=<YOUR_AUTH_URL>",
"--projectKey=<YOUR_PROJECT_KEY>",
"--apiUrl=<YOUR_API_URL>"
]
}
}
}Claude Desktop
Claude Desktop runs the same command and arguments as Cursor. The values come from your commercetools API Client.
{
"mcpServers": {
"commerce-mcp": {
"command": "npx",
"args": [
"-y",
"@commercetools/commerce-mcp@latest",
"--tools=all",
"--isAdmin=true",
"--dynamicToolLoadingThreshold=450",
"--authType=client_credentials",
"--clientId=<YOUR_CLIENT_ID>",
"--clientSecret=<YOUR_CLIENT_SECRET>",
"--authUrl=<YOUR_AUTH_URL>",
"--projectKey=<YOUR_PROJECT_KEY>",
"--apiUrl=<YOUR_API_URL>"
]
}
}
}Claude Desktop — remote
Start the server in remote mode
This runs Commerce MCP over Streamable HTTP on port 8888. The client ID and secret only start the server.
npx -y @commercetools/commerce-mcp \
--remote=true \
--stateless=true \
--port=8888 \
--tools=all \
--isAdmin=true \
--dynamicToolLoadingThreshold=450 \
--authType=client_credentials \
--clientId=<YOUR_CLIENT_ID> \
--clientSecret=<YOUR_CLIENT_SECRET> \
--projectKey=<YOUR_PROJECT_KEY> \
--authUrl=<YOUR_AUTH_URL> \
--apiUrl=<YOUR_API_URL>Add this to claude_desktop_config.json
Every request must carry its own Bearer token. <YOUR_ACCESS_TOKEN> is a commercetools OAuth access token, which you request from your Project's authorization service at <YOUR_AUTH_URL>.
{
"mcpServers": {
"commercetools": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"--header",
"Authorization: Bearer <YOUR_ACCESS_TOKEN>",
"http://localhost:8888/mcp"
]
}
}
}Codex
[mcp_servers.commerce-mcp]
command = "npx"
args = [
"-y",
"@commercetools/commerce-mcp@latest",
"--tools=all",
"--isAdmin=true",
"--dynamicToolLoadingThreshold=450",
"--authType=client_credentials",
"--clientId=<YOUR_CLIENT_ID>",
"--clientSecret=<YOUR_CLIENT_SECRET>",
"--authUrl=<YOUR_AUTH_URL>",
"--projectKey=<YOUR_PROJECT_KEY>",
"--apiUrl=<YOUR_API_URL>"
]