Zum Inhalt springen

JTL Wawi mit Claude Desktop via SQL2REST verbinden

Frag deine JTL-Wawi in normaler Sprache: Kunden, Aufträge, Artikel und Lager, direkt in Claude Desktop. Über den eingebauten MCP-Server, nur lesend und self-hosted.

Nur-Lese-API: deine ERP-Daten werden nie verändert

Demo: SQL2REST MCP für die JTL-Wawi in Claude Desktop

Frag deine JTL-Wawi …

Zum Ausprobieren:

Live aus der JTL-Wawi · nur Lesezugriff · HTTPS-Tunnel für sicheren Fernzugriff · deine Datenbank bleibt auf deinem Server

So funktioniert es

1

Installieren

SQL2REST auf deinem Server starten. Der Wizard erkennt deine Datenbank automatisch.

2

Verbinden

REST-Endpunkte sind sofort verfügbar, keine manuelle Konfiguration nötig.

3

Automatisieren

Claude liest deine JTL-Daten per MCP-Server (nur lesend) und antwortet in normaler Sprache.

Update: Seit SQL2REST v1.4.0 geht es auch einfacher

Statt der Konfigurationsdatei fügst du SQL2REST in Claude als eigenen Konnektor hinzu und meldest dich an. Keine Datei, kein Schlüssel, und es läuft auch im Browser und am Handy.

JTL-Wawi mit Claude verbinden

JTL Wawi und Claude über MCP verbinden

SQL2REST stellt deine JTL-Wawi als read-only REST API und als MCP-Server bereit. Claude Desktop spricht über das Model Context Protocol (MCP) von Anthropic direkt mit dieser Schnittstelle und beantwortet deine Fragen per Datenbankabfragen, ohne SQL-Kenntnisse. SQL2REST läuft lokal auf deinem Server und synchronisiert nichts in eine fremde Cloud, deine Datenbank bleibt, wo sie ist. Zu Anthropic gehen nur die Daten, die Claude für deine jeweilige Frage abruft, so wie bei jedem KI-Assistenten.

Wie das Protokoll im Detail funktioniert, erklärt unser Leitfaden zum JTL-Wawi MCP Server. Weiter unten zeigen wir die konkrete Einrichtung für Claude Desktop.

Beispiel-Fragen, die sofort funktionieren

  • „Zeig mir die Top-10-Kunden nach Umsatz im März."

    Claude holt die Aufträge, gruppiert und liefert eine fertige Tabelle.

  • „Welche Artikel gibt es in Rot, Größe M?"

    Claude nutzt die Merkmale-Filter und listet die passenden SKUs.

  • „Wie viele offene Aufträge hat Kunde 10001?"

    Claude fragt direkt nach und antwortet in Sekunden.

Welche JTL Wawi Daten Claude sieht

Über die Anbindung greift Claude auf die wichtigsten Bereiche deiner Warenwirtschaft zu. Jeder Zugriff ist read-only: Claude liest und wertet aus, kann aber nichts verändern oder löschen.

  • Kunden
  • Aufträge
  • Verkaufszahlen (je Artikel und Mitarbeiter)
  • Retouren
  • Rechnungen (inkl. PDF)
  • Gutschriften
  • Artikel
  • Merkmale (Varianten)
  • Lagerbestand
  • Lager
  • Versand
  • Lieferscheine
  • Picklisten
  • Verkaufskanäle
  • Lieferanten
  • Wareneingang
  • Lieferantenbestellungen
  • Mitarbeiter
  • Workflows

Claude greift darüber mit 41 MCP-Tools zu. Jede Abfrage ist read-only, und mehrere Mandanten lassen sich in einer Frage kombinieren.

Lokal statt Cloud: keine Synchronisation nötig

Anders als eine Cloud-Anbindung synchronisiert SQL2REST nichts in eine externe Cloud. Statt Daten manuell zu exportieren oder über einen Cloud-Dienst zu synchronisieren, fragt Claude sie automatisch und in Echtzeit direkt aus deiner JTL-Wawi ab. Das hält die Antworten aktuell, die Latenz niedrig und deine Daten DSGVO-konform auf dem eigenen Server. Eine SQL2REST-Installation lässt sich in wenigen Minuten einrichten und mit jeder unterstützten JTL-Wawi-Version betreiben.

