MCP server for the Shopware 6 Admin API

Talk to your Shopware shop. Read-only until you say otherwise.

One small server that speaks MCP to Claude, Cursor, VS Code or any other host, and the Admin API to your shop. Stuck orders, last month's numbers, low stock, a launch code, a shipped parcel: one sentence each, with Shopware doing the counting.

$ npx shopware-mcp init
38 tools, 25 of them read-only Every write a dry run first Shopware 6.6 and 6.7 No telemetry MIT
See it work

Real output, replayed.

Every recording is the server's own output against a Shopware 6.7 test shop with generated demo data. Tool calls and results are verbatim, shortened to fit the screen. The prose is what an MCP host says with them.

Animated terminal recording of shopware-mcp answering a question

One question, thirteen checks. Three paid orders wait for shipment, the storefront is in maintenance, a summer promotion outlived August. The answer names order numbers and amounts, and offers the safe next step.

What's in the box

Curated tools, not a thin API wrapper.

Each tool returns compact JSON with exact totals, a description written for a model, and Shopware's own Criteria filters. No invented query language.

Nineteen curated reads

Products, orders and their history, documents, customers, categories, promotions, reviews, payment and shipping methods, plugins, stock, sales channels, trading settings. { term, filter, sort, page, limit } in, { total, items } out.

A health audit

shop_audit runs fifteen checks in one call, from paid-but-unshipped orders and missing invoices to products running out and storefronts missing a legal page. The same audit runs as shopware-mcp audit from cron or CI.

Reports and a forecast

sales_report and customer_report let Shopware aggregate: revenue by channel and state, timelines, top products, new and returning customers, the change against the period before. stock_forecast turns sales velocity into days of cover and reorder quantities.

Thirteen guarded writes

Ship, mark paid, remind, refund, correct stock, note, generate a document, create a product or promotion, give a product a picture, moderate a review, update a customer. Registered only with --allow-write, dry run by default, a write budget on top.

Any entity

entity_schema describes any of the 200+ entities, custom ones included, and entity_search queries them, with Shopware aggregations over the match on request. Secrets scrubbed, credential entities refused, long text truncated.

Plugin-aware

The server detects installed extensions and adds tools for the ones it knows, without touching the plugins: FroshTools for platform health, queue and advisories, Merqo for compliance. Your own pack is one file under src/extensions/.

Doctor and init

shopware-mcp doctor says per tool whether this integration can use it and which privilege is missing. init writes the host config for eight hosts. audit and report print Markdown with exit codes for cron and CI.

Packaged four ways

npm with build provenance, a Docker image on GHCR for amd64 and arm64, a one-click .mcpb bundle for Claude Desktop, and a listing in the official MCP registry.

Ask it anything

You say. The agent calls.

You sayThe agent calls
"Is everything okay with the shop?"shop_audit
"How did we do in August?"sales_report { from, to, interval: "week" }
"Who were our best customers this quarter?"customer_report { from, to, topCustomers: 20 }
"What happened to order 10042, and who did it?"order_history
"Order 10042 shipped with DHL, tracking 00340434."order_delivery_transition { transition: "ship", trackingCodes }
"Send me the invoice for 10042."order_documents_list, then document_download hands over the PDF
"Which reviews are waiting for approval?"reviews_search, or the review_moderation prompt
"Is guest checkout on, and what is the default tax?"shop_settings
"Thumbnails are missing, is the platform okay?"frosh_health and frosh_queue, with FroshTools installed
"What do I need to reorder in the next two weeks?"stock_forecast, or the reorder_list prompt
"Orders per payment method last month, with revenue?"entity_search with a terms aggregation and a nested sum
"Create a 10 % code AUTUMN10 for October."promotion_create, inactive until you say otherwise
"Which manufacturers have no logo?"entity_schema, then entity_search on product_manufacturer
"Which of my tools will fail with this integration?"not a tool: npx shopware-mcp doctor
"Mail me the audit every Monday."not a tool either: shopware-mcp audit --fail-on warning in cron
Safety

A brake on every write.

  • Read-only by default. Without --allow-write the write tools are not registered. An agent cannot discover what it cannot call.
  • Every write is a dry run first. The tools return the exact request they would send. Only an explicit dryRun: false touches the shop, and the result is re-read from Shopware.
  • A write budget. SHOPWARE_MCP_MAX_WRITES=20 refuses the twenty-first real write of a process. No prompt can lift it.
  • Narrow writes, nothing deletes. The transition tools only move state machines; nothing moves money. Promotions are created inactive. There is no delete tool.
  • No secrets anywhere. Credentials never appear in output, logs or errors. entity_search scrubs passwords, keys and tokens and refuses entities that hold credentials.
  • No telemetry. The server talks to your shop and to your host. Nothing else.
60 seconds

Three steps, one of them optional.

Create an Integration in your Shopware admin under Settings → System → Integrations. Copy the access key and the secret; for production give it a read role.
Run the wizard. npx shopware-mcp init asks for URL, key and secret, tests them against the shop and prints or writes the host configuration.
Ask a question. Or run npx shopware-mcp doctor first to see which tools this integration can use and what is missing.

Download shopware-mcp.mcpb from the latest release and double-click it, or add this to claude_desktop_config.json (npx shopware-mcp init --for claude-desktop --write does it for you):

{
  "mcpServers": {
    "shopware": {
      "command": "npx",
      "args": ["-y", "shopware-mcp"],
      "env": {
        "SHOPWARE_URL": "https://shop.example.com",
        "SHOPWARE_CLIENT_ID": "SWIA...",
        "SHOPWARE_CLIENT_SECRET": "..."
      }
    }
  }
}