Skip to content
Agentmart
Submit a tool

Shopware MCP

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

Connector by bnymnDev · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 37
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/bnymndev-shopware-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

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

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
24 read · 20 write · 1 delete · 6 not yet classified
Secrets
1 (API keys, tokens or passwords)
Install scripts
None found
Runs as
Node.js package

Tools by what they do 51

Read from the source code; the running server may list different tools.

Read 24 · Look things up without changing anything.

  • categories_list
  • customers_get
  • customers_search
  • entity_schema
  • entity_search
  • frosh_composer_audit
  • frosh_health
  • frosh_queue
  • merqo_abandoned_carts
  • merqo_einvoice_inbox
  • merqo_health
  • merqo_returns_search
Show 12 more tools
  • payment_methods_list
  • plugins_list
  • products_get
  • products_search
  • promotions_list
  • reviews_search
  • sales_channels_list
  • shipping_methods_list
  • shop_info
  • shop_settings
  • stock_forecast
  • stock_get

Write 20 · Create, change, send or run things.

  • checkout_simulate
  • customer_update
  • document_download
  • order_delivery_transition
  • order_document_create
  • order_documents_bulk_create
  • order_documents_list
  • order_history
  • order_note
  • order_state_transition
  • order_transaction_transition
  • orders_get
Show 8 more tools
  • orders_search
  • product_cover_set
  • product_create
  • product_update
  • promotion_create
  • promotion_toggle
  • scheduled_tasks_list
  • stock_set

Delete 1 · Delete, drop, revoke or wipe things.

  • tag_assign

Not yet classified 6 · We could not tell from the name and description.

  • customer_report
  • review_moderate
  • sales_report
  • shop_audit
  • shop_pulse
  • storefront_search

Secrets and settings it asks for

Secrets: values you paste in that let it act as you.

  • SHOPWARE_CLIENT_SECRET

Other settings (environment variables or headers).

  • SHOPWARE_CLIENT_ID
  • SHOPWARE_MCP_ALLOW_WRITE
  • SHOPWARE_URL

Network hosts it talks to 5

  • biomejs.dev · found in code
  • fadel.com · found in code
  • github.com · found in code
  • raw.githubusercontent.com · found in code
  • unpkg.com · found in code

Files it touches

  • Your home directory (~)

Tools (51)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • categories_listList categories

    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[] }.

  • checkout_simulateSimulate a checkout

    See the checkout the way a customer does: puts products (and promotion codes) into a throwaway cart of a sales channel through Shopware's own Store API, as a guest shipping to a country or as a given customer with their group, prices and rules, and returns what Shopware calculates: prices per item next to the listing price, discounts, shipping, taxes, total, which payment and shipping methods the customer is offered, which are hidden and by which rule, and every cart error with a plain explanation (country not assigned, code expired, product not visible, stock). Nothing is ordered and the cart…

  • customer_reportCustomer 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 days, cancelled orders excluded. Returns one object.

  • customer_updateUpdate customer (guarded)

    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: <updated customer> }.

  • customers_getGet customer

    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_searchSearch customers

    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_downloadDownload document PDF

    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_schemaEntity 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_searchSearch any entity

    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 values such as stored files are truncated, and entities holding secrets (users, integrations, system config) are blocked. Prefer the dedicated tools when one exists. `aggregations` asks Shopware to count…

  • frosh_composer_auditFroshTools dependency advisories

    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_healthFroshTools health and performance checks

    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 the shop's data. Read-only. Returns one object.

  • frosh_queueFroshTools message queue status

    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_cartsMerqo 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_inboxMerqo incoming e-invoices

    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_healthMerqo compliance and health status

    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 plugin. Use it to answer 'is the shop compliant and healthy?' in one call. Read-only. Returns one object.