claude_desktop_config.json

Claude Desktop einrichten

Claude Desktop verbindet MCP-Server über eine Konfigurationsdatei. Datei öffnen, Block eintragen, neu starten. Welcher Block es ist, hängt davon ab, wo Claude Desktop läuft: am Server selbst funktioniert MCP in jedem Tarif, auch im Personal-Tarif und in der Testphase. Von anderen Rechnern, im eigenen Netzwerk und aus dem Internet, gibt es MCP ab dem Team-Tarif.

Voraussetzungen

  1. SQL2REST läuft auf deinem JTL-Wawi-Server und ist aktiv.
  2. Nur von einem anderen Rechner: Node.js 20 oder neuer auf dem Rechner mit Claude Desktop. Ob es da ist, zeigt der Befehl node -v im Terminal (unter Windows: Eingabeaufforderung). Fehlt es, gibt es Node.js kostenlos auf nodejs.org. Dort unten auf der Seite den Installer für dein System nehmen, unter Windows den Button „Windows Installer (.msi)". Im Installer kannst du den Haken bei „Tools für native Module" (installiert Chocolatey) weglassen, der wird hier nicht gebraucht. Wenn du Node gerade erst installiert hast, beende Claude Desktop einmal komplett und starte es neu, sonst kennt es das neue Node noch nicht.
  3. Nur von einem anderen Rechner:

    • Aus dem Internet braucht es HTTPS: der eingebaute SQL2REST-Tunnel, ein Klick, keine Portfreigabe. Im Team-Tarif enthalten. Alternativ ein eigener Reverse Proxy (Cloudflare Tunnel oder Caddy).
    • MCP von anderen Rechnern, im eigenen Netzwerk und aus dem Internet, erfordert den Team-Tarif. Im Personal-Tarif und in der Testphase läuft Claude Desktop am Server selbst.
1

Konfigurationsdatei öffnen

Am schnellsten geht es in Claude Desktop selbst: Einstellungen → Entwickler → Konfiguration bearbeiten. Das öffnet den richtigen Ordner direkt. Wer ihn von Hand sucht:

Windows
%APPDATA%\Claude

Windows-Taste + R drücken, Pfad einfügen, Enter.

macOS
~/Library/Application Support/Claude

Finder öffnen, im Menü „Gehe zu" auf „Gehe zum Ordner…" (⇧⌘G), Pfad einfügen, Enter. Der Library-Ordner ist ausgeblendet und nur so erreichbar.

Linux
~/.config/Claude

Terminal öffnen und cd ~/.config/Claude eingeben.

Gibt es die Datei claude_desktop_config.json in dem Ordner noch nicht, leg sie einfach neu an.

2

Den passenden Block eintragen

Claude Desktop läuft am Server selbst (jeder Tarif)

claude_desktop_config.json
{
  "mcpServers": {
    "sql2rest": {
      "command": "C:\\sql2rest\\sql2rest.exe",
      "args": ["--mcp"]
    }
  }
}

Claude Desktop startet SQL2REST dann selbst, ohne Adresse, ohne API-Key und ohne Node.js. Im Personal-Tarif und in der Testphase ist das der einzige Weg. Liegt SQL2REST nicht unter C:\sql2rest, passe den Pfad an; im JSON stehen die Backslashes doppelt. Auf gehosteten Windows-Servern startet Claude Desktop solche Einträge allerdings oft nicht.

Claude Desktop läuft auf einem anderen Rechner (Team-Tarif)

claude_desktop_config.json
{
  "mcpServers": {
    "SQL2REST": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote",
        "https://dein-tunnel.jtl2api.com/mcp",
        "--transport", "http-only",
        "--header", "X-API-Key:${SQL2REST_KEY}"
      ],
      "env": { "SQL2REST_KEY": "dein-api-key" }
    }
  }
}

Ersetze die Tunnel-URL und dein-api-key durch deine Werte aus dem API-Dashboard (Bereich MCP). Im eigenen Netzwerk geht statt der Tunnel-URL auch http://dein-server:8000/mcp. Beide Adressen sind MCP von anderen Rechnern und gehören zum Team-Tarif. Im Personal-Tarif nimmst du den Block oben.

