Skip to main content
Glama

mcp-abap-adt: Your Gateway to ABAP Development Tools (ADT)

Stand With Ukraine

mcp-abap-adt is an MCP server for ABAP ADT in SAP ECC/S/4HANA (on-premise) and SAP BTP ABAP Cloud systems. It gives agents controlled access to real ABAP repositories through ADT, so analysis and changes are grounded in system data instead of assumptions. It is built for AI-assisted pair programming (AIPNV: AI Pairing, Not Vibing), not autopilot vibe coding.

Primary workflows:

  • Deep ABAP analysis: where-used, object metadata, repository navigation, object structure, semantic analysis, dependency and impact exploration.

  • High-level ABAP development: rapid CRUD and iterative updates for RAP and classic ABAP artifacts (classes, interfaces, function groups/modules, programs, DDIC, CDS/view/service artifacts), validated through ADT flows.

Why teams use it:

  • Full CRUD (not read-only): create, read, update, and delete ABAP artifacts

  • Works with On-Premise (ECC/S/4HANA), ABAP Cloud (BTP), and Legacy systems (BASIS < 7.50)

  • JWT/XSUAA, service key (destination-based), and RFC authorization

  • Multiple transports: stdio, HTTP, SSE

  • Rich tool surface for ABAP objects, metadata, transports, and search

Authorization & Destinations (Important): A destination is the filename of a service key stored locally. You place service keys in the service-keys directory, and use --mcp=<destination> to select which one to use. This is the primary auth model for on‑prem and BTP systems. See Authentication & Destinations.

You can configure MCP clients either manually (JSON/TOML) or via the configurator CLI (@mcp-abap-adt/configurator, repo: mcp-abap-adt-conf).

Table of Contents

  1. Getting Started

  2. Architecture

  3. Quick Start

  4. Use Cases

  5. Target Users

  6. Capabilities (High-Level Focus)

  7. Terminology

  8. Authorization & Destinations

  9. Registries

  10. Features

  11. Documentation

  12. Dependencies

  13. Running the Server

Related MCP server: ABAP-ADT-API MCP-Server

Getting Started

Install the server and configure your client using the configurator:

npm install -g @mcp-abap-adt/core
npm install -g @mcp-abap-adt/configurator

# stdio (destination)
mcp-conf --client cline --name abap --mcp TRIAL

# HTTP (streamable HTTP)
mcp-conf --client copilot --name abap --transport http --url http://localhost:3000/mcp/stream/http --mcp trial

Full configurator usage (separate repo): CLIENT_INSTALLERS.md.

Terminology

Destination: a local service key filename. You store service keys in the standard service-keys directory, and pass the filename (without extension) via --mcp=<destination> to select which system to use.

See docs/user-guide/TERMINOLOGY.md for the full list.

Authorization & Destinations

Destination-based auth is the default. Drop service keys into the standard platform folder and use the filename as your destination:

mcp-abap-adt --transport=stdio --mcp=TRIAL

Standard service key paths:

  • Unix (Linux/macOS): ~/.config/mcp-abap-adt/service-keys/<destination>.json

  • Windows: %USERPROFILE%\\Documents\\mcp-abap-adt\\service-keys\\<destination>.json

For full details (paths, .env, direct headers), see Authentication & Destinations.

Architecture

The project provides two main usage patterns:

1. Standalone MCP Server (Default)

Run as a standalone MCP server with stdio, HTTP, or SSE transport:

mcp-abap-adt                           # stdio (default)
mcp-abap-adt --transport=http          # HTTP mode
mcp-abap-adt --transport=sse           # SSE mode

2. Embeddable Server (For Integration)

Embed MCP server into existing applications (e.g., SAP CAP/CDS, Express):

import {
  EmbeddableMcpServer,
  ReadVsGetDedupStrategy, // optional: hide Read<X> when Get<X> also exposed
} from '@mcp-abap-adt/core/server';

const server = new EmbeddableMcpServer({
  connection,              // Your AbapConnection instance
  logger,                  // Optional logger
  exposition: ['readonly', 'high'],  // Handler groups to expose
  // Optional; default: no dedup — existing consumers see no change.
  readOnlyDedupStrategy: new ReadVsGetDedupStrategy(),
});
await server.connect(transport);

See Handlers Management → EmbeddableMcpServer dedup strategies for opt-in dedup of readonly tools against high/low/compact, including how to plug a custom IReadOnlyDedupStrategy for role-based rules.

Quick Start

  1. Install server: See Installation Guide

  2. Configure client (auto): Use mcp-conf from @mcp-abap-adt/configurator (repo: mcp-abap-adt-conf, docs: CLIENT_INSTALLERS.md)

  3. Configure client (manual): See Client Configuration

  4. Use:

Use Cases

  • Impact analysis / where-used before changes: map object usage and probable blast radius.

  • Dependency audit: inspect links across classes, interfaces, DDIC, CDS/views, and RAP artifacts.

  • Migration and cleanup prep: extract repository facts to plan refactoring or cloud-readiness work.

  • RAP and ABAP iterative development: create/update artifacts quickly with ADT-backed operations.

  • Automated documentation and RAG ingestion: pull structured facts from ABAP systems for downstream tooling.

Target Users

  • ABAP developers and ABAP architects

  • RAP developers

  • Team leads and tech leads who need fast repository visibility

  • Teams building RAG/agent workflows for SAP landscapes

Capabilities (High-Level Focus)

Key examples of high-value workflows and tools:

  • Repository and impact analysis: GetWhereUsed, DescribeByList, GetObjectStructure, GetObjectInfo, SearchObject, GetPackageTree, GetPackageContents

  • Code and semantic introspection: GetAbapAST, GetAbapSemanticAnalysis, GetIncludesList, GetProgFullCode

  • RAP development: CreateBehaviorDefinition, UpdateBehaviorDefinition, CreateBehaviorImplementation, UpdateBehaviorImplementation, CreateServiceDefinition, UpdateServiceDefinition, CreateMetadataExtension, UpdateMetadataExtension

  • CDS/View development: CreateView, UpdateView, GetView, DeleteView

  • ABAP OO CRUD: CreateClass, UpdateClass, GetClass, DeleteClass, CreateInterface, UpdateInterface, GetInterface, DeleteInterface

  • Function module/group CRUD: CreateFunctionGroup, UpdateFunctionGroup, GetFunctionGroup, DeleteFunctionGroup, CreateFunctionModule, UpdateFunctionModule, GetFunctionModule, DeleteFunctionModule

  • Transport and activation support: CreateTransport, GetTransport, ActivateObject

Registries

Published in the official MCP Registry and listed on Glama.ai.

Features

  • 🏗️ Domain Management: GetDomain, CreateDomain, UpdateDomain - Create, retrieve, and update ABAP domains

  • 📊 Data Element Management: GetDataElement, CreateDataElement, UpdateDataElement - Create, retrieve, and update ABAP data elements

  • 📦 Table Management: GetTable, CreateTable, GetTableContents - Create and retrieve ABAP database tables with data preview

  • 🏛️ Structure Management: GetStructure, CreateStructure - Create and retrieve ABAP structures

  • 👁️ View Management: GetView, CreateView, UpdateView - Create and manage CDS Views and Classic Views

  • 🎓 Class Management: GetClass, CreateClass, UpdateClass - Create, retrieve, and update ABAP classes

  • 📝 Program Management: GetProgram, CreateProgram, UpdateProgram - Create, retrieve, and update ABAP programs

  • 🔧 Behavior Definition (BDEF) Management: GetBehaviorDefinition, CreateBehaviorDefinition, UpdateBehaviorDefinition - Create and manage ABAP Behavior Definitions with support for Managed, Unmanaged, Abstract, and Projection types

  • 📋 Metadata Extension (DDLX) Management: CreateMetadataExtension, UpdateMetadataExtension - Create and manage ABAP Metadata Extensions

  • ⚡ Activation: ActivateObject - Universal activation for any ABAP object

  • 🚚 Transport Management: CreateTransport, GetTransport - Create and retrieve transport requests

  • 🔍 Enhancement Analysis: GetEnhancements, GetEnhancementImpl, GetEnhancementSpot - Enhancement discovery and analysis

  • 📋 Include Management: GetIncludesList - Recursive include discovery

  • 🔍 System Tools: GetInactiveObjects - Monitor inactive objects waiting for activation

  • 🧪 Runtime Diagnostics: RuntimeCreateProfilerTraceParameters, RuntimeListProfilerTraceFiles, RuntimeGetProfilerTraceData, RuntimeGetDumpById - Profiling and dump analysis with JSON payloads

  • 📡 Runtime Feeds: RuntimeListFeeds, RuntimeListSystemMessages, RuntimeGetGatewayErrorLog - Feed reader (dumps, system messages, gateway errors), SM02 system messages, Gateway error log

  • 🚀 SAP BTP Support: JWT/XSUAA authentication with browser-based token helper

  • 🔑 Destination-Based Authentication: Service key-based authentication with automatic token management (see Client Configuration)

  • 💾 Freestyle SQL: GetSqlQuery - Execute custom SQL queries via ADT Data Preview API

ℹ️ ABAP Cloud limitation: Direct ADT data preview of database tables is blocked by SAP BTP backend policies. The server returns a descriptive error when attempting such operations. On-premise systems continue to support data preview.

Documentation

For Users

For Administrators

For Developers

Dependencies

This project uses two npm packages:

These packages are automatically installed via npm install and are published to npm.


Running the Server

After installing globally with npm install -g, you can run from any directory:

# Show help
mcp-abap-adt --help

# Default HTTP mode (works without .env file)
mcp-abap-adt

# HTTP mode on custom port
mcp-abap-adt --http-port=8080

# Use stdio mode (for MCP clients, requires .env file or --mcp parameter)
mcp-abap-adt --transport=stdio

