Installation überspringen. In unter 2 Minuten einsatzbereit.
Starte eine kostenlose Testphase auf cloud.anythingmcp.com, füge SAP S/4HANA (HANA SQL) mit einem Klick hinzu und richte deinen KI-Client (Claude, ChatGPT, Copilot oder Cursor) auf den erzeugten MCP-Endpoint. Kein Docker, kein git clone, keinerlei Entwicklungserfahrung nötig.
Zusammenfassung
Lass Claude SAP S/4HANA On-Premise oder Private Cloud direkt aus der HANA-Datenbank lesen, mit SAPs eigenen Tabellen- und Feldbezeichnungen als Tools. Nur lesend.
Frag einfach
Beispiel-Prompts für SAP S/4HANA (HANA SQL)
Klick auf einen Prompt, um ihn zu kopieren. In Claude, ChatGPT, Cursor, Gemini, Copilot oder OpenClaw einfügen — und gegen diesen Connector laufen lassen.
Claude ist KI und kann Fehler machen. Bitte Antworten gegenprüfen.
Kurzfassung: Mit dem Connector SAP S/4HANA (HANA SQL) liest Claude ein S/4HANA-System direkt aus seiner HANA-Datenbank. Bevor es eine Abfrage schreibt, schlägt Claude in SAPs eigenem Data Dictionary nach, was BUKRS, HSL oder VBRK bedeuten, und wählt so die richtige Tabelle, das richtige Währungsfeld und den richtigen Mandanten. Die Session ist in HANA selbst schreibgeschützt, Ergebnisse sind auf 1.000 Zeilen begrenzt und jedes Statement hat ein Timeout. Du brauchst einen HANA-Datenbankbenutzer von der SAP-Basis und ein self-hosted AnythingMCP, das den HANA-SQL-Port erreicht.
| Auf einen Blick | |
|---|---|
| Connector | SAP S/4HANA (HANA SQL), 10 Tools |
| Systeme | S/4HANA On-Premise, Private Cloud (RISE), HANA Enterprise Cloud |
| Zugriff | Nur lesend: ein einzelnes SELECT pro Aufruf, SET TRANSACTION READ ONLY, höchstens 1.000 Zeilen, 60 s Timeout |
| Treiber | hdb mitgeliefert; SAPs @sap/hana-client optional, von dir installiert |
| Hosting | Self-hosted in dem Netzwerk, das HANA erreicht (AnythingMCP ist Open Source, AGPL-3.0) |
| Getestet | Jedes Tool gegen ein laufendes SAP S/4HANA 2025 |
Warum ein einfacher SQL-Connector für SAP nicht reicht
SAPs Tabellen und Felder sind kurze, meist deutsche Abkürzungen: ACDOCA ist das Universal Journal, RBUKRS der Buchungskreis, HSL der Betrag in Hauswährung, VBRK der Fakturakopf. Ein Modell, das nur Spaltennamen sieht, rät, und SAP bestraft Raten: Beträge gehören zu einem Währungsfeld in einer anderen Spalte, jede Tabelle ist nach Mandant (MANDT) getrennt, Datumswerte sind YYYYMMDD-Strings und Belegnummern haben führende Nullen.
Der Connector gibt Claude SAPs eigenes Dictionary als Tools. Er liest die Tabellen, mit denen SAP sich selbst beschreibt (DD02L, DD03L, DD04T, DD07T, DD08L und die CDS-Annotationen). So sieht Claude die fachliche Bezeichnung jedes Felds, welches Währungs- oder Mengeneinheitenfeld zu welchem Betrag gehört, was die Codes eines Felds bedeuten, wie Tabellen verknüpft sind und welche CDS-Views SAP freigegeben hat und analytisch sind. Erst dann schreibt es die Abfrage.
HANA SQL oder OData?
AnythingMCP verbindet S/4HANA On-Premise und Private Cloud auf zwei Wegen. Nimm einen davon, oder beide nebeneinander.
| HANA SQL (diese Anleitung) | OData | |
|---|---|---|
| Liest | Jede Tabelle und CDS-View, die der Datenbankbenutzer lesen darf | Die OData-Services, die der SAP-Benutzer aufrufen darf |
| SAP-Berechtigungen | Greifen nicht: die Datenbank-Grants sind die Grenze | Prüft SAP bei jedem Aufruf |
| Stark bei | Summen über Millionen Zeilen, Finanz- und modulübergreifenden Analysen | Veröffentlichten APIs, Business-Objekten, SAPs eigenen Prüfungen |
| Du brauchst | Einen HANA-Datenbankbenutzer, Netzwerkzugang zum SQL-Port, eine Lizenz, die es erlaubt | Einen technischen SAP-Benutzer, aktive Gateway-Services |
Was du brauchst
- Eine SAP-Basis-Administration, die im Tenant mit dem ABAP-Schema (meist
SAPHANADBoderSAPABAP1) einen Benutzer anlegen kann. - Die Verbindungsdaten: Host, der SQL-Port des Tenants (
3<instance>15für den ersten Tenant,3<instance>41und höher für weitere), Tenant-Name, Schema, der dreistellige SAP-Mandant und die SAP-Sprache für Texte (EEnglisch,DDeutsch). - Ein self-hosted AnythingMCP, das diesen Port erreicht. Der HANA-SQL-Port ist normalerweise nur im Firmennetz oder in der Landing Zone von SAPs Private Cloud erreichbar.
- Einen Lizenz-Check. Direkter SQL-Zugriff einer Drittanwendung auf das ABAP-Schema richtet sich nach deiner SAP-HANA-Lizenz. Eine mit S/4HANA gebündelte Runtime-Lizenz deckt ihn meist nicht ab, eine Full-Use-Lizenz schon. Frag dein SAP-Account-Team, bevor du ein Produktivsystem anbindest. In SAPs Private-Cloud-Angeboten beantragst du den Datenbankbenutzer und den Netzwerkweg bei SAP.
So richtest du es ein
Schritt 1: Einen lesenden Datenbankbenutzer anlegen
Im Tenant mit dem ABAP-Schema:
CREATE USER AMCP_READER PASSWORD "<strong password>" NO FORCE_FIRST_PASSWORD_CHANGE;
ALTER USER AMCP_READER DISABLE PASSWORD LIFETIME;
-- dictionary tools
GRANT SELECT ON SAPHANADB.DD02L TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD02T TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD03L TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD03T TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD03ND TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD04T TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD07T TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD08L TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD05S TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DDHEADANNO TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DDFIELDANNO TO AMCP_READER;
GRANT SELECT ON SAPHANADB.ARS_W_API_STATE TO AMCP_READER;
-- organization structure
GRANT SELECT ON SAPHANADB.T001 TO AMCP_READER;
GRANT SELECT ON SAPHANADB.T001K TO AMCP_READER;
GRANT SELECT ON SAPHANADB.T001W TO AMCP_READER;
GRANT SELECT ON SAPHANADB.TKA01 TO AMCP_READER;
GRANT SELECT ON SAPHANADB.TVKO TO AMCP_READER;
GRANT SELECT ON SAPHANADB.TVKOT TO AMCP_READER;
GRANT SELECT ON SAPHANADB.T024E TO AMCP_READER;
-- then the business tables and CDS views your use cases need, e.g.
GRANT SELECT ON SAPHANADB.ACDOCA TO AMCP_READER;
GRANT SELECT ON SCHEMA SAPHANADB ist für breite Analysen einfacher, macht aber alles im Schema lesbar, HR-Daten eingeschlossen. SQL wendet SAPs Anwendungsberechtigungen (Buchungskreis, Verkaufsorganisation, HR-Prüfungen) nicht an: Was der Datenbankbenutzer lesen darf, darf Claude lesen.
Optional begrenzt du die Statements des Benutzers auch serverseitig:
CREATE WORKLOAD CLASS "AMCP_READER_WC" SET 'STATEMENT TIMEOUT' = '60', 'STATEMENT MEMORY LIMIT' = '20';
CREATE WORKLOAD MAPPING "AMCP_READER_WM" WORKLOAD CLASS "AMCP_READER_WC" SET 'USER NAME' = 'AMCP_READER';
Schritt 2: AnythingMCP im Netzwerk starten
Auf einem Host, der den HANA-SQL-Port erreicht:
mkdir anythingmcp && cd anythingmcp
curl -fsSLo docker-compose.yml \
https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d # → http://localhost:3000
Trag den HANA-Host in SSRF_ALLOWED_HOSTS in der .env ein: Private Adressen lehnt AnythingMCP standardmäßig ab.
Schritt 3: Den Connector installieren
Öffne Connectors → Store, wähle SAP S/4HANA (HANA SQL) und fülle die Variablen aus:
| Variable | Beispiel |
|---|---|
SAP_HANA_HOST | hana.internal |
SAP_HANA_PORT | 30015 |
SAP_HANA_TENANT | S4P |
SAP_HANA_SCHEMA | SAPHANADB |
SAP_CLIENT | 100 |
SAP_LANGUAGE | D |
SAP_HANA_TLS | verify, no-verify bei einem selbstsignierten Zertifikat, oder off |
SAP_HANA_USER / SAP_HANA_PASSWORD | AMCP_READER und sein Passwort |
Die Installation macht einen Testaufruf (sap_org_structure) und zeigt dir, ob Zugangsdaten und Grants funktionieren. Das Passwort wird verschlüsselt gespeichert und Claude nie gezeigt.
Schritt 4: Den MCP-Server zu Claude hinzufügen
Auf claude.ai oder in Claude Desktop: Anpassen → Connectors → + → Eigenen Connector hinzufügen, die URL deines MCP-Servers einfügen (steht unter MCP Servers in AnythingMCP) und anmelden. Für claude.ai muss die URL öffentlich per HTTPS erreichbar sein, weil Claude sich von Anthropics Servern aus verbindet; veröffentlicht wird nur der MCP-Endpunkt, nie der HANA-Port. In Claude Code geht auch eine lokale Instanz:
claude mcp add --transport http sap-hana <your MCP server URL> --header "X-API-Key: <key>"
Schritt 5: Fragen
Fang mit etwas an, das die Daten eingrenzt, zum Beispiel „Welche Buchungskreise gibt es in diesem System, und in welcher Währung?“. Der Connector sagt Claude, zuerst sap_guide zu lesen; von dort arbeitet es sich selbstständig durch die Dictionary-Tools.
Die Tools
| Tool | Was Claude davon bekommt |
|---|---|
sap_guide | Das SAP-Datenmodell für SQL erklärt, nach Themen: Grundlagen (Mandant, Datumswerte, führende Nullen, Währungen), Finanzen (das Universal Journal ACDOCA), Vertrieb, Bestand, Einkauf, Operations, Stolperfallen und Abfrage-Rezepte. Kostet nichts und berührt keine Daten. |
sap_org_structure | Buchungskreise mit Währung, Kontenplan und Geschäftsjahresvariante; Kostenrechnungskreise, Werke, Verkaufs- und Einkaufsorganisationen. |
sap_search_tables | Tabellen nach Name oder Beschreibung mit ihrer Zeilenzahl, mit Hinweis auf S/4HANA-Kompatibilitäts-Views, die einfaches SQL falsch lesen würde. |
sap_describe_table | Jedes Feld mit Bezeichnung, Schlüsselkennzeichen, Typ, dem Währungs- oder Mengeneinheitenfeld jedes Betrags und der Prüftabelle. |
sap_find_fields | Welche Tabellen ein fachliches Feld enthalten, z. B. „Nettofälligkeit“. |
sap_field_values | Was die Codes eines Felds bedeuten, z. B. die Vertriebsbelegtypen der Fakturen. |
sap_table_relations | Fremdschlüssel mit ihren Join-Bedingungen, und die Texttabelle. |
sap_search_cds_views | SAPs CDS-Views nach Name oder Bezeichnung, mit Kennzeichen für freigegebene und analytische Views. |
sap_describe_cds_view | Spalten einer CDS-View mit Bezeichnungen, Kennzahlen, Währungs- und Einheitenfeldern und Assoziationen. |
sap_query | Ein einzelnes lesendes SELECT, auf 1.000 Zeilen begrenzt und mit Timeout. |
Was der Connector durchsetzt
- Schreibgeschützt in HANA selbst. Die Session führt vor dem Statement
SET TRANSACTION READ ONLYaus, zusätzlich zu einer Prüfung, die nur ein einzelnesSELECToderWITH … SELECTdurchlässt undSELECT … INTOsowie sperrende Lesezugriffe ablehnt. Die eigentliche Grenze bleiben die Datenbank-Grants. - Höchstens 1.000 Zeilen, gestreamt, sodass ein
SELECT *auf eine große Tabelle nie im Speicher landet. - 60 Sekunden Timeout pro Statement als Standard (bis 600 s mit
statementTimeoutim Connection-String); die Session wird geschlossen und HANA bricht das Statement ab. - Gesperrte Tabellen. SAPs HR-Tabellen (
PA####,PB####,PCL#,HRP####) und die Benutzer- und Passworttabellen (USR##,USH##,RFCDES,SSF_PSE_D) werden standardmäßig abgelehnt, auch wenn die Grants sie erlauben. Die Liste bearbeitest du in den Connector-Einstellungen. - Exakte Werte. Dezimalzahlen kommen als Strings zurück, Beträge werden also nicht gerundet; SAP-GUIDs kommen als Hex in Großbuchstaben.
- Der SAP-Mandant. Der Connector setzt die Session-Variable
CDS_CLIENT, ohne die SAPs CDS-Views keine Zeilen liefern. Normale Tabellen brauchen weiterhin einen Filter aufMANDT(oderRCLNT), undsap_guidesagt Claude das.
SAPs nativen Treiber verwenden
AnythingMCP liefert hdb mit, SAPs HANA-Treiber in reinem JavaScript (Apache-2.0). Er deckt Benutzer und Passwort, TLS, Multi-Tenant-Systeme und alles ab, was der Connector tut. SAPs nativer Treiber @sap/hana-client bringt zusätzlich Kerberos, den Secure User Store (hdbuserstore) und Connection-Pooling. Er steht unter der SAP Developer License, die uns die Weitergabe nicht erlaubt, deshalb ist er nie Teil des Images: Du installierst ihn in deine eigene Installation, entweder indem du das Image erweiterst oder ihn als Volume einbindest, und wählst ihn mit driver=hana-client im Connection-String oder mit HANA_DRIVER=hana-client für alle HANA-Connectors. Prüf, ob dein SAP-Vertrag den produktiven Einsatz abdeckt. Auf arm64-Hosts bleibst du beim mitgelieferten hdb oder baust ein eigenes Debian-basiertes Image. Schritt für Schritt: SAP HANA in der AnythingMCP-Doku.
Prompts zum Ausprobieren
- „Zeig mir den Umsatz pro Buchungsperiode für Buchungskreis 1000 im Jahr 2026.“
- „Welche Kunden haben offene Forderungen, die älter als 30 Tage sind, und wie viel pro Kunde?“
- „Die 10 umsatzstärksten Kunden dieses Jahres nach Nettoumsatz, aus den Fakturen.“
- „Welche freigegebenen analytischen CDS-Views decken Journalbuchungen ab? Beschreib die Kennzahlen der ersten.“
- „Was bedeuten die Werte des Vertriebsbelegtyps in den Fakturen?“
- „Warenbewegungen pro Bewegungsart in Werk 1000 im letzten Monat.“
Fehlerbehebung
- Eine CDS-View liefert keine Zeilen.
SAP_CLIENTfehlt oder ist falsch; der Connector braucht ihn, umCDS_CLIENTzu setzen. - Verbindung abgelehnt oder Weiterleitung auf einen unbekannten Host. Nimm den eigenen SQL-Port des Tenants statt des Ports der Systemdatenbank, die auf einen internen Hostnamen weiterleiten kann, den der Connector nicht auflöst.
- „Insufficient privilege“. Die Tabelle ist dem Datenbankbenutzer nicht freigegeben. Gib sie frei, oder bitte Claude, eine Tabelle oder CDS-View zu nehmen, die es lesen darf.
- Zertifikatsfehler. Setz
SAP_HANA_TLS=no-verifybei einem selbstsignierten Zertifikat, oder installiere die CA. - Eine Abfrage läuft ins Timeout. Bitte Claude, nach Buchungskreis, Periode oder Werk zu filtern und in SQL zu aggregieren; erhöhe
statementTimeoutnur, wenn die Abfrage wirklich groß ist.
FAQ
Kann Claude über diesen Connector Daten in SAP ändern?
Nein. Die HANA-Session ist schreibgeschützt, es läuft nur ein einzelnes SELECT, Schreibzugriffe und sperrende Lesezugriffe werden abgelehnt. Leg den Datenbankbenutzer nur mit SELECT-Grants an, dann setzt HANA dieselbe Regel durch.
Werden SAP-Berechtigungen beachtet? Nein. SQL umgeht SAPs Anwendungsberechtigungen, die Datenbank-Grants entscheiden also, was Claude lesen kann. Wenn SAPs Berechtigungsprüfungen greifen sollen, nimm den OData-Weg, oder gib nur Tabellen und Views frei, die gelesen werden dürfen.
Erlaubt meine SAP-Lizenz direkten SQL-Zugriff auf S/4HANA? Das hängt von deiner HANA-Lizenz ab. Eine mit S/4HANA gebündelte Runtime-Lizenz deckt SQL-Zugriff von Drittanwendungen auf das ABAP-Schema meist nicht ab, eine Full-Use-Lizenz schon. Prüf deinen Vertrag, bevor du ein Produktivsystem anbindest.
Funktioniert es mit S/4HANA Private Cloud (RISE)? Ja, wenn SAP einen Datenbankbenutzer und einen Netzwerkweg zum HANA-SQL-Port bereitstellt und AnythingMCP dort läuft, wo es diesen Port erreicht. Beides beantragst du bei SAP.
Kann ich statt self-hosted die AnythingMCP Cloud nutzen? Nur wenn der HANA-SQL-Port aus dem Internet erreichbar ist, was selten der Fall und selten ratsam ist. Betreibe AnythingMCP self-hosted neben SAP.
Funktioniert es auch mit ChatGPT und Copilot? Ja. Derselbe MCP-Server funktioniert in ChatGPT, GitHub Copilot, Cursor und Claude Code.
Siehe auch
- OData zu MCP: der andere Weg zu S/4HANA On-Premise, mit SAPs Berechtigungsprüfungen
- SAP mit Claude verbinden: alle SAP-Connectors im Überblick
- Datenbank zu MCP: SAP HANA als einfacher Datenbank-Connector, neben SQL Server, PostgreSQL und Oracle
- SAP HANA auf GitHub: Optionen des Connection-Strings und der native Treiber
War dieser Guide hilfreich?