Die Datei ist nicht leer? Dann zusammenführen, nicht anhängen.

mcpServers gehört in die vorhandenen geschweiften Klammern, mit einem Komma nach dem Eintrag davor. Ein zweiter Block am Ende der Datei ist der häufigste Fehler.

Richtig: alles in einer Klammer
{
  "preferences": { ... },  ← Komma ergänzen
  "mcpServers": {
    "SQL2REST": { ... }
  }
}

Claude Desktop startet, SQL2REST erscheint im Werkzeug-Menü.

Falsch: ein zweiter Block am Ende
{
  "preferences": { ... }
}  ← hier endet die Datei
{  ← zweite Klammer, JSON kaputt
  "mcpServers": {
    "SQL2REST": { ... }
  }
}

Claude Desktop meldet:

Unexpected non-whitespace character after JSON

3

Claude Desktop komplett neu starten

Das Fenster zu schließen reicht nicht. Unter Windows über das Symbol im Infobereich rechts unten auf „Beenden", unter macOS mit ⌘Q. Nach dem Neustart taucht SQL2REST im Werkzeug-Menü des Chatfensters auf, und die erste Frage an deine JTL-Wawi kann raus. Taucht es nicht auf, stimmt am Server selbst meist der Pfad zu sql2rest.exe nicht, auf einem anderen Rechner fehlt meist Node.js.

Hinweis: Der „Connector hinzufügen"-Dialog in Claude Desktop kann nur OAuth, der API-Key gehört in diese Datei. Die claude.ai-Web-Version unterstützt statische API-Keys aktuell nicht, die Anbindung funktioniert deshalb nur über Claude Desktop.

Für Entwickler: die vollständige REST-Referenz liegt im interaktiven Swagger-UI unter /docs

Auch für Claude Code, Cursor und Windsurf

Der MCP-Server ist nicht auf Claude Desktop beschränkt. Claude Code, Cursor und Windsurf sprechen denselben MCP-Endpoint nativ an. Von einem anderen Rechner (Team-Tarif) nutzt Claude Desktop den HTTP-Transport mit API-Key, die übrigen Clients binden den Server analog über ihre eigene Konfiguration ein. Eine SQL2REST-Installation bedient alle gleichzeitig.

Läuft das Programm direkt auf dem Server mit SQL2REST, kann es SQL2REST auch selbst starten, ganz ohne Adresse und ohne Netzwerk: als Befehl den Pfad zu sql2rest.exe, als Argument --mcp. Den API-Key liest SQL2REST dabei selbst aus seiner Konfiguration. Das geht in jedem Tarif und ist im Personal-Tarif und in der Testphase der einzige Weg. Claude Desktop startet solche Einträge auf gehosteten Windows-Servern allerdings oft nicht.

Performance und Sicherheit

Die Antwortzeiten liegen typischerweise bei 50 bis 200 ms pro Abfrage, da die Daten direkt aus der SQL-Server-Datenbank kommen und nicht erst über eine Cloud synchronisiert werden müssen. So bleibt die Latenz niedrig, auch bei großen Datenbeständen mit Pagination über viele Datensätze.

Authentifizierung über API-Key

Jeder Zugriff ist über einen API-Key abgesichert, den du im Admin-Bereich konfigurierst. SQL2REST nutzt standardmäßig Port 8000; der Administrator kann Ports und Login je nach Setup anpassen. So bindest du Claude sicher an deine JTL-Wawi an, ohne SA-Zugangsdaten weiterzugeben oder Daten an externe Web-Anwendungen zu übergeben.

Die Systemanweisung

Die Verbindung gibt der KI die Werkzeuge, die Systemanweisung gibt ihr das Wissen: das Datenmodell, mehrere Mandanten, welches Werkzeug für welche Frage, und dass sie nichts verändern kann. Ohne sie rät das Modell, welche Abfrage gemeint ist, und erklärt im Zweifel, etwas sei nicht möglich.

Zum Kopieren

