BigCommerce API MCP Server
This MCP server gives an AI assistant read access to BigCommerce catalog, customers, and orders, with optional write access when enabled.
Read and filter products with sorting, pagination, and optional store hash
Fetch a single product by ID, optionally with variants and images
List and filter customers by ID, email, name, company, phone, group, dates, and more
List and filter orders by customer, status, date range, totals, channel, payment method, and more
Fetch a single order by ID and view its line items/products
Resolve category and brand names to IDs for product filtering
If
BIGCOMMERCE_ENABLE_WRITES=true: create/update products, create/update customers, and update order status/notes/messageServe over stdio or streamable HTTP with optional bearer-token auth and origin protection
Provides comprehensive tools for managing BigCommerce stores, including retrieving and filtering products, managing customers with advanced search options, and accessing order data with customer-product relationship capabilities through the BigCommerce REST API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@BigCommerce API MCP Servershow me all orders from the last week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
BigCommerce MCP Server
An MCP server for the BigCommerce REST API. Gives an AI assistant read access to your catalog, customers and orders — and, when you turn it on, the ability to change them.
Tools
Read
Tool | What it does |
| List products with filtering, sorting and pagination |
| One product by ID, optionally with variants and images |
| List customers by ID, email, name, company or date range |
| List orders by customer, status, date range or total |
| One order by ID |
| An order's line items — what was actually bought |
| Resolve category names to the IDs product filters need |
| Resolve brand names to the IDs product filters need |
Write — requires BIGCOMMERCE_ENABLE_WRITES=true
Tool | What it does |
| Create a catalog product |
| Update price, stock, visibility, categories… |
| Create a customer record |
| Update a customer's details |
| Change status, staff notes or customer message |
Write tools aren't registered at all unless enabled, so a default deployment can't modify your store even if someone reaches its endpoint.
npm run list-tools prints the tools and parameters as currently configured.
Related MCP server: commercetools Commerce MCP
Setup
Needs Node 20+.
git clone https://github.com/isaacgounton/bigcommerce-api-mcp.git
cd bigcommerce-api-mcp
npm install
cp .env.example .envThen fill in .env:
BIGCOMMERCE_STORE_HASH=your_store_hash_here
BIGCOMMERCE_API_KEY=your_api_key_hereGet both from BigCommerce admin → Settings → API accounts → Create
API account. Grant Products, Orders and Customers — read-only unless you
plan to enable writes. .env.example documents every supported variable.
Running
npm start # stdio — Claude Desktop, Cline, local clients
npm run start:http # streamable HTTP — remote clients and agent runtimesHTTP mode serves POST /mcp, plus unauthenticated GET /health and /info.
The SSE transport was removed in favour of Streamable HTTP, which replaced it in the MCP spec. Point any client still using
/sseat/mcp.
Claude Desktop
In claude_desktop_config.json (use absolute paths — which node):
{
"mcpServers": {
"bigcommerce": {
"command": "/absolute/path/to/node",
"args": ["/absolute/path/to/bigcommerce-api-mcp/mcpServer.js"],
"env": {
"BIGCOMMERCE_STORE_HASH": "your_store_hash",
"BIGCOMMERCE_API_KEY": "your_api_key"
}
}
}
}Over HTTP
curl -X POST http://127.0.0.1:3000/mcp \
-H "Authorization: Bearer $MCP_AUTH_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Security
Anyone who can call /mcp acts with your store's API credentials.
HOST— binds to127.0.0.1by default. Set0.0.0.0only when you mean to expose it, and put it behind a proxy or firewall when you do.MCP_AUTH_TOKEN— when set, every/mcprequest must carryAuthorization: Bearer <token>. Comparison is timing-safe. Set it whenever the server is reachable beyond localhost.ALLOWED_ORIGINS— requests carrying anOriginheader are refused unless listed here, which blocks DNS-rebinding attacks where a page you visit drives your local server. Non-browser clients send noOriginand are unaffected.BIGCOMMERCE_ENABLE_WRITES— leave off if the assistant only reads.Scopes — give the API account the narrowest scopes that work. A read-only token can't be widened by a bug in this server.
Docker
docker build -t bigcommerce-mcp .
docker run --rm -p 3000:3000 --env-file .env bigcommerce-mcpThe image sets HOST=0.0.0.0 so the published port is reachable. Set
MCP_AUTH_TOKEN before exposing the container.
Development
npm test # protocol, auth, origin, discovery and spec conformance — no credentials needed
npm run test:live # smoke-test read tools against a real store (needs .env)
npm run sync-spec # refresh the query-parameter fixture from BigCommerce's OpenAPI specsnpm test checks every query parameter a tool declares against BigCommerce's
published specs. This matters because BigCommerce ignores unknown query
parameters rather than rejecting them — an invented filter silently returns
unfiltered data, which is worse than an error.
To add a tool, drop a file under tools/bigcommerce/<group>/ exporting an
apiTool — it's discovered automatically. lib/bigcommerce.js handles
credentials, query building, errors and parsing, so a tool is usually just a
path and a schema; copy tools/bigcommerce/catalog/list-brands.js. Set
writes: true on anything that mutates the store.
MIT
Available Tools
3 toolsget_all_customersC
Get all customers from the BigCommerce API with comprehensive filtering options (email, name, company, phone, customer group, dates, pagination). Store hash is automatically retrieved from environment variables.
| Name | Required | Description | Default |
|---|---|---|---|
| company | No | Filter by company name (exact match). | |
| customer_group_id | No | Filter by customer group ID (comma-separated for multiple groups). | |
| date_created | No | Filter by exact customer creation date (ISO format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS). | |
| date_created_max | No | Filter customers created before this date (ISO format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS). | |
| date_created_min | No | Filter customers created after this date (ISO format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS). | |
| date_modified | No | Filter by exact customer modification date (ISO format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS). | |
| date_modified_max | No | Filter customers modified before this date (ISO format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS). | |
| date_modified_min | No | Filter customers modified after this date (ISO format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS). | |
| No | Filter by customer email address (exact match). | ||
| id | No | Filter by customer IDs (comma-separated for multiple IDs, e.g., "1,2,3"). | |
| include | No | Include additional customer sub-resources (comma-separated: addresses, storecredit, attributes, formfields). | |
| limit | No | Number of results to return (max 250, default 50). | |
| name | No | Filter by customer full name (exact match). | |
| name_like | No | Filter by customer name using partial match (substring search). | |
| page | No | Page number for pagination (default 1). | |
| phone | No | Filter by phone number (exact match). | |
| registration_ip_address | No | Filter by registration IP address (exact match). | |
| sort | No | Sort field and direction (e.g., "date_created:desc", "last_name:asc", "date_modified:desc"). | |
| store_Hash | No | Optional store hash. If not provided, uses BIGCOMMERCE_STORE_HASH from environment variables. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions automatic store hash retrieval from environment variables, which is useful context, but lacks details on permissions, rate limits, pagination behavior (beyond parameters), error handling, or what the return format looks like. For a read operation with 19 parameters, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads key information (getting customers with filtering). It could be slightly more structured by separating the automatic store hash note, but it avoids redundancy and wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (19 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain the return format, error cases, or behavioral traits like pagination limits or authentication needs. The automatic store hash note is helpful, but overall, it falls short for a tool with many parameters and no structured output guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 19 parameters thoroughly. The description adds minimal value by listing some filter types (email, name, company, phone, customer group, dates, pagination) but doesn't provide additional syntax, format, or usage context beyond what's in the schema. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('all customers from the BigCommerce API'), making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like 'get_all_orders' or 'get_all_products' beyond mentioning customers specifically, which is implied but not contrasted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'comprehensive filtering options' and automatic store hash retrieval, but provides no explicit guidance on when to use this tool versus alternatives (e.g., for filtering vs. other customer-related tools). There's no mention of prerequisites, exclusions, or sibling tool comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_all_ordersB
Get all orders from the BigCommerce API. Can filter by customer_id to get products associated with specific customers through their order history. Store hash is automatically retrieved from environment variables.
| Name | Required | Description | Default |
|---|---|---|---|
| cart_id | No | Filter orders by cart ID. | |
| channel_id | No | Filter orders by channel ID. | |
| customer_id | No | Filter orders by specific customer ID to get products associated with that customer. | |
| No | Filter orders by customer email address. | ||
| external_order_id | No | Filter orders by external order ID. | |
| limit | No | Number of results to return (default: 50, max: 250). | |
| max_date_created | No | Maximum date created for filtering (ISO 8601 format, e.g., 2023-12-31T23:59:59Z). | |
| max_date_modified | No | Maximum date modified for filtering (ISO 8601 format, e.g., 2023-12-31T23:59:59Z). | |
| max_id | No | Maximum order ID for filtering. | |
| max_total | No | Maximum order total amount for filtering. | |
| min_date_created | No | Minimum date created for filtering (ISO 8601 format, e.g., 2023-01-01T00:00:00Z). | |
| min_date_modified | No | Minimum date modified for filtering (ISO 8601 format, e.g., 2023-01-01T00:00:00Z). | |
| min_id | No | Minimum order ID for filtering. | |
| min_total | No | Minimum order total amount for filtering. | |
| page | No | Page number to return (default: 1). | |
| payment_method | No | Filter orders by payment method (e.g., credit_card, paypal, manual). | |
| sort | No | Sort field and direction (e.g., date_created:desc, id:asc, total:desc). | |
| status_id | No | Filter orders by status ID (e.g., 1=Pending, 7=Awaiting Payment, 11=Awaiting Fulfillment). | |
| store_Hash | No | Optional store hash. If not provided, uses BIGCOMMERCE_STORE_HASH from environment variables. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that store hash is automatically retrieved from environment variables, which is useful context about configuration. However, it doesn't describe critical behavioral traits like whether this is a read-only operation, pagination behavior (implied by limit/page parameters but not explained), rate limits, authentication requirements, or what happens when no filters are applied. For a tool with 19 parameters and no annotation coverage, this leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with three sentences that each serve a purpose: stating the core function, explaining a key filtering use case, and providing implementation detail about store hash. It's front-loaded with the main purpose and avoids unnecessary elaboration. However, the second sentence about customer_id filtering could be more tightly integrated with the first sentence for better flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (19 parameters, no annotations, no output schema), the description provides a basic but incomplete picture. It covers the core purpose and one filtering scenario but doesn't address the tool's full behavioral context, return format, error conditions, or relationship to sibling tools. The 100% schema coverage helps with parameter understanding, but the description alone doesn't provide enough context for confident agent usage without additional inference from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 19 parameters thoroughly. The description adds minimal value beyond the schema by mentioning customer_id filtering specifically and noting that store hash can be auto-retrieved from environment variables. This provides some contextual meaning but doesn't significantly enhance understanding beyond what's already in the parameter descriptions. The baseline of 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get all orders from the BigCommerce API.' It specifies the resource (orders) and the action (get), though it doesn't explicitly differentiate from sibling tools like get_all_customers or get_all_products beyond mentioning different resources. The mention of filtering by customer_id adds some specificity but doesn't fully distinguish it from potential order-related alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage context by mentioning filtering by customer_id to get products associated with specific customers, but it doesn't explicitly state when to use this tool versus alternatives or any prerequisites. The note about store hash being automatically retrieved from environment variables offers some operational guidance, but no explicit when/when-not instructions or sibling tool comparisons are included.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_all_productsC
Get all products from the BigCommerce API. Store hash is automatically retrieved from environment variables.
| Name | Required | Description | Default |
|---|---|---|---|
| store_Hash | No | Optional store hash. If not provided, uses BIGCOMMERCE_STORE_HASH from environment variables. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions automatic retrieval of store hash from environment variables, which is useful context, but doesn't describe important behavioral aspects like pagination, rate limits, authentication requirements, error conditions, or what 'all products' means in practice (e.g., maximum results, filtering options).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with two sentences that both add value. The first sentence states the core purpose, and the second provides important implementation context about environment variable usage. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what the tool returns (product format, data structure), doesn't mention pagination or result limitations for 'all products,' and provides minimal behavioral context. The agent would struggle to use this tool effectively without additional information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the single optional parameter. The description adds the context that store hash is automatically retrieved from environment variables when not provided, which provides useful operational context beyond the schema's technical documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('all products from the BigCommerce API'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like get_all_customers and get_all_orders, but the resource specificity provides implicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools, prerequisites, or contextual factors that would help an agent decide between get_all_products, get_all_customers, or get_all_orders.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v1.0.0- First observed
get_all_customers - First observed
get_all_orders - First observed
get_all_products
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose targeting different BigCommerce resources: customers, orders, and products. There is no overlap in functionality, and the descriptions specify unique filtering capabilities where applicable, making tool selection unambiguous.
All tool names follow a consistent verb_noun pattern with 'get_all_' prefix followed by the resource name (customers, orders, products). This predictable naming scheme enhances readability and usability across the tool set.
With only 3 tools, this server feels under-scoped for a BigCommerce API integration. A typical e-commerce platform requires more operations like creating, updating, or deleting resources, making this set too limited for comprehensive agent workflows.
The tool set is severely incomplete, covering only read operations (get_all) for three core resources. There are significant gaps in CRUD coverage—no create, update, or delete tools—which will likely cause agent failures when attempting full e-commerce management tasks.
Maintenance
Related MCP Connectors
AI-powered commerce API for luxury skincare shopping. Enables AI agents to search products, browse collections, manage shopping carts, and generate checkout URLs for the Regenique Elegance Shopify store.
Manage your NanoCart store from any AI agent: products, orders, coupons, subscribers, reports.
Connect AI to store orders, products and inventory with scoped access and human approvals.
1Enable AI assistants to interact seamlessly with Feeef e-commerce stores, products, and orders usi…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage BareCommerceCore e-commerce stores through 46 tools covering products, orders, customers, categories, pages, media, webhooks, and analytics. Uses secure OAuth authentication without requiring API keys in chat.7 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to interact with commercetools APIs to manage products, categories, orders, carts, and customer data. It provides a comprehensive set of tools for both read-only and full-access operations through secure authentication methods.4MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI to view and manage e-commerce data such as products, orders, and coupons, and perform actions like updating prices, stock, and generating sales reports.-
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to interact with WooCommerce stores via the WooCommerce REST API, supporting operations like listing products, orders, and customers.1 npmMIT