Skip to main content
Glama

Magento MCP Server

An MCP (Model Context Protocol) server for Adobe Commerce / Magento 2 administration. Connects AI assistants like Claude, Windsurf, Cursor, and other MCP-compatible clients to your Magento instance for business-level operations — catalog management, promotions, CMS, diagnostics, and more.

Features

  • 30+ tools for Magento administration via the standard MCP protocol

  • OAuth 1.0 (HMAC-SHA256) integration authentication — no 2FA prompts

  • Two-phase commit for bulk operations (prepare → review → commit)

  • Built-in guardrails — bulk caps, price change warnings, confirmation requirements

  • Multi-store aware — explicit scope handling for websites, stores, and store views

  • Audit logging — every action logged with timestamps, user, and parameters

Available Tools

Auth & Scope

  • auth.login / auth.logout / auth.whoami — session management

  • scope.list_websites_stores / scope.set_default — multi-store scope

Catalog

  • catalog.search_products — search with filters, pagination, field projection

  • catalog.get_product — full product details by SKU

  • catalog.prepare_bulk_update / catalog.commit_bulk_update — two-phase bulk product updates

Pricing

  • pricing.prepare_bulk_price_update / pricing.commit_bulk_price_update — safe bulk price changes with threshold warnings

Promotions

  • promotions.search_rules / promotions.get_rule — find and inspect cart price rules

  • promotions.prepare_cart_price_rule_create / promotions.commit_cart_price_rule_create — create rules safely

  • promotions.update_rule / promotions.enable_rule / promotions.disable_rule

  • promotions.generate_coupons / promotions.export_coupons

CMS

  • cms.search_pages / cms.get_page — find and read CMS pages

  • cms.prepare_bulk_update_pages / cms.commit_bulk_update_pages

  • cms.search_blocks / cms.get_block

  • cms.prepare_bulk_update_blocks / cms.commit_bulk_update_blocks

SEO

  • seo.prepare_bulk_update_url_keys / seo.commit_bulk_update_url_keys — URL key changes with collision detection

  • seo.bulk_update_meta — bulk meta title/description/keyword updates

  • seo.report_redirect_chains — find redirect chain issues

Diagnostics

  • diagnostics.product_display_check — why isn't my product showing?

  • diagnostics.indexer_status_report — indexer health check

  • diagnostics.inventory_salable_report — MSI stock/salable quantity

Cache

  • cache.purge_by_url / cache.purge_product / cache.purge_category — targeted cache invalidation (Fastly or fallback)

Quick Start

Prerequisites

  • Node.js 18+

  • A Magento 2 / Adobe Commerce instance

  • An Integration configured in Magento with appropriate API permissions

Installation

git clone https://github.com/thomastx05/magento-mcp.git
cd magento-mcp
npm install
npm run build

Magento Integration Setup

  1. In Magento Admin, go to System > Integrations > Add New Integration

  2. Give it a name (e.g., "MCP Server")

  3. Under API, select the resources you want to expose

  4. Save and Activate the integration

  5. Copy the four OAuth credentials:

    • Consumer Key

    • Consumer Secret

    • Access Token

    • Access Token Secret

MCP Client Configuration

Add to your MCP client config (e.g., mcp_config.json for Windsurf, claude_desktop_config.json for Claude Desktop):

{
  "mcpServers": {
    "magento-mcp": {
      "command": "node",
      "args": ["C:/path/to/magento-mcp/dist/index.js"],
      "env": {
        "MAGENTO_BASE_URL": "https://your-magento-instance.com",
        "MAGENTO_OAUTH_CONSUMER_KEY": "your_consumer_key",
        "MAGENTO_OAUTH_CONSUMER_SECRET": "your_consumer_secret",
        "MAGENTO_OAUTH_TOKEN": "your_access_token",
        "MAGENTO_OAUTH_TOKEN_SECRET": "your_access_token_secret"
      }
    }
  }
}

Alternative: Username/Password Auth

If you prefer admin token auth instead of OAuth (requires handling 2FA if enabled):

{
  "env": {
    "MAGENTO_BASE_URL": "https://your-magento-instance.com",
    "MAGENTO_ADMIN_USERNAME": "your_admin_user",
    "MAGENTO_ADMIN_PASSWORD": "your_admin_password"
  }
}

Usage

Once configured, call auth.login first to establish a session, then use any tool:

> auth.login
Login successful (OAuth 1.0 integration)

> catalog.search_products { filters: { name: { value: "%eye drops%", condition: "like" } } }
Found 12 products...

> diagnostics.inventory_salable_report { sku: "PROD-001" }
Qty: 3,805 | In Stock: Yes | Backorders: Enabled

Architecture

src/
  index.ts              # MCP server entry point (McpServer + StdioServerTransport)
  config/index.ts       # Configuration & guardrail defaults
  actions/              # Tool handlers (one file per domain)
    auth.ts
    catalog.ts
    pricing.ts
    promotions.ts
    cms.ts
    seo.ts
    diagnostics.ts
    cache.ts
    scope.ts
  client/
    magentoRest.ts      # REST client with OAuth 1.0 signing
    fastlyClient.ts     # Optional Fastly CDN integration
  session/
    sessionStore.ts     # In-memory session & OAuth credential storage
    planStore.ts        # Two-phase commit plan storage
    idempotencyLedger.ts
  validation/
    schemas.ts          # Zod input schemas for all tools
    guardrails.ts       # Safety checks (bulk caps, price thresholds, confirmations)
  protocol/
    types.ts            # TypeScript interfaces
  audit/
    auditLogger.ts      # Action audit trail (JSONL)

Security

  • No credentials stored on disk — OAuth tokens are passed via environment variables and kept in memory only

  • Magento ACL enforced — the integration's API permissions control what the server can do

  • Guardrails on top — bulk operation caps, price change thresholds, and confirmation requirements provide defense-in-depth

  • Two-phase commit — destructive bulk operations require explicit review and confirmation

  • Audit trail — every action is logged with timestamp, user, parameters, and result

Configuration

Guardrails and limits are configurable in src/config/index.ts:

Setting

Default

Description

maxSkusPerBulkCommit

500

Max products per bulk update

maxCouponQtyPerGeneration

1000

Max coupons per generation

priceChangeThresholdPercent

50

Warning threshold for price changes (%)

maxDiscountPercent

50

Max percent discount without override

allowedCatalogUpdateFields

name, description, status, visibility, ...

Whitelist for bulk catalog updates

Optional: Fastly CDN Integration

For targeted cache purge via Fastly, add these environment variables:

{
  "env": {
    "FASTLY_SERVICE_ID": "your_service_id",
    "FASTLY_API_TOKEN": "your_api_token"
  }
}

License

MIT

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/thomastx05/magento-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server