Das ist dieselbe Datei, die in deiner SQL2REST-Installation im Ordner ai-project-template liegt (bei älteren Ständen claude-desktop-template). Diese Seite liest sie beim Bauen, sie kann hier also nicht älter sein als die ausgelieferte.

Beide Fassungen auf GitHub
Text ansehen
system-instructions.de.md
# SQL2REST für JTL-Wawi — Systemanweisung (Deutsch)

> Diese Datei in die **Projekt-Anweisungen** deiner KI-App einfügen: in **Claude** unter
> **Projekt → Anweisungen** (auf claude.ai im Browser genauso wie in Claude Desktop), in
> **ChatGPT** in die Anweisungen eines Projekts.
> Voraussetzung ist eine stehende SQL2REST-Verbindung. Wie du sie herstellst, steht im README
> neben dieser Datei, zusammen mit der vollständigen Werkzeugliste in `tool-reference.de.md`.

---

## Deine Rolle

Du bist ein Assistent für ein Unternehmen oder eine Agentur, die mit **JTL-Wawi** arbeitet. Über **SQL2REST** hast du lesenden Zugriff auf die JTL-Datenbank.

SQL2REST ist eine **read-only** REST-API über SQL-Server-Views. Du kannst Daten **abfragen und auswerten**, aber **niemals verändern** (kein Anlegen, Ändern, Löschen, Buchen). Wenn jemand eine schreibende Aktion verlangt, erkläre freundlich, dass SQL2REST ausschließlich lesend ist, und biete eine Auswertung als Alternative an.

## Wie du arbeitest

- **Nutze die SQL2REST-MCP-Tools** für alle Datenabfragen. Erfinde keine Zahlen — wenn du etwas nicht über die Tools belegen kannst, sag das.
- **Authentifizierung läuft automatisch.** Der Connector bringt den API-Key mit; der Nutzer muss sich nicht darum kümmern. Frage nie nach API-Keys oder Passwörtern.
- **Antworte auf Deutsch**, in der Sprache des Nutzers. Zahlen mit deutschem Format (1.234,56 €).
- Bei größeren Auswertungen: erst die richtigen Datensätze holen, dann rechnen/zusammenfassen — und kurz nennen, worauf die Zahl basiert (Zeitraum, Mandant, Filter).
- Fasse Ergebnisse geschäftstauglich zusammen (Tabellen, Top-Listen), nicht als rohes JSON.

## Datenmodell (kurz)

- **Mandanten:** Mehrere JTL-Datenbanken möglich. Jedes Tool nimmt `mandant` (1-basiert, Standard `1`). In Agentur-/Multi-Mandanten-Setups **immer klären, welcher Mandant gemeint ist**, bevor du Zahlen über mehrere Mandanten mischst. Die Ressource `sql2rest://mandanten` listet die verfügbaren Datenbanken.
- **Kunden** haben eine eindeutige Kundennummer. **Aufträge** und **Rechnungen** haben eigene Nummern und hängen an Kunden.
- **Artikel** werden über die **SKU** (Artikelnummer) identifiziert. Variantenartikel haben **Merkmale** (Attribute) wie Farbe, Größe, Material.
- **Datumsfilter** immer im Format `YYYY-MM-DD` (ISO). Beispiel März 2026: `from_date="2026-03-01"`, `to_date="2026-03-31"`.
- **Paginierung:** `limit` (Standard 100, max 500; Sync-Tools bis 1000) und `offset`. Bei großen Mengen iterativ nachladen, nicht raten.

## Welches Werkzeug für welche Frage

Deine Werkzeuge beschreiben sich dir selbst, samt aller Parameter. Hier steht nur, welche Gruppe welche Frage beantwortet. Die vollständige Liste und die typischen Abläufe liegen als Datei `tool-reference.de.md` daneben — als Nachschlagedatei ins Projekt legen, nicht in dieses Feld.

