# shopware-mcp

MCP server for the Shopware 6 Admin API. Read-only by default, guarded writes with dry-run.

- **Type:** MCP server
- **Trust:** 85/100 (A), scored on the package rubric
- **Verification:** verified (build provenance)
- **Version:** 0.2.1
- **Author:** Unknown
- **License:** MIT
- **npm:** shopware-mcp
- **Source:** https://github.com/bnymnDev/shopware-mcp
- **Compatible clients:** claude-code, cursor, copilot, gemini (basis: transport)

## Trust

85/100 (A), scored on the package rubric
- Publisher verified: no
- Build provenance: verified attestation
- npm trusted publishing (OIDC): yes
- Install scripts: nothing suspicious found
- Prompt-injection scan: not run
- Obfuscation scan: not run
- Evidence age: 0 days

## Security scan

- **Status:** clean
- **Scanned:** 2026-09-05T22:52:06.494Z
- **Version scanned:** 0.3.0
- **CVEs:** none found by OSV at scan time

## Tools

30 declared. Statically extracted from the shipped source — a floor on the surface, not a census.
- `orders_search` — Search orders by term (order number, customer name/email) and/or Criteria filters such as stateMachineState.technicalName (open, in_progress, completed, cancell
- `orders_get` — Get one order by ID or order number with line items, billing/shipping addresses, transactions (payment method and state) and deliveries (shipping method, tracki
- `order_state_transition` — Move an order through its state machine: process (open → in_progress), complete (in_progress → completed), cancel, or reopen (→ open). Shopware rejects transiti
- `order_delivery_transition`
- `order_transaction_transition`
- `order_note` — Write an internal note on an order (Shopware's internal comment, shown in the admin, never to the customer). append (default) adds a dated line below the existi
- `plugins_list` — List installed plugins and apps with version, active/installed state and the available upgrade version (when the shop can reach the Shopware store). Use it to c
- `products_search` — Search products by free-text term and/or Criteria filters (e.g. active, stock, manufacturer.name, categories.id, productNumber). Returns compact product summari
- `products_get` — Get one product by ID with everything an agent usually needs: description, price, stock, tax, manufacturer, categories, properties, media and all variants with 
- `product_update` — Update basic fields of one product: name, description, active flag and/or price for one currency. Only these fields are supported. dryRun=true (default) returns
- `promotions_list` — List promotions (discount campaigns) with code settings, validity window, redemption limits and a summary of their discounts (scope, type, value). Filter by act
- `promotion_toggle` — Activate or deactivate one promotion. dryRun=true (default) returns the exact PATCH request without changing anything; call again with dryRun=false to apply. Re
- `sales_channels_list` — List sales channels (storefronts, headless APIs, marketplaces) with their type, domains and active flag. Use it to find the sales channel or domain an order or 
- `shop_info` — Get basic facts about the connected Shopware shop: version, edition (Community/Commercial), default currency and default language, plus whether write tools are 
- `shop_audit`
- `categories_list` — List categories as a flat list with parentId and level so you can rebuild the tree. Each item includes productCount (directly assigned products). Filter by pare
- `customers_search` — Search customers by term (name, email, customer number) and/or Criteria filters such as email, active, guest, group.name or lastOrderDate ranges. Returns compac
- `customers_get` — Get one customer by ID, customer number or email, including all addresses (with default billing/shipping flags), customer group, default and last used payment m
- `order_documents_list` — List the documents generated for one order: invoices, delivery notes, credit notes and cancellation invoices, with document number, type, creation date and whet
- `document_download` — Fetch one order document (invoice, delivery note, credit note, cancellation invoice) as a PDF. The file is returned to the host as an embedded resource next to 
- `order_document_create`
- `entity_search`
- `entity_schema` — Describe a Shopware entity: its fields (name, type, flags such as required/translatable) and associations (name, relation, target entity), taken from the shop's
- `sales_report` — Aggregate sales figures for a period straight from Shopware: order count, gross/net revenue, average order value, breakdowns by order/payment/delivery state, pa
- `stock_get` — Get stock and available stock for one product by ID or product number, including every variant. Use it for 'how many X are left?' questions. Returns one object 
- `stock_set` — Set the absolute stock of one product or variant. dryRun=true (default) returns the exact PATCH request without changing anything; call again with dryRun=false 
- `merqo_health` — Read the Merqo Hub status page: compliance traffic lights (e-invoicing out and in, packaging reporting, accessibility statement, AI labelling, review transparen
- `merqo_einvoice_inbox`
- `merqo_returns_search`
- `merqo_abandoned_carts`

## Install

**Verdict: install** — No blocking findings and no open coverage gaps — safe to install as configured.
**Config** (claude-code):
```json
"{\n  \"mcpServers\": {\n    \"shopware\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"shopware-mcp\"\n      ],\n      \"env\": {\n        \"SHOPWARE_CLIENT_SECRET\": \"<YOUR_SHOPWARE_CLIENT_SECRET>\"\n      }\n    }\n  }\n}"
```
**Credentials it will ask for** (names only — Forge never holds a value):
- `SHOPWARE_CLIENT_SECRET` — Shopware Client Secret (required)
Placeholders only. Forge never holds, brokers, or transmits a credential value — replace each <YOUR_NAME> in your own config file. Do not send a value back to Forge; no Forge endpoint accepts one.
- This entry needs 1 credential (1 required). The generated config carries placeholders, so it will fail in the editor rather than at runtime if they are left unset.

## Blast radius

Moderate blast radius — holds an oauth grant; runs on your machine.
- Floor 28, ceiling 28 (tier: moderate)
- This is impact, not likelihood. A high radius is not a defect: a filesystem server is supposed to write files. It is never part of the trust score.

## Machine-readable views of this entry

- Signed JSON: https://forgeregistry.com/api/v1/packages/shopware-mcp
- Install plan: https://forgeregistry.com/api/v1/packages/shopware-mcp/install-plan
- Alternatives: https://forgeregistry.com/api/v1/alternatives/shopware-mcp
- HTML page: https://forgeregistry.com/registry/shopware-mcp
- MCP: POST https://forgeregistry.com/api/mcp → `forge_get_package` / `forge_install_plan`

## About this document

Generated by Forge (https://forgeregistry.com) — a compact rendering of the same record served, signed, at the JSON URL above. Trust and scan facts are the registry's own measurements; anything Forge did not measure is named as unmeasured rather than omitted.
