Skip to main content
Glama
engoetz

sap-adt-mcp

by engoetz

sap-adt-mcp

tests license python

MCP-Server und Python-Client für die REST-API von SAP ADT (ABAP Development Tools). Er bietet Ihrem KI-Assistenten dieselben Operationen, die Eclipse ADT verwendet — Repository durchsuchen, Quellcode lesen und schreiben, aktivieren, Syntax prüfen und mit Transport Requests arbeiten — und spricht dabei mit denselben Endpunkten /sap/bc/adt/*.

Die vollständige technische Dokumentation gibt es auch auf Englisch: docs/PROJECT_DOCUMENTATION.md.


Was sich damit machen lässt

  • Suchen und Navigieren — Objekte per Platzhalter (Z*, ZCL_*), Paketinhalt (auch mit Namespace /ACME/PKG) und Metadaten

  • Quellcode lesen und schreiben — mit Sperre, Transportzuordnung und Aktivierung in einem einzigen Aufruf; optional Speichern/Lesen lokaler Dateien

  • Aktivieren und Syntax prüfen — mit Fehlermeldungen mit Zeile und Spalte

  • Transport Requests — auflisten, anlegen, freigeben und prüfen, ob ein Objekt einen benötigt

  • Objekte anlegen — Programme, Klassen, Schnittstellen und Pakete (lokal oder transportierbar)

  • DDIC als Markdown exportieren — Tabellen, Datenelemente, Domänen und Views werden zu lesbarem Kontext für die KI

  • Mit älteren Releases funktionieren — die Media Types werden pro Endpunkt ausgehandelt, und sap_system_info sagt, was das jeweilige System unterstützt

Die Anmeldedaten liegen im Credential Manager des Betriebssystems; es wird kein Passwort in einer Projektdatei gespeichert.


Related MCP server: mcp-abap-abap-adt-api

Voraussetzungen

Anforderung

Minimum

Prüfung

Python

3.10+

python --version

SAP-System

NetWeaver 7.31 SP04+ mit aktivem ICF-Knoten /sap/bc/adt

sap-adt test <ID>

MCP-Client

Cursor, Claude Code, Claude Desktop, VS Code oder anderer mit MCP-Unterstützung

Netzwerk

Zugriff auf Host und Port des SAP-Systems

Die SAP-seitigen Voraussetzungen (ICF-Dienste, Rollen und Berechtigungsobjekte) sind in Abschnitt 6 der Befehlsreferenz beschrieben.


Installation

Direkt von GitHub (empfohlen)

pip install git+https://github.com/engoetz/sap-adt-mcp

Das registriert zwei Befehle im PATH:

Befehl

Wofür

sap-adt

Terminalverbindungen verwalten (Passwort über verdeckte Eingabeaufforderung)

sap-adt-mcp

MCP-Server ausführen (stdio)

Ohne dauerhafte Installation, mit uv:

uvx --from git+https://github.com/engoetz/sap-adt-mcp sap-adt-mcp

Aus dem Quellcode (für die Entwicklung)

git clone https://github.com/engoetz/sap-adt-mcp
cd sap-adt-mcp
python -m venv .venv && .venv/Scripts/activate   # Linux/macOS: source .venv/bin/activate
pip install -e ".[dev]"
python -m pytest tests -q

Konfiguration im MCP-Client

Nach der Installation ist der Befehl sap-adt-mcp bereits im PATH — ein absoluter Pfad ist nicht nötig:

{
  "mcpServers": {
    "sap-adt": {
      "command": "sap-adt-mcp",
      "args": []
    }
  }
}

Wo dieser Block platziert wird:

Client

Datei

Cursor (global)

~/.cursor/mcp.json — Windows: C:\Users\<usuário>\.cursor\mcp.json

Cursor (pro Projekt)

.cursor/mcp.json im Projektstamm — eine Vorlage gibt es in .cursor/mcp.json.example

Claude Code

claude mcp add sap-adt -- sap-adt-mcp

Claude Desktop

claude_desktop_config.json

Wenn Sie das Programm lieber direkt aus dem Quellcode ausführen möchten, ohne das Paket zu installieren, ersetzen Sie den Befehl durch "command": "python", "args": ["/caminho/para/sap-adt-mcp/scripts/run_mcp.py"].

Überprüfen

Im Cursor erscheint der Server als user-sap-adt unter Settings > MCP. Um in einem beliebigen Client zu testen, rufen Sie sap_list_environments() auf — es sollte die Liste der gespeicherten Verbindungen zurückgeben.

Problem

Lösung

Server erscheint nicht

Prüfen Sie den Pfad der Konfigurationsdatei und öffnen Sie den Client erneut

Server wird rot angezeigt

Führen Sie sap-adt-mcp im Terminal aus und sehen Sie sich den Fehler an; meistens ist es das falsche Python im PATH

ModuleNotFoundError: sap_adt

Das Paket wurde in einer anderen virtuellen Umgebung installiert

No password available

Führen Sie sap-adt password <ID> aus

Missing connection parameter(s)

Führen Sie sap-adt add <ID> aus, um die Verbindung anzulegen


Anmeldedaten

Über das Terminal (empfohlen)

sap-adt add DEV

Der Befehl fragt Host, Port, Mandant, Benutzer, Sprache und HTTPS ab (Enter akzeptiert den vorgeschlagenen Wert) und zuletzt das Passwort — zweimal einzugeben, ohne Echo auf dem Bildschirm. So gelangt es weder in den Shell-Verlauf noch in den Verlauf des KI-Chats.

sap-adt list                      # conexões salvas e se têm senha
sap-adt edit DEV --port 8020      # alterar campos sem tocar na senha
sap-adt password DEV              # trocar apenas a senha
sap-adt test DEV                  # conectar e sondar os endpoints ADT
sap-adt delete DEV                # remover conexão e senha

Es gibt keinen Parameter --password: Das Passwort wird grundsätzlich nur über eine Eingabeaufforderung erfasst. Für die Automatisierung wird die Variable SAP_PASSWORD akzeptiert.

Das Passwort wird im Schlüsselbund des Betriebssystems gespeichert (Windows Credential Manager, macOS Keychain, Linux Secret Service). Die übrigen Parameter liegen in ~/.sap-adt/environments.json, außerhalb des Projekts.

Über den Chat

sap_save_password(system_id="DEV", host="...", port=8000, client="100", user="username", password="...") macht dasselbe — aber das Passwort bleibt im Chatverlauf gespeichert. Bevorzugen Sie das Terminal.


Erste Schritte

sap_connect(system_id="DEV")
sap_system_info()                       # o que este sistema suporta (rode em release antiga)

sap_search(query="Z*", object_type="CLAS")
sap_read_source(object_name="ZCL_MINHA_CLASSE", object_type="CLAS")

sap_write_source(
    object_name="ZCL_MINHA_CLASSE",
    object_type="CLAS",
    source_code="...",
    transport_request="DEVK900123"
)

Außerhalb des MCP-Clients führt sap-adt test DEV dieselbe Diagnose über das Terminal aus.


Kompatibilität zwischen Releases

Ältere Systeme (ECC, NetWeaver 7.3x) bieten eine Teilmenge von ADT an und verstehen nicht immer dieselben Media-Type-Versionen. Der Client kümmert sich automatisch darum:

  • Pro Endpunkt ausgehandelte Media Types — vom neuesten zum ältesten, wobei gemerkt wird, was funktioniert hat

  • Discovery mit Alternativen, wenn /sap/bc/adt/discovery im SICF nicht aktiv ist

  • Transport in beiden Formen gesendet (corrNr in der Query und als Header sap-transportrequest)

  • sap_system_info prüft die Endpunkte und sagt, welche Werkzeuge dort nicht funktionieren

Details in Abschnitt 6.7 der Referenz.


MCP-Tools (25)

Verbindung und Anmeldedaten

Tool

Beschreibung

sap_connect

Am SAP-System anmelden (unterstützt gespeicherte Umgebungen)

sap_disconnect

Aktuelle Verbindung beenden (ermöglicht Systemwechsel)

sap_system_info

Diagnose: welche ADT-Endpunkte das System unterstützt

sap_discovery

Verfügbare ADT-Dienste auflisten

sap_save_password

Anmeldedaten im Credential Manager des Betriebssystems speichern

sap_delete_password

Gespeicherte Anmeldedaten entfernen

sap_list_environments

Gespeicherte SAP-Umgebungen auflisten

Repository

Tool

Beschreibung

sap_search

ABAP-Objekte durchsuchen (CLAS, PROG, INTF, FUGR, TABL)

sap_browse_package

Paketinhalt auflisten (unterstützt Namespaces)

sap_object_metadata

Details zu einem Objekt abrufen (Name, Typ, Paket, Verantwortlicher)

sap_export_ddic_markdown

DDIC-Metadaten als Markdown exportieren

Quellcode

Tool

Beschreibung

sap_read_source

ABAP-Quellcode lesen (optional: in lokale Datei speichern)

sap_write_source

Quellcode mit automatischer Sperre, Transport und Aktivierung schreiben

sap_activate

Objekte kompilieren/aktivieren

sap_syntax_check

Syntaxprüfung ohne Aktivierung

Transport Requests

Tool

Beschreibung

sap_check_lock

Sperrstatus des Objekts prüfen

sap_list_transports

Offene Transport Requests auflisten

sap_create_transport

Neuen Transport Request anlegen

sap_release_transport

Einen Transport Request freigeben

sap_transport_check

Prüfen, ob ein Objekt einen Transport benötigt

Anlegen und Löschen

Tool

Beschreibung

sap_create_program

Neues ABAP-Programm anlegen

sap_create_class

Neue ABAP-Klasse anlegen

sap_create_interface

Neue ABAP-Schnittstelle anlegen

sap_create_package

Neues ABAP-Paket (DEVC) anlegen, lokal oder transportierbar

sap_delete_object

ABAP-Objekt löschen (erfordert confirm='DELETE')

Parameter, Beispiele und Rückgabewerte für jedes Tool: docs/MCP_COMMAND_REFERENCE.md


Architektur

Cliente MCP  →  servidor MCP (stdio/JSON-RPC)  →  cliente REST ADT  →  SAP /sap/bc/adt/*
src/sap_adt/
├── client.py            # HTTP: autenticação, CSRF, sessões stateful, negociação de media type
├── credential_store.py  # ~/.sap-adt/environments.json + keyring do SO
├── repository.py        # pesquisa, navegação de pacotes, metadados
├── source.py            # leitura/escrita de fonte com bloqueio
├── activation.py        # ativação e verificação de sintaxe
├── transport.py         # transport requests (CTS)
├── ddic_export.py       # DDIC → Markdown
├── cli.py               # comando `sap-adt`
├── models.py            # dataclasses
├── exceptions.py        # hierarquia de exceções
└── mcp_server.py        # servidor MCP com as 25 ferramentas

Abhängigkeit

Zweck

requests

HTTP-Client der ADT-REST-API

mcp

SDK des Model Context Protocol (FastMCP)

lxml

XML-Parsing

keyring

Anmeldedaten im Betriebssystem-Schlüsselbund


Entwicklung

pip install -e ".[dev]"
python -m pytest tests -q

Die Tests sind offline: Es wird weder ein SAP-System noch ein Netzwerk benötigt. Sie decken die URI-Auflösung, die XML-Parser, die mit statischen Antworten gespeist werden (einschließlich des Formats älterer Releases), und die CLI ab. Die CI führt die Suite unter Linux und Windows, Python 3.10 und 3.13 aus und prüft, dass das Paket gebaut werden kann.

Beiträge und Problemberichte sind über die issues willkommen. Wenn Sie eine Issue eröffnen, fügen Sie weder Hostname, Benutzer, Mandant noch proprietäre Codeausschnitte ein — beschreiben Sie das Verhalten und fügen Sie, wenn möglich, die Ausgabe von sap_system_info hinzu.


Dokumentation

Dokument

Inhalt

docs/MCP_COMMAND_REFERENCE.md

Befehlsreferenz: Parameter, Beispiele, SAP-Voraussetzungen und das CLI-Handbuch

docs/PROJECT_DOCUMENTATION.md

Vollständige technische Dokumentation (Englisch)

docs/PROJECT_DOCUMENTATION_PT-BR.md

Vollständige technische Dokumentation (Portugiesisch)

AGENTS.md

Arbeitsregeln für den Assistenten, der die Werkzeuge nutzt


Lizenz

Apache-2.0.

Unabhängiges Projekt, ohne Zugehörigkeit, Sponsoring oder Billigung durch SAP SE. SAP, ABAP und SAP NetWeaver sind Marken der SAP SE. Das Werkzeug nutzt ausschließlich die öffentlich dokumentierte ADT-API mit den Anmeldedaten des jeweiligen Benutzers.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    C
    quality
    C
    maintenance
    Facilitates interaction with SAP ABAP systems via ADT APIs, enabling object management, transport handling, and code analysis.
    100
    148
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables AI agents to read, write, activate, and transport ABAP code in SAP systems via ABAP ADT REST API, without needing SAP GUI.
    4
    24

View all related MCP servers

Related MCP Connectors

  • Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

  • Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…

  • Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.

View all MCP Connectors

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/engoetz/sap-adt-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server