PHPackages                             wiswes/shopware-mcp - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. wiswes/shopware-mcp

ActiveShopware-platform-plugin[Utility &amp; Helpers](/categories/utility)

wiswes/shopware-mcp
===================

WisWes chat widget integration for Shopware 6 — one-click connect, storefront script injection, PHP MCP endpoints (cart, catalog, checkout, orders), admin status page

00PHP

Since May 9Pushed 1mo agoCompare

[ Source](https://github.com/wiswes/shopware)[ Packagist](https://packagist.org/packages/wiswes/shopware-mcp)[ RSS](/packages/wiswes-shopware-mcp/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependenciesVersions (1)Used By (0)

WisWes Chat Widget — Shopware 6 Plugin
======================================

[](#wiswes-chat-widget--shopware-6-plugin)

One-click install of the [WisWes](https://app.wiswes.com) AI shopping-assistant chat widget on a Shopware 6 storefront. The widget guides shoppers from product discovery through cart to checkout via natural-language conversation, backed by your store's live catalog.

What this plugin gives you
--------------------------

[](#what-this-plugin-gives-you)

CapabilityStatus**Storefront chat widget**✅ injected automatically on every page (driven by Shopware system\_config — no Twig editing)**One-click "Install with WisWes" button** in Shopware admin✅ Settings → Plugins → WisWes**PHP-side MCP tool surface** that the WisWes chat backend calls into✅ 13 endpoints under `/wiswes/_mcp/*`, bearer-token authed**Cart tools** — `cart_info` `cart_add` `cart_update` `cart_remove`✅**Catalog tools** — `product_filter` `product_get` `category_list` `product_filter_options`✅**Checkout tools** (guest flow) — `payment_methods` `shipping_methods` `set_address` `place_order`✅**Sales tools** — `order_info` (guest order lookup by order# + email)✅**Admin push-catalog button** (replaces external indexer with merchant-side sync)🚧 roadmapThe plugin is structurally aligned with the [WisWes Magento extension](https://github.com/wiswes/magento) — same install button, same MCP tool surface, same merchant UX. The implementations differ because Magento has gaps in its native API that Shopware's Store API already fills, but the contract chat\_agent talks to is identical.

Requirements
------------

[](#requirements)

- Shopware **6.5** or **6.6**
- A merchant account at **app.wiswes.com** (the install button auto-creates one if your shop's hostname doesn't match an existing tenant)
- Outbound HTTPS access from your Shopware server to `https://app.wiswes.com`
- Inbound HTTPS access from `app.wiswes.com` to your storefront — chat\_agent calls back into `/wiswes/_mcp/*` to operate the cart/catalog/checkout

Install
-------

[](#install)

From your Shopware project root:

```
composer require wiswes/shopware-mcp
bin/console plugin:refresh
bin/console plugin:install --activate WiswesWidget
bin/console cache:clear
bin/build-administration.sh    # rebuilds the Vue admin so the WisWes module shows up
```

Connect (one click)
-------------------

[](#connect-one-click)

1. Open your Shopware admin → **Settings → Plugins → WisWes**.
2. Confirm your shop's URL (auto-filled from the current admin host).
3. Enter your email — used as the contact for the auto-provisioned WisWes tenant.
4. Click **Install with WisWes**.

That's it. The widget appears on your storefront within a minute. Behind the scenes the plugin:

1. Calls chat\_agent's install endpoint with the shop URL and your email.
2. Receives back a `widget_token` + per-tenant `mcp_secret` + `tenant_slug`.
3. Persists all three into Shopware's `system_config` (under the `WiswesWidget.config.*` namespace) so they survive cache clears + restarts.
4. The `WidgetInjectionSubscriber` reads them on every storefront render and injects the `` tag.
5. chat\_agent uses the same `mcp_secret` as a bearer token whenever the LLM needs to call back into your storefront's tool surface.

Disconnect
----------

[](#disconnect)

Same admin page → **Disconnect** button. Stops the storefront from loading the widget. Your WisWes tenant on app.wiswes.com is preserved (so re-installing later restores conversation history); only the local Shopware credentials are cleared.

Architecture
------------

[](#architecture)

```
                      ┌─────────────────────────────────────────┐
   Shopper            │     app.wiswes.com (chat_agent)         │
   in browser  ──────▶│  - LLM picks a tool                      │
       │              │  - HTTP POST + Bearer mcp_secret to ─┐   │
       │              │                                      │   │
       │              └──────────────────────────────────────┼───┘
       │                                                     │
       │  storefront with embed.js loaded                    │
       │                                                     ▼
   ┌──────────────────────────────────────────────────────────┐
   │  Your Shopware (this plugin)                              │
   │  ─────────────────────────────────────────                │
   │  /wiswes/_mcp/cart/{info,add,update,remove}               │
   │  /wiswes/_mcp/catalog/{product_filter,product_get,...}    │
   │  /wiswes/_mcp/checkout/{payment_methods,...}              │
   │  /wiswes/_mcp/sales/order_info                            │
   │                                                            │
   │  Each route → BearerTokenSubscriber gate →                 │
   │              Symfony controller → Shopware Store API       │
   │              services (CartService, ProductListingRoute,  │
   │              CartOrderRoute, etc.)                         │
   └────────────────────────────────────────────────────────────┘

```

File map
--------

[](#file-map)

PathPurpose`src/Resources/config/services.xml`DI registration for all controllers + the bearer-auth subscriber`src/Resources/config/routes.xml`Imports `Controller/Admin` + `Controller/Mcp` annotated routes`src/Resources/config/config.xml`system\_config schema (chatAgentBaseUrl, widgetToken, tenantSlug, tenantSecret, injectOnStorefront)`src/Service/ConfigReader.php`Wraps `SystemConfigService` so callers don't drift on the `WiswesWidget.config.*` key prefix`src/Storefront/Subscriber/WidgetInjectionSubscriber.php`StorefrontRenderEvent listener that puts widget config on the render context`src/Resources/views/storefront/base.html.twig`Renders `` from the subscriber-set parameters`src/Controller/Admin/InstallController.php`Backs the "Install with WisWes" / "Disconnect" admin buttons. Routes: `/api/_action/wiswes/{status,install,disconnect}``src/Mcp/Http/BearerTokenSubscriber.php`kernel.controller listener that 401s any `/wiswes/_mcp/*` request without a matching `tenantSecret``src/Controller/Mcp/CartController.php`4 cart routes — info / add / update / remove`src/Controller/Mcp/CatalogController.php`4 catalog routes — product\_filter / product\_get / category\_list / product\_filter\_options`src/Controller/Mcp/CheckoutController.php`4 checkout routes — payment\_methods / shipping\_methods / set\_address / place\_order`src/Controller/Mcp/SalesController.php`1 sales route — order\_info`src/Resources/app/administration/src/module/wiswes-widget/`Vue admin module — single page with status display + install/disconnect buttonsRoadmap
-------

[](#roadmap)

- **Push catalog from admin** — admin button to push the merchant's product catalog into chat\_agent's per-tenant Qdrant collection (replaces the external Python indexer with a merchant-controlled action).
- **Customer-aware tools** — currently guests-only; once the WisWes app's customer-context flow is settled we'll expose `customer_info`, `order_history`, etc. for logged-in shoppers.
- **Marketplace listing** — submit to the Shopware Store once Phase 7's push service lands and a few merchants have run on production.

License
-------

[](#license)

MIT — see [LICENSE](./LICENSE).

###  Health Score

19

—

LowBetter than 10% of packages

Maintenance61

Regular maintenance activity

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/be87c0248c3d921d32c3d8da489f5f64679fdc65e9dede367f37a8b13690fc71?d=identicon)[wiswes](/maintainers/wiswes)

---

Top Contributors

[![wiswes](https://avatars.githubusercontent.com/u/281742876?v=4)](https://github.com/wiswes "wiswes (2 commits)")

### Embed Badge

![Health badge](/badges/wiswes-shopware-mcp/health.svg)

```
[![Health](https://phpackages.com/badges/wiswes-shopware-mcp/health.svg)](https://phpackages.com/packages/wiswes-shopware-mcp)
```

###  Alternatives

[viget/craft-video-embed

Generate an embed URL from a YouTube or Vimeo URL

2466.6k](/packages/viget-craft-video-embed)[netgen/layouts-ui

Netgen Layouts user interface

17112.7k4](/packages/netgen-layouts-ui)[dashifen/wp-handler

An object to define handlers for various WordPress action and filter hooks using protected methods.

205.5k5](/packages/dashifen-wp-handler)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
