Diese Dokumentation bezieht sich immer auf den aktuellen Stand des main-Branches.
Die Werte kommen aus der Prozessumgebung oder aus der .env-Datei (Suchreihenfolge siehe Installation). Eine Vorlage liegt als .env.example im Repository. Zeilen mit # sind Kommentare, Werte dürfen in einfachen oder doppelten Anführungszeichen stehen.
| Variable | Beschreibung |
|---|---|
SHOPWARE_URL |
Basis-URL des Shops ohne abschließenden Schrägstrich, zum Beispiel https://shop.example.com. Muss eine gültige URL sein. |
SHOPWARE_CLIENT_ID |
Client-ID der Shopware-Integration. |
SHOPWARE_CLIENT_SECRET |
Client-Secret der Shopware-Integration. |
SHOPWARE_DEFAULT_TAX_ID |
ID des Standard-Steuersatzes (32 Zeichen Hex), wird bei product_create verwendet, wenn keine taxId übergeben wird. |
SHOPWARE_DEFAULT_SALES_CHANNEL_ID |
ID des Standard-Verkaufskanals. Neue Produkte werden hier sichtbar, und Test-Mails nutzen ihn als Kontext. |
WIKIJS_BASE_URL |
Muss eine gültige URL sein, sonst bricht der Start ab. Die Adresse wird nirgends verwendet, siehe Hinweis unten. |
| Variable | Standard | Beschreibung |
|---|---|---|
SHOPWARE_DEFAULT_TAX_RATE |
0 |
Steuersatz in Prozent als ganze Zahl. Daraus wird der Nettopreis berechnet, 0 passt zum Kleinunternehmer. Ein ungültiger Wert fällt auf 0 zurück. |
SHOPWARE_DEFAULT_CURRENCY_ID |
b7d2554b0ce847cd82f3ac9bd1c0dfca |
Währungs-ID für Preise. Der Standard ist die ID der Währung EUR in einer Standard-Installation. |
CONTENT_PROFILES_PATH |
nicht gesetzt | Pfad zur Datei mit den Content-Profilen, absolut oder relativ zum Arbeitsverzeichnis. Ohne Wert gilt die Suchreihenfolge: ~/.claude/mcp-servers/shopwareadmin/content-profiles.json, falls vorhanden, sonst ./content-profiles.json. |
LOG_LEVEL |
info |
debug, info, warn oder error. Ein anderer Wert wird wie info behandelt. |
CACHE_TTL_CATEGORIES |
3600000 |
Hat keine Wirkung, siehe Hinweis unten. |
CACHE_TTL_PROPERTIES |
3600000 |
Hat keine Wirkung, siehe Hinweis unten. |
CACHE_TTL_SNIPPETS |
300000 |
Hat keine Wirkung, siehe Hinweis unten. |
WIKIJS_BASE_URLund die dreiCACHE_TTL_*-Variablen werden eingelesen und beim Start geprüft (gültige URL beziehungsweise Wert größer 0), danach aber von keinem Dienst verwendet. Die Cache-Laufzeiten sind fest im Code hinterlegt, siehe Technische Details. Die Wiki-Anbindung liefert in den Content-Ergebnissen immerwikiUrl: null.
Beim Start wird die HTTPS-Prüfung der
SHOPWARE_URLnur als Warnung auf stderr ausgegeben. Der Server läuft auch mithttp://, sendet die Zugangsdaten dann aber unverschlüsselt. Fürlocalhostund127.0.0.1erscheint keine Warnung.
.env übernehmen.Der Server meldet sich mit dem OAuth2-Client-Credentials-Verfahren an (POST /api/oauth/token). Welche Entitäten er je Werkzeugbereich anspricht:
| Bereich | Entitäten | Zugriff |
|---|---|---|
| Produkte, Content | product, product_media, tag |
lesen, schreiben |
| Kategorien | category |
lesen, schreiben |
| Eigenschaften, Hersteller | property_group, property_group_option, product_manufacturer |
lesen |
| Mail-Templates | mail_template, mail_template_type |
lesen, schreiben, Test-Mail senden |
| Medien | media, media_folder, media_thumbnail |
lesen, schreiben, anlegen, bei fehlgeschlagenem Upload löschen |
| Bestellungen | order samt Kunde, Adressen, Positionen, Zahlungen, Lieferungen, Status, Währung, Verkaufskanal |
nur lesen |
| Flows | flow, flow_sequence, rule |
lesen, Flow ändern |
| Cross-Selling | product_cross_selling, zugeordnete Produkte, product_stream |
lesen, schreiben |
| SEO-URLs | seo_url |
lesen, schreiben |
| Textbausteine | mmd-product-snippet (Plugin) |
lesen |
Die Datei
.env.examplenennt nur einen Teil dieser Rechte. Das Repository enthält keine Rechteprüfung: Was die Integration darf, darf auch der Server. Vergib deshalb nur die Rechte der Bereiche, die du brauchst, und nutze getrennte Integrationen für Test und Produktion.
Die Werkzeuge product_generate_content, product_generate_seo, variant_generate_content und category_generate_content formulieren Vorgaben für Claude. Ton, Anrede, Aufbau und Zielgruppe kommen aus Content-Profilen, die du in einer JSON-Datei festlegst.
CONTENT_PROFILES_PATH, wenn gesetzt.~/.claude/mcp-servers/shopwareadmin/content-profiles.json, wenn vorhanden../content-profiles.json im Arbeitsverzeichnis.Findet der Server an dem ermittelten Ort keine Datei, nutzt er die eingebauten Profile und schreibt einen Hinweis ins Log. Das gilt auch, wenn CONTENT_PROFILES_PATH auf eine nicht vorhandene Datei zeigt. Eine vorhandene, aber ungültige Datei verhindert den Start, mit einer Fehlermeldung je fehlerhaftem Feld.
{
"language": "de",
"defaultProfile": "creative",
"profiles": {
"creative": {
"tonality": "Persoenlich, warm, emotional",
"addressing": "du",
"structure": ["Emotionaler Einstieg (Frage/Anekdote)", "Was ist es?", "Technische Details (Format, Groesse)", "Anwendungstipps"],
"targetAudience": "Hobbybastler, Kreative, DIY-Enthusiasten",
"exampleIntro": "Was waere denn Ostern ohne den Osterhasen?",
"includeSnippets": false
}
},
"categoryMapping": {
"Stickdateien": "creative"
}
}
| Feld | Typ | Beschreibung |
|---|---|---|
language |
Text, 2 bis 5 Zeichen | Standard de. Wird eingelesen, aber von den Werkzeugen nicht ausgewertet. |
defaultProfile |
Text | Pflicht. Name eines vorhandenen Profils, gilt, wenn keine Kategorie passt. |
profiles |
Objekt | Pflicht, mindestens ein Profil. Der Schlüssel ist der Profilname und zugleich der Wert für den Parameter style. |
profiles.*.tonality |
Text | Pflicht, nicht leer. |
profiles.*.addressing |
du oder Sie |
Pflicht, genau in dieser Schreibweise. |
profiles.*.structure |
Liste von Texten | Pflicht, mindestens ein Eintrag. |
profiles.*.targetAudience |
Text | Pflicht, nicht leer. |
profiles.*.exampleIntro |
Text | Pflicht, nicht leer. |
profiles.*.includeSnippets |
Wahrheitswert | Standard false. Mit true bietet der Server die aktiven Textbausteine an. |
categoryMapping |
Objekt | Pflicht (darf leer sein). Kategoriename zu Profilname, jeder Wert muss ein vorhandenes Profil sein. |
Ohne Datei gelten die Profile creative (Anrede du, Standard) und software (Anrede Sie, mit Textbausteinen). Die Kategorie-Zuordnung lautet Software zu software sowie Stickdateien, Genaehtes und 3D-Druck zu creative. Es sind die Werte des Shops des Autors.
categoryMapping verglichen. Der erste Treffer vom Wurzelende her gewinnt.defaultProfile.style überschreibt die Erkennung. Ein unbekannter Name führt zu INVALID_INPUT mit der Liste der verfügbaren Profile.variant_generate_content hat keinen style-Parameter und erkennt den Stil immer automatisch.Mit includeSnippets: true fragt der Server die Entität mmd-product-snippet ab. Sie stammt aus einem Shopware-Plugin für Produkt-Textbausteine, das im Shop installiert sein muss. Ohne dieses Plugin schlägt die Abfrage mit einem API-Fehler fehl, also auch der Aufruf von snippet_list.