shopware-mcp について
shopware-mcp は、Shopware 6 ショップ向けの MCP サーバーです。商品、注文、顧客、在庫、レポート、監査を照会・管理できます。ショップ運営者や開発者を対象とし、既定では読み取り専用です。書き込みは試行実行で送信内容を先に確認できます。
主な機能
- 01主要なショップエンティティを扱う厳選ツール
- 02ゲストや顧客としてのチェックアウト模擬
- 0317 項目のショップ監査
- 04売上・顧客レポートと在庫予測
- 05既定で読み取り専用、書き込みは専用フラグで有効化
活用シーン
- 01注文状況と売上概況の一括確認
- 02チェックアウトエラーや商品非表示の原因調査
- 03cron や CI からの定期的なショップ監査
MCP 対応
MCP ホストに対してショップ関連のツールを公開する MCP サーバーです。Shopware Admin API を通じてショップのデータにアクセスします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y shopware-mcpSHOPWARE_URLShop base URL, e.g. https://shop.example.comSHOPWARE_CLIENT_IDIntegration access key IDSHOPWARE_CLIENT_SECRETシークレットIntegration secret access keySHOPWARE_MCP_ALLOW_WRITESet to true to register the guarded write toolsローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
29掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
理由 · デモ · インストール · ツール · 安全性 · ドキュメント · ウェブサイト · ドイツ語
shopware-mcp のご紹介
Shopware 6 のショップでは、約二百のエンティティが一つの Admin API の背後にあります。アシスタントに「ショップの状態に問題はありませんか?」と尋ねても、正直に答えるには Criteria フィルターを使った検索が七回、技術名による三つのステートマシンの確認、いくつかの集計、そして決してあなたに返してはならない OAuth トークンが必要です。モデルを API に直接接続すれば、すべてにアクセスできてしまいます。その中には、プロンプトに書かれていたからという理由で価格を PATCH する権限まで含まれます。
Model Context Protocol によって、「モデルに実際のツールを使わせる」ことは設定を一行変更するだけで実現できるようになりました。しかし、ショップにとって優れたツールとは何かについては何も定めていません。二百のエンティティのうち火曜日の朝に重要なものは何か、「注文が停滞している」とはどういう状態なのか、在庫調整を送信する前に表示すべきことなどです。
shopware-mcp はその層です。 ホストとは MCP で、ショップとは Admin API で通信する小さなサーバーです。Shopware に精通しているため、管理画面で午後いっぱいかかっていた作業を一度の呼び出しで済ませられます。また、注文が来なくなったことにも気づき、原因を探るために顧客と同じ方法でチェックアウトを試します:
| 厳選されたツール | 商品、注文とその履歴、ドキュメント、顧客、カテゴリ、プロモーション、レビュー、決済方法と配送方法、プラグイン、在庫、販売チャネル、スケジュールタスク、ショップの取引設定に対応する、厳選された20個のツールです。正確な合計値、モデル向けに書かれた説明、Shopware 独自の Criteria フィルターを含む、簡潔な JSON を返します。独自のクエリ言語は必要ありません。 |
| 顧客の視点 | checkout_simulate は、Shopware 独自の Store API を使って、商品やコードを使い捨てのカートに追加します。どこへでも配送できるゲストとして、またはグループ、価格、ルールが適用された特定の顧客として試せます。チャネルが配送していない国、期限切れのコード、ルールによって非表示になっている決済方法、バリエーションが必要な親商品、そのチャネルにログインできない顧客など、カート内のエラーをすべてわかりやすい言葉で説明します。storefront_search は顧客と同じように検索し、商品が表示されない理由を説明します。注文は作成されず、カートは削除されます。 |
| 動向の把握 | shop_pulse は今日の状況を、直近数週間における同じ曜日の同じ時間帯と比較し、現在の注文が少ない期間を評価します。その時間帯に通常何件の注文があり、偶然注文がゼロになる可能性がどれくらいあるかを示します。「いつもは3~7件あるのに、6時間注文がない」なら、日曜の閑散期ではなく、チェックアウトの障害です。 |
| 監査 | shop_audit は1回の呼び出しで17項目をチェックします。通常より注文が極端に減っているチェックアウト、支払い済みなのに発送されていない、または請求書が発行されていない注文、未払いのまま長期間放置された注文、発送済みなのに完了していない注文、在庫切れの商品、現在の販売ペースでは在庫がなくなる商品、カバー画像がない商品、配送時間が設定されていない商品、すべての販売チャネルで非表示の商品、終了日を過ぎたプロモーション、メンテナンス中のチャネル、法的情報ページがないストアフロント、モデレーション待ちのレビュー、実行が止まったスケジュールタスク、アップデート待ちの拡張機能、インストール済みの拡張機能で対応できていると思われる EU の義務を確認します。優先順位を付け、検出事項ごとにサンプルとヒントを提示します。同じ監査は、MCP ホストなしで cron や CI から shopware-mcp audit として実行できます。 |
| レポートと予測 | sales_report は Shopware に集計を依頼します。総額、純額、平均注文額、通貨別およびチャネル別の売上、ステータス別の注文数、日/週/月単位のタイムライン、売上上位の商品を確認でき、必要に応じて前の期間との変化も表示します。customer_report は顧客について同様に集計します。新規アカウント数、ゲストの割合、リピーターの割合、売上上位の顧客を確認できます。stock_forecast は販売ペースと在庫から、在庫がもつ日数、在庫切れになる日、発注数量を算出します。数値は同じデータベース上の SQL と照合済みです。 |
| 緊急時の手段 | --allow-write を指定して起動しない限り、読み取り専用です。指定しても、すべての書き込みはドライランとして実行され、まず正確なリクエストを表示します。また、プロセスが実行できる実際の書き込み回数は、書き込み上限で制限できます。発送、支払い済みへの変更、リマインダー送信、返金、在庫の修正、メモの追加、ドキュメントの生成、商品やプロモーションの作成、商品への画像追加、レビューのモデレーション、顧客の更新、50件の注文への一括請求書発行、レコードへのタグ付けなど、対象を限定した15種類の書き込みのみを行い、それ以外は一切行いません。シークレットが出力、ログ、エラーに含まれることはありません。 |
動作を見る
注文がない6時間と、その理由。 日曜日の夜。パルスは、注文が常に3~7件あった過去8回の日曜日の同じ時間帯と静けさを比較し、偶然である可能性を約170分の1と算出します。続いてエージェントは、顧客のように商品を購入しようとし、ストアフロントがメンテナンスモードであることを見つけます。注文も変更も行われていません。
顧客が見るチェックアウト。 スイスの顧客が、コードが使えないと伝えます。Shopware独自のStore APIを通じて一時的なカートを作成すると、両方の問題が一度に明らかになります。そのチャネルではスイスが対象国ではなく、コードのプロモーションは8月に終了していました。続いて検索で、商品が表示されない理由も明らかになります。
毎朝、1ページ。 shopware-mcp brief --html brief.html を実行すると、パルス、監査、直近7日間の情報を、外部から何も読み込まず、読者のダークモードにも対応した自己完結型の1ページとして出力します。cronから実行し、--slack を指定するとチャンネルに1段落の要約を投稿できます。
実物を見る。
最小権限を1つのコマンドで。 shopware-mcp setup は管理者として一度ログインし、実際のショップで測定した、ツールに必要な権限だけを持つロールと、管理者ではないインテグレーションを作成します。権限は推測ではありません。シークレットは一度だけ表示し、両方を検証して、ホスト設定を出力します。アップグレード後に再度実行すると、キーをそのまま維持しながらロールを最新の状態に更新します。
音声なしの30秒動画:ウェブサイトで見るか、MP4を開く。docs/video/からレンダリングされています。
このページに掲載されている録画はすべて、デモ用データを生成したShopware
6.7.13のテストショップに対するサーバーの実際の出力を、docs/demo/内のトランスクリプトから再生したものです。ツールの呼び出しと結果は原文のまま、画面に収まるよう短縮しています。文章は、MCPホストがそれらを使って生成したものです。
質問1つ、呼び出し1回。 支払い済みの注文3件がまだ出荷待ちで、ストアフロントはメンテナンス中、夏のプロモーションは8月を過ぎても有効なままです。回答では注文番号と金額を示し、安全な次の手順を提案します。
ショップ自身が計算した数値です。 合計、チャネル、状態、月ごとの タイムライン、8か月間のトップ商品を、1回の呼び出しで取得できます。注文を 1件ずつ確認する必要はありません。Shopware の集計機能が処理します。
そのためのツールがない? スキーマを使えます。 メーカー専用の
ツールはありません。エージェントはエンティティのスキーマを読み取り、
mediaId を見つけて、それを使って絞り込みます。同じ方法で、カスタム
エンティティも含め、ほかのすべてのエンティティにアクセスできます。
書き込み内容は、実行前に確認できます。 --allow-write を指定すると、
在庫修正では、実際に送信する予定のリクエストが返されます。明示的に
dryRun: false を指定した場合のみショップが変更され、結果は Shopware から再取得されます。
出荷してから、その結果を確認できます。 配送ステータスの変更は2つの リクエストで行われ、送信前に表示されます。まず配送に追跡コードを設定し、 次に状態を変更します。その後、注文の履歴には変更内容、状態、実行者が記録されます。
ひとこと伝えるだけで、商品と発売コードを作成できます。 product_create は
ショップのデフォルト税率を選び、正味価格を算出して、ドライランでその内容を
示します。プロモーションは無効な状態で作成されるため、確認前にコードが
公開されることはありません。
返信も含めたレビューのモデレーションです。 2件のレビューが承認待ちです。 スパムは非表示のままにし、苦情にはショップからの公開返信を添えて承認します。 モデルが管理画面を操作する必要はありません。
売上だけでなく、お客様も把握できます。 グループ別の新規アカウント数、 注文したお客様の数と再訪したお客様の数、ゲストの割合、期間内の売上に占める 割合を添えた上位のお客様を、前の期間との比較とともに確認できます。
プラグインが増えるほど、エージェントの機能も広がります。 コアツールは すぐに利用できます。拡張機能の検索はバックグラウンドで完了し、4つのツールが 追加されると、ホストにリストの更新を通知します。これでコンプライアンスに関する 質問にも回答できます。
在庫が危機に陥る前に再発注できます。 stock_forecast は1回の集計で
6か月分の注文明細を読み込み、現在の在庫と照合します。そして商品ごとに、
在庫があと何日分あるか、いつゼロになるか、どれだけ発注すべきかを示します。
このうち9商品はすでに在庫切れを起こしており、今日はまだ問題のない2商品も、
10月には在庫切れになる見込みです。
同じ監査を、ホストなしで。 shopware-mcp audit は結果を Markdown で出力し、重大な問題がある場合はゼロ以外の終了コードで終了します(--fail-on warning を指定すると、何か問題があれば終了します)。cron に登録してメールを確認することも、CI に組み込んでジョブを失敗させることもできます。数値については shopware-mcp report でも同じことができます。
運用プラグインを導入したショップには、運用エージェントを。 FroshTools は、多くの Shopware ホスティング事業者がインストールするオープンソースのツールボックスです。これがあると、プラットフォームのヘルスチェック、ワーカーを含むメッセージキュー、依存関係のアドバイザリーという3つのツールが追加されます。エージェントは、検索結果が古いのか、ワーカーが停止しているのかを見分けます。
56件の請求書を、3件ずつ。 order_documents_bulk_create は、請求書がまだ作成されていない支払い済み注文を古い順に見つけ、作成する前に実行されるリクエストを1つ表示します。各注文は書き込み予算に計上されます。次に scheduled_tasks_list が、バックログがどのように増えたのかを説明します。33件中31件のタスクが期限超過で、一度も実行されておらず、スケジューラーも動作していません。tag_assign は、その過程でタグを作成し、チーム用に注文へ割り当てます。
エージェントが気づく前に把握しましょう。 shopware-mcp doctor は、連携が読み取り可能な項目を調べ、可能な場合はロールの書き込み権限を確認し、ツールごとに不足している権限を示します。管理者にはチェックマークがずらりと並び、サポートデスクのロールには付与すべき権限が正確に示されます。
同じショップに対する MCP Inspector のスクリーンショット



