ARC-1
ARC-1 — SAP ADT MCP-Server
ARC-1 (ausgesprochen arc one [ɑːrk wʌn]) — Ein für Unternehmen geeigneter MCP-Server für SAP ABAP-Systeme. Standardmäßig sicher, bereitstellbar auf BTP oder On-Premise und gehärtet durch eine umfassende Abdeckung mit Unit-, Integrations- und E2E-Tests.
ARC-1 verbindet KI-Assistenten (Claude, GitHub Copilot, Copilot Studio und jeden beliebigen MCP-Client) über die ADT REST API mit SAP-Systemen. Er wird als npm-Paket und Docker-Image bereitgestellt.
Vollständige Dokumentation | Einrichtungsanleitung | Tool-Referenz
Warum ARC-1?
Entwickelt für Unternehmen, die KI-gestützte SAP-Entwicklung mit Leitplanken benötigen. Inspiriert durch die Pionierarbeit von abap-adt-api, mcp-abap-adt und vibing-steampunk — ARC-1 ergänzt das, was für den produktiven Einsatz erforderlich ist:
Sicherheits- und Admin-Kontrollen
Standardmäßig sicher — schreibgeschützt, kein freies SQL, keine Tabellenvorschau, keine Transporte ab Werk. Verwenden Sie
--profile developeroder explizite Flags, um Funktionen zu aktivieren.Operation-Allowlists/Denylists — steuern Sie genau, welche Operationstypen (Lesen, Schreiben, Suchen, Abfragen, Aktivieren, Transportieren) erlaubt sind.
Paketbeschränkungen — begrenzen Sie KI-Schreiboperationen (Erstellen, Aktualisieren, Löschen) auf bestimmte Pakete mit Platzhaltern (
--allowed-packages "Z*,$TMP"). Leseoperationen sind nicht paketbeschränkt — nutzen Sie die native SAP-Autorisierung für die Zugriffskontrolle auf Leseebene.Datenzugriffskontrolle — aktivieren Sie die Tabellendatenvorschau (
--block-data=false) oder freies SQL (--block-free-sql=false).Transportsicherheit — erfordern Sie Transportzuweisungen, beschränken Sie auf bestimmte Transporte oder machen Sie Transporte schreibgeschützt. Update-/Löschoperationen verwenden automatisch die Korrekturnummer, wenn kein expliziter Transport angegeben ist.
Sicherheitsprofile — vorkonfigurierte Rollen:
viewer,viewer-data,viewer-sql,developer,developer-data,developer-sql.Schreibzugriffe auf
$TMPbeschränkt, wenn aktiviert — nur lokale/temporäre Objekte; das Schreiben in transportierbare Pakete erfordert explizite--allowed-packages.
Authentifizierung
API-Schlüssel — einfaches Bearer-Token für interne Bereitstellungen.
OIDC / JWT — Entra ID, Keycloak oder jeder OpenID Connect-Anbieter.
OAuth 2.0 — browserbasierter Login für BTP ABAP Environment.
XSUAA — native SAP BTP-Authentifizierung mit automatischem Token-Proxy für MCP-Clients.
Principal Propagation — Benutzeridentität wird über den Cloud Connector weitergeleitet (jede SAP-Aktion wird als der tatsächliche Benutzer ausgeführt, nicht als technisches Konto).
BTP Cloud Foundry-Bereitstellung
Stellen Sie ARC-1 als Cloud Foundry-App auf SAP BTP mit vollständiger Plattformintegration bereit:
Destination Service — Verbindung zu SAP-Systemen über verwaltete Destinations.
Cloud Connector — Erreichen von On-Premise-Systemen über den Connectivity-Proxy.
Principal Propagation — Benutzeridentität wird Ende-zu-Ende über X.509-Zertifikate weitergeleitet.
XSUAA OAuth-Proxy — MCP-Clients authentifizieren sich über Standard-OAuth, ARC-1 übernimmt den BTP-Token-Austausch.
Audit-Logging — strukturierte Ereignisse an stderr, Datei oder BTP Audit Log Service.
Token-Effizienz
11 intent-basierte Tools (~5K Schema-Token) statt 200+ individueller Tools — hält das Kontextfenster des LLM klein.
Lesen/Bearbeiten auf Methodenebene — Lesen oder Aktualisieren einer einzelnen Klassenmethode, nicht der gesamten Quelle (bis zu 20x weniger Token).
Kontextkomprimierung —
SAPContextgibt öffentliche API-Verträge aller Abhängigkeiten in einem Aufruf zurück (7-30x Komprimierung).
Integriertes Objekt-Caching
Automatisches Quell-Caching — jedes gelesene SAP-Objekt wird im Speicher (stdio) oder in SQLite (http-streamable) zwischengespeichert. Wiederholte Lesezugriffe erfolgen sofort, ohne SAP aufzurufen.
Abhängigkeitsgraph-Caching —
SAPContextAbhängigkeitsauflösung basierend auf Quell-Hash; unveränderte Objekte überspringen bei nachfolgenden Durchläufen alle ADT-Aufrufe.Pre-warmer — starten Sie mit
ARC1_CACHE_WARMUP=true, um alle benutzerdefinierten Objekte beim Start vorab zu indizieren, was die umgekehrte Abhängigkeitssuche ermöglicht (SAPContext(action="usages")).Schreib-Invalidierung — wenn
SAPWriteein Objekt ändert, wird dessen Cache-Eintrag automatisch gelöscht; der nächste Lesezugriff holt die frische Quelle.
Siehe docs/caching.md für die vollständige Dokumentation.
Tests
1.367+ Unit-Tests (
53Unit-Test-Dateien, gemocktes HTTP).~160 Integrationstests gegen Live-SAP-Systeme, mit expliziten Gründen für das Überspringen, wenn Anmeldeinformationen oder Fixtures fehlen.
~70 E2E-Tests, die echte MCP-Tool-Aufrufe gegen einen laufenden ARC-1-Server und ein Live-SAP-System ausführen.
CRUD-Lebenszyklus und BTP-Smoke-Lanes enthalten (
test:integration:crud,test:integration:btp:smoke).CI-Matrix auf Node
22und24; Integration + E2E laufen beipushaufmainund internen PRs.Zuverlässigkeits-Telemetrie + Abdeckung veröffentlicht als informative CI-Signale (nicht blockierend).
Tools, verfeinert für den realen Einsatz
Die 11 Tools wurden basierend auf echtem LLM-Interaktionsfeedback entwickelt:
Tool | Was es tut |
SAPRead | Liest ABAP-Quellcode, Tabellendaten, CDS-Views, Metadaten-Erweiterungen (DDLX), Service-Bindings (SRVB), Nachrichtenklassen, BOR-Objekte, bereitgestellte UI5/Fiori-Apps (BSP, BSP_DEPLOY). Strukturiertes Format für Klassen gibt Metadaten + zerlegte Includes als JSON zurück |
SAPSearch | Objektsuche + Volltext-Quellcodesuche im gesamten System |
SAPWrite | Erstellen/Aktualisieren/Löschen von ABAP-Quellcode und DDIC-Metadaten mit automatischem Sperren/Entsperren (PROG, CLAS, INTF, FUNC, INCL, DDLS, DDLX, BDEF, SRVD, DOMA, DTEL). Stapelerstellung für Multi-Objekt-Workflows (z. B. RAP-Stack oder Domäne+Datenelement in einem Aufruf) |
SAPActivate | Aktiviert ABAP-Objekte — einzeln oder im Stapel (wesentlich für RAP-Stacks). Veröffentlichen/Aufheben der Veröffentlichung von OData-Service-Bindings (SRVB) |
SAPNavigate | Gehe-zu-Definition, Referenzen finden, Code-Vervollständigung |
SAPQuery | Führt ABAP SQL mit Vorschlägen bei nicht gefundenen Tabellen aus |
SAPTransport | CTS-Transportmanagement (auflisten, erstellen, freigeben) |
SAPContext | Komprimierter Abhängigkeitskontext — ein Aufruf ersetzt N SAPRead-Aufrufe |
SAPLint | Lokaler ABAP-Lint (systembewusste Presets, automatische Korrektur, Validierung vor dem Schreiben) |
SAPDiagnose | Syntaxprüfung, ABAP Unit-Tests, ATC-Codequalität, Short Dumps, Profiler-Traces |
SAPManage | Funktionsprüfung — erkennt, was das System unterstützt, bevor gehandelt wird |
Tool-Definitionen passen sich automatisch an das Zielsystem an (BTP vs. On-Premise), entfernen nicht verfügbare Typen und passen Beschreibungen an, sodass das LLM niemals nicht unterstützte Operationen versucht.
Funktionserkennung
ARC-1 prüft das SAP-System beim Start und passt sein Verhalten an:
Erkennt HANA, abapGit, RAP/CDS, AMDP, UI5 und Transportverfügbarkeit.
Erkennt automatisch BTP- vs. On-Premise-Systeme.
Ordnet das SAP_BASIS-Release der korrekten ABAP-Sprachversion zu.
Jede Funktion kann erzwungen ein-/ausgeschaltet oder auf automatischer Erkennung belassen werden.
Schnellstart
npx arc-1@latest --url https://your-sap-host:44300 --user YOUR_USERFür Docker, BTP-Bereitstellung, Client-Konfiguration (Claude Desktop, Claude Code, VS Code, Copilot Studio) und alle Authentifizierungsmethoden siehe die Einrichtungsanleitung.
Dokumentation
Die vollständige Dokumentation finden Sie unter marianfoo.github.io/arc-1.
Anleitung | Beschreibung |
Bereitstellungsoptionen, Authentifizierungsmethoden, Client-Konfiguration | |
Vollständige Referenz für alle 11 Tools | |
Systemarchitektur mit Diagrammen | |
Referenz zur Docker-Bereitstellung | |
Alle Authentifizierungsmethoden | |
Cloud Foundry-Bereitstellung auf SAP BTP | |
Agent-Workflow-Muster und Best Practices |
Entwicklung
npm ci && npm run build && npm testSiehe CLAUDE.md für die Codebasis-Struktur, Testbefehle und Richtlinien für Beiträge.
Credits
Projekt | Autor | Beitrag |
oisee | Ursprünglicher Go MCP-Server — ARC-1s Ausgangspunkt | |
Marcello Urbani | TypeScript ADT-Bibliothek, definitive API-Referenz | |
Mario Andreschak | Erster MCP-Server für ABAP ADT | |
Lars Hvam | ABAP-Parser/Linter (verwendet via @abaplint/core) |
Lizenz
MIT
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/marianfoo/arc-1'
If you have feedback or need assistance with the MCP directory API, please join our Discord server