Einrichtung in drei Schritten.
Sie brauchen Node.js 22.12 oder neuer, Zugang zum SAP-System (auf S/4HANA Cloud die Entwickler-Businessrolle, die Ihr Benutzer für Eclipse ADT ohnehin hat; On-Premise den in SICF aktiven Dienst /sap/bc/adt) und einen Chromium-Browser für Browser-SSO. Die vollständige Fassung mit Windows-Pfaden und den Host-Logs steht im README.
Beschreiben Sie Ihre SAP-Systeme
Eine Datei, ~/.abap-adt-mcp/systems.json, ein Eintrag je System. Der Schlüssel ist der Name, den Sie in Chats verwenden. Dieser vollständige S/4HANA-Cloud-Eintrag mit Browser-SSO beginnt schreibgeschützt; entfernen Sie die Zeile policy, sobald Sie schreiben wollen, dann legt das Modell im Rahmen Ihrer SAP-Berechtigungen an, ändert und aktiviert.
{
"DEV": {
"url": "https://myXXXXXX.s4hana.cloud.sap",
"client": "080",
"authType": "sso",
"default": true,
"policy": { "readOnly": true }
}
}Registrieren Sie den Server in Ihrem Host
Claude Code ist eine Zeile. Claude Desktop nimmt das JSON unter Settings, Developer, Edit Config entgegen, danach ein Neustart. Dieselbe Map funktioniert in Cursor und Cline; VS Code nennt sie servers.
claude mcp add abap-adt-mcp \
-e SAP_SYSTEMS_FILE=$HOME/.abap-adt-mcp/systems.json \
-- npx -y abap-adt-mcp{
"mcpServers": {
"abap-adt-mcp": {
"command": "npx",
"args": ["-y", "abap-adt-mcp"],
"env": {
"SAP_SYSTEMS_FILE": "/Users/me/.abap-adt-mcp/systems.json",
"MCP_TOOLSETS": "focused"
}
}
}
}Sagen Sie Hallo
Öffnen Sie einen neuen Chat. Das Modell ruft listSystems, login (für SSO öffnet sich einmal ein Browserfenster), searchObject und getObjectSource auf. Wenn der Quelltext zurückkommt, sind Sie fertig.
Liste meine SAP-Systeme auf, melde dich an DEV an und zeige mir den Quelltext der Klasse CL_ABAP_CHAR_UTILITIES.
Erscheint im Host nichts, lesen Sie dessen MCP-Log: spawn npx ENOENT heißt, Node.js fehlt; kein Browserfenster heißt, kein Chromium gefunden (SAP_BROWSER_PATH benennt eines); On-Premise muss /sap/bc/adt in SICF aktiv sein. Die Fehlerbehebung hat den Rest.
Was Sie das Modell fragen können.
Der Server ist ein Werkzeugkasten, aus dem das Modell wählt: Fragen Sie in natürlicher Sprache, die Reihenfolge bestimmt es selbst. Schreibende Tools sperren und entsperren selbst, activate=true aktiviert im selben Aufruf, und jeder Fehler ist JSON mit kind, hint und den nächsten Tools.
| Frage | Tools, zu denen das Modell greift |
|---|---|
| "Erkläre, was die Methode GET_DATA von ZCL_ORDER_SERVICE tut." | searchObject, getMethodSource |
| "Wo wird die Tabelle ZTABLE noch verwendet, und von welchen Programmen?" | whereUsed, sourceTextSearch, grepPackage |
| "Füge am Anfang von GET_DATA eine Null-Prüfung ein, aktiviere und führe die Unit-Tests aus." | resolveTransport, syntaxCheckCode, editObjectSource, unitTestRun, objectDiff |
| "Lege die Klasse ZCL_HELLO im Paket ZDEMO an, die Hello World ausgibt, mit einem Unit-Test." | validateNewObject, resolveTransport, createObject, setObjectSource, createTestInclude, unitTestRun |
| "Führe ATC auf dem Paket ZFIN aus und wende jeden sicheren Quickfix an." | createAtcRun, atcWorklists, atcQuickfixProposals, atcApplyQuickfix, atcSummary |
| "Was hat sich im Transport DEVK900123 geändert? Kann er freigegeben werden?" | transportDetails, transportUnifiedDiff |
| "Warum ist der letzte Kurzdump des Benutzers DEVELOPER aufgetreten? Schlage eine Korrektur vor." | dumps, dumpDetails, getObjectSource |
| "Ist ZCL_ORDER_SERVICE bereit für ABAP Cloud? Welche SAP-Objekte stehen im Weg?" | apiReleaseState, createAtcRun |
| "Wähle die zehn neuesten Zeilen aus ZTABLE mit STATUS = 'X'." | runQuery (sobald die Destination Daten erlaubt) |
Sechs fertige Abläufe reisen zudem als MCP-Prompts mit: create-object, safe-edit, review-transport, fix-atc, clean-core-check, debug-dump. Jeder nennt die Tools in Reihenfolge und sagt, wo er anhält und nachfragt.
Die Leitplanken sitzen im Server, nicht im Host.
Der policy-Block einer Destination wird im Server ausgewertet, bevor das Tool SAP aufruft, unabhängig davon, was der Host genehmigt. Ablehnungen kommen als kind: "policyDenied" zurück und nennen die Schranke. Eine Destination ohne Policy ist im Rahmen Ihrer SAP-Berechtigungen voll beschreibbar und liest keine Tabellendaten, bis Sie es erlauben.
Außerdem: Geheimnisse bleiben in ${env:VAR}, TLS bleibt je Destination an, jeder Aufruf landet mit Tool, Destination, Ergebnis und Schranke im Audit-Log, und Fehlermeldungen werden geschwärzt. Inhalte aus SAP sind nicht vertrauenswürdige Eingaben; verwenden Sie einen Host, der vor destruktiven Aufrufen fragt.
| Policy-Schlüssel | Wirkung |
|---|---|
| readOnly | Nur lesende Tools laufen. Jedes Schreiben von Quelltext, runSnippet, unitTestRun und ATC-Läufe werden abgelehnt. |
| allowedPackages | Schreiben nur innerhalb dieser Paketmuster (["Z*", "$*"]); Lesen wird nie eingeschränkt. |
| deniedTables | Muster, die in tableContents, in jedem FROM/JOIN von runQuery abgelehnt und im geschriebenen ABAP gesucht werden. |
| allowDataPreview | Aus, sofern nicht gesetzt. Öffnet Tabellenzeilen nach Name. |
| allowFreeSql | Aus, sofern nicht gesetzt. Öffnet runQuery; schließt die Datenvorschau ein. |
| deniedTools | Namen, Muster oder toolset:git, die auf dieser Destination abgelehnt werden; die Tools bleiben gelistet. |
| allowedTransports | Jedes Transport-Argument muss passen; das Anlegen von Transporten wird abgelehnt. |
So sieht es bei der Arbeit aus, die Sie wirklich haben.*
Ein Kurzdump um drei Uhr nachts, siebenundzwanzig ATC-Befunde an einem Freitag, ein Transport, den niemand freigeben will, eine Klasse, der noch ihr Test fehlt, Code, der S/4HANA Cloud überstehen muss. Suchen Sie sich aus, was nach Ihrer Woche aussieht.
dumps, dumpDetails, die Zeile, die Korrektur, aktiviert und getestet.apiReleaseState bewertet jedes SAP-Objekt, nennt den Nachfolger, dann die Umstellung.173 Tools, 16 Toolsets.
Tool-Schemata kosten Kontext. MCP_TOOLSETS=focused veröffentlicht die 114 Entwicklungstools für den Alltag; all ergänzt Debugger, Traces, abapGit, RAP, Services, Refactoring und Discovery. Die Referenz je Tool mit Parametern und Lese-/Destruktiv-Annotationen ist docs/TOOLS.md.
- core6 · Destinationen, Health, Session
- source16 · lesen, schreiben, sperren, Diff
- objects27 · suchen, navigieren, anlegen, aktivieren
- transports18 · Transportaufträge
- analysis16 · Syntax, Vervollständigung, apiReleaseState, runSnippet
- tests4 · ABAP Unit
- atc14 · Läufe, Quickfixes, Ausnahmen
- data10 · DDIC, tableContents, runQuery
- runtime3 · feeds, dumps
- discovery7 · ADT-Discovery, Feature-Details
- refactoring8 · umbenennen, Methode extrahieren, Paket wechseln
- rap8 · RAP-Generierung
- services4 · Business Services
- git10 · abapGit
- debugger13 · Breakpoints, Stack, Variablen
- traces9 · SQL- und Laufzeit-Traces
● im Preset focused (114 Tools). Die übrigen 59 kommen mit MCP_TOOLSETS=all.
Dieser Server
- Viele Destinationen aus einem Prozess, stdio oder HTTP
- Policies serverseitig durchgesetzt, Audit-Log, Schwärzung
- Liest und durchsucht Quelltext, schreibt Quelltext, Sperren, Dumps, Daten, Verwendungsnachweis, Debugger, abapGit
- Kompositionen wie
resolveTransport,editObjectSource,grepPackage,apiReleaseState,runSnippet,objectDiff
Der offizielle ADT MCP Server von SAP
- Wird mit ADT für VS Code und Eclipse unter dem Schlüssel
abap-adtausgeliefert - Legt an, aktiviert, testet, prüft und transportiert
- Liest und durchsucht keinen Quelltext, schreibt keinen, sperrt nicht, zeigt keine Dumps
- Beide lassen sich nebeneinander registrieren: Schlüssel und Tool-Namen kollidieren nicht. docs/ROUTING.md ordnet die Namen zu.
Die ADT-REST-Dienste sind die, die Eclipse verwendet, und nicht im SAP Business Accelerator Hub veröffentlicht; die SAP API Policy nennt sie intern. Ob SAP Ihre Nutzung akzeptiert, ist eine Frage an Ihren SAP-Ansprechpartner. docs/API-POLICY.md geht die Policy Abschnitt für Abschnitt durch und beschreibt eine konservative Konfiguration.
Weitere Wege zur Installation.
Claude-Code-Plugin
Das Repository ist sein eigener Plugin-Marktplatz. Zwei Befehle registrieren den Server und laden beide Skills, angeheftet an das Release, mit dem sie ausgeliefert werden.
/plugin marketplace add williansaez/abap-adt-mcp
/plugin install abap-adt-mcp@abap-adt-mcpContainer
Gebaut aus node:22-alpine, läuft als unprivilegierter Benutzer node, bei jedem Release nach GHCR veröffentlicht. Browser-SSO braucht einen lokalen Browser; basic- und oauth-Destinationen funktionieren im Container.
docker run -i --rm \
-v "$PWD/systems.json:/config/systems.json:ro" \
-e SAP_SYSTEMS_FILE=/config/systems.json \
ghcr.io/williansaez/abap-adt-mcp:latestAngeheftete Version
npx -y abap-adt-mcp holt bei jedem Start das neueste Release. Für einen kontrollierten Rollout heften Sie es an und prüfen die Provenance-Bescheinigung, die Trusted Publishing anhängt.
npx -y abap-adt-mcp@2.7.0
npm audit signaturesAus dem Quelltext
Eine systems.json neben dem Checkout wird automatisch gelesen. Richten Sie den Host auf dist/index.js.
git clone https://github.com/williansaez/abap-adt-mcp.git
cd abap-adt-mcp && npm ci && npm run buildAuthentifizierungsmodi: sso (benannte Benutzer auf S/4HANA Cloud, einmal ein Browserfenster), sso2 (On-Premise ohne Browser über einen vertrauenswürdigen lokalen Ticket-Provider), basic (On-Premise-Benutzer und Communication Users), oauth (unbeaufsichtigte Clients). Details in docs/AUTH.md.
Ein Prompt bis zur ersten Aktivierung.
Node.js, eine systems.json, eine Zeile im Host. Der erste Chat liest eine Klasse; die Leitplanken entscheiden, was er schreiben darf.