Skip to main content
Glama
isaacgounton

BigCommerce API MCP Server

by isaacgounton

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

get_all_products

List products with filtering, sorting and pagination

get_product

One product by ID, optionally with variants and images

get_all_customers

List customers by ID, email, name, company or date range

get_all_orders

List orders by customer, status, date range or total

get_order

One order by ID

get_order_products

An order's line items — what was actually bought

list_categories

Resolve category names to the IDs product filters need

list_brands

Resolve brand names to the IDs product filters need

Write — requires BIGCOMMERCE_ENABLE_WRITES=true

Tool

What it does

create_product

Create a catalog product

update_product

Update price, stock, visibility, categories…

create_customer

Create a customer record

update_customer

Update a customer's details

update_order

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 .env

Then fill in .env:

BIGCOMMERCE_STORE_HASH=your_store_hash_here
BIGCOMMERCE_API_KEY=your_api_key_here

Get both from BigCommerce admin → SettingsAPI accountsCreate 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 runtimes

HTTP 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 /sse at /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 to 127.0.0.1 by default. Set 0.0.0.0 only when you mean to expose it, and put it behind a proxy or firewall when you do.

  • MCP_AUTH_TOKEN — when set, every /mcp request must carry Authorization: Bearer <token>. Comparison is timing-safe. Set it whenever the server is reachable beyond localhost.

  • ALLOWED_ORIGINS — requests carrying an Origin header are refused unless listed here, which blocks DNS-rebinding attacks where a page you visit drives your local server. Non-browser clients send no Origin and 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-mcp

The 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 specs

npm 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 tools
get_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyNoFilter by company name (exact match).
customer_group_idNoFilter by customer group ID (comma-separated for multiple groups).
date_createdNoFilter by exact customer creation date (ISO format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS).
date_created_maxNoFilter customers created before this date (ISO format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS).
date_created_minNoFilter customers created after this date (ISO format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS).
date_modifiedNoFilter by exact customer modification date (ISO format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS).
date_modified_maxNoFilter customers modified before this date (ISO format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS).
date_modified_minNoFilter customers modified after this date (ISO format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS).
emailNoFilter by customer email address (exact match).
idNoFilter by customer IDs (comma-separated for multiple IDs, e.g., "1,2,3").
includeNoInclude additional customer sub-resources (comma-separated: addresses, storecredit, attributes, formfields).
limitNoNumber of results to return (max 250, default 50).
nameNoFilter by customer full name (exact match).
name_likeNoFilter by customer name using partial match (substring search).
pageNoPage number for pagination (default 1).
phoneNoFilter by phone number (exact match).
registration_ip_addressNoFilter by registration IP address (exact match).
sortNoSort field and direction (e.g., "date_created:desc", "last_name:asc", "date_modified:desc").
store_HashNoOptional store hash. If not provided, uses BIGCOMMERCE_STORE_HASH from environment variables.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cart_idNoFilter orders by cart ID.
channel_idNoFilter orders by channel ID.
customer_idNoFilter orders by specific customer ID to get products associated with that customer.
emailNoFilter orders by customer email address.
external_order_idNoFilter orders by external order ID.
limitNoNumber of results to return (default: 50, max: 250).
max_date_createdNoMaximum date created for filtering (ISO 8601 format, e.g., 2023-12-31T23:59:59Z).
max_date_modifiedNoMaximum date modified for filtering (ISO 8601 format, e.g., 2023-12-31T23:59:59Z).
max_idNoMaximum order ID for filtering.
max_totalNoMaximum order total amount for filtering.
min_date_createdNoMinimum date created for filtering (ISO 8601 format, e.g., 2023-01-01T00:00:00Z).
min_date_modifiedNoMinimum date modified for filtering (ISO 8601 format, e.g., 2023-01-01T00:00:00Z).
min_idNoMinimum order ID for filtering.
min_totalNoMinimum order total amount for filtering.
pageNoPage number to return (default: 1).
payment_methodNoFilter orders by payment method (e.g., credit_card, paypal, manual).
sortNoSort field and direction (e.g., date_created:desc, id:asc, total:desc).
status_idNoFilter orders by status ID (e.g., 1=Pending, 7=Awaiting Payment, 11=Awaiting Fulfillment).
store_HashNoOptional store hash. If not provided, uses BIGCOMMERCE_STORE_HASH from environment variables.

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
store_HashNoOptional store hash. If not provided, uses BIGCOMMERCE_STORE_HASH from environment variables.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 3 tool updatesv1.0.0
    • First observedget_all_customers
    • First observedget_all_orders
    • First observedget_all_products

TDQS

B3.1/5.0

Scored across 3 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count2/5

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.

Completeness2/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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 npm
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables 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.
    -