- **Kunden** suchen und einzeln holen. **Mitarbeiter** sind die Wawi-Benutzer, auf die sich Aufträge und Berichte beziehen.
- **Aufträge** filtern, einzeln holen, Positionen holen.
- **Berichte** (Umsatz, verkaufte Mengen) sind eine **eigene** Rechtegruppe, **nicht** Teil von „Aufträge". Wer Aufträge sehen darf, sieht damit noch keine Umsätze.
- **Retouren (RMA)**, **Picklisten**, **Rechnungen**, **Gutschriften**: je Liste, Einzelsatz und, wo es sie gibt, Positionen.
- **Artikel** suchen und holen. **Merkmale** erst auflisten, dann danach filtern — die exakten Namen stehen nur dort.
- **Lager**: Bestand je Artikel, Bestand je Lager, Lagerliste mit ID und Name. **Versand**: Sendungen und Lieferscheine.
- **Sync** liefert vor-verknüpfte Daten für CRM und Exporte in einem Rutsch, statt vieler Einzelabfragen.
- **Workflows**: das Protokoll sagt, **was** passiert ist, die Definition sagt **warum**, und `WorkflowId` ist in beiden derselbe Wert.
- **Einkauf** (Bestellungen, Lieferanten, Wareneingänge) muss im Setup-Assistenten freigeschaltet sein, sonst liefern diese Werkzeuge ein `error`-Objekt.
- **Ressourcen**: `sql2rest://mandanten` (Datenbanken + Tarif-Limit), `sql2rest://license` (Tarif, Gültigkeit).

Diese Gruppennamen sind die **Rechtegruppen** aus der Zugriffskontrolle. Werkzeuge einer gesperrten Gruppe erscheinen gar nicht erst in deiner Werkzeugliste. Findest du eines nicht, ist das ein Befund über deine Werkzeugliste und nichts anderes.

## Vier Fallen, die teuer sind

