Mmcp.market

Shopware MCP server

by bnymnDev·io.github.bnymnDev/shopware-mcp·v0.7.0

Query and safely manage a Shopware 6 shop: products, orders, customers, stock, audits, reports.

B83/100grade B
What users say
No reviews yet
Be the first
Safety scan
B83/100

full report

Adoption
Established

44 stars794 downloads/wk

Reviews

Write one

Nobody has reviewed Shopware yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Shopware tools (48, 13 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • 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 parentId to get one level, or by level=1 for the roots. Returns { total, page, limit, items[] }.

  • customer_report

    Customer figures for a period straight from Shopware: new accounts (registered vs guest, by customer group), how many distinct customers ordered, the repeat share (two or more orders in the period), the guest order share and the top customers by gross revenue with their share of the total. compareWithPrevious adds the period of equal length before `from` and the change. Defaults to the last 30 day

  • customer_updatewrite action

    Update account fields of one customer: active flag (an inactive customer cannot log in or order) and/or customer group (e.g. move a B2B account to a net-price group; find group ids with entity_search on customer_group). dryRun=true (default) returns the exact PATCH request without changing anything; call again with dryRun=false to apply. Returns { dryRun, wouldSend } or { dryRun: false, result: <u

  • 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 method. Returns one object.

  • 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 compact summaries with group, order count and last order date. Use customers_get for addresses and payment method. Returns { total, page, limit, items[] }.

  • 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 the document's metadata; the model sees the metadata only. Get the documentId from order_documents_list. Read-only, nothing is marked as sent. Returns { id, type, documentNumber, orderNumber, mimeType, bytes, attachments[] }.

  • 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 own entity schema. Call it without `entity` to list all entity names. Use it to build precise filters for entity_search or the `fields` parameter of other tools. Returns one object.

  • entity_search

    Escape hatch for everything without a dedicated tool: search ANY Shopware entity (e.g. product_manufacturer, property_group, shipping_method, tax, country, newsletter_recipient, product_review, seo_url, cms_page, media) with the same Criteria filters, sort and paging. Use entity_schema first to see the available fields and associations. Credentials and internal fields are always stripped, long val

  • frosh_composer_audit

    Known security advisories for the shop's PHP dependencies, as FroshTools reads them from Composer (cached by the plugin). Use it for 'does the shop run vulnerable packages?'. `error` is set when the plugin could not reach the advisory database; the counts are then not a clean bill. Read-only. Returns { packages, vulnerable, advisories[], cachedAt, error }.

  • frosh_health

    Read FroshTools' server health checks (PHP memory and settings, MySQL configuration, open queue age, overdue scheduled tasks, Composer security advisories, file permissions) and its performance recommendations (worker, caches, logging levels). Each check has a state of ok, info, warning or error with the current and the recommended value. Use it when the question is about the platform rather than

  • frosh_queue

    Read the state of Shopware's message queue through FroshTools: every transport with its size, the age of its oldest message and when a worker was last seen, plus the waiting messages per message class. A growing async queue or a worker last seen hours ago explains stale search indexes, missing thumbnails and unsent mails. Read-only. Returns { transports[], messages[] }.

  • merqo_abandoned_carts

    Search abandoned cart snapshots captured by Merqo Rescue, with customer email, cart value, line items, state and the times of last activity, abandonment and recovery. Use it for 'how much revenue is sitting in abandoned carts this week?'. The cart token is never returned, so recovery links must come from the shop itself. Returns { total, page, limit, items[] }.

  • merqo_einvoice_inbox

    Search incoming supplier e-invoices archived by Merqo Vault, with their EN 16931 validation verdict (valid, warning, error), issuing party, invoice number, date and gross total. Use it for 'which incoming invoices failed validation?'. The archived original file is never returned. Returns { total, page, limit, items[] }.

  • merqo_health

    Read the Merqo Hub status page: compliance traffic lights (e-invoicing out and in, packaging reporting, accessibility statement, AI labelling, review transparency) and operational health (disabled resilience guards, overdue scheduled tasks, message queue depth, admin two-factor coverage). Each entry is ok, warn, critical or neutral, where neutral means the area is not covered by an installed plugi

  • merqo_returns_search

    Search customer returns filed through the Merqo Returns self-service portal, with status, requested and refunded dates, refund total, tracking number and the returned line items. Use it for 'which returns are still open?' or 'what was refunded last month?'. Returns { total, page, limit, items[] }.

  • order_delivery_transitionwrite action

    Move an order's delivery through its state machine: ship (open \u2192 shipped), ship_partially, retour, retour_partially, cancel or reopen, optionally replacing the tracking codes first. Acts on the order's newest delivery unless deliveryId is given. Use it for 'mark order 10042 as shipped with tracking code X'. Shopware rejects transitions that are not allowed from the current state. dryRun=true

  • order_document_createwrite action

    Generate a document for an order with Shopware's own document generator: invoice, delivery_note, credit_note, storno (cancellation invoice) or another installed document type by its technical name. Shopware assigns the document number from its number range and refuses what its rules forbid, for example a storno without an invoice. Nothing is sent to the customer. dryRun=true (default) returns the

  • order_documents_bulk_createwrite action

    Generate one document type for several orders in one request: either the given orderIds, or, by default, the paid, not cancelled orders that have no document of that type yet, oldest first, up to maxOrders. Closes the 'paid orders without an invoice' audit finding. Every order counts as one real write against the write budget, checked before anything is sent. dryRun=true (default) lists the orders

  • order_documents_listwrite action

    List the documents generated for one order: invoices, delivery notes, credit notes and cancellation invoices, with document number, type, creation date and whether they were sent. Use document_download to fetch one as PDF. Returns { orderId, orderNumber, total, items[] }.

  • order_historywrite action

    The state history of one order: every order, payment and delivery transition in chronological order with the previous and new state, the action name and who triggered it (admin user, API integration or the system). Use it for 'what happened to this order and when?'. Orders imported without transitions have an empty history. When there are more transitions than `limit`, the newest ones are kept. Re

  • order_notewrite action

    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 existing note, replace overwrites it. Use it for 'note on 10042: customer called, ships Monday'. dryRun=true (default) returns the request that would be sent; call again with dryRun=false to apply. Returns { dryRun, wouldSend } or { dryRun: false

  • order_state_transitionwrite action

    Move an order through its state machine: process (open \u2192 in_progress), complete (in_progress \u2192 completed), cancel, or reopen (\u2192 open). Shopware rejects transitions that are not allowed from the current state. dryRun=true (default) only returns the request that would be sent; call again with dryRun=false to apply. Returns { dryRun, wouldSend } or { dryRun: false, result: <updated ord

  • order_transaction_transitionwrite action

    Move an order's payment (its newest transaction) through its state machine: paid, paid_partially, remind, process, authorize, cancel, fail, refund, refund_partially, chargeback, reopen or process_unconfirmed. Use it for 'mark order 10042 as paid' once a bank transfer arrived, or 'remind' for an overdue payment (the state changes; whether a mail goes out is decided by the shop's flows). It never mo

  • 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, tracking codes). Use it to answer detailed questions about a single order. Returns one object.

  • orders_search

    Search orders by term (order number, customer name/email) and/or Criteria filters such as stateMachineState.technicalName (open, in_progress, completed, cancelled), transactions.stateMachineState.technicalName (paid, open, ...), orderDateTime ranges or orderCustomer.email. Newest first by default. Returns compact summaries with totals, order/payment/delivery state and customer. Use orders_get for

  • payment_methods_list

    List payment methods with active flag, handler (plugin), availability rule and the sales channels they are assigned to. Filter e.g. active=true or salesChannels.id. Use it for 'which payment methods do we offer?' and to explain why one is missing at checkout. Returns { total, page, limit, items[] }.

  • 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 check whether an extension is installed or outdated. Returns { total, items[] }.

  • product_cover_set

    Give a product a cover image from a public image URL (the shop downloads it) or from base64-encoded image bytes: the media record is created in the product media folder, the file uploaded, attached to the product and set as its cover. Existing pictures stay. Closes the 'products without cover image' audit finding. dryRun=true (default) returns the four requests without changing anything; call agai

  • product_createwrite action

    Create a simple (non-variant) product: name, product number, gross price in the default currency (net is derived from the tax rate), tax (by id, by rate, or the shop's default tax when omitted), stock, and optionally description, EAN, manufacturer and the sales channels it is visible in (without any it exists but is not shown in a storefront). dryRun=true (default) returns the exact POST request w

  • product_updatewrite action

    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 the exact PATCH request without changing anything; call again with dryRun=false to apply. Returns { dryRun, wouldSend } or { dryRun: false, result: <updated product> }.

  • 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 their options, stock and price. Use products_search or stock_get to find the ID first. Returns one object.

  • products_search

    Search products by free-text term and/or Criteria filters (e.g. active, stock, manufacturer.name, categories.id, productNumber). Returns compact product summaries with price, stock, availability, manufacturer, category names and cover image URL. By default only main products are returned; set includeVariants=true to also get variants. Use products_get for the full record of one product. Returns {

  • promotion_createwrite action

    Create a cart promotion with one discount: a name, an optional single code (without a code the discount applies automatically), percentage or absolute value, validity window, redemption limits and the sales channels it runs in (required; use sales_channels_list). Created inactive unless active=true, so it can be reviewed first. dryRun=true (default) returns the exact POST request without changing

  • 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. Returns { dryRun, wouldSend } or { dryRun: false, result: <updated promotion> }.

  • promotions_list

    List promotions (discount campaigns) with code settings, validity window, redemption limits and a summary of their discounts (scope, type, value). Filter by active or code. Returns { total, page, limit, items[] }.

  • review_moderate

    Approve or hide one product review (sets its status; approved reviews are shown in the storefront) and optionally set the shop's public reply comment. dryRun=true (default) returns the exact PATCH request without changing anything; call again with dryRun=false to apply. Returns { dryRun, wouldSend } or { dryRun: false, result: <updated review> }.

  • reviews_search

    Search product reviews with their rating (1-5 points), text, reviewer, product and moderation state. Filter on status (false = awaiting approval), points, productId, product.productNumber or createdAt ranges. Newest first. Adds averagePoints over the whole match. Use review_moderate to approve or hide one. Returns { total, page, limit, averagePoints, items[] }.

  • 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 product belongs to. Returns { total, page, limit, items[] }.

  • 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, payment method, currency and sales channel, a revenue timeline (day/week/month) and the top-selling products. Use it for 'how did we do last month?' questions instead of paging through orders. compareWithPrevious adds the period of equal leng

  • scheduled_tasks_list

    Shopware's scheduled tasks (indexing, cleanups, cache invalidation, plugin jobs) with status, interval, last and next run, and per task whether it is overdue past a grace period, failed, or stuck running for over a day. Many overdue tasks with no recent last run mean the scheduler or message worker is not running, which shows up as stale search results, missing thumbnails and unsent mails. Read-on

  • shipping_methods_list

    List shipping methods with active flag, delivery time, tracking URL pattern, availability rule and the sales channels they are assigned to. Filter e.g. active=true or salesChannels.id. Returns { total, page, limit, items[] }.

  • shop_auditwrite action

    Run a one-shot health check across the shop and return prioritised findings: paid orders not shipped, old unpaid orders, shipped orders never completed, out-of-stock and low-stock products, products without cover image, delivery time or sales channel visibility, expired promotions still active, sales channels in maintenance mode, storefronts missing legal pages (imprint, terms, privacy, revocation

  • shop_info

    Get basic facts about the connected Shopware shop: version, edition (Community/Commercial), default currency and default language, plus whether write tools are enabled on this server. Use it first to orient yourself or to confirm the connection works. Returns one object.

  • shop_settings

    Read the shop's trading settings from Shopware's system configuration, for the whole shop or one sales channel with inheritance: basic information (shop name, contact, legal pages), login and registration (guest checkout, double opt-in, password rules), cart, listing (products per page, sorting, reviews), tax, newsletter, addresses and documents. Only these domains are readable; mail servers, lice

  • stock_forecast

    Which products run out soon, from real sales: units sold per product in the last `days` (cancelled orders excluded), the current available stock, the days of cover at that pace, the date the stock reaches zero and a reorder quantity that keeps it in stock through the horizon plus `restockDays` more days (a negative stock is a backlog and is covered too). Lists the active products whose cover is be

  • 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 with a variants[] list (empty for simple products).

  • stock_set

    Set the stock of one product or variant: either an absolute `stock` or a `delta` (e.g. -3 after a manual sale, +50 after a delivery) applied to the current stock, which is read again at apply time. dryRun=true (default) returns the exact PATCH request without changing anything; call again with dryRun=false to apply. Do not retry a delta call that timed out without reading the stock first. Returns

  • tag_assign

    Add tags to or remove tags from one customer, order or product, by tag name. Names match the shop's tags regardless of case; tags that do not exist yet are created in the same request; other tags on the record stay. Shopware's rules, flows and admin filters work with tags, so 'mark this customer as VIP' or 'flag this order for review' becomes a tag. dryRun=true (default) returns the requests witho

Public scan report

scanner v0.1.5 · 2026-09-19 · same rubric, same numbers if you re-run it

no findings
  • Code scan2 source files scanned25/25
  • Live reliabilityno gateway calls yet and no remote to proben/a
  • Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitystatic API keys via environment variables6/15
  • Maintenancelast push 6 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Overall 83/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

Install directly

Runs npx -y shopware-mcp on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add shopware-mcp -- npx -y shopware-mcp
Add to Cursor

Shopware: common questions

Is Shopware MCP server safe?
Mostly: it is graded B (83/100). Read the Shopware safety report
How do I install Shopware?
It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
Does Shopware need an API key?
Yes. The registry entry asks for SHOPWARE_CLIENT_SECRET.
Is Shopware maintained?
The last commit was 6 days ago (2026-09-13). The latest release is v0.7.0.
What can I use instead of Shopware?
Servers from other publishers that do the same job: HasData Walmart MCP server, WebCake Storefront MCP server and Apiguru Amazon Data MCP server. Compare all Shopware alternatives.

Alternatives to Shopware

Same job from other publishers: the closest match first, then the best rated.

All Shopware alternatives →
  • HasData Walmart
    Walmart search, product pages and customer reviews on walmart.com and walmart.ca, as JSON.
    A
  • WebCake Storefront
    Build pages and manage products, orders, and content on the WebCake/StoreCake storefront builder.
    A
  • Apiguru Amazon Data
    Live Amazon product, review, search, deal, offer/stock and seller data across 20 marketplaces.
    A
  • A1 Yandex KIT MCP
    A1 Yandex KIT MCP server for the Yandex KIT e-commerce API: products, orders, discounts, webhooks.
    B
  • CartScout
    Live product prices, stock, variants and deal ratings from Shopify, Walmart, eBay and more.
    B

More from bnymnDev