# Use stdio mode with auth-broker (--mcp parameter)
mcp-abap-adt --transport=stdio --mcp=TRIAL

# Use env destination from platform sessions store
mcp-abap-adt --env=trial

# Use explicit .env file path
mcp-abap-adt --env-path=/path/to/my.env

# SSE mode (requires .env file or --mcp parameter)
mcp-abap-adt --transport=sse --sse-port=3001

# SSE mode with auth-broker (--mcp parameter)
mcp-abap-adt --transport=sse --mcp=TRIAL

Development Mode

# Build and run locally
npm run build
npm start

# HTTP mode
npm run start:http

# SSE mode
npm run start:sse

# Legacy v1 server (for backward compatibility)
npm run start:legacy

Environment Configuration

Env resolution:

  1. --env-path=<path|file> (or MCP_ENV_PATH) for explicit .env file.

    • Absolute path: used as-is.

    • Relative path or file name only (e.g. my.env): resolved from current working directory.

  2. --env=<destination> for destination file in standard sessions store:

    • Unix: ~/.config/mcp-abap-adt/sessions/<destination>.env

    • Windows: %USERPROFILE%\\Documents\\mcp-abap-adt\\sessions\\<destination>.env

  3. Fallback to .env in current working directory.

Example .env file:

SAP_URL=https://your-sap-system.com
SAP_CLIENT=100
SAP_AUTH_TYPE=basic
SAP_USERNAME=your-username
SAP_PASSWORD=your-password

For JWT authentication (SAP BTP):

SAP_URL=https://your-btp-system.com
SAP_CLIENT=100
SAP_AUTH_TYPE=jwt
SAP_JWT_TOKEN=your-jwt-token

For RFC connection:

SAP_URL=https://your-legacy-system.com
SAP_CLIENT=100
SAP_AUTH_TYPE=basic
SAP_USERNAME=your-username
SAP_PASSWORD=your-password
SAP_CONNECTION_TYPE=rfc

See RFC Setup Guide for prerequisites (SAP NW RFC SDK).

Generate .env from Service Key (JWT):

# Install the connection package globally (one-time setup)
npm install -g @mcp-abap-adt/connection

# Generate .env file from service key JSON
mcp-auth auth -k path/to/service-key.json

This will automatically create/update .env file with JWT tokens and connection details.

