Executes SAP ABAP Development Tools (ADT) REST operations for object discovery, source management, object creation, activation, testing, transport handling, history, where-used analysis, message classes, and text elements. Use when working with an SAP ABAP system and the required ADT operation is unavailable through the currently configured MCP tools.
Executes SAP ABAP Development Tools (ADT) REST operations for object discovery, source management, object creation, activation, testing, transport handling, history, where-used analysis, message classes, and text elements. Use when working with an SAP ABAP system and the required ADT operation is unavailable through the currently configured MCP tools.
license
Apache-2.0
compatibility
Requires network access to an SAP system with the relevant ADT services enabled. Requires Python 3.10 or newer. No prebuilt executable is distributed; contributors may optionally build one locally with the provided PyInstaller spec.
Command-line access to SAP ABAP Development Tools (ADT) REST services from an
AI agent workflow. The client covers areas that many existing MCP tools do not
expose: repository search, object creation, message-class and text-element
maintenance, transport lifecycle, and quality checks.
Purpose
Give the agent a safe, scriptable way to inspect and modify ABAP objects on a
target SAP system when no MCP tool covers the operation. Every command
returns JSON so results can be routed into subsequent steps.
When to Use
Activate this skill when the user is working with an SAP ABAP system and any
of the following are true:
The task requires an ADT operation not exposed by the configured MCP
tooling (search, package browsing, transport management, message-class
edits, text-element edits, CDS creation, and similar).
The user asks to inspect, create, or modify an ABAP object and only ADT
REST endpoints can do it.
The user asks for repository-level reporting, such as "list all objects
owned by user X" or "which objects are inactive".
When Not to Use
Do not activate this skill when:
An existing MCP tool already handles the requested operation. Prefer the
MCP path.
The user needs SAP GUI-only capabilities such as ATC baseline management,
runtime debugging with breakpoints, ABAP dictionary DDIC screens, or
update-task processing.
The target system is a production tenant and the user has not confirmed
the intent to run against production.
The user asks the agent to type or transmit an SAP password directly.
Safety Rules
The agent must:
Prefer an existing MCP tool when it fully supports the requested
operation.
Use this client only when the configured MCP tool does not support the
required operation.
Start with read-only discovery before modifying anything.
Never ask the user to paste a password into the chat.
Never place a password directly on a generated command line.
Use destination-based environment resolution (--dest) when it is
available.
Confirm the exact target object, package, transport, and system before a
write operation.
Treat source writes, deletes, unlocks, activation, transport release,
transport deletion, and object moves as sensitive operations.
Require explicit human authorization immediately before any destructive
or hard-to-reverse operation.
Never infer authorization to delete or release something from a broader
task description such as "clean up", "deploy", or "ship".
Report the exact command, the response, and any remaining risk after
every operation.
Stop and report when ADT services, authorizations, object locks, or
transport configuration prevent safe execution.
Never loop retries on authorization failures or malformed requests.
Never claim a write succeeded unless the tool response confirms it.
Tool Selection
When faced with a task, decide in this order:
Is there a matching MCP tool? If yes, use it.
Does this skill implement the operation? See Command Groups below.
If neither can do it, tell the user what is missing and suggest SAP GUI
(SE38, SE80, SM12, SE01/SE09/SE10, SCI) or Eclipse ADT.
Do not fall through to this client "just in case". Every write here is a
real change on the target system.
Connection Model
The client accepts either explicit flags (--url, --user, --pwd,
--client, --lang) or a destination name:
--dest SID_CLIENT_USER_LANG
Generic example:
--dest DEV_100_DEVELOPER_EN
For --dest DEV_100_DEVELOPER_EN, the client resolves:
url from SAP_DEV_URL
user from SAP_DEV_DEVELOPER_USER, else the DEVELOPER part of the
name
pwd from SAP_DEV_DEVELOPER_PWD (must exist)
client = 100
lang = EN
The one-time setup below is performed by the human. The agent may set the
URL variable when the URL is not secret, but must never set a password
variable itself:
# URL — non-secret; may be scripted by the agent when known
setx SAP_DEV_URL "https://sap.example.com:44300"
# Password — set by the human only
setx SAP_DEV_DEVELOPER_PWD "<password>"
When any required variable is missing, the client returns a JSON error that
names the exact setx commands to run. Treat this as a configuration issue,
not a network failure.
The examples below assume the current working directory is the repository
root. When the skill is installed by an AI client (for example via
npx skills add), the on-disk layout is client-specific — resolve the
installed skill directory for that client instead of assuming this path.
Do not define the client variable as a two-element string array such
as $exe = "python", "scripts/adt-client.py" and then invoke it with
& $exe .... That pattern relies on PowerShell array splatting, is
flagged by PSScriptAnalyzer, and breaks in subtle ways when arguments
contain spaces or quotes. Keep the variable as a single script path and
put python on the command line explicitly, or invoke python directly
without a variable.
The output is JSON on stdout. Non-zero exit codes accompany connection or
runtime failures. See
references/development.md for installation,
dependencies, and the optional local build procedure.
Command Groups
Each group has a dedicated reference file. Load a reference only when the
agent is actively working on that group.
Discovery and inspection — read-only browsing, search, source read,
metadata, where-used, history, diff. Load
references/command-discovery-and-inspection.md
when the task begins, before any write.
Commands: discovery, search, objects, packages,
packages-by-responsible, objects-by-user, reports-by-user, source,
object-properties, where-used, history, diff, inactive-objects,
transports, transport-contents, read-message-class,
read-text-elements.
Source and object management — writes, creations, activation, unlock,
and delete. Load
references/command-source-and-object-management.md
when the confirmed task involves modifying or creating ABAP objects.
Commands: write-source, create-package, create-program,
create-class, create-interface, create-function-group,
create-function-module, create-cds, create-transaction,
create-message-class, activate, unlock, delete.
Message classes and text elements — read and edit T100 messages and
program text elements. Load
references/command-messages-and-text-elements.md
when the task involves messages or selection-screen / symbol / heading
texts.
Commands: read-message-class, write-messages, add-message,
update-message, delete-message, read-text-elements,
write-text-elements.
Quality checks and testing — static analysis and unit tests. Load
references/command-quality-and-testing.md
before proposing an activation or release for changes the agent authored.
Commands: atc-check, abap-unit.
Transports and object lifecycle — CTS operations. Load
references/command-transports-and-lifecycle.md
when the task involves creating, moving, releasing, or deleting transport
requests, or when moving objects between tasks.
Commands: transports, create-transport, release-transport,
move-object, transport-contents, delete-transport.
Troubleshooting —
references/troubleshooting.md. Load when
a command fails with an authorization, endpoint availability, lock,
activation, transport, or TLS error.
Development —
references/development.md. Load when
installing Python dependencies or when a contributor wants to build a
local executable with PyInstaller.
Recommended Workflows
Each workflow is a short sequence, not an exhaustive script. Read the
relevant reference file before running write steps.
scripts/adt-client.py — Python source (authoritative and only
distributed entry point).
scripts/adt-client.spec — optional PyInstaller build configuration for
contributors who want to package a local executable for their own use.
No prebuilt binary is committed to the default branch.
requirements.txt — Python runtime dependencies.
references/*.md — focused documentation for each command group.
Completion Checklist
Before reporting a task complete, verify:
The last written object was activated, or the user explicitly asked to
leave it inactive.
Any transport that received new objects is either still open (and
documented) or was released with explicit human authorization.
object-properties or a similar read-only call confirms the final
state matches the intent.
The final response to the user includes the exact commands run, the
resulting transport numbers, and any inconclusive quality-check
outcomes.