含まれるもの
| 厳選された20のツール | products_search、orders_get、customers_search、stock_get、promotions_list、reviews_search、payment_methods_list、shipping_methods_list、plugins_list、scheduled_tasks_listなどを利用できます。各検索は{ term?, filter?, sort?, page?, limit?, fields? }を受け取り、{ total, page, limit, items }を返します。 |
| ショップ設定 | shop_settingsは、Shopwareのシステム設定からショップ全体または継承を考慮した販売チャネルごとの取引設定を読み取ります。ゲスト購入、ダブルオプトイン、パスワードルール、カート上限、商品一覧のデフォルト設定、デフォルト税率、法的ページが対象です。コアドメインの許可リストのみが対象で、メールサーバー、ライセンス、プラグインのシークレットは読み取りません。 |
| 注文履歴 | order_historyは、1件の注文について、すべての注文、支払い、配送の状態遷移を順番に一覧表示します。以前の状態、新しい状態、アクション、および管理者ユーザー、API連携、Shopware自体のいずれがトリガーしたかを確認できます。 |
| チェックアウトのシミュレーション | checkout_simulateは、Shopwareの管理プロキシ経由で、管理画面の注文ダイアログ自体が使用するStore APIに使い捨てのカートを入力します。配送先の国を指定したゲストとして、または顧客のグループ、価格、ルール、住所を使ってログイン済み顧客としてシミュレーションできます。商品ごとの価格と商品一覧価格、割引、送料、税金、合計金額、利用可能な支払い方法と配送方法、適用外となった方法とその適用外ルール、すべてのカートエラーと平易な説明を返します。注文は作成されず、カートは削除されます。 |
| ストアフロント検索 | storefront_searchは、顧客と同じ方法で販売チャネル内を検索します。同じ表示条件、在庫条件、在庫切れ時の販売終了ルール、ランキング、価格が適用され、リクエストに応じて1つの商品について説明します。商品の掲載位置、または見つからない理由(無効、チャネルに非表示、リンク限定、在庫なしで販売終了、検索インデックス未登録、検索語に一致するキーワードなし)がわかります。 |
| ショップの稼働状況 | shop_pulseは、現地時間の午前0時以降の注文数と売上を、過去2~12週間の同じ曜日の同じ時間帯と比較し、ポアソン推定で現在の閑散状況を評価し、本日の決済失敗数を通常の割合と比較して監視します。ショップの規模にかかわらず、集計リクエストは1回です。 |
| 健全性監査 | 調整可能なしきい値(stuckOrderDays、lowStockThreshold、forecastDays、maxItems)を指定できるshop_auditを利用できます。チェック項目は17種類で、チェックアウトの応答停止、請求書のない支払い済み注文、現在のペースで在庫切れになりそうな商品、ストアフロントごとの法的ページ、配送時間、販売チャネルでの表示設定、未処理のレビュー、実行が停止したスケジュールタスクなどが含まれます。優先度付きの指摘事項、それぞれの指摘に対するヒント、義務の名称と期限を示すEU義務の概要も確認できます。商品名は含まれません。 |
| 売上レポート | 任意の期間を日、週、月単位で集計する sales_reportを利用でき、販売チャネルごとの集計も指定できます。キャンセルされた注文は除外されます。compareWithPreviousを指定すると、直前の期間と注文数、売上、平均注文金額の変化も追加されます。上位商品の特定には正確な商品IDを使うため、同額の商品によって売上が偏ることはありません。 |
| 顧客レポート | 同じ期間を対象とするcustomer_reportを利用できます。新規アカウントは登録済みとゲストに分けてグループ別に表示され、注文した顧客の実人数、リピーターの割合、ゲスト注文の割合、売上上位の顧客と総売上に占める割合も確認できます。 |
| 在庫予測 | 「何を再発注する必要があるか」を確認するstock_forecastを利用できます。対象期間中の商品ごとの販売数、現在の販売可能在庫、在庫が持つ日数、在庫切れの日付、予測期間と補充期間をカバーする再発注数量を確認できます。販売実績のない商品については推定しません。 |
| あらゆるエンティティ | entity_schemaはすべてのエンティティを一覧表示するか、1つのエンティティについてフィールド、型、フラグ、関連付けを説明します。entity_searchはエンティティを検索し、リクエストに応じて一致する全レコードを対象にShopwareの集計(terms、sum、avg、min、max、count、stats、histogram、ネストされたメトリック1つ)を実行します。長いテキスト値は切り詰め、シークレットは除去し、認証情報のエンティティとフィールドは拒否します。 |
| プラグイン対応ツール | サーバーはインストール済みの有効な拡張機能を検出し、対応するものがあればツールを追加します。パックはFroshTools(プラットフォームの健全性チェック、メッセージキュー、依存関係のアドバイザリ)とMerqoです。--no-extensionsで無効にできます。 |
| ドキュメント | order_documents_list、order_document_create(Shopware独自のジェネレーターによる請求書、納品書、貸方票、キャンセル)、order_documents_bulk_create(1回のリクエストで最大50件の注文に1種類のドキュメントを作成。デフォルトでは、ドキュメントがまだない支払い済み注文が対象)、およびdocument_downloadを利用できます。document_downloadはPDFを埋め込みリソースとしてホストに渡し、モデルにはメタデータのみを表示します。 |
| 保護された書き込み操作 | stock_set(絶対値またはdelta)、product_update、product_create、product_cover_set(URLまたはバイト列から画像をショップにアップロード)、order_state_transition、order_delivery_transition(追跡コードを指定して発送)、order_transaction_transition(支払い済みにする、リマインダーを送る、返金する)、order_note(内部コメント)、order_document_create、order_documents_bulk_create、promotion_toggle、promotion_create、customer_update、review_moderate、tag_assign(顧客、注文、商品に名前でタグを割り当て、不足しているタグは作成)を利用できます。--allow-writeを指定した場合のみ登録され、デフォルトではdryRun: trueです。実際に書き込んだ場合は、再取得したエンティティを返します。SHOPWARE_MCP_MAX_WRITESでプロセスごとの実際の書き込み回数を制限できます。バルク呼び出しは注文ごとに1回として数えます。 |
| コマンドラインも利用可能 | shopware-mcp setupは、管理者ログイン1回で最小権限の連携を作成します。shopware-mcp doctorは、この連携で各ツールを使用できるかどうかと、不足している権限をツールごとに示します。shopware-mcp initは認証情報をテストし、Claude Desktop、Claude Code、Cursor、VS Code、Windsurf、Gemini CLI、Codex CLI、Zed用の設定を表示または書き込みます。shopware-mcp brief、audit、reportはMarkdownまたはJSONを出力し、--htmlで自己完結型のHTMLページを、--json-fileでJSONを書き込みます。cronやCI向けに、異常時はゼロ以外の終了コードを返します。briefとauditは--slackでSlackに概要を投稿することもできます。 |
| GitHub Action | uses: bnymnDev/[email protected]を使うと、該当タグのshopware-mcpリリースでワークフロー内の監査を実行し、Markdownをジョブのサマリーに書き込み、件数と終了コードを出力として公開します。選択した重大度に応じてジョブを失敗させることもできます。 |
| リソースとプロンプト | shopware://shop、shopware://sales-channels、ホストがレコードをコンテキストとして添付できるテンプレートshopware://order/{orderNumber}、shopware://product/{productNumber}、shopware://customer/{customerNumber}、および6つのプロンプト(order_summary、customer_profile、low_stock_report、reorder_list、review_moderation、weekly_review)を利用できます。 |
| Shopwareの用語 | フィルターはShopwareのフィールドパス(manufacturer.nameなどの関連付けを含む)に対するShopware Criteriaフィルター(equals、contains、range、equalsAny)です。状態名には、すでにご存じの技術名を使用します。 |
| 移植性の高いスキーマ | 一部のMCPクライアントが誤って解釈する構文を避けるため、すべてのツールスキーマを検証します。そのため、同じサーバーをあらゆるホストで使用できます。 |
| 堅牢なクライアント | OAuthクライアント認証情報を使用し、早めのトークン更新、401およびRetry-After付きの429/5xxに対する1回の再試行、リクエストごとのタイムアウト、正確な総件数、継承と言語のヘッダー、キャッシュされたエンティティスキーマに対応します。 |
| 2種類のトランスポート | デスクトップホスト向けのstdioと、それ以外すべてに対応するステートレスなStreamable HTTPを利用でき、オプションでベアラートークンも使用できます。 |
| 4つの方法でパッケージ化 | ビルドの来歴情報付きのnpm、amd64とarm64向けのGHCR上のDockerイメージ、認証情報と書き込み上限の入力を求めるClaude Desktop用ワンクリック.mcpbバンドル、公式MCPレジストリへの登録を提供します。 |
対象ユーザー
- ショップを運営していて、管理画面をクリックして回る代わりに、質問で情報を得たい方。滞留中の注文、在庫僅少、先月の数値などを、それぞれ1つのプロンプトで確認できます。
- 代理店を運営していて、多くのショップを担当している方。ここで提供する基本機能は、1サーバーあたり1ショップに対応します。複数ショップ対応で監査機能を備えたホスト版は、作者がクライアント向けに構築しています(オープンコアを参照)。
- Shopware プラグインを開発していて、カスタムエンティティを今すぐエージェントから利用できるようにし、後から独自のツールを登録したい方。前者は
entity_searchで、後者はsrc/extensions/内にファイルを1つ追加することで実現できます。 - エージェントを開発していて、適切に動作する MCP サーバーを求める方。簡潔な出力、正確な合計値、ドライラン、スキーマに予期しない変更がないことを重視する方。
60秒で始める
1. setupでインテグレーションを作成します。管理者として一度ログインします(パスワードは保存されません)。ツールに必要な権限だけを持つ読み取り専用ロールと、そのロールを使うインテグレーションを作成し、両方を検証して、ホスト設定を表示または書き込みます。
npx shopware-mcp setup --url https://shop.example.com --user admin --for claude-desktop --write
書き込みツールには--allow-writeを、shop_settingsには--settingsを追加します。--dry-runを指定すると、ロールの権限が最初に表示されます。アップグレード後は同じコマンドを再実行してください。ロールが更新され、キーはそのまま維持されます。自分で操作する場合は、設定 → システム → インテグレーションでインテグレーションを作成し、ロールを割り当てて(権限を参照)、手順2に進んでください。
2. または、ウィザードで既存の認証情報をテストし、ホスト設定を書き込むこともできます。
npx shopware-mcp init # asks for URL, key and secret, tests them, prints the config
npx shopware-mcp init --for claude-desktop --write # or merges it into the host's config file
npx shopware-mcp doctor # which tools can this integration use, and what is missing
npx shopware-mcp audit --fail-on warning # the shop audit as Markdown, exit 1 when something is off
npx shopware-mcp report --interval week # the sales report of the last 30 days as Markdown
npx shopware-mcp brief --html brief.html # pulse, audit and the last 7 days as one HTML page
または、サーバーを手動で実行します。
export SHOPWARE_URL=https://shop.example.com
export SHOPWARE_CLIENT_ID=SWIA...
export SHOPWARE_CLIENT_SECRET=...
npx shopware-mcp # stdio (default)
npx shopware-mcp --http --port 3333 # Streamable HTTP on http://127.0.0.1:3333/mcp
npx shopware-mcp --allow-write # also register the guarded write tools
3. ホストに接続します(またはinit --writeに任せます)。
Claude Desktop
最新リリースからshopware-mcp.mcpbをダウンロードしてダブルクリックするか、以下をclaude_desktop_config.jsonに追加します。
{
"mcpServers": {
"shopware": {
"command": "npx",
"args": ["-y", "shopware-mcp"],
"env": {
"SHOPWARE_URL": "https://shop.example.com",
"SHOPWARE_CLIENT_ID": "SWIA...",
"SHOPWARE_CLIENT_SECRET": "..."
}
}
}
}
Claude Code
claude mcp add shopware \
-e SHOPWARE_URL=https://shop.example.com \
-e SHOPWARE_CLIENT_ID=SWIA... \
-e SHOPWARE_CLIENT_SECRET=... \
-- npx -y shopware-mcp
Cursor、VS Code、Windsurf、Gemini CLI、Codex CLI、Zed、その他の stdio ホスト
いずれも同じ3つのフィールドを使用します。Cursor は.cursor/mcp.json、VS Code は.vscode/mcp.json(mcpServersではなくserversを使用)、Windsurf は~/.codeium/windsurf/mcp_config.json、Gemini CLI は~/.gemini/settings.json、Codex CLI は~/.codex/config.toml内の[mcp_servers.shopware]テーブル、Zed はcontext_serversブロックを読み込みます。init --for <host> --writeを実行すると、それぞれの設定を書き込みます。
{
"mcpServers": {
"shopware": {
"command": "npx",
"args": ["-y", "shopware-mcp"],
"env": {
"SHOPWARE_URL": "https://shop.example.com",
"SHOPWARE_CLIENT_ID": "SWIA...",
"SHOPWARE_CLIENT_SECRET": "..."
}
}
}
}
公式 MCP レジストリを読み込むホストでは、io.github.bnymnDev/shopware-mcpとして見つかります。
Docker と HTTP ホスト
docker run --rm -p 3333:3333 \
-e SHOPWARE_URL=https://shop.example.com \
-e SHOPWARE_CLIENT_ID=SWIA... -e SHOPWARE_CLIENT_SECRET=... \
ghcr.io/bnymndev/shopware-mcp
イメージはhttp://127.0.0.1:3333/mcpで Streamable HTTP を提供します。この URL を、HTTP に対応する任意のホストに指定してください。-e SHOPWARE_MCP_HTTP_TOKEN=<random secret>を追加すると、エンドポイントでAuthorization: Bearer <secret>が必要になります。トークンを設定しない場合は、localhost 上に置くか、認証を行うプロキシの背後に配置してください(セルフホストに関する注意事項)。
4. 質問してみましょう。最初に役立つ質問は、通常「ショップは問題なく運営されていますか?」です。
何でも聞いてください
| あなたの発言 | エージェントが呼び出すもの |
|---|---|
| 「今日は通常どおりですか?」 | shop_pulse |
| 「顧客番号 10009 がチェックアウトできないのはなぜですか?」 | checkout_simulate { customerNumber: "10009", items } |
| 「コード SUMMER26 が使えないのはなぜですか?」 | checkout_simulate { promotionCodes: ["SUMMER26"], items } |
| 「スイスへの送料はいくらですか?」 | checkout_simulate { country: "CH", items } |
| 「スチールシャツが誰にも見つからないのはなぜですか?」 | storefront_search { term: "steel shirt", explain: "SW10002" } |
| 「ショップに問題はありませんか?」 | shop_audit |
| 「8月の実績はどうでしたか?」 | sales_report { from, to, interval: "week" } |
| 「在庫が5未満の商品はどれですか?」 | range フィルターを使った products_search、または low_stock_report プロンプト |
| 「サポートへの返信用に注文 10042 を要約してください。」 | orders_get、または order_summary プロンプト |
| 「注文回数が10回を超える顧客は誰ですか?」 | orderCount に range フィルターを使った customers_search |
| 「PayPal プラグインは最新ですか?」 | plugins_list |
| 「ロゴがないメーカーはどれですか?」 | entity_schema、次に product_manufacturer を対象にした entity_search |
| 「SW10084 の在庫を40に設定してください。」 | stock_set。まずドライランを行い、その後に実行 |
| 「注文 10042 は DHL で発送しました。追跡番号は 00340434 です。」 | order_delivery_transition { transition: "ship", trackingCodes } |
| 「10038 の銀行振込が入金されました。」 | order_transaction_transition { transition: "paid" } |
| 「先週はその前の週と比べてどうでしたか?」 | sales_report { compareWithPrevious: true }、または weekly_review プロンプト |
| 「注文 10042 の請求書を送ってください。」 | order_documents_list。次に document_download で PDF を取得 |
| 「10042 にメモ:顧客から電話があり、月曜日に発送。」 | order_note |
| 「注文 10042 で何が起きたのか、誰が対応したのか教えてください。」 | order_history |
| 「顧客 10042 は誰で、最後に注文した商品は何ですか?」 | customers_get と orders_search、または customer_profile プロンプト |
| 「今四半期の優良顧客は誰ですか?」 | customer_report { from, to, topCustomers: 20 } |
| 「承認待ちのレビューはどれですか?」 | status: false を指定した reviews_search、または review_moderation プロンプト |
| 「ドミニクのレビューを承認して、お礼を伝えてください。」 | review_moderate { approved: true, comment } |
| 「ストアフロントで利用できる決済方法は何ですか?」 | payment_methods_list、shipping_methods_list |
| 「10月用に、10%割引コード AUTUMN10 を作成してください。」 | promotion_create。指示があるまで無効のまま作成 |
| 「商品 Bench、SW10200、119ユーロ、在庫3個を追加してください。」 | product_create。税率に基づいて税抜価格を算出 |
| 「顧客から2個返品されたので、SW10084 に追加してください。」 | stock_set { delta: 2 } |
| 「今後2週間で再発注が必要なものは何ですか?」 | stock_forecast、または reorder_list プロンプト |
| 「先月の決済方法別の注文数と売上を教えてください。」 | order を対象にした terms 集計とネストされた sum を使う entity_search |
| 「請求書がまだない支払い済み注文はどれですか?作成してください。」 | shop_audit、次に order_documents_bulk_create { type: "invoice" }。まずドライランを実行 |
| 「cron ジョブは実行されていますか?」 | scheduled_tasks_list { onlyProblems: true } |
| 「この顧客を VIP に設定してください。」 | tag_assign { entity: "customer", add: ["VIP"] } |
| 「ゲストチェックアウトは有効ですか?デフォルトの税率はいくつですか?」 | shop_settings |
| 「SW10084 にこの画像を設定してください:https://…/bench.jpg」 | product_cover_set。ショップが画像をダウンロード |
| 「サムネイルがありません。プラットフォームに問題はありますか?」 | FroshTools がインストールされている場合は frosh_health と frosh_queue |
| 「必要最小限の権限でセットアップしてください。」 | ツールではありません:npx shopware-mcp setup |
| 「この連携で使えなくなるツールはどれですか?」 | ツールではありません:npx shopware-mcp doctor |
| 「毎朝、1ページ分を送ってください。」 | cron で shopware-mcp brief --html brief.html --slack <webhook> |
| 「毎週月曜日に監査結果をメールしてください。」 | これもツールではありません:cron で shopware-mcp audit --fail-on warning |
フィルターをひと目で確認
すべての検索ツールで同じ filter 配列を使用します。各要素は Shopware の Criteria フィルターです。
{ "type": "equals", "field": "active", "value": true }
{ "type": "range", "field": "stock", "value": { "lt": 5 } }
{ "type": "range", "field": "orderDateTime", "value": { "gte": "2026-06-01" } }
{ "type": "equals", "field": "transactions.stateMachineState.technicalName", "value": "paid" }
{ "type": "contains", "field": "name", "value": "shirt" }
{ "type": "equalsAny", "field": "id", "value": ["…", "…"] }
{ "type": "equals", "field": "manufacturer.name", "value": "Acme" }
Admin API でフィルターできる項目は、関連付けも含めてすべてここでもフィルターできます。customFields、ean、weight など、コンパクトな出力に含まれない生のフィールドが必要ですか?fields: ["customFields", "ean"] を渡すと、すべての項目に追加されます。別の言語でショップを閲覧しますか?SHOPWARE_LANGUAGE_ID を設定してください。詳しくはチートシートをご覧ください。
ツール
| ツール | アクセス | 目的 |
|---|---|---|
shop_info | read | ショップ情報 |
shop_settings | read | ショップ設定 |
sales_channels_list | read | 販売チャネルの一覧 |
products_search | read | 商品を検索 |
products_get | read | 商品を取得 |
orders_search | read | 注文を検索 |
orders_get | read | 注文を取得 |
order_history | read | 注文履歴 |
order_documents_list | read | 注文書類の一覧 |
document_download | read | 書類の PDF をダウンロード |
customers_search | read | 顧客を検索 |
customers_get | read | 顧客を取得 |
categories_list | read | カテゴリーの一覧 |
promotions_list | read | プロモーションの一覧 |
reviews_search | read | 商品レビューを検索 |
payment_methods_list | read | 決済方法の一覧 |
shipping_methods_list | read | 配送方法の一覧 |
plugins_list | read | プラグインとアプリの一覧 |
scheduled_tasks_list | read | スケジュール済みタスク |
stock_get | read | 在庫を取得 |
stock_forecast | read | 在庫予測 |
storefront_search | read | 顧客のように検索 |
checkout_simulate | read | チェックアウトをシミュレーション |
sales_report | read | 売上レポート |
customer_report | read | 顧客レポート |
shop_pulse | read | ショップの状況 |
shop_audit | read | ショップの健全性を監査 |
entity_schema | read | エンティティスキーマ |
entity_search | read | 任意のエンティティを検索 |
stock_set | write (guarded) | 在庫を設定(保護機能付き) |
product_update | write (guarded) | 商品を更新(保護機能付き) |
product_create | write (guarded) | 商品を作成(保護機能付き) |
product_cover_set | write (guarded) | 商品のカバー画像を設定(保護機能付き) |
order_state_transition | write (guarded) | 注文状態を遷移(保護機能付き) |
order_delivery_transition | write (guarded) | 配送状態を遷移(保護機能付き) |
order_transaction_transition | write (guarded) | 決済状態を遷移(保護機能付き) |
order_note | write (guarded) | 注文に内部メモを追加(保護機能付き) |
order_document_create | write (guarded) | 注文書類を作成(保護機能付き) |
order_documents_bulk_create | write (guarded) | 複数の注文の書類を作成(保護機能付き) |
promotion_toggle | write (guarded) | プロモーションを切り替え(保護機能付き) |
promotion_create | write (guarded) | プロモーションを作成(保護機能付き) |
customer_update | write (guarded) | 顧客を更新(保護機能付き) |
review_moderate | write (guarded) | レビューをモデレート(保護機能付き) |
tag_assign | write (guarded) | タグを割り当て(保護機能付き) |
| すべてのツールの全パラメーターについては、docs/tools.md を参照してください。検索結果は | ||
{ total, page, limit, items } を返します。総件数は正確で、limit の上限は 50 です。 | ||
エラーは { error: { status, code, detail } } として返されるため、モデルは推測せずに | ||
| 対処できます。 |
リソース:shopware://shop、shopware://sales-channels、shopware://order/{orderNumber}、
shopware://product/{productNumber}。プロンプト:order_summary、low_stock_report、weekly_review。
プラグイン対応ツール
サーバーは起動時に、バックグラウンドでショップにインストール済みかつ有効な拡張機能を問い合わせ、認識している拡張機能向けのツールを追加登録します。応答しないショップでは、コアツールのみがそのまま利用されます。--no-extensions を指定すると、この仕組み全体が無効になります。
現在、2 つのパックが提供されています。オープンソースの運用プラグインである
FroshTools は、frosh_health(プラットフォームの健全性とパフォーマンスのチェック)、frosh_queue(メッセージキューのトランスポート、待機中のメッセージ、ワーカー)、frosh_composer_audit(依存関係のアドバイザリ)を追加します。いずれも読み取り専用で、プラグイン独自のメンテナンス操作は呼び出しません。Merqo
は、merqo_health、merqo_einvoice_inbox、merqo_returns_search、merqo_abandoned_carts を追加します。プラグインを導入していないショップにそのツールが表示されることはなく、コアツールにも影響はありません。他のベンダーの拡張機能への対応は、インストール済みのプラグインに対してテストしたうえで、src/extensions/ にファイルを 1 つ追加するだけです。各パックには、プラグインのルートに必要な ACL 権限が記載されており、そのプラグインがインストールされていれば、shopware-mcp setup が権限を付与します。プルリクエストを歓迎します。
安全性
- デフォルトでは読み取り専用です。
--allow-write(またはSHOPWARE_MCP_ALLOW_WRITE=true)を指定しない限り、書き込みツールは登録されません。エージェントは、呼び出せないツールを見つけることはできません。 - すべての書き込みは、まずドライランで実行されます。
stock_setからtag_assignまで、15 個すべての書き込みツールはデフォルトでdryRun: trueとなり、{ dryRun: true, wouldSend: { method, url, body } }を返します。1 回の呼び出しで複数のリクエストが必要な場合は、リストを返します。実際に書き込んだ場合は、再取得したエンティティを返します。 - 書き込み予算があります。
SHOPWARE_MCP_MAX_WRITES=20を設定すると、プロセス内で 21 回目の実書き込みがWRITE_BUDGET_EXHAUSTEDにより拒否されます。ドライランは予算を消費しません。どのプロンプトでも上限を引き上げることはできません。 - 書き込み範囲は限定されています。
product_updateが変更するのは、名前、説明、有効状態、および 1 つの通貨の価格です。product_createが作成するのはシンプルな商品だけです。product_cover_setは画像を 1 枚追加します(JPEG、PNG、WebP、GIF、AVIF に対応し、SVG には対応しません)。画像はショップ自体がダウンロードします。promotion_createはカート割引を 1 つ作成し、指定がなければ無効状態になります。customer_updateが変更するのは有効フラグとグループです。状態遷移ツールは状態マシンを進めるだけで、金銭が移動することはありません。ドキュメントは Shopware 独自のジェネレーターで作成され、このサーバーから送信されることはありません。order_documents_bulk_createは 1 回の呼び出しで最大 50 件を作成し、注文 1 件につき書き込み予算を 1 回だけ消費します。tag_assignは名前でタグを追加または削除し、レコードのそれ以外の部分には触れません。削除は行いません。これ以外の書き込みはできません。 - カートのシミュレーションは注文ではありません。
checkout_simulateとstorefront_searchは、Shopware 独自の管理プロキシ経由で Store API を呼び出し、訪問者が保持していないランダムなコンテキストトークンを使用します。注文ルートは呼び出されず、カートはその後削除されます。残るのは、Shopware が自動的に期限切れにするコンテキスト行のみです。顧客としてシミュレーションしても、その顧客自身のセッションや保存済みカートには影響しません。放棄されたカートのメール通知など、保存済みカートに反応する拡張機能には、シミュレーションしたカートもその顧客のカートとして認識されます。そのため、実在する顧客としてシミュレーションするのは、その動作に問題がない場合に限ってください。 - デフォルトで最小権限です。
shopware-mcp setupは、ほかの権限を何も持たないロールに対して各ツールが必要と測定された権限だけを付与し、管理者権限は付与しません。ツールの範囲を超える権限が 2 つあり、要求しない限り付与されません。システム設定全体の読み取り(--settings。SMTP パスワードや決済キーを含みます)と、拡張機能のインストール(--plugin-updates)です。セットアップが変更するのは自身で作成したロールのみで、追加または削除する権限をすべて明示し、ほかの処理で失敗する可能性が生じる前に新しいシークレットを表示します。管理者パスワードは、https 経由で 1 回ログインするために使用するか、このマシンに限って plain http で使用し、保存されることはありません。 - 読み取り結果から機密情報を除去します。
entity_searchはすべてのペイロードからパスワード、キー、トークン、ハッシュを除去し、認証情報やシステム内部情報を保持するためのエンティティ(ユーザー、インテグレーション、ACL ロール、アプリ、システム設定)へのアクセスを拒否します。 - シークレットはどこにも出力されません。 認証情報が出力、ログ、エラーメッセージに含まれることはありません。ログは stderr にのみ出力され、より詳細なログを要求しない限り、レベルは
errorです。 - テレメトリはありません。 サーバーが通信する相手は、ショップとホストのみです。それ以外との通信はありません。
- HTTP トランスポート。
SHOPWARE_MCP_HTTP_TOKENを設定すると、/mcpへのすべての呼び出しにベアラートークンが必要になり、定時間比較で照合されます。トークンを設定しない場合は、localhost(デフォルト)にバインドするか、認証を行うリバースプロキシの背後に配置してください。トークンなしでサーバーに外部から到達できる場合、警告が表示されます。 - リクエストにはタイムアウトがあります。 ショップから応答がなくなった場合でも、セッション全体ではなく 1 リクエストあたり 30 秒でタイムアウトします(
SHOPWARE_MCP_TIMEOUT_MS)。
問題を見つけましたか? SECURITY.md をご覧ください。
設定
| 変数 | 必須 | 備考 |
|---|---|---|
SHOPWARE_URL | はい | Shop のベース URL。例:https://shop.example.com(末尾のスラッシュは削除されます) |
SHOPWARE_CLIENT_ID | はい | インテグレーションのアクセスキー ID |
SHOPWARE_CLIENT_SECRET | はい | インテグレーションのシークレットアクセスキー |
SHOPWARE_MCP_ALLOW_WRITE | いいえ | true にすると書き込みツールを登録します。デフォルト:オフ |
SHOPWARE_MCP_MAX_WRITES | いいえ | 1 つのプロセスが実行できる書き込みの合計数。0(デフォルト)は上限なし |
SHOPWARE_MCP_DEFAULT_LIMIT | いいえ | 検索ツールのデフォルトのページサイズ(デフォルトは 20、最大 50) |
SHOPWARE_MCP_EXTENSIONS | いいえ | false にすると、プラグイン対応ツールと起動時の拡張機能検索を無効にします |
SHOPWARE_LANGUAGE_ID | いいえ | 翻訳対象フィールドの言語 UUID(sw-language-id)。デフォルト:ショップのデフォルト言語 |
SHOPWARE_MCP_TIMEOUT_MS | いいえ | Admin API のリクエストごとのタイムアウト(ミリ秒)。デフォルトは 30000、範囲は 1000~600000 |
SHOPWARE_MCP_HTTP_TOKEN | いいえ | HTTP トランスポートが /mcp で要求するベアラートークン(16 文字以上)。デフォルト:なし |
SHOPWARE_MCP_LOG_LEVEL | いいえ | error(デフォルト)、warn、info、debug。ログは stderr のみに出力されます |
TZ | いいえ | shop_pulse と brief における「今日」のタイムゾーン。例:Europe/Berlin。デフォルト:システムのタイムゾーン |
SHOPWARE_ADMIN_USER、SHOPWARE_ADMIN_PASSWORD | setup のみ | setup がロールとインテグレーションの作成時に一度だけ使用する管理者ログイン情報です。保存されません。指定しない場合、setup で入力を求められます |
CLI フラグは環境変数より優先されます:--allow-write、--max-writes <n>、--no-extensions、--http、--port <n>、--host <addr>、--log-level <level>。コマンドは setup、doctor、init、brief、audit、report です。npx shopware-mcp --help で各コマンドのオプションを確認できます。
インテグレーションには、ツールが操作するエンティティへの読み取り権限と、書き込みツールへの書き込み権限が必要です。shopware-mcp setup は必要な権限のみを付与します。開発用ショップでは Administrator が手早い方法です
(必要な権限)。
設計原則
- 独自の用語ではなく、Shopware の用語を使います。 フィルター、フィールドパス、状態名、エンティティ名には Shopware のものを使います。ツール呼び出しは実行される Admin API リクエストと同じように読めるため、Shopware の開発者が別の用語集を参照する必要はありません。
- デフォルトではコンパクトに、必要に応じて完全な情報を返します。 アイテムには、モデルが推論やページングに必要な情報が含まれます。生のフィールドは
fieldsで、追加の行はpageで取得でき、長いテキストはそのまま出力せず切り詰めます。 - 読み取りは自由に、書き込みは明示的にします。 書き込みツールは要求された場合にのみ使え、デフォルトではドライランを実行して、正確なリクエストを返します。ショップに変更が反映される前に、モデルはその結果を確認できます。
- 計算はショップに任せます。 合計、時系列、売上上位商品は、ページをまたいでクライアント側で合算するのではなく、正確な件数を含む Shopware の集計結果を使います。
- ベンダーに依存しないコア。 拡張パックはそれぞれ独立したファイルに置かれ、ショップに該当する拡張機能がある場合にのみ登録されます。また、コアツールの動作を変更することはありません。テレメトリーも、外部への情報送信もありません。
個々の選択の理由については、docs/decisions.md を参照してください。
ドキュメント
| ドキュメント | 内容 |
|---|---|
| docs/quickstart.md | インテグレーション、初回実行、ホスト設定、質問の例、フィルター早見表 |
| docs/tools.md | すべてのツールと各パラメーター。コードから生成されています |
| docs/self-hosting.md | トランスポート、Docker、リバースプロキシ、Shopware の権限、運用 |
| docs/decisions.md | 設計上の決定事項とその理由 |
| CONTRIBUTING.md | セットアップ、基本ルール、エンドツーエンドテスト、リリース |
| SECURITY.md | 報告すべき内容と報告先 |
| CHANGELOG.md | 各バージョンでの変更点 |
オープンコア
このリポジトリのすべては MIT ライセンスであり、今後もそのままです。対象は、1 つのショップ、1 人の運営者、対話形式での利用です。
同じ作者が、EU コンプライアンスと日々の運用に対応する Shopware 拡張機能の商用スイートである Merqo も開発しています。このサーバーはそれらを検出して対応するツールを追加しますが、利用に必須ではなく、コアツールの動作も変わりません。
大規模に運用する代理店やマーチャントには、通常、さらに多くの機能が必要です。そこで、クライアント向けに以下の開発と運用を行っています。
- マルチショップ:ショップごとの認証情報と権限を使い、1 つの MCP エンドポイントから数十のショップに振り分けます
- 監査証跡付きホスティング:すべてのツール呼び出しについて、実行者、内容、日時を記録し、ロールベースのアクセス制御と SLA を提供します
- 一括操作と移行:価格と在庫の一括更新、カタログのインポート、安全なロールバック
- カスタムエージェントと Shopware プラグイン:お使いの ERP、PIM、またはサポートデスクに合わせたワークフロー
ご興味があれば、consulting ラベルを付けて Issue を作成するか、github.com/bnymnDev からご連絡ください。shopware-mcp を本番環境で利用していて、今後もメンテナンスを続けてほしい場合は、スポンサーになることで支援できます。
ソースからのビルド
pnpm install
pnpm dev # stdio server via tsx
pnpm test # vitest + msw-mocked Admin API
pnpm build # tsup → dist/ (npm) and dist/bundle/ (self-contained)
pnpm pack:mcpb # Claude Desktop bundle → shopware-mcp.mcpb
pnpm inspect # MCP Inspector against dist/
pnpm docs:tools # regenerate docs/tools.md and the tool tables in both READMEs
pnpm docs:demos # re-render the recordings in docs/demo/ from their transcripts
実際の Shopware(dockware/dev、または任意のショップ)に対するエンドツーエンドテストは、pnpm test:e2e で実行できます。CONTRIBUTING.md を参照してください。
ステータス
v0.8。このページに記載されている機能はすべて実装済みで、モックの Admin API レスポンスを使ったユニットテストでカバーされ、実際の Shopware に対するエンドツーエンドテストも毎晩実行されています。上記の録画は Shopware 6.7.13 でのもので、6.6 もサポートしています。
意図的に含めていない機能:HTTP トランスポートのユーザー管理(静的トークン 1 つ、またはプロキシ)、マルチショップへの振り分けと監査証跡(商用機能)、およびサポートデスクやショップマネージャーが通常の日に必要とする 15 個を超える書き込みツール。
追加案として適しているもの:拡張パックの追加、カートのエラーをわかりやすい言葉で説明する機能の追加、products_search の使用例ギャラリーなどです。最初の Issue におすすめから始めるのもよいでしょう。
ライセンス
shopware-mcp が管理画面では答えられなかった質問に答えてくれたなら、スターを付けると、次のショップがこのプロジェクトを見つけやすくなります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。