Claude liest, schreibt, testet und prüft ABAP-Code auf Ihren SAP-Systemen.

abap-adt-mcp ist ein Model-Context-Protocol-Server. Starten Sie ihn neben Claude Desktop, Claude Code oder einem anderen MCP-Host, richten Sie ihn auf ein oder mehrere SAP-Systeme, und das Modell erhält dieselben ADT-REST-Endpunkte, die Eclipse verwendet: Objekte suchen, Quelltext lesen und ändern, Transportaufträge anlegen, aktivieren, ABAP Unit und ATC ausführen, Kurzdumps lesen, Tabellen abfragen.

npx -y abap-adt-mcp In drei Schritten einrichten
173 Tools, 16 ToolsetsS/4HANA Cloud und On-PremiseNode.js 22.12+MIT

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.

FrageTools, 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.

{ "kind": "policyDenied", "gate": "readOnly", "destination": "PRD", "hint": "PRD ist readOnly; der Schreibzugriff wurde vor jedem SAP-Aufruf abgelehnt" }

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üsselWirkung
readOnlyNur lesende Tools laufen. Jedes Schreiben von Quelltext, runSnippet, unitTestRun und ATC-Läufe werden abgelehnt.
allowedPackagesSchreiben nur innerhalb dieser Paketmuster (["Z*", "$*"]); Lesen wird nie eingeschränkt.
deniedTablesMuster, die in tableContents, in jedem FROM/JOIN von runQuery abgelehnt und im geschriebenen ABAP gesucht werden.
allowDataPreviewAus, sofern nicht gesetzt. Öffnet Tabellenzeilen nach Name.
allowFreeSqlAus, sofern nicht gesetzt. Öffnet runQuery; schließt die Datenvorschau ein.
deniedToolsNamen, Muster oder toolset:git, die auf dieser Destination abgelehnt werden; die Tools bleiben gelistet.
allowedTransportsJedes 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.

Ihr SAP-System nimmt jetzt Prompts an.Hosts, Server und Systeme in einem Diagramm, vier Fähigkeiten, die Ablehnung auf PRD, die Installationszeile.
Ein Kurzdump um 03:12.dumps, dumpDetails, die Zeile, die Korrektur, aktiviert und getestet.
27 ATC-Befunde in ZFIN.19 deterministische Quickfixes angewendet, Ausnahmen mit menschlichem Genehmiger beantragt.
Kann DEVK900123 freigegeben werden?Unified Diff, ein fest codierter Mandant gefunden, korrigiert, getestet, freigegeben erst auf Ihr Wort.
Neue Klasse. Neuer Test. Ein Satz.Validieren, Transport, anlegen, aktivieren, testen; derselbe Satz auf PRD wird abgelehnt.
Läuft das auf S/4HANA Cloud?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-adt ausgeliefert
  • 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-mcp

Container

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:latest

Angeheftete 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 signatures

Aus 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 build

Authentifizierungsmodi: 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.

npx -y abap-adt-mcp README auf GitHub lesen