.env comments rule: only full-line comments are supported (lines that start with #).
Inline comments are not parsed, so keep comments on separate lines.

Claude recommendation: place the service key in the service-keys directory and use --mcp=<destination> (avoid manual JWT tokens).

Command-Line Options

Authentication:

  • --auth-broker - Force use of auth-broker (service keys), ignore .env file

  • --auth-broker-path=<path> - Custom path for auth-broker service keys and sessions

  • --browser-auth-port=<port> - Override OAuth browser callback port (default: 5000 for HTTP, 4000 for SSE, 4001 for stdio)

  • --connection-type=<http|rfc> - SAP connection transport: http (default) or rfc

  • --unsafe - Enable file-based session storage (persists tokens to disk). By default, sessions are stored in-memory (secure, lost on restart)

When --mcp=<destination> is specified, automatic fallback loading of ./.env is skipped.

Examples:

# Use auth-broker with file-based session storage (persists tokens)
mcp-abap-adt --auth-broker --unsafe

# Use auth-broker with in-memory session storage (default, secure)
mcp-abap-adt --auth-broker

# Custom path for service keys and sessions
mcp-abap-adt --auth-broker --auth-broker-path=~/prj/tmp/ --unsafe

See Client Configuration for complete configuration options.

Handler logging switches

  • AUTH_LOG_LEVEL=error|warn|info|debug — sets base log level for handler logger; DEBUG_AUTH_LOG=true also enables debug.

  • HANDLER_LOG_SILENT=true — fully disables handler logging.

  • DEBUG_CONNECTORS=true — verbose connection logging in high-level handlers.

  • DEBUG_HANDLERS=true — enables verbose logs for selected read-only/system handlers.

Development

Testing

npm test

Test logging switches

  • TEST_LOG_LEVEL=error|warn|info|debug — controls test logger verbosity (DEBUG_TESTS/DEBUG_ADT_TESTS/DEBUG_CONNECTORS force debug).

  • TEST_LOG_FILE=/tmp/adt-tests.log — writes test logs to a file (best-effort).

  • TEST_LOG_SILENT=true — disables test logging pipeline (console output muted).

  • TEST_LOG_COLOR=true — adds colored/prefixed tags to test log lines.

  • All console.* in tests are routed through the test logger with a [test] prefix.

Building

npm run build

Developer Tools

# Generate tool documentation
npm run docs:tools

# See tools/README.md for more developer utilities

Contributors

Thank you to all contributors! See CONTRIBUTORS.md for the complete list.


Acknowledgment: This project was originally inspired by mario-andreschak/mcp-abap-adt. We started with the core concept and then evolved it into an independent project with our own architecture and features.

Available Tools

256 tools
ActivateBehaviorDefinitionA

Activates the RAP behavior definition named by name, so its inactive version is in force. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: name (required), detail.

ActivateClassA

Activates the ABAP class named by class_name, so its inactive version is in force. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: class_name (required), detail.

ActivateDataElementB

Activates the ABAP data element named by data_element_name, so its inactive version is in force. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: data_element_name (required), detail.

ActivateDdlA

Activates the CDS view (DDL source) named by ddl_name, so its inactive version is in force. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: ddl_name (required), detail.

ActivateDomainA

Activates the ABAP domain named by domain_name, so its inactive version is in force. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: domain_name (required), detail.

ActivateFunctionGroupA

Activates the ABAP function group named by function_group_name, so its inactive version is in force. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: function_group_name (required), detail.

ActivateFunctionModuleB

Activates the ABAP function module named by function_module_name in the function group named by function_group_name, so its inactive version is in force. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: function_group_name (required), function_module_name (required), detail.

ActivateInterfaceA

Activates the ABAP interface named by interface_name, so its inactive version is in force. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: interface_name (required), detail.

ActivateMetadataExtensionA

Activates the CDS metadata extension named by name, so its inactive version is in force. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: name (required), detail.

ActivateObjectsB

Activates the repository objects named by objects (each a name and a type) together, in one activation: any object type, related objects such as domains, data elements and tables at once. Runs outside batch mode.

Inputs: objects (required), preaudit.

ActivateProgramB

Activates the ABAP program (report) named by program_name, so its inactive version is in force. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: program_name (required), detail.

ActivateServiceBindingA

Activates the OData service binding named by name, so its inactive version is in force. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: name (required), detail.

ActivateServiceDefinitionA

Activates the service definition named by name, so its inactive version is in force. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: name (required), detail.

ActivateStructureA

Activates the ABAP structure named by structure_name, so its inactive version is in force. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: structure_name (required), detail.

ActivateTableA

Activates the ABAP database table named by table_name, so its inactive version is in force. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: table_name (required), detail.

AddTransportObjectB

Adds the existing object named by object_name and object_type to the transport task named by transport_number, so it travels with the task's request. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: object_name (required), object_type (required), transport_number (required), pgmid, +1 more.

AmdpDebugCancelA

[read-only] [debug] Cancels the stopped AMDP debuggee's execution. Runs outside batch mode.

Inputs: state_handle (required), detail.

AmdpDebugGetTableA

[read-only] [debug] Rows of a table variable at the AMDP stop, up to 100; optionally through a SELECT over it. Runs outside batch mode.

Inputs: variable (required), state_handle (required), query, detail.

AmdpDebugSetBreakpointsB

[read-only] [debug] Sets the AMDP breakpoints of a debug session to the set given, as confirmed by the system. Catches every request of the connected SAP user, from this server and from anywhere else. Runs outside batch mode.

Inputs: breakpoints (required), state_handle (required), detail.

AmdpDebugStartA

[read-only] [debug] Opens an AMDP debug session of the connected SAP user with breakpoints on lines in SQLScript methods; a background run, when given, starts once the system confirmed the breakpoints. Catches every request of the connected SAP user, from this server and from anywhere else. Runs outside batch mode.

Inputs: breakpoints (required), run, detail, stop_existing.

AmdpDebugStepA

[read-only] [debug] Steps the stopped AMDP debuggee over a statement or on to the next stop. Runs outside batch mode.

Inputs: action (required), state_handle (required), detail.

AmdpDebugStopA

[read-only] [debug] Ends the AMDP part of a debug session, releasing a suspended debuggee first; when the whole debug session ends with it, the kept answers of its debugger batch go too. A part that failed to undo is reported and kept with the answers. Runs outside batch mode.

Inputs: state_handle (required), detail.

AmdpDebugWaitB

[read-only] [debug] AMDP events of a debug session after waiting up to hold_seconds. Runs outside batch mode.

Inputs: state_handle (required), detail, hold_seconds.

BatchAnswersA

[read-only] Answers the calls of the last executed batch by number: for each number asked, the tool's answer, built from the call's parts of SAP's response when the number is first read and kept for later reads; the numbers asked are processed in parallel. Takes one number or a list of numbers; an unknown number answers as unknown.

Inputs: number, numbers.

BatchBeginA

[read-only] Starts batch mode on this server. In batch mode each call of a tool marked recordable is recorded under the next number, starting at 1, and answers with empty content. Answers the state_handle: over Streamable HTTP send it as the state_handle argument of every call of the batch (or in the x-mcp-state-handle header).

Inputs: no named parameters.

BatchEndB

[read-only] Sends the recorded calls in one envelope with the credentials in force and ends batch mode. Splits SAP's answer into each call's parts and answers the number of recorded calls, of requests sent and of parts received; when sending fails, the parts received differ from the requests sent or the answer fails to split, answers that error, and every number of the batch then answers it.

Inputs: no named parameters.

CheckBehaviorDefinitionA

[read-only] Runs a syntax check on the RAP behavior definition (BDEF) named by name. Returns syntax errors, warnings, and messages. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: name (required), version.

CheckClassA

[read-only] Runs a syntax check on the ABAP class named by class_name. Can check existing class (active/inactive) or validate hypothetical source code. Returns syntax errors, warnings, and messages. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: class_name (required), version, source_code.

CheckDataElementA

[read-only] Runs a syntax check on the ABAP data element named by data_element_name. Returns syntax errors, warnings, and messages. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: data_element_name (required), version.

CheckDdlA

[read-only] Runs a syntax check on the CDS view named by ddl_name. Can check existing view (active/inactive) or validate hypothetical DDL source. Returns syntax errors, warnings, and messages. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: ddl_name (required), version, ddl_source.

CheckDomainA

[read-only] Runs a syntax check on the ABAP domain named by domain_name. Returns syntax errors, warnings, and messages. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: domain_name (required), version.

CheckFunctionGroupA

[read-only] Runs a syntax check on the ABAP function group named by function_group_name. Returns syntax errors, warnings, and messages. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: function_group_name (required), version.

CheckFunctionModuleA

[read-only] Runs a syntax check on the ABAP function module named by function_module_name in the function group named by function_group_name. Returns syntax errors, warnings, and messages. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: function_group_name (required), function_module_name (required), version.

CheckInterfaceA

[read-only] Runs a syntax check on the ABAP interface named by interface_name. Returns syntax errors, warnings, and messages. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: interface_name (required), version.

CheckMetadataExtensionA

[read-only] Runs a syntax check on the CDS metadata extension (DDLX) named by name. Returns syntax errors, warnings, and messages. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: name (required), version.

CheckPackageA

[read-only] Runs a syntax check on the ABAP package named by package_name. Returns syntax errors, warnings, and messages. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: package_name (required), super_package.

CheckProgramA

[read-only] Runs a syntax check on the ABAP program (report) named by program_name. Returns syntax errors, warnings, and messages. Available on premise. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: program_name (required), version.

CheckStructureA

[read-only] Runs a syntax check on the ABAP structure named by structure_name. Can check existing structure (active/inactive) or validate hypothetical DDL code. Returns syntax errors, warnings, and messages. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: structure_name (required), version, ddl_code.

CheckTableA

[read-only] Runs a syntax check on the ABAP database table named by table_name. Can check existing table (active/inactive) or validate hypothetical DDL code. Returns syntax errors, warnings, and messages. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: table_name (required), version, ddl_code.

CreateBehaviorDefinitionB

Create a new ABAP Behavior Definition (BDEF) in SAP system. Creates the behavior definition object in initial state. Runs outside batch mode.

Inputs: name (required), root_entity (required), package_name (required), implementation_type (required), +5 more.

CreateBehaviorImplementationB

Creates the RAP behavior implementation class named by class_name for the behavior definition named by behavior_definition, in initial state: the FOR BEHAVIOR OF main source and the implementations include are written afterwards, the main source as a class source and the implementations include under the class lock. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: class_name (required), package_name (required), behavior_definition (required), detail, +2 more.

CreateCdsUnitTestB

Creates the ABAP Unit test class named by class_name for the CDS view named by cds_view_name, from test_class_source. The view is checked to support CDS test doubles, the test class holding the local test classes is created in the package named by package_name, and it is activated. Runs outside batch mode.

Inputs: class_name (required), package_name (required), cds_view_name (required), test_class_source (required), +2 more.

CreateClassA

Creates the ABAP class named by class_name in the package named by package_name, in initial state: the class object alone; its source code is written by an update of the class. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: class_name (required), package_name (required), final, detail, +6 more.

CreateDataElementB

Create a new ABAP data element in SAP system. Creates the data element object in initial state. Runs outside batch mode.

Inputs: package_name (required), data_element_name (required), detail, length, +14 more.

CreateDdlA

Creates the CDS view or classic DDL view named by ddl_name in the package named by package_name, in initial state: the DDL source object, its DDL source code written afterwards. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: ddl_name (required), package_name (required), detail, description, +2 more.

CreateDomainB

Create a new ABAP domain in SAP system. Creates the domain object in initial state. Runs outside batch mode.

Inputs: domain_name (required), detail, length, activate, +11 more.

CreateFunctionGroupA

Create a new ABAP function group in SAP system. Function groups serve as containers for function modules. When activate is false, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: package_name (required), function_group_name (required), detail, activate, +3 more.

CreateFunctionGroupUnitTestA

Creates the ABAP Unit test classes of the function group named by function_group_name, from test_class_source. They are written to a test include, which is activated with the group. Runs outside batch mode.

Inputs: test_class_source (required), function_group_name (required), detail, transport_request.

CreateFunctionIncludeA

Create a new ABAP include within an existing function group. Creates the include in initial state. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: include_name (required), function_group_name (required), detail, description, +1 more.

CreateFunctionModuleA

Create a new ABAP function module within an existing function group. Creates the function module in initial state. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: function_group_name (required), function_module_name (required), detail, description, +1 more.

CreateInterfaceB

Create a new ABAP interface in SAP system. Creates the interface object in initial state. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: package_name (required), interface_name (required), detail, description, +2 more.

CreateMessageClassA

Creates the ABAP message class (T100) named by message_class_name, with its description, in the package named by package_name: a shell whose messages are added afterwards. A message class is in effect once saved. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: package_name (required), message_class_name (required), detail, description, +2 more.

CreateMessageClassMessageB

Adds the message numbered msgno, with the text msgtext, to the existing ABAP message class (T100) named by message_class_name. Runs outside batch mode.

Inputs: msgno (required), msgtext (required), message_class_name (required), description, +2 more.

CreateMetadataExtensionB

Create a new ABAP Metadata Extension (DDLX) in SAP system. Creates the metadata extension object in initial state. Runs outside batch mode.

Inputs: name (required), package_name (required), detail, activate, +3 more.

CreatePackageB

Create a new ABAP package in SAP system. Packages are containers for development objects and are essential for organizing code. When the connection is HTTP, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: package_name (required), super_package (required), detail, description, +7 more.

CreateProgramA

Create a new ABAP program (report) in SAP system. Creates the program object in initial state. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: package_name (required), program_name (required), detail, application, +4 more.

CreateProgramUnitTestA

Creates the ABAP Unit test classes of the report named by program_name, from test_class_source. They are written to a test include, which is included into the report, and the report is activated. Runs outside batch mode.

Inputs: program_name (required), test_class_source (required), detail, transport_request.

CreateServiceBindingA

Create an OData service binding (V2 or V4, UI or Web API) for a service definition, in initial state. When activate is false, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: package_name (required), service_binding_name (required), service_definition_name (required), detail, +8 more.

CreateServiceDefinitionA

Create a service definition that exposes CDS views as an OData service, in initial state. When activate is false and source_code is absent, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: package_name (required), service_definition_name (required), detail, activate, +4 more.

CreateStructureC

Create a new ABAP structure in SAP system. Creates the structure object in initial state. Runs outside batch mode.

Inputs: fields (required), package_name (required), structure_name (required), detail, +5 more.

CreateTableB

Create a new ABAP table in SAP system. Creates the table object in initial state. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: table_name (required), package_name (required), detail, description, +2 more.

CreateTransportB

Create a new ABAP transport request in SAP system for development objects. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: description (required), owner, detail, target_system, +1 more.

CreateTransportTaskA

Creates a task under the existing transport request named by transport_number, owned by the user named by target_user, of the type task_type. The task is itself a request resource — it reads, writes and releases like one — and is what adding and removing an object entry address, since a request's objects live on its tasks. target_user is required: it names the task's owner, and an empty owner is refused with SCTS_ADT_MSG 009. The task is typed Development/Correction (S) by default, because an Unclassified task refuses an added object on premise with SCTS_ADT_MSG 009 / TK127. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: target_user (required), transport_number (required), detail, task_type.

CreateUnitTestA

Creates the ABAP Unit test classes of the ABAP class named by class_name, from test_class_source. They are written as the class's local test classes, and the class is activated. Runs outside batch mode.

Inputs: class_name (required), test_class_source (required), detail, transport_request.

DebugBatchBeginA

[read-only] [debug] Starts the debugger batch on the stopped ABAP debuggee, else at the AMDP break. In the debugger batch each call of step, step to line, stack, variables, child variables, stack position or setting a variable at the ABAP debuggee, and of step over, continue or the data preview of a table variable at the AMDP break, is recorded under the next number, starting at 1, and answers with empty content. Answers the state_handle: over Streamable HTTP send it as the state_handle argument of every call of the batch (or in the x-mcp-state-handle header).

Inputs: no named parameters.

DebugBatchEndB

[read-only] [debug] Sends the recorded calls of the stopped debuggee in one envelope on the session the batch started on — the ABAP debuggee's session, or the AMDP session's command session — and ends the debugger batch. Splits SAP's answer into each call's parts and answers the number of recorded calls, of requests sent and of parts received; when sending fails, the parts received differ from the requests sent or the answer fails to split, answers that error, and every number of the batch then answers it.

Inputs: no named parameters.

DebugCreateMemorySnapshotA

[read-only] [debug] Writes a memory snapshot of the stopped debuggee and answers the file written. Runs outside batch mode.

Inputs: state_handle (required), detail.

DebugCreateWatchpointA

[read-only] [debug] Watches a variable of the stopped debuggee: it stops when the variable changes, optionally under a condition. Runs outside batch mode.

Inputs: name (required), state_handle (required), detail, condition.

DebugDeleteBreakpointA

[read-only] [debug] Removes one breakpoint of a debug session by its id; the rest of the set stays armed. An id outside the session's set is refused. Runs outside batch mode.

Inputs: state_handle (required), breakpoint_id (required), detail.

DebugDeleteWatchpointB

[read-only] [debug] Removes a watchpoint. Runs outside batch mode.

Inputs: state_handle (required), watchpoint_id (required), detail.

DebugGetMemorySizesA

[read-only] [debug] Memory the stopped debuggee uses. Needs a stopped debuggee. Runs outside batch mode.

Inputs: state_handle (required), detail.

DebugGetStackA

[read-only] [debug] Call stack of the stopped debuggee of the debug session named by state_handle, each frame with its ADT object address and its technical place. Needs a stopped debuggee. Runs outside batch mode.

Inputs: state_handle (required), detail.

DebugGetVariablesA

[read-only] [debug] Variables of the stopped debuggee, by name or as members of a parent. Needs a stopped debuggee. Runs outside batch mode.

Inputs: state_handle (required), names, detail, parents.

DebugListBreakpointsB

[read-only] [debug] Breakpoints a debug session armed. Runs outside batch mode.

Inputs: state_handle (required), detail.

DebugListWatchpointsB

[read-only] [debug] Watchpoints of the stopped debuggee. Runs outside batch mode.

Inputs: state_handle (required), detail.

DebugSetBreakpointsA

[read-only] [debug] Adds breakpoints to a debug session — a line, an exception class, an ABAP statement or a message; a line breakpoint may carry a condition — and answers the whole set placed, this call's refusals each with its breakpoint and reason, earlier breakpoints that dropped out of the set, and any answer row left unpaired with a breakpoint. Its breakpoints are one set, shared by every IDE of the same SAP user (in user mode, debugging the same request user; in terminal mode, whatever its ids), and each change rewrites that set as a whole. Runs outside batch mode.

Inputs: breakpoints (required), state_handle (required), detail.

DebugSetSettingsA

[read-only] [debug] Changes the debugger settings at the current stop and answers the settings in force; a field left out keeps its value. The debug session applies them again after each later attach. Runs outside batch mode.

Inputs: state_handle (required), detail, background_rfc, system_debugging, +3 more.

DebugSetStackPositionA

[read-only] [debug] Selects the stack frame variables are read in; execution goes on from the same point. Needs a stopped debuggee. Runs outside batch mode.

Inputs: position (required), state_handle (required), detail.

DebugSetVariableB

[read-only] [debug] Sets a variable of the stopped debuggee. Needs a stopped debuggee. Runs outside batch mode.

Inputs: name (required), value (required), state_handle (required), detail.

DebugStartListenerA

[read-only] [debug] Opens a debug session: arms breakpoints, listens for a debuggee and attaches the first one caught; refused before anything is placed while another debugger listens for that user. Needs at least one breakpoint. Takes whose requests are caught, the debugging mode and the debugger settings. In user mode it catches every request of the request user (the connected SAP user, or the one named), from this server and from anywhere else. Its breakpoints are one set, shared by every IDE of the same SAP user (in user mode, debugging the same request user; in terminal mode, whatever its ids), and each change rewrites that set as a whole. Runs outside batch mode.

Inputs: breakpoints (required), run, detail, settings, +2 more.

DebugStepB

[read-only] [debug] Moves the stopped debuggee into a call, over it, out of the current one or on to the next stop; or leaves it running, the listener and the breakpoints kept, by detaching or by freeing the debugger. Runs outside batch mode.

Inputs: action (required), state_handle (required), detail.

DebugStepToLineB

[read-only] [debug] Runs or jumps the stopped debuggee to a line. Runs outside batch mode.

Inputs: line (required), mode (required), object_name (required), object_type (required), +4 more.

DebugStopA

[read-only] [debug] Ends a debug session, ABAP and AMDP: releases a stopped debuggee, removes the breakpoints, stops listening, closes the connections and lets the kept answers of its debugger batch go; a part that failed to undo is reported and kept with the answers. Runs outside batch mode.

Inputs: state_handle (required), detail.

DebugTakeOverListenerA

[read-only] [debug] Opens a debug session: arms breakpoints, listens for a debuggee and attaches the first one caught. Displaces another debugger listening for the same user. Needs at least one breakpoint. Takes whose requests are caught, the debugging mode and the debugger settings. In user mode it catches every request of the request user (the connected SAP user, or the one named), from this server and from anywhere else. Its breakpoints are one set, shared by every IDE of the same SAP user (in user mode, debugging the same request user; in terminal mode, whatever its ids), and each change rewrites that set as a whole. Runs outside batch mode.

Inputs: breakpoints (required), run, detail, settings, +2 more.

DebugTerminateB

[read-only] [debug] Ends the stopped debuggee and its program where it stands. Runs outside batch mode.

Inputs: state_handle (required), detail.

DebugWaitA

[read-only] [debug] State of a debug session after waiting up to hold_seconds; a debugger that took the user over is an error carrying the system's message. Runs outside batch mode.

Inputs: state_handle (required), detail, hold_seconds.

DeleteBehaviorDefinitionA

Delete an ABAP behavior definition from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

Inputs: behavior_definition_name (required), detail, transport_request.

DeleteBehaviorImplementationB

Delete an ABAP behavior implementation from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

Inputs: behavior_implementation_name (required), detail, transport_request.

DeleteCdsUnitTestB

Deletes the CDS view test class named by class_name, with the ABAP Unit test classes it holds. Runs outside batch mode.

Inputs: class_name (required), detail, transport_request.

DeleteClassB

Delete an ABAP class from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

Inputs: class_name (required), detail, transport_request.

DeleteDataElementB

Delete an ABAP data element from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

Inputs: data_element_name (required), detail, transport_request.

DeleteDdlA

Delete a DDL source from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

Inputs: ddl_name (required), detail, transport_request.

DeleteDomainA

Delete an ABAP domain from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

Inputs: domain_name (required), detail, transport_request.

DeleteFunctionGroupB

Delete an ABAP function group from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

Inputs: function_group_name (required), detail, transport_request.

DeleteFunctionIncludeA

Delete an ABAP function group include from the SAP system via ADT deletion API. Note: function module includes must be deleted via the Function Builder; the backend rejects such deletions. Transport request optional for local objects. Runs outside batch mode.

Inputs: include_name (required), function_group_name (required), detail, transport_request.

DeleteFunctionModuleB

Delete an ABAP function module from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

Inputs: function_group_name (required), function_module_name (required), detail, transport_request.

DeleteInterfaceB

Delete an ABAP interface from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

Inputs: interface_name (required), detail, transport_request.

DeleteLocalDefinitionsA

Delete local definitions from an ABAP class by clearing the definitions include. Manages lock, update, unlock, and optional activation. Runs outside batch mode.

Inputs: class_name (required), detail, transport_request, activate_on_delete.

DeleteLocalMacrosA

Delete local macros from an ABAP class by clearing the macros include. Manages lock, update, unlock, and optional activation. Note: Macros belong to older ABAP versions. Runs outside batch mode.

Inputs: class_name (required), detail, transport_request, activate_on_delete.

DeleteLocalTestClassA

Clears the local test classes include of the ABAP class named by class_name. The include is cleared under the class lock; with activate_on_delete the class is activated. Runs outside batch mode.

Inputs: class_name (required), detail, transport_request, activate_on_delete.

DeleteLocalTypesA

Delete local types from an ABAP class by clearing the implementations include. Manages lock, update, unlock, and optional activation. Runs outside batch mode.

Inputs: class_name (required), detail, transport_request, activate_on_delete.

DeleteMessageClassA

Delete an ABAP message class (MSAG) and all of its messages from the SAP system via ADT deletion API. Transport request required for transportable objects, optional for local objects. Runs outside batch mode.

Inputs: message_class_name (required), detail, transport_request.

DeleteMessageClassMessageA

Remove one message (by number) from an ABAP message class (T100), keeping the class and its other messages. Transport request required for transportable objects. Runs outside batch mode.

Inputs: msgno (required), message_class_name (required), transport_request.

DeleteMetadataExtensionB

Delete an ABAP metadata extension from the SAP system. Transport request optional for local objects. Runs outside batch mode.

Inputs: metadata_extension_name (required), detail, transport_request.

DeletePackageA

Delete an ABAP package from the SAP system via ADT deletion API. Transport request optional for local objects. A package can be saved only once per ABAP session (PAK/058 "Package … is already locked" otherwise). The package tools of this server save a package on a session apart from this one, so a delete here works after them; for a package saved elsewhere through this connection, pass force_new_connection=true to delete from a new session, closed afterwards. Runs outside batch mode.

Inputs: package_name (required), detail, transport_request, force_new_connection.

DeleteProgramA

Delete an ABAP program from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

Inputs: program_name (required), detail, transport_request.

DeleteServiceBindingA

Delete ABAP service binding via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

Inputs: service_binding_name (required), detail, response_format, transport_request.

DeleteServiceDefinitionA

Delete an ABAP service definition from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

Inputs: service_definition_name (required), detail, transport_request.

DeleteStructureB

Delete an ABAP structure from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

Inputs: structure_name (required), detail, transport_request.

DeleteTableA

Delete an ABAP table from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

Inputs: table_name (required), detail, transport_request.

DeleteUnitTestB

Deletes the ABAP Unit test classes of the ABAP class named by class_name. The class's local test classes are deleted, and the class stays. Runs outside batch mode.

Inputs: class_name (required), detail, transport_request.

DescribeByListA

[read-only] Describes each repository object named in objects, in one call: its type, description and package. Input: objects: Array<{ name: string, type?: string }>. Each object may be of type: PROG/P, FUGR, PROG/I, CLAS/OC, FUGR/FC, INTF/OI, TABLE, STRUCTURE, etc. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

Inputs: objects (required), timeout.

DiscardBackgroundRunB

[read-only] [runtime] Removes the kept answer of one of your finished background runs. Works on a finished run; a started run runs to its end. Runs outside batch mode.

Inputs: run_handle (required).

GetAbapASTA

[read-only] Parse ABAP code and return AST (Abstract Syntax Tree) in JSON format. Runs outside batch mode.

Inputs: code (required).

GetAbapSemanticAnalysisA

[read-only] Perform semantic analysis on ABAP code and return symbols, types, scopes, and dependencies. Runs outside batch mode.

Inputs: code (required).

GetAbapSystemSymbolsA

[read-only] Resolve ABAP symbols from semantic analysis with SAP system information including types, scopes, descriptions, and packages. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

Inputs: code (required), timeout.

GetAdtTypesA

[read-only] Retrieve all valid ADT object types (CLAS, TABL, PROG, DEVC, FUGR, INTF, DDLS, DTEL, DOMA, SRVD, SRVB, BDEF, DDLX, etc.) or validate a specific type name. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: detail, validate_type.

GetATCFindingsA

[read-only] Reads the findings of the ATC run whose worklist is named by worklist_id, for a run started with wait=true or wait=false. Answers each finding with the object, the source position, the priority, which check ran and what it said, plus how many objects were covered and the counts per priority. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: worklist_id (required), detail, timeout.

GetATCRunStatusA

[read-only] Answers whether the ATC run named by run_id has ended (a run started with wait=false answers its run_id). Answers the status the server reports and whether it is finished — finished means ended, whatever the checks found. The run's findings are read by its worklist_id. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: run_id (required).

GetBackgroundRunA

[read-only] [runtime] Reads one of your background runs by its run_handle: running, or finished with what the run tool answered (the system answer as it is, an error included). A read keeps the run; a finished run is kept until you discard it. Runs outside batch mode.

Inputs: run_handle (required).

GetBehaviorDefinitionA

[read-only] Reads the RAP behavior definition named by behavior_definition_name in one request: its source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: behavior_definition_name (required), part, version.

GetBehaviorDefinitionVersionDiffA

[read-only] Compares the two RAP behavior definition versions named by content_uri_from and content_uri_to, entries of its version history: answers the unified diff of their sources. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: content_uri_to (required), content_uri_from (required).

GetBehaviorDefinitionVersionsA

[read-only] Lists the version history of the RAP behavior definition named by behavior_definition_name: each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: behavior_definition_name (required).

GetBehaviorDefinitionVersionSourceA

[read-only] Reads the source of the RAP behavior definition version named by content_uri, an entry of the RAP behavior definition's version history. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: content_uri (required).

GetBehaviorImplementationA

[read-only] Reads the RAP behavior implementation (its class) named by behavior_implementation_name in one request: its source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: behavior_implementation_name (required), part, version.

GetClassA

[read-only] Reads the ABAP class named by class_name in one request: its source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: class_name (required), part, version.

GetClassVersionDiffA

[read-only] Compares the two ABAP class versions named by content_uri_from and content_uri_to, entries of its version history: answers the unified diff of their sources. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: content_uri_to (required), content_uri_from (required).

GetClassVersionsA

[read-only] Lists the version history of the ABAP class named by class_name: each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: class_name (required).

GetClassVersionSourceA

[read-only] Reads the source of the ABAP class version named by content_uri, an entry of the ABAP class's version history. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: content_uri (required).

GetDataElementA

[read-only] Reads the ABAP data element named by data_element_name in one request: its ADT metadata document (definition, package, description). Returns it under metadata, with part: "metadata". Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: data_element_name (required), version.

GetDdlA

[read-only] Reads the CDS view (or classic DDL view) named by ddl_name in one request: its DDL source (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: ddl_name (required), part, version.

GetDdlVersionDiffA

[read-only] Compares the two CDS view (DDL source) versions named by content_uri_from and content_uri_to, entries of its version history: answers the unified diff of their sources. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: content_uri_to (required), content_uri_from (required).

GetDdlVersionsA

[read-only] Lists the version history of the CDS view (DDL source) named by ddl_name: each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: ddl_name (required).

GetDdlVersionSourceA

[read-only] Reads the source of the CDS view (DDL source) version named by content_uri, an entry of the CDS view (DDL source)'s version history. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: content_uri (required).

GetDomainA

[read-only] Reads the ABAP domain named by domain_name in one request: its ADT metadata document (definition, package, description). Returns it under metadata, with part: "metadata". Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: domain_name (required), version.

GetEnhancementImplA

[read-only] Retrieve source code of a specific enhancement implementation by its name and enhancement spot. Runs outside batch mode.

Inputs: enhancement_name (required), enhancement_spot (required).

GetEnhancementsB

[read-only] Lists the enhancements (enhancement implementations) of the program, include, function group or class named by object_name and object_type. Takes object_name and object_type (one object: its enhancements) or objects (several objects: one entry per object, in the order given, each its enhancements answer or { object_name, object_type, error }). When object_type is one of CLASS, CLAS, CLAS/OC, FUNCTION_GROUP, FUNCTIONGROUP, FUGR, FUGR/F, PROGRAM, PROG, PROG/P and include_nested is any value but true, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: objects, object_name, object_type.

GetEnhancementSpotA

[read-only] Retrieve metadata and list of implementations for a specific enhancement spot. Runs outside batch mode.

Inputs: enhancement_spot (required).

GetFunctionGroupA

[read-only] Reads the ABAP function group named by function_group_name in one request: its ADT metadata document (package, description, contents). Returns it under metadata, with part: "metadata". Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: function_group_name (required), version.

GetFunctionIncludeA

[read-only] Reads the include named by include_name of the ABAP function group named by function_group_name in one request: its source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata"). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: include_name (required), function_group_name (required), part, version.

GetFunctionModuleA

[read-only] Reads the ABAP function module named by function_module_name, BAPI or RFC-enabled ones included, in the function group named by function_group_name, in one request: its source code, which declares the parameter signature (part "source", the default; active or inactive version), or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: function_group_name (required), function_module_name (required), part, version.

GetFunctionModuleVersionDiffA

[read-only] Compares the two ABAP function module versions named by content_uri_from and content_uri_to, entries of its version history: answers the unified diff of their sources. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: content_uri_to (required), content_uri_from (required).

GetFunctionModuleVersionsA

[read-only] Lists the version history of the ABAP function module named by function_module_name: each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: function_group_name (required), function_module_name (required).

GetFunctionModuleVersionSourceA

[read-only] Reads the source of the ABAP function module version named by content_uri, an entry of the ABAP function module's version history. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: content_uri (required).

GetInactiveObjectsA

[read-only] Get a list of inactive ABAP objects — modified and pending activation. Shows classes, tables, CDS views, and other objects awaiting activation. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: detail.

GetIncludeA

[read-only] Read ANY single ABAP include source by name, from anywhere in the repository (an include may live outside any single program tree). Reads includes (PROG/I) by name. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: include_name (required).

GetIncludesListA

[read-only] Recursively discover and list ALL include files within an ABAP program or include. Takes object_name and object_type (one object: its tree) or objects (several objects: one entry per object, in the order given, each { object_name, object_type, tree } or { object_name, object_type, error }). Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

Inputs: objects, timeout, detailed, object_name, +1 more.

GetInterfaceA

[read-only] Reads the ABAP interface named by interface_name in one request: its source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: interface_name (required), part, version.

GetInterfaceVersionDiffA

[read-only] Compares the two ABAP interface versions named by content_uri_from and content_uri_to, entries of its version history: answers the unified diff of their sources. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: content_uri_to (required), content_uri_from (required).

GetInterfaceVersionsA

[read-only] Lists the version history of the ABAP interface named by interface_name: each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: interface_name (required).

GetInterfaceVersionSourceA

[read-only] Reads the source of the ABAP interface version named by content_uri, an entry of the ABAP interface's version history. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: content_uri (required).

GetLocalDefinitionsA

[read-only] Reads the local definitions include (the definitions include) of the ABAP class named by class_name, active or inactive version. Returns { class_name, version, part: 'source', source }. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: class_name (required), version.

GetLocalMacrosA

[read-only] Reads the local macros include of the ABAP class named by class_name, active or inactive version. Returns { class_name, version, part: 'source', source }. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: class_name (required), version.

GetLocalTestClassA

[read-only] Reads the local test classes include of the ABAP class named by class_name, active or inactive version. Returns { class_name, version, part: 'source', source }. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: class_name (required), version.

GetLocalTypesA

[read-only] Reads the local types include (the implementations include) of the ABAP class named by class_name, active or inactive version. Returns { class_name, version, part: 'source', source }. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: class_name (required), version.

GetMessageClassA

[read-only] Reads the ABAP message class (MSAG/T100) named by message_class_name in one request: its ADT metadata document (XML: name, description, package, master language, messages). Returns it under metadata, with part: "metadata". Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: message_class_name (required).

GetMessageClassMessageA

[read-only] Reads the message numbered msgno of the ABAP message class (MSAG/T100) named by message_class_name in one request. Answers the one message under message: its number (msgno), text (msgtext), self-explanatory flag (selfexplainatory), long-text flag (documented), last changer (lastchangedby), change time (lastmodified), and every other field the system gives the message. A number absent from the class is refused as missing. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: msgno (required), message_class_name (required), detail.

GetMetadataExtensionA

[read-only] Reads the CDS metadata extension named by metadata_extension_name in one request: its source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: metadata_extension_name (required), part, version.

GetMetadataExtensionVersionDiffA

[read-only] Compares the two CDS metadata extension versions named by content_uri_from and content_uri_to, entries of its version history: answers the unified diff of their sources. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: content_uri_to (required), content_uri_from (required).

GetMetadataExtensionVersionsA

[read-only] Lists the version history of the CDS metadata extension named by metadata_extension_name: each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: metadata_extension_name (required).

GetMetadataExtensionVersionSourceA

[read-only] Reads the source of the CDS metadata extension version named by content_uri, an entry of the CDS metadata extension's version history. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: content_uri (required).

GetObjectInfoA

[read-only] Returns the object tree of the package (DEVC), class (CLAS), program (PROG), function group (FUGR) or other object named by parent_type and parent_name. Shows root, group nodes, and terminal leaves up to maxDepth. With enrich=true each node also carries its description and package, from a repository search. Takes parent_type and parent_name (one object: its tree) or objects (several objects: one tree per object, in the order given; a failed one as { OBJECT_TYPE, OBJECT_NAME, error }). Read in ADT batch envelopes: per tier the root node structures of its nodes, then their type nodes; with enrich, the search of every node last. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

Inputs: enrich, objects, timeout, maxDepth, +3 more.

GetObjectNodeFromCacheB

[read-only] Returns a node from the in-memory objects list cache by OBJECT_TYPE, OBJECT_NAME, TECH_NAME, and expands OBJECT_URI if present. Runs outside batch mode.

Inputs: tech_name (required), object_name (required), object_type (required).

GetObjectsByTypeB

[read-only] Lists the objects of one type (classes, tables, programs, interfaces, etc.), the type whose node in the object tree is named by node_id, under the package or composite object named by parent_name, parent_tech_name and parent_type. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: node_id (required), parent_name (required), parent_type (required), parent_tech_name (required), +2 more.

GetObjectsListA

[read-only] Recursively lists every child repository object of the program (PROG), function group (FUGR), class (CLAS), package (DEVC) or other composite object named by parent_name, parent_tech_name and parent_type, nested includes and subcomponents included. Takes parent_name, parent_tech_name and parent_type (one parent: its list) or objects (several parents: one entry per parent, in the order given, each { parent_name, parent_type, total_objects, objects } or { parent_name, parent_type, error }). Each level of the node tree is read in one ADT batch envelope. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

Inputs: objects, timeout, parent_name, parent_type, +2 more.

GetObjectStructureA

[read-only] Returns the ADT structure of the repository object named by objecttype and objectname as a compact JSON tree. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: objectname (required), objecttype (required), detail.

GetObjectVersionDiffA

[read-only] Compares the two object versions named by content_uri_from and content_uri_to, entries of an object's version history, for the object type named by object_type: returns the unified diff (jsdiff) of their sources. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: object_type (required), content_uri_to (required), content_uri_from (required).

GetObjectVersionsA

[read-only] Lists the version history of the class, program, interface, function module, table, structure, CDS view, behavior definition or metadata extension named by object_name and object_type. Returns each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: object_name (required), object_type (required), function_group_name.

GetObjectVersionSourceB

[read-only] Reads the source code of the object version named by content_uri, an entry of an object's version history, for the object type named by object_type. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: content_uri (required), object_type (required).

GetPackageA

[read-only] Reads the ABAP package named by package_name in one request: its ADT metadata document (description, super-package, sub-packages, ...), active or inactive version. Returns it under metadata, with part: "metadata": a summary, the details or the document as SAP sent it, per detail. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: package_name (required), detail, version.

GetPackageContentsA

[read-only] Retrieve objects inside an ABAP package as a flat list. Supports recursive traversal of subpackages. Takes package_name (one package: its list) or package_names (several packages: one entry per package, in the order given, each { package_name, objects } or { package_name, error }). Each level of the walk is read in one ADT batch envelope: the root node structures of its packages, then their type nodes; with include_descriptions, as single requests, several at a time. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

Inputs: timeout, max_depth, package_name, package_names, +2 more.

GetPackageTreeA

[read-only] Returns the complete tree of the ABAP package named by package_name: its subpackages and objects. Returns hierarchical tree with object names, types, and descriptions. Takes package_name (one package: its tree) or package_names (several packages: one entry per package, in the order given, each { package_name, tree, metadata } or { package_name, error }). Read in ADT batch envelopes: the package metadata with the root node structure, then each level of the walk; with include_descriptions, as single requests, several at a time. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

Inputs: debug, timeout, max_depth, package_name, +3 more.

GetProgramA

[read-only] Reads the ABAP program (report) named by program_name in one request: its source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: program_name (required), part, version.

GetProgramVersionDiffA

[read-only] Compares the two ABAP program versions named by content_uri_from and content_uri_to, entries of its version history: answers the unified diff of their sources. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: content_uri_to (required), content_uri_from (required).

GetProgramVersionsA

[read-only] Lists the version history of the ABAP program named by program_name: each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: program_name (required).

GetProgramVersionSourceA

[read-only] Reads the source of the ABAP program version named by content_uri, an entry of the ABAP program's version history. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: content_uri (required).

GetServiceBindingA

[read-only] Reads the OData service binding named by service_binding_name in one request: its binding document (part "source", the default) or its ADT metadata document (part "metadata": package, responsible, description), each in the response_format given. Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: service_binding_name (required), part, response_format.

GetServiceBindingPreviewUrlA

[read-only] Build the browser URL that previews a published service binding, and the service and $metadata URLs beside it. Answers: "open the service in a browser", "preview this service binding", "what is the OData URL of this binding". Reads the binding for the service, version and protocol, and the service definition for the entity sets; the preview URL needs an entity set, and the answer names what is missing. A Web API binding answers the service URLs alone. Runs outside batch mode.

Inputs: service_binding_name (required), client, language, entity_set, +2 more.

GetServiceDefinitionA

[read-only] Reads the service definition named by service_definition_name in one request: its source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: service_definition_name (required), part, version.

GetSqlQueryA

[read-only] Execute ABAP SQL SELECT queries on database tables and CDS views via SAP ADT Data Preview API. Use for ad-hoc data retrieval, row counts, and filtered queries. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: sql_query (required), detail, timeout, row_number.

GetStructureA

[read-only] Reads the ABAP structure named by structure_name in one request: its definition with its fields, as source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: structure_name (required), part, version.

GetStructuresListA

[read-only] Recursively list the structures embedded in an ABAP structure (.INCLUDE / append), as a tree. Takes structure_name (one structure: its tree) or structure_names (several structures: one entry per structure, in the order given, each its tree answer or { structure_name, error }). Works on BASIS 7.50 and later, where the DDIC structure/table endpoints it reads exist; legacy systems (BASIS < 7.50) refuse it (issue #207). Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

Inputs: timeout, version, structure_name, structure_names, +1 more.

GetStructureVersionDiffA

[read-only] Compares the two ABAP structure versions named by content_uri_from and content_uri_to, entries of its version history: answers the unified diff of their sources. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: content_uri_to (required), content_uri_from (required).

GetStructureVersionsA

[read-only] Lists the version history of the ABAP structure named by structure_name: each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: structure_name (required).

GetStructureVersionSourceA

[read-only] Reads the source of the ABAP structure version named by content_uri, an entry of the ABAP structure's version history. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: content_uri (required).

GetTableA

[read-only] Reads the ABAP database table named by table_name in one request: its definition with its fields, as source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: table_name (required), part, version.

GetTableContentsA

[read-only] Reads the contents (data preview, like SE16/SE16N) of the ABAP database table or CDS view named by table_name: every column, up to max_rows rows (default 100). Answers sql_query, row_number (the max_rows asked), execution_time, total_rows (the rows the table or view holds), columns and rows. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: table_name (required), detail, timeout, max_rows.

GetTableVersionDiffA

[read-only] Compares the two ABAP table versions named by content_uri_from and content_uri_to, entries of its version history: answers the unified diff of their sources. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: content_uri_to (required), content_uri_from (required).

GetTableVersionsA

[read-only] Lists the version history of the ABAP table named by table_name: each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: table_name (required).

GetTableVersionSourceA

[read-only] Reads the source of the ABAP table version named by content_uri, an entry of the ABAP table's version history. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: content_uri (required).

GetTransactionA

[read-only] Reads the properties of the ABAP transaction (t-code) named by transaction_name in one request. Answers the transaction under object (name, text, type, package) and its facets under properties, in the order the system gives them — the application component chain, the package chain, type, owner, language, creation and the others the system names — each entry with its facet, name, displayName and text. Runs outside batch mode.

Inputs: transaction_name (required), detail.

GetTransportA

[read-only] Retrieve ABAP transport request information including metadata, included objects, and status from SAP system. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: transport_number (required), include_tasks, include_objects.

GetTypeInfoA

[read-only] Retrieve ABAP type information for a DDIC type name: data elements (DTEL), domains (DOMA), structures and table types. One name can be more than one type (MANDT is a data element and a domain): the answer lists every type the name is, in alphabetical order of type, each with its definition — data type, length and decimals, field labels, a domain's output format, value table and fixed values, a table type's row type and key. Runs outside batch mode.

Inputs: type_name (required), include_structure_fallback.

GetUnitTestResultA

[read-only] Reads the result of the ABAP Unit test run named by run_id, for a run still running when its start answered. Waits for it within a bound. Runs outside batch mode.

Inputs: run_id (required), detail.

GetWhereUsedA

[read-only] Lists where the object named by object_name and object_type is used — a class, interface, program, include, function group, function module (BAPI included), package, table, structure, domain, data element or CDS DDL source: every object that uses, calls or references it, with its type and package. Takes object_name and object_type (one object: its list) or objects (several objects: one entry per object, in the order given, each its list or { object_name, object_type, error }). Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. When enable_all_types is any value but true and enable_only_types is absent and disable_types is absent and objects is absent, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: objects, timeout, object_name, object_type, +3 more.

ListBackgroundRunsA

[read-only] [runtime] Lists your background runs: run_handle, tool, object, when it started, and running or finished. A run's output is read by its run_handle. Runs outside batch mode.

Inputs: no named parameters.

ListFunctionGroupIncludesA

[read-only] List the includes (TOP, custom) of an ABAP function group. Runs outside batch mode.

Inputs: function_group_name (required).

ListFunctionModulesA

[read-only] List the function modules of an ABAP function group. Runs outside batch mode.

Inputs: function_group_name (required).

ListLeftoverSessionsA

[read-only] [session] Lists the SAP sessions of this server's destination that an ended server process left open (it was killed before it could log them off), with the locks they may hold: handle, role (built: an instance connection; debugger: a debug session connection), destination, user (absent for a token login) and when it was last recorded. Read from the session records alone, on this machine. Only sessions of ended processes are listed. Log one off by its handle. A server process that starts while exactly one instance session (built) of its destination is left is born on it, before any tool call; with several, all stay here, untaken. Runs outside batch mode.

Inputs: no named parameters.

ListServiceBindingTypesA

[read-only] Lists the available service binding types (for example ODataV2/ODataV4) from the ADT Business Services endpoint, in the response_format given. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: response_format.

ListTransportsA

[read-only] List transport requests for the current or specified user. Returns modifiable and/or released workbench and customizing requests. user and modifiable-only are both applied client-side, over every request the server's default search configuration answers; ADT receives the default search alone. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

Inputs: user, detail, timeout, modifiable_only.

LogoffLeftoverSessionA

[read-only] [session] Logs off a leftover SAP session (any role): the session ends, and every lock it holds is released. Only the logoff is sent, credential-free. The session record is deleted afterwards. Runs outside batch mode.

Inputs: handle (required).

MemorySnapshotDeltaA

[read-only] [debug] Two memory snapshots compared in a view: memory by kind, largest objects, an object's children or its referrers. Needs the memory snapshot authorization. Runs outside batch mode.

Inputs: to_id (required), from_id (required), key, view, +2 more.

MemorySnapshotGetA

[read-only] [debug] One memory snapshot in a view: header, memory by kind, largest objects, an object's children or its referrers. Needs the memory snapshot authorization. Runs outside batch mode.

Inputs: snapshot_id (required), key, view, detail, +1 more.

MemorySnapshotListA

[read-only] [debug] Memory snapshots the system lists. Empty when the user lacks the memory snapshot authorization. Runs outside batch mode.

Inputs: user, detail.

MoveTransportObjectsA

Moves the object entries named by objects from the transport task named by transport_number to the task named by target_number. Each entry is named by its position in the source task's object list. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: objects (required), target_number (required), transport_number (required), detail.

ReadTransportActionLogA

[read-only] Reads the action log of the transport request named by transport_number: one entry per lifecycle event — created, object added, object deleted, owner changed. It confirms that an object entry was taken out of the request, since a removal answers by echoing what it was asked. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: transport_number (required), detail.

ReadTransportObjectsA

[read-only] Lists the objects the transport request or task named by transport_number holds, each with its position, which a removal of the entry names. A task answers its own entries; a request answers every task's entries, each once, with its task number and position — the task a removal addresses. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: transport_number (required), detail.

RemoveTransportObjectA

Removes the entry of the object named by object_name and object_type from the transport task named by transport_number, at position. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: position (required), object_name (required), object_type (required), transport_number (required), +2 more.

RunATCA

[read-only] Runs the ABAP Test Cockpit (ATC) checks of the check variant named by check_variant over the objects named by objects. Creates a worklist for the check variant, then starts the run. Answers worklist_id always — the run's findings are read by it, for either value of wait. With wait=false it also answers run_id, which the run's status is read by; with wait=true the server holds the request until the checks finish and answers the finding counts. Runs outside batch mode.

Inputs: objects (required), wait, max_findings, check_variant.

RunCdsUnitTestA

[read-only] Runs the ABAP Unit tests of the CDS view test class named by class_name and returns the result. Runs outside batch mode.

Inputs: class_name (required), detail.

RunFunctionGroupUnitTestA

[read-only] Runs every ABAP Unit test of the function group named by function_group_name and returns the result. runner async (default): the run is started and waited for within a bound, and a run that outlasts it returns its run_id, whose status and result are read by run_id; suited to long suites. runner sync: one request that returns the finished result. When runner is sync, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: function_group_name (required), scope, detail, runner.

RunFunctionModuleUnitTestA

[read-only] Runs the ABAP Unit tests of the function module named by function_module_name and returns the result. runner async (default): the run is started and waited for within a bound, and a run that outlasts it returns its run_id, whose status and result are read by run_id; suited to long suites. runner sync: one request, addressed by function_group_name and function_module_name, that returns the finished result of every test of the module's function group. When runner is sync and function_group_name is given, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: function_module_name (required), scope, detail, runner, +1 more.

RunProgramUnitTestA

[read-only] Runs the ABAP Unit tests of the report named by program_name and returns the result. runner async (default): the run is started and waited for within a bound, and a run that outlasts it returns its run_id, whose status and result are read by run_id; suited to long suites. runner sync: one request that returns the finished result. When runner is sync, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: program_name (required), scope, detail, runner.

RuntimeAnalyzeProfilerTraceA

[read-only] [runtime] Read profiler trace view and return compact analysis summary (totals + top entries). Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: trace_id_or_uri (required), top, view, timeout, +1 more.

RuntimeCreateProfilerTraceParametersB

[read-only] [runtime] Schedule ABAP profiler trace parameters and return profilerId (the request id) for profiled execution. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: description (required), aggregate, sql_trace, amdp_trace, +10 more.

RuntimeGetDumpByIdA

[read-only] [runtime] Read an ABAP runtime dump by its dump_id or URI. Answers a summary — runtime error, exception, terminated program, time, user, and the source position where it terminated — and the parsed dump. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: dump_id (required), view, response_mode.

RuntimeGetGatewayErrorLogA

[read-only] [runtime] List SAP Gateway error log (/IWFND/ERROR_LOG) or get error detail. Returns structured entries with type, shortText, transactionId, dateTime, username. With error_url returns full detail including serviceInfo, errorContext, sourceCode, callStack. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: to, from, user, error_url, +1 more.

RuntimeGetProfilerTraceDataA

[read-only] [runtime] Read profiler trace data by trace id/uri: hitlist, statements, or db accesses. Returns parsed JSON payload. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: view (required), trace_id_or_uri (required), id, timeout, +3 more.

RuntimeListFeedsA

[read-only] [runtime] Reads the ADT runtime feed named by feed_type: with feed_type "dumps", the ABAP short dumps (runtime errors) of the program or object named by object_name, of the user named by user, in the time range from–to, filtered also by runtime error, exception, package and application component; with "system_messages" or "gateway_errors", the system messages or SAP Gateway errors of the user and time range; with "descriptors" (the default) or "variants", the feeds and their variants. Entries come newest first; each dump carries its dump_id. When more entries remain, next_to is the to that reads on; incomplete_second names a second holding more entries than SAP answers in one request. Takes feed_type (one feed: its answer) or feed_types (several feeds with the same filters: one entry per feed, in the order given, each its answer or { feed_type, error }). Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. When feed_type is one of descriptors, variants (absent reads as descriptors) and feed_types is absent, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: to, from, user, package, +8 more.

RuntimeListProfilerTraceFilesA

[read-only] [runtime] List ABAP profiler trace files available in ADT runtime. Returns structured entries with id, recordedAt, user, objectName, state, expiresAt, and sizing/timing fields. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: no named parameters.

RuntimeListSystemMessagesA

[read-only] [runtime] List SM02 system messages. Returns structured entries with id, title, text, severity, validity period, and author. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: to, from, user, max_results.

RuntimeRunClassA

[read-only] [runtime] Runs the ABAP class named by class_name, which implements if_oo_adt_classrun, and returns its console output. Set profile=true to also capture a profiler trace: schedules the trace, runs the class under it, then searches the profiler feed for the id this run produced (bounded by max_trace_attempts/trace_retry_delay_ms). If the trace appears only after that bound, the run still answers success with output and profiler_id, trace_id absent — the trace is then found later in the list of profiler trace files. When profile is any value but true, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: class_name (required), profile, aggregate, sql_trace, +16 more.

RuntimeRunProgramB

[read-only] [runtime] Runs the ABAP program (report) named by program_name and returns its output. Set profile=true to also start a profiler trace; the trace is then found in the list of profiler trace files (program execution is fire-and-forget, so the traceId arrives later, through that list). When profile is any value but true, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: program_name (required), profile, aggregate, sql_trace, +13 more.

RunUnitTestA

[read-only] Runs the ABAP Unit tests of the ABAP class named by class_name and returns the result. runner async (default): the run is started and waited for within a bound, and a run that outlasts it returns its run_id, whose status and result are read by run_id; suited to long suites. runner sync: one request that returns the finished result. When runner is sync, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: class_name (required), scope, detail, runner.

SearchObjectA

[read-only] Search ABAP repository by object name or wildcard pattern (e.g. 'Z*'). Answers: "find object X", "does X exist", "list objects matching...", "search for program/class/table by name". Supports all repository object types — optionally filter by type (PROG, CLAS, INTF, DEVC, TABL, DDLS, DTEL, FUGR, SRVD, SRVB, BDEF, DDLX, etc.). Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: object_name (required), detail, timeout, maxResults, +1 more.

SearchSourceA

[read-only] Search ABAP source text inside one or more packages (programs, function groups, classes). packages accepts * masks (Z*, /NS/Z*) alongside exact names; mask resolution is best-effort and scoped to the ADT repository-search result window — some matching packages may be left unscanned. For certainty, pass concrete package names. When using masks, narrow the mask itself and use object_types, object_filter, and max_objects as scan-target controls that apply after package resolution. Comments are searched by default; set exclude_comments=true to drop col-1 * and full-line " comments. The version parameter affects PROG and CLAS main include reads only — FUGR subinclude reads always go against the active version (the include endpoint reads the active version alone). truncated.by_object_cap means at least one object had MORE hits than max_hits_per_object, so that object's hits were capped. The object-count limit is max_objects (which sets truncated.by_max_objects). To avoid by_object_cap, raise max_hits_per_object. The scan is read in ADT batch envelopes: the searches of the package masks, each level of the package walk, then the sources of the scanned objects in envelopes of at most 300 reads (main sources and function group structures, then function group includes and function modules); time_budget_ms is checked before every envelope, and a scan it stops answers whole objects. Run only ONE SearchSource per destination at a time — multiple parallel SearchSource calls against the same SAP system saturate the scan backend and can make all of them time out. Prefer combining terms into a single call over parallel calls. A scan that stops before its last target answers next_start_at; pass it as start_at to go on. When next_start_at equals start_at, time_budget_ms passed before the first object was answered: raise time_budget_ms or lower max_objects. The answer carries total_targets, the scan targets of the walk; it is absent when time_budget_ms passed during the walk. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

Inputs: query (required), packages (required), query2, exclude, +11 more.

SortAndCompressTransportTaskA

Sorts the object list of the transport task named by transport_number and merges its duplicate entries. A task holding the same entry twice refuses removing an entry until this has run. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: transport_number (required), detail.

UpdateBehaviorDefinitionA

Update source code of an existing ABAP Behavior Definition (BDEF). Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

Inputs: name (required), source_code (required), detail, activate, +2 more.

UpdateBehaviorImplementationB

Update source code of an existing ABAP behavior implementation class. Updates the implementations include. Manages lock, update, unlock, and optional activation. Runs outside batch mode.

Inputs: class_name (required), behavior_definition (required), implementation_code (required), detail, +2 more.

UpdateCdsUnitTestA

Writes test_class_source as the ABAP Unit test classes of the CDS view test class named by class_name. The local test classes in the test class are rewritten, and it is activated. Runs outside batch mode.

Inputs: class_name (required), test_class_source (required), detail, transport_request.

UpdateClassA

Update source code of an existing ABAP class. Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

Inputs: class_name (required), source_code (required), detail, activate, +1 more.

UpdateDataElementA

Update an existing ABAP data element. Locks, updates with provided parameters (complete replacement), unlocks, and optionally activates. Runs outside batch mode.

Inputs: package_name (required), data_element_name (required), detail, length, +14 more.

UpdateDdlA

Updates the DDL source code of the existing CDS view or classic DDL view named by ddl_name to ddl_source. Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

Inputs: ddl_name (required), ddl_source (required), detail, activate, +1 more.

UpdateDomainA

Update an existing ABAP domain. Locks, updates with provided parameters (complete replacement), unlocks, and optionally activates. Runs outside batch mode.

Inputs: domain_name (required), package_name (required), detail, length, +10 more.

UpdateFunctionGroupA

Update metadata (description) of an existing ABAP function group. Function groups are containers for function modules, which carry the source; this updates the group's metadata alone. Locks the group, writes, and unlocks it. Runs outside batch mode.

Inputs: description (required), function_group_name (required), detail, transport_request.

UpdateFunctionGroupUnitTestA

Writes test_class_source as the ABAP Unit test classes of the function group named by function_group_name. The local test classes in its test include are rewritten, and it is activated. Runs outside batch mode.

Inputs: test_class_source (required), function_group_name (required), detail, transport_request.

UpdateFunctionIncludeB

Update source code of an existing ABAP function group include. Runs outside batch mode.

Inputs: source_code (required), include_name (required), function_group_name (required), detail, +2 more.

UpdateFunctionModuleA

Update source code of an existing ABAP function module. Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

Inputs: source_code (required), function_group_name (required), function_module_name (required), detail, +2 more.

UpdateInterfaceA

Update source code of an existing ABAP interface. Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

Inputs: source_code (required), interface_name (required), detail, activate, +1 more.

UpdateLocalDefinitionsA

Update local definitions (class-local types/constants) in an ABAP class. Manages lock, update, unlock, and optional activation of parent class. Runs outside batch mode.

Inputs: class_name (required), definitions_code (required), detail, transport_request, +1 more.

UpdateLocalMacrosB

Update local macros in an ABAP class. Manages lock, update, unlock, and optional activation of parent class. Runs outside batch mode.

Inputs: class_name (required), macros_code (required), detail, transport_request, +1 more.

UpdateLocalTestClassA

Writes test_class_code as the local test classes include of the ABAP class named by class_name. The include is written under the class lock; with activate_on_update the class is activated. Runs outside batch mode.

Inputs: class_name (required), test_class_code (required), detail, transport_request, +1 more.

UpdateLocalTypesA

Update local types definitions in an ABAP class. Manages lock, update, unlock, and optional activation of parent class. Runs outside batch mode.

Inputs: class_name (required), local_types_code (required), detail, transport_request, +1 more.

UpdateMessageClassB

Updates the header of the ABAP message class named by message_class_name: its description. Runs outside batch mode.

Inputs: description (required), message_class_name (required), detail, transport_request.

UpdateMessageClassMessageA

Change the text / flags of an existing message in an ABAP message class (T100). Creates the message when the class lacks it (upsert). Runs outside batch mode.

Inputs: msgno (required), msgtext (required), message_class_name (required), description, +2 more.

UpdateMetadataExtensionA

Update source code of an existing ABAP Metadata Extension (DDLX). Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

Inputs: name (required), source_code (required), detail, activate, +2 more.

UpdatePackageA

Update the description of an existing ABAP package. Locks the package, writes, and unlocks it again, whatever the write answered. Over RFC this runs in an ABAP session of its own, closed afterwards. Runs outside batch mode.

Inputs: description (required), package_name (required), detail, transport_request.

UpdateProgramA

Update source code of an existing ABAP program. Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

Inputs: source_code (required), program_name (required), detail, activate, +1 more.

UpdateProgramUnitTestA

Writes test_class_source as the ABAP Unit test classes of the report named by program_name. The local test classes in its test include are rewritten, and it is activated. Runs outside batch mode.

Inputs: program_name (required), test_class_source (required), detail, transport_request.

UpdateServiceBindingB

Update publication state of an existing ABAP service binding. Runs outside batch mode.

Inputs: service_name (required), service_binding_name (required), desired_publication_state (required), detail, +3 more.

UpdateServiceDefinitionA

Update source code of an existing ABAP service definition. Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

Inputs: source_code (required), service_definition_name (required), detail, activate, +1 more.

UpdateStructureA

Update DDL source code of an existing ABAP structure. Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

Inputs: ddl_code (required), structure_name (required), detail, activate, +1 more.

UpdateTableA

Update DDL source code of an existing ABAP table. Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

Inputs: ddl_code (required), table_name (required), detail, activate, +1 more.

UpdateUnitTestA

Writes test_class_source as the ABAP Unit test classes of the ABAP class named by class_name. The class's local test classes are rewritten, and the class is activated. Runs outside batch mode.

Inputs: class_name (required), test_class_source (required), detail, transport_request.

ValidateServiceBindingA

[read-only] Validates a new service binding named by service_binding_name for the service definition named by service_definition_name, in the package and version given, through the ADT validation endpoint. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Inputs: service_binding_name (required), service_definition_name (required), detail, description, +2 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

    TDQS

    B3.2/5.0

    Scored across 256 tools

    Disambiguation2/5

    The per-type tool families (Get/Create/Update/Delete/Check/ActivateClass, -Program, -Table, etc.) are individually clear, but they overlap heavily with generic tools: GetObjectVersions/GetObjectVersionSource/GetObjectVersionDiff duplicate GetClassVersions/GetTableVersions/etc., and ActivateObjects duplicates every Activate* tool. Similarly GetObjectInfo, GetObjectsList, GetObjectsByType, GetPackageTree, GetPackageContents and GetObjectStructure all walk object trees, so an agent must guess which to call.

    Naming Consistency4/5

    The surface follows a strong Verb+Noun CamelCase convention (GetX, CreateX, UpdateX, DeleteX, CheckX, ActivateX, RunX) repeated consistently across all object types. A few outliers invert the order or deviate (MemorySnapshotList/Get/Delta, AmdpDebugStart, DescribeByList), keeping it from a perfect score.

    Tool Count1/5

    256 tools is an extreme mismatch for a single server: the per-type CRUD/check/activate/version quadrants multiply the surface far beyond what an agent can reliably select from. Many tools are near-duplicates of generic ones (version source/diff per type vs. the object-generic versions), so the count is inflated rather than earned.

    Completeness4/5

    Coverage of the ADT domain is extremely broad: CRUD, activation, syntax checks, version history/diff, transports, ATC, ABAP Unit, runtime/profiler, SQL preview and a full debugger surface are all present. Some object types are read-only (enhancements, transactions) and a few check/generic operations are missing per type, but the core lifecycle is covered.

    Maintenance

    ActivityActive
    ResponsivenessMixed handling

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      C
      quality
      Not graded
      maintenance
      An MCP server that facilitates seamless interaction with SAP ABAP systems to manage development objects, transport requests, and source code. It provides a comprehensive suite of tools for performing syntax checks, object searches, and code modifications via the ADT API.
      100
      -
    • A
      license
      C
      quality
      D
      maintenance
      An MCP server that enables seamless communication between ABAP systems and MCP clients using the ABAP Development Tools (ADT) API. It provides tools for managing ABAP objects, handling transport requests, and performing code analysis directly through MCP-compatible interfaces.
      100
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      MCP server for SAP ABAP development that enables AI assistants and code editors to interact with SAP systems via ABAP Developer Toolkit (ADT) APIs, supporting read, create, update, and delete of ABAP objects.
      100
      787 npm
      MIT