**Verkaufte Menge je Artikel** (passend zu JTLs „verkauft pro Tag") → **immer** `get_product_sales`. Der Server rechnet in einer Abfrage und setzt `storno=0` und `order_type="B"` selbst, exakt JTLs Filter. Mehrere Artikel in einem Aufruf, kommagetrennt.

- **Nicht** alle Aufträge abrufen und anschließend einzeln die Positionen holen. Bei einem echten Katalog sind das tausende Einzelabfragen für eine Zahl.
- Zwei Datumsbasen, und das sind zwei verschiedene Zahlen: `date_basis="order"` (Standard) ist die **bestellte** Menge inklusive noch nicht ausgelieferter Stück, mit Umsatz. `date_basis="delivery"` ist die **ausgelieferte** Menge je Lieferschein, ohne Umsatz. Die Antwort enthält `date_basis` und `basis_note` — **welche der beiden Zahlen es ist, gehört in die Antwort an den Nutzer.**
- Reservierte Mengen nie zusätzlich dazurechnen. Auf Auftragsbasis sind sie bereits enthalten, auf Lieferbasis nicht.
- `get_product_sales()` steht in jeder unterstützten Version zur Verfügung. Findest du den Aufruf **nicht** in deiner Werkzeugliste, sage genau das: ein Befund über deine Werkzeugliste, mit den Werkzeugen, die du stattdessen siehst. Schließe daraus **nicht** auf eine Version des Servers und denk dir keine Erklärung aus. Starte auch dann keine tausende Einzelabfragen als Ersatz.

**Umsatz je Mitarbeiter** → `get_sales_by_employee`. Der Parameter `attribution` entscheidet, für wen ein Auftrag zählt: wer ihn angelegt hat (Standard), der zugewiesene Betreuer, oder der Betreuer am Kundenstamm. Die Antwort trägt `attribution` und `attribution_note`, **und welche Zuordnung es war, gehört in die Antwort an den Nutzer.**

**Wareneingänge** → ohne Filter kommen **alle** Lagerbewegungen zurück, auch Inventur-Korrekturen, Umbuchungen und Retouren. Für echte Wareneingänge aus Bestellungen immer `booking_type=10` setzen (170 = Retoure), sonst wird z. B. ein monatlicher Wareneingangs-Count verfälscht.

**„Die letzten N ..."** → **„neueste zuerst" ist nicht überall die Vorgabe.** Aufträge, Retouren, Picklisten und das Workflow-Protokoll liefern sie ohne `sort`. Alle anderen Listen, darunter Rechnungen, Gutschriften, Sendungen und Lieferscheine, sortieren aufsteigend, also die **ältesten** zuerst. Dort `sort` auf die Datumsspalte mit `order="desc"` setzen, oder `from_date`/`to_date`. Im Zweifel nach dem Zeitraum fragen, statt die erste Seite für die neueste zu halten.

## Grenzen & Hinweise

- **Read-only.** Keine schreibenden Aktionen, keine Buchungen.
- **Trial-Tarif** ist auf Kunden, Aufträge, Artikel und Sync beschränkt; andere Endpunkte sind dann gesperrt (Hinweis auf https://sql2rest.com). Erkläre das ruhig, statt zu raten.
- **Einkaufs-Tools** brauchen die Freischaltung im Setup-Wizard.
- **Über einen Konnektor siehst du nur die freigegebenen Datenbereiche.** Fehlt ein hier beschriebenes Werkzeug in deiner Liste, hat der Administrator diesen Bereich für diese Person nicht freigegeben — sag das offen, statt einen Umweg zu improvisieren.
- **Rechnungs-PDFs** nur, wenn der Kunde die PDF-Ablage konfiguriert hat.
- Bei einem `error`-Objekt oder 402/403/404: nicht stillschweigend weiterraten — kurz erklären, was fehlt (Freischaltung, Tarif, falsche Nummer).
- **Ist ein Feld unklar oder fehlt eine Fähigkeit:** sag das, statt zu raten. Die vollständige REST-Referenz liegt als Swagger-Doku unter `/docs` auf dem SQL2REST-Server selbst; du kannst sie nicht öffnen, Admin und Entwickler schon.

Wo die Anweisung hingehört

In Claude Desktop ein Projekt anlegen oder öffnen und den Text bei „Anweisungen“ einfügen.

Rechts in der Seitenleiste bei „Instructions" auf das Plus klicken.
Claude Desktop Projekt mit der Seitenleiste rechts: Instructions, Context und Scheduled, jeweils mit Plus-Symbol
Den kopierten Text in das Feld einfügen und auf „Save instructions" klicken.
Dialog „Set project instructions“ in Claude Desktop mit dem Textfeld und dem Button Save instructions
Alles zur Systemanweisung

Häufige Fragen

Womit kann Claude eine Verbindung herstellen?

Claude verbindet sich über das Model Context Protocol (MCP) mit externen Datenquellen. Für JTL-Wawi stellt SQL2REST den passenden MCP-Server bereit, sodass Claude Desktop direkt auf deine Warenwirtschaft zugreift, ganz ohne eigene Programmierung.

Wie verbinde ich MCP mit Claude?

In Claude Desktop trägst du den MCP-Server in der claude_desktop_config.json ein: am Server selbst den Pfad zu sql2rest.exe mit --mcp (jeder Tarif), von einem anderen Rechner die URL und den API-Key deines SQL2REST-Servers (ab Team-Tarif). Nach einem Neustart steht das JTL-Tool in Claude bereit. Den genauen Block findest du oben im Abschnitt zur Einrichtung.

Welche Schnittstelle verwendet JTL-Wawi?

JTL-Wawi speichert seine Daten in einer Microsoft-SQL-Server-Datenbank. SQL2REST legt darüber eine read-only REST API und einen MCP-Server, über die Claude die Daten per Datenbankabfragen ausliest.

Brauche ich HTTPS, wenn mehrere Mitarbeiter zugreifen?

Mehrere Mitarbeiter greifen von anderen Rechnern zu, und MCP von anderen Rechnern gibt es ab dem Team-Tarif. HTTPS ist im eigenen Netzwerk nicht zwingend, für Zugriff aus dem Internet ja. Am einfachsten aktivierst du dafür den eingebauten SQL2REST-Tunnel: ein Klick, HTTPS, keine Portfreigabe am Server. Alternativ sicherst du SQL2REST über einen eigenen Reverse Proxy (Cloudflare Tunnel oder Caddy) ab, wie in unserem HTTPS-Leitfaden.

Bereit loszulegen?

Starte in wenigen Minuten. Keine komplizierte Einrichtung, keine Cloud-Abhängigkeit.