Show 36 more tools
  • merqo_returns_searchMerqo returns

    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_transitionTransition delivery state (guarded)

    Move an order's delivery through its state machine: ship (open → 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 (default) returns every request that would be sent; call again with dryRun=false to apply. Returns { dryRun, wouldSend } or { dryRun: false, result: <updated order> }.

  • order_document_createCreate order document (guarded)

    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 request that would be sent; call again with dryRun=false to apply. Returns { dryRun, wouldSend } or { dryRun: false, result: <document> }.

  • order_documents_bulk_createCreate documents for many orders (guarded)

    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 and the request; to apply, call again with the dry run's `apply` arguments (the same orderIds and dryRun: false) so the orders invoiced are the ones shown. Returns { dryRun: true, matching, orders[],…

  • order_documents_listList order documents

    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_historyOrder history

    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. Returns { orderId, orderNumber, orderDate, total, entries[], note? }.

  • order_noteAdd internal order note (guarded)

    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, result: { orderId, orderNumber, internalComment } }.

  • order_state_transitionTransition order state (guarded)

    Move an order through its state machine: process (open → in_progress), complete (in_progress → completed), cancel, or reopen (→ 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 order> }.

  • order_transaction_transitionTransition payment state (guarded)

    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 moves money. Shopware rejects transitions that are not allowed from the current state. dryRun=true (default) returns the request that would be sent; call again with dryRun=false to apply. Returns { dryR…

  • orders_getGet order

    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_searchSearch orders

    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 line items and addresses. Returns { total, page, limit, items[] }.

  • payment_methods_listList payment methods

    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_listList plugins and apps

    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_setSet product cover image (guarded)

    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 again with dryRun=false to apply. Returns { dryRun, wouldSend[] } or { dryRun: false, result: <updated product> }.

  • product_createCreate product (guarded)

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

  • product_updateUpdate product (guarded)

    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_getGet product

    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_searchSearch products

    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 { total, page, limit, items[] }.

  • promotion_createCreate promotion (guarded)

    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 anything; call again with dryRun=false to apply. Returns { dryRun, wouldSend } or { dryRun: false, result: <new promotion> }.

  • promotion_toggleToggle promotion (guarded)

    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_listList promotions

    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_moderateModerate review (guarded)

    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_searchSearch product reviews

    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_listList sales channels

    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_reportSales 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 length before `from` and the change in orders and revenue. Defaults to the last 30 days, cancelled orders excluded. Returns one object.

  • scheduled_tasks_listScheduled tasks

    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-only. Returns { total, summary: { byStatus, overdue, failed, stuck, longestOverdueMinutes, lastRun }, tasks[], problems[], truncated }.

  • shipping_methods_listList shipping methods

    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_auditShop health audit

    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, shipping), reviews awaiting moderation, scheduled tasks overdue or failed, and extensions with pending updates. Each finding has a severity, total count, sample items and a hint. Also reports which …

  • shop_infoShop 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_pulseShop pulse

    How is the shop doing right now? Orders and revenue since local midnight next to the same hours of the same weekday in previous weeks, the last order, and how unusual the current quiet spell is: the orders the same stretch brought in earlier weeks and the chance of seeing none by accident (a Poisson estimate). 'unusual' means the checkout, payment or storefront may be broken; follow up with checkout_simulate. Also compares today's failed or cancelled payments with their usual share. Read-only. Returns { today, typical, change, lastOrder, silence, payments, history[] }.

  • shop_settingsShop 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, licences and plugin secrets are not, and credential-like keys are dropped. Use it for 'is guest checkout on?' or 'what is the default tax?'. Returns { salesChannelId, inherited, settings: { <domain>: { ke…

  • stock_forecastStock 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 below `horizon` days, soonest first. Products without sales in the window are never listed. Use it for 'what do I need to reorder?'. Returns { window, horizon, restockDays, total, items[], notes? }.

  • stock_getGet stock

    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_setSet stock (guarded)

    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 { dryRun, wouldSend } or { dryRun: false, result: <product stock> }.

  • storefront_searchSearch like a customer

    Run a search in a sales channel exactly as a customer would, through Shopware's Store API: same visibility, stock and closeout rules, same ranking and prices. Optionally explain one product: its position in the results, or why it does not show up (inactive, not visible in the channel, link-only visibility, closeout without stock, not in the search index, no search keyword matching the term). Read-only. Returns { salesChannel, term, total, items[], explain? }.

  • tag_assignAssign tags (guarded)

    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 without changing anything; call again with dryRun=false to apply. Counts as one write. Returns { dryRun: true, wouldSend[], unchanged } or { dryRun: false, result: { entity, id, tags[] } }.

Signals

Stars
37
Forks
5
Open issues
0
Last commit
Sep 27, 2026 (1 month ago)
Last release
Sep 27, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026).

Details

Registry name
io.github.bnymnDev/shopware-mcp
Version
0.8.0
Auth
API key
Packages
npm shopware-mcp
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 25, 2026
Cite this page

Shopware MCP. Agent Mart. https://agentmart.dev/connectors/bnymndev-shopware-mcp (last updated 2026-10-25)