Skip to main content
Glama

MCP ABAP ADT ( For sc4sap application )

๐ŸŒ Language / ่จ€่ชž: English ยท ๆ—ฅๆœฌ่ชž

npm version License: MIT Node.js MCP Claude Code Plugin

Acknowledgments

This project was originally inspired by mario-andreschak/mcp-abap-adt and fr0ster/mcp-abap-adt. We started with the core concept and evolved it into an independent project with our own architecture and features. Huge thanks to the original authors and all contributors whose work made this possible.


Model Context Protocol (MCP) server for SAP ABAP development โ€” enables AI assistants and code editors to interact with SAP systems via ABAP Developer Toolkit (ADT) APIs.

Read, create, update, and delete ABAP objects directly from Claude Code, Cline, Cursor, Windsurf, or any MCP-compatible client. Supports ABAP Cloud (BTP), On-Premise, and Legacy SAP systems.


Related MCP server: dassian-adt

Table of Contents


Features

  • 287 MCP Tools for comprehensive SAP ABAP development

  • 30+ ABAP object types supported (Classes, Interfaces, CDS Views, Tables, RAP, and more)

  • Multiple transport protocols: stdio, HTTP (StreamableHTTP), SSE

  • Flexible authentication: JWT/XSUAA (OAuth2), Basic Auth, Service Key

  • Multi-environment: ABAP Cloud (BTP), On-Premise, Legacy (BASIS < 7.50)

  • Runtime diagnostics: Profiling, dump analysis, SQL queries

  • Handler groups: Read-Only, High-Level, Low-Level, Compact, System, Search

  • Embeddable: Use as a standalone server or embed handlers into existing MCP servers

  • Auto-configurator: @mcp-abap-adt/configurator for automated client setup

  • Health endpoint: GET /mcp/health for HTTP/SSE transports

  • Optional data-fetch prevention: opt-in server-side blocklist (SC4SAP_POLICY=on) that blocks row extraction from sensitive tables (PII, credentials, payroll, banking) regardless of caller โ€” see Optional: Data Fetch Prevention


Supported SAP Environments

Environment

Auth Methods

Notes

ABAP Cloud (BTP)

JWT/XSUAA, Service Key

Full RAP/CDS support

On-Premise (S/4HANA)

Basic Auth, JWT

Full feature surface โ€” Programs, Classes, CDS, Screens, GUI Statuses

Legacy (ECC / BASIS < 7.50)

Basic Auth

Classic ABAP only โ€” see matrix below

Legacy detection (BASIS < 7.50 / pre-S/4HANA) applies when any of:

  • SAP_SYSTEM_TYPE=legacy (explicit opt-in, back-compat)

  • SAP_VERSION=ECC

  • ABAP_RELEASE numeric < 750 (e.g., 740, 731)

Under legacy mode the client routes through AdtClientLegacy, which restricts endpoint probes to those actually present on BASIS 7.4x. Modern DDIC CRUD and RAP/Service endpoints deliberately refuse with a clear "not supported on this SAP system" message instead of a cryptic 404.

Legacy (ECC / BASIS < 7.50) Compatibility Matrix

Verified on ECC 7.40 (SAP_VERSION=ECC, ABAP_RELEASE=740, SAP_SYSTEM_TYPE=onprem).

Category

Tool

ECC 7.40

Reason

Session / Discovery

GetSession, SearchObject, GetObjectInfo, GetObjectStructure

โœ…

Basic ADT present on all releases

Inactive objects

GetInactiveObjects

โœ…

โ€”

Package read

GetPackageContents, GetPackageTree

โœ…

ADT repository informationsystem

Package metadata

GetPackage

โŒ

/sap/bc/adt/packages not present on BASIS < 7.50 โ€” use SE80/SE21 in SAP GUI

DDIC read

GetTable, GetStructure, GetDataElement, GetDomain

โŒ

/sap/bc/adt/ddic/{tables,structures,dataelements,domains} added in BASIS 7.50

DDIC write

CreateTable, CreateStructure, CreateDataElement, CreateDomain (+ Update/Delete)

โŒ

Same endpoint gap โ€” create from SAP GUI (SE11) instead

CDS view (DDLS)

GetView, CreateView, UpdateView

โœ…

DDL endpoint (/sap/bc/adt/ddic/ddl/sources/) present and activates cleanly from BASIS 7.40 SP05+

Classic view (VIEW/DV)

GetView for classic DDIC views

โŒ

Classic view endpoint falls in the same DDIC gap as Tables/Structures โ€” use SE11 in SAP GUI

ABAP source read

GetProgram, GetClass, GetInterface, GetInclude, GetFunctionGroup, GetFunctionModule

โœ…

/sap/bc/adt/{programs,oo/classes,oo/interfaces,programs/includes,functions/groups} all present

ABAP source write

Create* / Update* for Program, Class, Interface, Include, FunctionGroup, FunctionModule

โœ…

UpdateFunctionModule defaults transport_request to "local" when omitted (consistent with FunctionGroup/Class)

AST / Semantic analysis

GetAbapSemanticAnalysis, GetAbapAST

โœ…

Client-side parse, no SAP call

WhereUsed

GetWhereUsed

โš ๏ธ

Classic object types only โ€” TABL reports "Unsupported object type for where-used"; class/program targets work

Enhancements

GetEnhancements, GetEnhancementSpot, GetEnhancementImpl

โŒ

/sap/bc/adt/enhancements discovery endpoints return 404 on BASIS < 7.50 โ€” use SE18/SE19 or CMOD/SMOD in SAP GUI

Transport

ListTransports, GetTransport, CreateTransport

โœ…

CTS endpoints present

Runtime

RuntimeListDumps, RuntimeAnalyzeDump, RuntimeGetDumpById

โœ…

/sap/bc/adt/runtime/dumps present

Screen / GUI Status

GetScreen, GetGuiStatus, GetTextElement (+ Create/Update)

โ„น๏ธ

RFC-dispatched via SAP_RFC_BACKEND (odata default / soap / native / gateway / zrfc); the chosen backend's prerequisites (backend classes, SICF node, SDK) must be in place

RAP / Behavior

*BehaviorDefinition, *BehaviorImplementation

โŒ

S/4HANA only โ€” RAP does not exist on ECC

Service binding

*ServiceDefinition, *ServiceBinding

โŒ

S/4HANA / ABAP Cloud only

Metadata extensions

*MetadataExtension

โŒ

S/4HANA / ABAP Cloud only

Table contents

GetTableContents, GetSqlQuery

โ„น๏ธ

Works server-side but gated by the per-profile data-extraction policy โ€” see Optional: Data Fetch Prevention

Legend: โœ… works fully ยท โš ๏ธ works with caveats ยท โŒ refuses with a clear "not supported on this SAP system" error (not a bug โ€” SAP platform limit) ยท โ„น๏ธ works, but depends on prior setup / policy.


Quick Start

1. Install

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

2. Configure environment

# Create .env file in your working directory
cat > .env << 'EOF'
SAP_URL=https://your-sap-system.com
SAP_CLIENT=100
SAP_AUTH_TYPE=basic
SAP_USERNAME=your_username
SAP_PASSWORD=your_password
EOF

3. Run

# stdio (for MCP clients like Claude Code, Cline, Cursor)
mcp-abap-adt

# HTTP server
mcp-abap-adt --transport=http --port 3000

# SSE server
mcp-abap-adt --transport=sse --port 3000

Installation

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

From source

git clone --recurse-submodules https://github.com/babamba2/abap-mcp-adt-powerup.git
cd abap-mcp-adt-powerup
npm install
npm run build
npm start

Platform-specific guides


Claude Code Plugin

This repository is also distributed as a Claude Code plugin via the marketplace.

Install via marketplace

# Add this marketplace (once)
/plugin marketplace add babamba2/abap-mcp-adt-powerup

# Install the plugin
/plugin install abap-mcp-adt-powerup

After install, configure the SAP connection through environment variables (see Configuration) or use the auto-configurator:

npx @mcp-abap-adt/configurator

Manual plugin directory

If you're editing this repo locally, it already resolves as a plugin from:

~/.claude/plugins/marketplaces/abap-mcp-adt-powerup

Reload Claude Code (/plugin โ†’ Reload) to pick up changes.


Configuration

Environment Variables (.env)

# SAP connection
SAP_URL=https://your-abap-system.com
SAP_CLIENT=100
SAP_LANGUAGE=en

# System type: cloud (default), onprem, or legacy
SAP_SYSTEM_TYPE=cloud

# TLS: set to 0 for self-signed certificates (dev only)
TLS_REJECT_UNAUTHORIZED=0

# Authentication
SAP_AUTH_TYPE=xsuaa          # 'xsuaa' for JWT, 'basic' for username/password
SAP_JWT_TOKEN=your_jwt_token # For JWT auth
# SAP_USERNAME=your_username # For basic auth
# SAP_PASSWORD=your_password # For basic auth

# On-premise context (required for create/update on on-prem)
# SAP_MASTER_SYSTEM=DEV
# SAP_RESPONSIBLE=your_username

# Timeouts (milliseconds)
SAP_TIMEOUT_DEFAULT=45000    # General operations (default: 45s)
SAP_TIMEOUT_CSRF=15000       # CSRF token requests (default: 15s)
SAP_TIMEOUT_LONG=60000       # Long-running operations (default: 60s)

CLI Options

mcp-abap-adt [options]

Options:
  --transport=<type>    Transport protocol: stdio (default), http, sse
  --port <number>       Server port for http/sse (default: 3000)
  --host <address>      Bind address for http/sse (default: localhost)
  --env <destination>   Destination name for multi-system setups
  --env-path <path>     Path to .env file

YAML Configuration

Alternative to CLI arguments. See YAML Config Guide.


Authentication

Basic Auth (On-Premise)

SAP_AUTH_TYPE=basic
SAP_USERNAME=developer
SAP_PASSWORD=secret123

JWT / XSUAA (Cloud / On-Premise)

SAP_AUTH_TYPE=xsuaa
SAP_JWT_TOKEN=eyJhbGciOiJSUzI1NiIs...

Service Key (BTP)

Place your service key JSON file and configure via the configurator (@mcp-abap-adt/configurator).

Header-based Auth (HTTP/SSE transports)

For multi-tenant or proxy setups, pass SAP connection details via HTTP headers (x-sap-*). See Authentication Guide.


Available Tools

The server provides 287 tools organized into handler groups:

Tool Categories

Category

Count

Description

Read-Only

52

Query and retrieve objects without modification

High-Level

113

User-friendly CRUD operations

Low-Level

122

Direct ADT API operations with granular control

Compact

22

Streamlined access to common operations

System

-

Runtime analysis, profiling, dumps, SQL queries

Search

-

Object discovery, where-used analysis

Supported ABAP Object Types

Object Type

Read

Create

Update

Delete

Classes (CLAS)

O

O

O

O

Interfaces (INTF)

O

O

O

O

Programs (PROG)

O

O

O

O

Includes

O

O

O

O

Tables (TABL)

O

O

O

O

Structures

O

O

O

O

CDS Views (DDLS)

O

O

O

O

Domains

O

O

O

O

Data Elements (DTEL)

O

O

O

O

Function Groups (FUGR)

O

O

O

O

Function Modules (FUNC)

O

O

O

O

Packages (DEVC)

O

O

O

O

Transports

O

O

-

-

Service Definitions (SRVD)

O

O

O

O

Service Bindings (SRVB)

O

O

O

O

Behavior Definitions (BDEF)

O

O

O

O

Behavior Implementations (BIMP)

O

O

O

O

Metadata Extensions (DDLX)

O

O

O

O

Screens (DYNP)

O

O

O

O

GUI Statuses

O

O

O

O

Text Elements

O

O

O

O

Unit Tests

O

O

O

O

CDS Unit Tests

O

O

O

O

Enhancements

O

-

-

-

Runtime & System Tools

  • Runtime Profiling - Profile class and program execution with trace analysis

  • Dump Analysis - List and analyze ABAP runtime dumps

  • SQL Queries - Execute SQL queries via ADT (GetSqlQuery)

  • Table Contents - Read table data (GetTableContents)

  • Object Search - Find objects by name, type, package (SearchObject)

  • Where-Used - Cross-reference analysis (GetWhereUsed)

  • Type Info - Retrieve type information (GetTypeInfo)

  • Inactive Objects - List objects pending activation (GetInactiveObjects)

  • AST / Semantic Analysis - Parse ABAP syntax tree and semantic info

For the complete tool reference, see AVAILABLE_TOOLS.md.


Transport Protocols

stdio (Default)

Standard input/output transport for MCP clients. Used by Claude Code, Cline, Cursor, and other MCP-compatible tools.

mcp-abap-adt
# or explicitly:
mcp-abap-adt --transport=stdio

HTTP (StreamableHTTP)

REST API with JSON streaming responses. Ideal for web clients and multi-user deployments.

mcp-abap-adt --transport=http --port 3000 --host 0.0.0.0

Health check: GET /mcp/health

SSE (Server-Sent Events)

Long-polling transport with session management.

mcp-abap-adt --transport=sse --port 3000

Client Configuration

Claude Code

{
  "mcpServers": {
    "mcp-abap-adt": {
      "command": "npx",
      "args": ["-y", "@mcp-abap-adt/core"],
      "env": {
        "SAP_URL": "https://your-sap-system.com",
        "SAP_CLIENT": "100",
        "SAP_AUTH_TYPE": "basic",
        "SAP_USERNAME": "developer",
        "SAP_PASSWORD": "secret"
      }
    }
  }
}

Cline / Cursor / VS Code

{
  "mcpServers": {
    "mcp-abap-adt": {
      "command": "npx",
      "args": ["-y", "@mcp-abap-adt/core"],
      "env": {
        "SAP_URL": "https://your-sap-system.com",
        "SAP_CLIENT": "100",
        "SAP_AUTH_TYPE": "xsuaa",
        "SAP_JWT_TOKEN": "eyJhbGciOiJSUzI1NiIs..."
      }
    }
  }
}

Auto-Configuration

Use the configurator for automated setup:

npx @mcp-abap-adt/configurator

See Client Configuration Guide for more examples.


Handler Architecture

The server organizes tools into composable handler groups:

handlers/
โ”œโ”€โ”€ behavior_definition/    # BDEF CRUD
โ”œโ”€โ”€ behavior_implementation/# BIMP CRUD
โ”œโ”€โ”€ class/                  # CLAS CRUD
โ”œโ”€โ”€ compact/                # Shorthand tools
โ”œโ”€โ”€ common/                 # Shared handlers
โ”œโ”€โ”€ data_element/           # DTEL CRUD
โ”œโ”€โ”€ ddlx/                   # Metadata Extension CRUD
โ”œโ”€โ”€ domain/                 # Domain CRUD
โ”œโ”€โ”€ enhancement/            # Enhancement read-only
โ”œโ”€โ”€ function/               # Function-related
โ”œโ”€โ”€ function_group/         # FUGR CRUD
โ”œโ”€โ”€ function_module/        # FUNC CRUD
โ”œโ”€โ”€ gui_status/             # GUI Status CRUD
โ”œโ”€โ”€ include/                # Include CRUD
โ”œโ”€โ”€ interface/              # INTF CRUD
โ”œโ”€โ”€ metadata_extension/     # DDLX CRUD
โ”œโ”€โ”€ package/                # DEVC CRUD
โ”œโ”€โ”€ program/                # PROG CRUD
โ”œโ”€โ”€ screen/                 # Screen/Dynpro CRUD
โ”œโ”€โ”€ search/                 # Object search & where-used
โ”œโ”€โ”€ service_binding/        # SRVB CRUD
โ”œโ”€โ”€ service_definition/     # SRVD CRUD
โ”œโ”€โ”€ structure/              # Structure CRUD
โ”œโ”€โ”€ system/                 # Runtime diagnostics
โ”œโ”€โ”€ table/                  # TABL CRUD
โ”œโ”€โ”€ text_element/           # Text Element CRUD
โ”œโ”€โ”€ transport/              # Transport management
โ”œโ”€โ”€ unit_test/              # Unit test CRUD & run
โ””โ”€โ”€ view/                   # CDS View CRUD

Each handler category contains subdirectories:

  • high/ - High-level, user-friendly operations

  • low/ - Low-level, direct ADT API operations

  • readonly/ - Safe read-only queries

Embedding Handlers

For integrating into existing MCP servers (e.g., CAP/CDS applications):

import { HandlerExporter } from '@mcp-abap-adt/core/handlers';

const exporter = new HandlerExporter({
  includeReadOnly: true,
  includeHighLevel: true,
  includeLowLevel: false,
  includeSystem: true,
  includeSearch: true,
});

exporter.registerOnServer(mcpServer, () => connection);

Docker Deployment

Using Docker Compose

# Build and run
npm run docker:build
npm run docker:up

# Or with pre-built package
npm run docker:build:package
npm run docker:up:package

Manual Docker Build

cd docker
docker-compose build
docker-compose up -d

See Docker Deployment Guide for full details.


Development

Prerequisites

  • Node.js >= 20.0.0

  • npm >= 9.0.0

  • TypeScript 5.9+

Setup

git clone --recurse-submodules https://github.com/babamba2/abap-mcp-adt-powerup.git
cd abap-mcp-adt-powerup
npm install
npm run build

Scripts

Command

Description

npm run build

Lint + compile TypeScript

npm run build:fast

Compile only (skip lint)

npm run dev

Build + launch MCP Inspector (stdio)

npm run dev:http

Build + launch HTTP dev server

npm run dev:sse

Build + launch SSE dev server

npm run lint

Run Biome linter with auto-fix

npm run format

Format code with Biome

npm start

Run MCP server (stdio)

npm run start:http

Run MCP server (HTTP)

npm run start:sse

Run MCP server (SSE)

npm run docs:tools

Regenerate tool documentation

Project Structure

mcp-abap-adt/
โ”œโ”€โ”€ bin/                    # CLI entry points
โ”‚   โ”œโ”€โ”€ mcp-abap-adt.js    # Main CLI
โ”‚   โ””โ”€โ”€ mcp-abap-adt-v2.js # V2 server variant
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ handlers/           # 30 handler categories (287 tools)
โ”‚   โ”œโ”€โ”€ lib/
โ”‚   โ”‚   โ”œโ”€โ”€ auth/           # Auth broker, JWT/XSUAA
โ”‚   โ”‚   โ”œโ”€โ”€ config/         # Configuration management
โ”‚   โ”‚   โ”œโ”€โ”€ handlers/       # Handler registry & utilities
โ”‚   โ”‚   โ”œโ”€โ”€ stores/         # Session/token storage
โ”‚   โ”‚   โ”œโ”€โ”€ types/          # TypeScript interfaces
โ”‚   โ”‚   โ””โ”€โ”€ utils.ts        # Core utilities
โ”‚   โ”œโ”€โ”€ server/
โ”‚   โ”‚   โ”œโ”€โ”€ BaseMcpServer.ts         # MCP server extension
โ”‚   โ”‚   โ”œโ”€โ”€ StdioServer.ts           # stdio transport
โ”‚   โ”‚   โ”œโ”€โ”€ SseServer.ts             # SSE transport
โ”‚   โ”‚   โ”œโ”€โ”€ StreamableHttpServer.ts  # HTTP transport
โ”‚   โ”‚   โ””โ”€โ”€ launcher.ts              # Server startup
โ”‚   โ””โ”€โ”€ utils/              # Utility modules
โ”œโ”€โ”€ docker/                 # Docker deployment
โ”œโ”€โ”€ docs/                   # Documentation
โ”œโ”€โ”€ tests/                  # Test configuration
โ”œโ”€โ”€ tools/                  # Dev tools & scripts
โ””โ”€โ”€ package.json

Key Dependencies

Package

Purpose

@mcp-abap-adt/adt-clients

ADT REST API clients

@mcp-abap-adt/connection

SAP connection management

@mcp-abap-adt/auth-broker

Authentication token management

@mcp-abap-adt/auth-providers

Auth strategy implementations

@modelcontextprotocol/sdk

MCP protocol SDK

fast-xml-parser

XML parsing for ADT responses


Testing

Integration Tests

Integration tests run against a real SAP system in two modes:

  • Soft mode (default): Calls handlers directly, no MCP subprocess

  • Hard mode: Spawns full MCP server via stdio, calls tools through MCP protocol

Setup

# Create test config from template
npm run test:init

# Edit only the lines marked "# <- CHANGE"
# - environment.env (session .env file)
# - environment.system_type (onprem/cloud/legacy)
# - environment.default_package
# - environment.default_transport

Running Tests

# Unit tests
npm test

# All integration tests (soft mode)
npm run test:integration

# High-level handler tests only
npm run test:high

# Low-level handler tests only
npm run test:low

# Type check test files
npm run test:check

See Testing Guide for full details.


Troubleshooting

self-signed certificate in certificate chain

Your SAP system uses a self-signed TLS certificate. For development only:

TLS_REJECT_UNAUTHORIZED=0

For production, install the SAP CA certificate into the Node.js trust store.

401 Unauthorized / 403 Forbidden

  • Basic Auth: confirm SAP_USERNAME / SAP_PASSWORD and that the user has ADT authorization (S_DEVELOP, S_RFC, S_TCODE).

  • JWT/XSUAA: the token may be expired โ€” refresh via the configurator or service key.

  • Client mismatch: verify SAP_CLIENT matches the logon client.

CSRF token validation failed on Update/Create

The session lost its CSRF token. Most handlers refresh automatically; if it persists:

  • Increase SAP_TIMEOUT_CSRF (default 15s).

  • Confirm cookies are not being stripped by a proxy.

transport required on On-Premise

Create or update on on-prem systems requires a transport request. Set:

SAP_MASTER_SYSTEM=DEV
SAP_RESPONSIBLE=your_username

โ€ฆand pass transport=<TRKORR> to the handler, or use a local package ($TMP).

Claude Code doesn't see the MCP server

  1. Restart Claude Code after editing config.

  2. Check logs: ~/.claude/logs/ (stderr from the MCP process).

  3. Run mcp-abap-adt directly in a shell โ€” it must start without errors before Claude can connect.

Programs not available on Cloud

Programs (PROG) are on-premise / legacy only. Use Classes or CDS on ABAP Cloud.


FAQ

Q. Does this work with S/4HANA Cloud, public edition? Yes โ€” via ABAP Cloud (BTP) with JWT/XSUAA or a service key. RAP/CDS objects are fully supported; classic objects (Programs, Screens, GUI Statuses) are not available on cloud.

Q. Can I use this without Claude Code? Yes. Any MCP-compatible client works: Cline, Cursor, Windsurf, VS Code MCP extension, or a custom client built with @modelcontextprotocol/sdk.

Q. How do I limit which tools are exposed? Use the HandlerExporter to select handler groups when embedding, or set environment flags to disable groups. See Handler Management.

Q. Is it safe to use against a productive SAP system? The server respects SAP authorization โ€” whatever your user cannot do in SE80/ADT, it cannot do here either. Still, we recommend a dedicated development user and running against non-prod first.

Q. How do I run against multiple SAP systems? Use --env <destination> with per-destination .env files, or the YAML config. For HTTP/SSE deployments, pass x-sap-* headers per request.

Q. Does it support RFC? Yes, for legacy systems where ADT HTTP APIs are unavailable. Set connection_type: rfc in the test config (or equivalent env) โ€” requires the SAP NW RFC SDK installed locally.


Documentation

Guide

Description

Installation

Platform-specific installation

Client Configuration

MCP client setup

Authentication

Auth methods & destinations

Available Tools

Complete tool reference (287 tools)

CLI Options

Command-line reference

YAML Config

YAML configuration guide

Architecture

System architecture overview

Stateful Sessions

Lock/update/unlock flow

Handler Architecture

Tool & handler structure

Docker Deployment

Container deployment

Testing Guide

Test setup & execution

Handler Management

Enable/disable handler groups


Optional: Data Fetch Prevention

Row-returning tools (GetTableContents, GetSqlQuery) can expose sensitive business data โ€” PII, credentials, payroll, banking, transactional finance. This server ships with an opt-in server-side blocklist that stops such calls before they ever reach SAP, regardless of the caller (Claude, other LLMs, direct JSON-RPC, external scripts).

The feature is disabled by default โ€” nothing is blocked unless you explicitly turn it on.

Enable

export SC4SAP_POLICY=on                    # or: strict | standard | minimal | custom
export SC4SAP_POLICY_PROFILE=strict        # optional, default when SC4SAP_POLICY=on
export SC4SAP_BLOCKLIST_PATH=/path/to/table_exception.md   # optional extra list
export SC4SAP_ALLOW_TABLE=TAB1,TAB2        # session-scoped emergency exemption (logged)

Profiles

Profile

Blocks

strict (default when SC4SAP_POLICY=on)

PII + credentials + HR + transactional finance + audit logs + workflow

standard

PII + credentials + HR + transactional finance

minimal

PII + credentials + HR + Tax (business tables allowed)

custom

User-supplied list only (blocklist-custom.txt)

Behavior

When a blocked table is accessed, the server responds with isError: true and a categorized reason โ€” no SAP round-trip occurs. Schema/DDIC metadata calls (GetTable, GetStructure, GetView, GetDataElement, GetDomain), existence checks (SearchObject), and aggregate-only GetSqlQuery remain allowed.

Built-in blocklist covers 100+ tables / patterns across Banking (BNKA, KNBK, LFBK, REGUH), Customer/Vendor PII (KNA1, LFA1, BUT000, BUT0ID), Addresses (ADRC, ADR6, ADRP), Authentication (USR02, RFCDES, AGR_1251), HR/Payroll (PA* / HRP* / PCL*), Tax IDs, Protected Business Data (VBAK/BKPF/ACDOCA), Audit logs, and customer Z* PII patterns.

This feature is designed for but not coupled to the sc4sap plugin โ€” any MCP client can benefit from it.


Contributing

We welcome contributions! Please see the development documentation for setup instructions.

Contributors


License

MIT โ€” Copyright (c) 2026 ๋ฐฑ์Šนํ˜„ (Paek Seunghyun) & Oleksii Kyslytsia

Available Tools

143 tools
ActivateObjectsA

[high-level] Activate a set of ABAP objects in a single call. Uses the ADT mass-activation endpoint (/sap/bc/adt/activation/runs) so cyclic references between siblings (e.g. main program + multiple cross-referencing includes) resolve in one compilation scope. Returns per-object status, errors, warnings. Falls back to /sap/bc/adt/activation on legacy systems.

Inputs: objects (required), preaudit, run_timeout_ms.

CreateBehaviorDefinitionB

Create a new ABAP Behavior Definition (BDEF) in SAP system. Defines RAP business object behavior: CRUD operations, validations, determinations, actions, and draft handling.

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

CreateBehaviorImplementationA

Create a new ABAP behavior implementation class for a behavior definition. Creates the object in initial state. Use UpdateBehaviorImplementation to set implementation code afterwards.

Inputs: class_name (required), package_name (required), behavior_definition (required), description, +1 more.

CreateCdsUnitTestB

Create a CDS unit test class with CDS validation. Creates the test class in initial state.

Inputs: class_name (required), package_name (required), cds_view_name (required), description, +1 more.

CreateClassA

Create a new ABAP class in SAP system. Creates the class object in initial state. Use UpdateClass to set source code afterwards.

Inputs: class_name (required), package_name (required), final, abstract, +4 more.

CreateDataElementB

Create a new ABAP data element in SAP system with all required steps: create, activate, and verify.

Inputs: package_name (required), data_element_name (required), length, decimals, +12 more.

CreateDomainA

Create a new ABAP domain in SAP system with all required steps: lock, create, check, unlock, activate, and verify.

Inputs: domain_name (required), length, activate, datatype, +9 more.

CreateFunctionGroupA

Create a new ABAP function group in SAP system. Function groups serve as containers for function modules. Uses stateful session for proper lock management.

Inputs: package_name (required), function_group_name (required), activate, description, +1 more.

CreateFunctionModuleA

Create a new ABAP function module within an existing function group. Creates the function module in initial state. Use UpdateFunctionModule to set source code afterwards.

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

CreateInterfaceA

Create a new ABAP interface in SAP system. Creates the interface object in initial state. Use UpdateInterface to set source code afterwards.

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

CreateMetadataExtensionA

Create a new ABAP Metadata Extension (DDLX) in SAP system. Defines Fiori UI annotations, field labels, search help, and list/object page layout for CDS views.

Inputs: name (required), package_name (required), activate, description, +1 more.

CreatePackageB

Create a new ABAP package in SAP system. Packages are containers for development objects and are essential for organizing code.

Inputs: package_name (required), super_package (required), description, package_type, +5 more.

CreateServiceBindingB

Create ABAP service binding via ADT Business Services endpoint. XML is generated from high-level parameters.

Inputs: package_name (required), service_binding_name (required), service_definition_name (required), activate, +7 more.

CreateServiceDefinitionB

Create a new ABAP service definition for OData services. Service definitions define the structure and behavior of OData services. Uses stateful session for proper lock management.

Inputs: package_name (required), service_definition_name (required), activate, description, +2 more.

CreateStructureB

Create a new ABAP structure in SAP system with fields and type references. Includes create, activate, and verify steps.

Inputs: fields (required), package_name (required), structure_name (required), activate, +3 more.

CreateTableA

Create a new ABAP table via the ADT API. Creates the table object in initial state. Use UpdateTable to set DDL code afterwards.

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

CreateTransportB

Create a new ABAP transport request in SAP system for development objects.

Inputs: description (required), owner, target_system, transport_type.

CreateUnitTestA

Start an ABAP Unit test run for provided class test definitions. Returns run_id for status/result queries.

Inputs: tests (required), scope, title, context, +2 more.

CreateViewA

Create CDS View or Classic View in SAP. Creates the view object in initial state. Use UpdateView to set DDL source code afterwards.

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

DeleteBehaviorDefinitionA

Delete an ABAP behavior definition from the SAP system. Includes deletion check before actual deletion. Transport request optional for $TMP objects.

Inputs: behavior_definition_name (required), transport_request.

DeleteBehaviorImplementationA

Delete an ABAP behavior implementation from the SAP system. Includes deletion check before actual deletion. Transport request optional for $TMP objects.

Inputs: behavior_implementation_name (required), transport_request.

DeleteCdsUnitTestB

Delete a CDS unit test class (global class).

Inputs: class_name (required), transport_request.

DeleteClassA

Delete an ABAP class from the SAP system. Includes deletion check before actual deletion. Transport request optional for $TMP objects.

Inputs: class_name (required), transport_request.

DeleteDataElementA

Delete an ABAP data element from the SAP system. Includes deletion check before actual deletion. Transport request optional for $TMP objects.

Inputs: data_element_name (required), transport_request.

DeleteDomainA

Delete an ABAP domain from the SAP system. Includes deletion check before actual deletion. Transport request optional for $TMP objects.

Inputs: domain_name (required), transport_request.

DeleteFunctionGroupA

Delete an ABAP function group from the SAP system. Includes deletion check before actual deletion. Transport request optional for $TMP objects.

Inputs: function_group_name (required), transport_request.

DeleteFunctionModuleB

Delete an ABAP function module from the SAP system. Includes deletion check before actual deletion. Transport request optional for $TMP objects.

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

DeleteInterfaceA

Delete an ABAP interface from the SAP system. Includes deletion check before actual deletion. Transport request optional for $TMP objects.

Inputs: interface_name (required), transport_request.

DeleteLocalDefinitionsA

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

Inputs: class_name (required), 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 are supported in older ABAP versions but not in newer ones.

Inputs: class_name (required), transport_request, activate_on_delete.

DeleteLocalTestClassA

Delete a local test class from an ABAP class by clearing the testclasses include. Manages lock, update, unlock, and optional activation of parent class.

Inputs: class_name (required), 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.

Inputs: class_name (required), transport_request, activate_on_delete.

DeleteMetadataExtensionA

Delete an ABAP metadata extension from the SAP system. Includes deletion check before actual deletion. Transport request optional for $TMP objects.

Inputs: metadata_extension_name (required), transport_request.

DeleteServiceBindingB

Delete ABAP service binding via ADT Business Services endpoint.

Inputs: service_binding_name (required), response_format, transport_request.

DeleteServiceDefinitionA

Delete an ABAP service definition from the SAP system. Includes deletion check before actual deletion. Transport request optional for $TMP objects.

Inputs: service_definition_name (required), transport_request.

DeleteStructureA

Delete an ABAP structure from the SAP system. Includes deletion check before actual deletion. Transport request optional for $TMP objects.

Inputs: structure_name (required), transport_request.

DeleteTableA

Delete an ABAP table from the SAP system. Includes deletion check before actual deletion. Transport request optional for $TMP objects.

Inputs: table_name (required), transport_request.

DeleteUnitTestB

Delete an ABAP Unit test run. Note: ADT does not support deleting unit test runs and will return an error.

Inputs: run_id (required).

DeleteViewA

Delete an ABAP view from the SAP system. Includes deletion check before actual deletion. Transport request optional for $TMP objects.

Inputs: view_name (required), transport_request.

DescribeByListB

[read-only] Batch description for a list of ABAP objects. 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.

Inputs: objects (required).

GetAbapASTA

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

Inputs: code (required), filePath.

GetAbapSemanticAnalysisA

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

Inputs: code (required), filePath.

GetAbapSystemSymbolsC

[read-only] Resolve ABAP symbols from semantic analysis with SAP system information including types, scopes, descriptions, and packages.

Inputs: code (required), filePath.

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.

Inputs: validate_type.

GetBehaviorDefinitionB

Retrieve ABAP behavior definition definition. Supports reading active or inactive version.

Inputs: behavior_definition_name (required), version.

GetBehaviorImplementationC

Retrieve ABAP behavior implementation definition. Supports reading active or inactive version.

Inputs: behavior_implementation_name (required), version.

GetCdsUnitTestB

Retrieve CDS unit test run status and result for a previously started run_id.

Inputs: run_id (required).

GetCdsUnitTestResultC

Retrieve CDS unit test run result for a run_id.

Inputs: run_id (required), format, with_navigation_uris.

GetCdsUnitTestStatusB

Retrieve CDS unit test run status for a run_id.

Inputs: run_id (required), with_long_polling.

GetClassC

Retrieve ABAP class source code. Supports reading active or inactive version.

Inputs: class_name (required), version.

GetDataElementB

Retrieve ABAP data element definition. Supports reading active or inactive version.

Inputs: data_element_name (required), version.

GetDomainB

Retrieve ABAP domain definition. Supports reading active or inactive version.

Inputs: domain_name (required), version.

GetEnhancementImplA

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

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

GetEnhancementsB

[read-only] Retrieve a list of enhancements for a given ABAP object.

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

GetEnhancementSpotA

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

Inputs: enhancement_spot (required).

GetFunctionGroupB

Retrieve ABAP function group definition. Supports reading active or inactive version.

Inputs: function_group_name (required), version.

GetFunctionModuleB

Retrieve ABAP function module definition. Supports reading active or inactive version.

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

GetInactiveObjectsA

[read-only] Get a list of inactive ABAP objects โ€” modified but not yet activated, pending activation. Shows classes, tables, CDS views, and other objects awaiting activation.

Inputs: no named parameters.

GetIncludeA

[read-only] Retrieve source code of a specific ABAP include file.

Inputs: include_name (required).

GetIncludesListA

[read-only] Recursively discover and list ALL include files within an ABAP program or include.

Inputs: object_name (required), object_type (required), timeout, detailed.

GetInterfaceB

Retrieve ABAP interface definition. Supports reading active or inactive version.

Inputs: interface_name (required), version.

GetLocalDefinitionsB

Retrieve local definitions source code from a class (definitions include). Supports reading active or inactive version.

Inputs: class_name (required), version.

GetLocalMacrosA

Retrieve local macros source code from a class (macros include). Supports reading active or inactive version. Note: Macros are supported in older ABAP versions but not in newer ones.

Inputs: class_name (required), version.

GetLocalTestClassB

Retrieve local test class source code from a class. Supports reading active or inactive version.

Inputs: class_name (required), version.

GetLocalTypesA

Retrieve local types source code from a class (implementations include). Supports reading active or inactive version.

Inputs: class_name (required), version.

GetMetadataExtensionC

Retrieve ABAP metadata extension definition. Supports reading active or inactive version.

Inputs: metadata_extension_name (required), version.

GetNodeStructureLowA

[low-level] Fetch node structure from ADT repository. Used for object tree navigation and structure discovery. Can use session_id and session_state from GetSession to maintain the same session.

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

GetObjectInfoA

[read-only] Return ABAP object tree structure for packages (DEVC), classes (CLAS), programs (PROG), function groups (FUGR), and other objects. Shows root, group nodes, and terminal leaves up to maxDepth. Enrich each node with description and package via SearchObject if enrich=true.

Inputs: parent_name (required), parent_type (required), enrich, maxDepth.

GetObjectNodeFromCacheA

[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.

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

GetObjectsByTypeC

[read-only] Retrieves all ABAP objects of a specific type (classes, tables, programs, interfaces, etc.) under a given parent node. Useful for listing all objects of one type within a package or composite object.

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

GetObjectsListA

[read-only] Recursively retrieves all child ABAP repository objects for a given parent โ€” programs (PROG), function groups (FUGR), classes (CLAS), packages (DEVC), and other composite objects โ€” including nested includes and subcomponents.

Inputs: parent_name (required), parent_type (required), parent_tech_name (required), with_short_descriptions.

GetObjectStructureB

[read-only] Retrieve ADT object structure as a compact JSON tree.

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

GetObjectStructureLowA

[low-level] Retrieve ADT object structure as compact JSON tree. Returns XML response with object structure tree. Can use session_id and session_state from GetSession to maintain the same session.

Inputs: object_name (required), object_type (required), session_id, session_state.

GetPackageB

Retrieve ABAP package metadata (description, super-package, etc.). Supports reading active or inactive version.

Inputs: package_name (required), version.

GetPackageContentsA

[read-only] Retrieve objects inside an ABAP package as a flat list. Supports recursive traversal of subpackages.

Inputs: package_name (required), max_depth, include_subpackages, include_descriptions.

GetPackageTreeB

[high-level] Retrieve complete package tree structure including subpackages and objects. Returns hierarchical tree with object names, types, and descriptions.

Inputs: package_name (required), debug, max_depth, include_subpackages, +1 more.

GetServiceBindingB

Retrieve ABAP service binding source/metadata by name via ADT Business Services endpoint.

Inputs: service_binding_name (required), response_format.

GetServiceDefinitionA

Retrieve ABAP service definition definition. Supports reading active or inactive version.

Inputs: service_definition_name (required), version.

GetSessionA

[read-only] Get a new session ID and current session state (cookies, CSRF token) for reuse across multiple ADT operations. Use this to maintain the same session and lock handle across multiple requests.

Inputs: force_new.

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.

Inputs: sql_query (required), row_number, acknowledge_risk.

GetStructureB

Retrieve ABAP structure definition. Supports reading active or inactive version.

Inputs: structure_name (required), version.

GetTableA

Retrieve ABAP table definition. Supports reading active or inactive version.

Inputs: table_name (required), version.

GetTableContentsA

[read-only] Retrieve contents (data preview) of an ABAP database table or CDS view. Returns rows of data like SE16/SE16N.

Inputs: table_name (required), max_rows, acknowledge_risk.

GetTransactionA

[read-only] Retrieve ABAP transaction (t-code) details โ€” program, screen, authorization object, and transaction type (dialog, report, OO).

Inputs: transaction_name (required).

GetTransportB

[read-only] Retrieve ABAP transport request information including metadata, included objects, and status from SAP system.

Inputs: transport_number (required), owner, include_tasks, include_objects.

GetTypeInfoB

[read-only] Retrieve ABAP type information for domains (DOMA), data elements (DTEL), table types, and structures. Returns field definitions, value ranges, fixed values, and DDIC metadata.

Inputs: type_name (required), include_structure_fallback.

GetUnitTestA

Retrieve ABAP Unit test run status and result for a previously started run_id.

Inputs: run_id (required).

GetUnitTestResultB

Retrieve ABAP Unit test run result for a run_id.

Inputs: run_id (required), format, with_navigation_uris.

GetUnitTestStatusB

Retrieve ABAP Unit test run status for a run_id.

Inputs: run_id (required), with_long_polling.

GetViewB

Retrieve ABAP view definition. Supports reading active or inactive version.

Inputs: view_name (required), version.

GetVirtualFoldersLowB

[low-level] Retrieve hierarchical virtual folder contents from ADT information system. Used for browsing ABAP objects by package, group, type, etc.

Inputs: facet_order, preselection, with_versions, object_search_pattern, +1 more.

GetWhereUsedA

[read-only] Find where-used references (cross-references, usages, dependencies) for ABAP objects โ€” classes, interfaces, tables, data elements, programs, function modules, etc. Returns list of all referencing objects with their types and packages.

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

ListServiceBindingTypesA

List available service binding types (for example ODataV2/ODataV4) from ADT Business Services endpoint.

Inputs: response_format.

ListTransportsB

[read-only] List transport requests for the current or specified user. Returns modifiable and/or released workbench and customizing requests.

Inputs: user, modifiable_only.

ReadBehaviorDefinitionA

[read-only] Read ABAP behavior definition source code and metadata (package, responsible, description, etc.).

Inputs: behavior_definition_name (required), version.

ReadBehaviorImplementationB

[read-only] Read ABAP behavior implementation source code and metadata (package, responsible, description, etc.).

Inputs: behavior_implementation_name (required), version.

ReadClassB

[read-only] Read ABAP class source code and metadata (package, responsible, description, etc.).

Inputs: class_name (required), version.

ReadDataElementA

[read-only] Read ABAP data element definition and metadata (package, responsible, description, etc.).

Inputs: data_element_name (required), version.

ReadDomainB

[read-only] Read ABAP domain definition and metadata (package, responsible, description, etc.).

Inputs: domain_name (required), version.

ReadFunctionGroupB

[read-only] Read ABAP function group source code and metadata (package, responsible, description, etc.).

Inputs: function_group_name (required), version.

ReadFunctionModuleB

[read-only] Read ABAP function module source code and metadata (package, responsible, description, etc.).

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

ReadInterfaceB

[read-only] Read ABAP interface source code and metadata (package, responsible, description, etc.).

Inputs: interface_name (required), version.

ReadMetadataExtensionB

[read-only] Read ABAP metadata extension (DDLX) source code and metadata (package, responsible, description, etc.).

Inputs: metadata_extension_name (required), version.

ReadPackageA

[read-only] Read ABAP package definition and metadata (super-package, responsible, description, etc.).

Inputs: package_name (required), version.

ReadServiceBindingA

[read-only] Read ABAP service binding source/payload and metadata (package, responsible, description, etc.).

Inputs: service_binding_name (required).

ReadServiceDefinitionA

[read-only] Read ABAP service definition source code and metadata (package, responsible, description, etc.).

Inputs: service_definition_name (required), version.

ReadStructureC

[read-only] Read ABAP structure definition and metadata (package, responsible, description, etc.).

Inputs: structure_name (required), version.

ReadTableA

[read-only] Read ABAP table definition and metadata (package, responsible, description, etc.).

Inputs: table_name (required), version.

ReadViewB

[read-only] Read ABAP view (CDS view) source code and metadata (package, responsible, description, etc.).

Inputs: view_name (required), version.

ReloadProfileA

[system] Reload the active SAP profile from .sc4sap/active-profile.txt and reset the cached connection. Called by the sc4sap plugin after switching profiles. Returns the newly active alias, host, tier, and readonly status.

Inputs: no named parameters.

RuntimeAnalyzeDumpA

[runtime] Read runtime dump by ID and return compact analysis summary with key fields.

Inputs: dump_id (required), view, include_payload.

RuntimeAnalyzeProfilerTraceB

[runtime] Read profiler trace view and return compact analysis summary (totals + top entries).

Inputs: trace_id_or_uri (required), top, view, with_system_events.

RuntimeCreateProfilerTraceParametersC

[runtime] Create ABAP profiler trace parameters and return profilerId (URI) for profiled execution.

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

RuntimeGetDumpByIdA

[runtime] Read a specific ABAP runtime dump by dump ID. Returns parsed JSON payload. Use response_mode="both" or "summary" to also include a compact key-facts summary (title, exception, program, line, user, date...).

Inputs: dump_id (required), view, response_mode.

RuntimeGetProfilerTraceDataA

[runtime] Read profiler trace data by trace id/uri: hitlist, statements, or db accesses. Returns parsed JSON payload.

Inputs: view (required), trace_id_or_uri (required), id, with_details, +2 more.

RuntimeListDumpsA

[runtime] List ABAP runtime dumps with optional user filter and paging. Returns parsed JSON payload.

Inputs: top, skip, user, orderby, +1 more.

RuntimeListFeedsA

[runtime] List available ADT runtime feeds or read a specific feed type. Feed types: dumps, system_messages, gateway_errors. Without feed_type returns available feed descriptors.

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

RuntimeListProfilerTraceFilesB

[runtime] List ABAP profiler trace files available in ADT runtime. Returns parsed JSON payload.

Inputs: no named parameters.

RuntimeListSystemMessagesB

[runtime] List SM02 system messages. Returns structured entries with id, title, text, severity, validity period, and author.

Inputs: to, from, user, max_results.

RuntimeRunClassWithProfilingC

[runtime] Execute ABAP class with profiler enabled and return created profilerId + traceId.

Inputs: class_name (required), aggregate, sql_trace, amdp_trace, +11 more.

RunUnitTestC

Start an ABAP Unit test run for provided class test definitions. Returns run_id for status/result queries.

Inputs: tests (required), scope, title, context, +2 more.

SearchObjectA

[read-only] Find, search, locate, or check if an ABAP repository object exists by name or wildcard pattern (e.g. 'ZOK*'). Use this tool to answer questions like 'is there a program named...', 'find all objects starting with...', 'does this class exist?', 'list objects matching...'. Supports all repository object types โ€” optionally filter by type (PROG, CLAS, INTF, DEVC, TABL, DDLS, DTEL, FUGR, SRVD, SRVB, BDEF, DDLX, etc.).

Inputs: object_name (required), maxResults, object_type.

UpdateBehaviorDefinitionB

Update source code of an ABAP Behavior Definition (BDEF). Modifies RAP business object behavior: CRUD operations, validations, determinations, actions, and draft handling.

Inputs: name (required), source_code (required), activate, lock_handle, +1 more.

UpdateBehaviorImplementationA

Update source code of an existing ABAP behavior implementation class. Updates both main source (with FOR BEHAVIOR OF clause) and implementations include. Uses stateful session with proper lock/unlock mechanism.

Inputs: class_name (required), behavior_definition (required), implementation_code (required), activate, +1 more.

UpdateCdsUnitTestC

Update a CDS unit test class local test class source code.

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

UpdateClassA

Update source code of an existing ABAP class. Locks, checks, updates, unlocks, and optionally activates.

Inputs: class_name (required), source_code (required), activate, transport_request.

UpdateDataElementA

Update an existing ABAP data element in SAP system.

Workflow:

  1. Gets domain info (if type_kind is 'domain') to extract dataType/length/decimals

  2. Acquires lock on the data element

  3. Updates data element with provided parameters (complete replacement)

  4. Unlocks data element

  5. Optionally activates data element (default: true)

  6. Returns updated data element details

Supported type_kind values:

  • domain: Based on ABAP domain (requires type_name = domain name)

  • predefinedAbapType: Direct ABAP type (requires data_type, length, decimals)

  • refToPredefinedAbapType: Reference to ABAP type (requires data_type, length, decimals)

  • refToDictionaryType: Reference to another data element (requires type_name = data element name)

  • refToClifType: Reference to class (requires type_name = class name)

Note: All provided parameters completely replace existing values. Field labels are truncated to max lengths (10/20/40/55).

Inputs: package_name (required), data_element_name (required), length, activate, +13 more.

UpdateDomainA

Update an existing ABAP domain in SAP system.

Workflow:

  1. Acquires lock on the domain

  2. Updates domain with provided parameters (complete replacement)

  3. Performs syntax check

  4. Unlocks domain

  5. Optionally activates domain (default: true)

  6. Returns updated domain details

Note: All provided parameters completely replace existing values. Use GetDomain first to see current values if needed.

Inputs: domain_name (required), package_name (required), length, activate, +9 more.

UpdateFunctionGroupA

Update metadata (description) of an existing ABAP function group. Function groups are containers for function modules and don't have source code to update directly. Uses stateful session with proper lock/unlock mechanism.

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

UpdateFunctionModuleA

Update source code of an existing ABAP function module. Locks the function module, uploads new source code, and unlocks. Optionally activates after update. Use this to modify existing function modules without re-creating metadata.

Inputs: source_code (required), function_group_name (required), function_module_name (required), activate, +1 more.

UpdateInterfaceA

Update source code of an existing ABAP interface. Uses stateful session with proper lock/unlock mechanism. Lock handle and transport number are passed in URL parameters.

Inputs: source_code (required), interface_name (required), activate, transport_request.

UpdateLocalDefinitionsB

Update local definitions in an ABAP class (definitions include). Manages lock, check, update, unlock, and optional activation.

Inputs: class_name (required), definitions_code (required), transport_request, activate_on_update.

UpdateLocalMacrosB

Update local macros in an ABAP class (macros include). Manages lock, check, update, unlock, and optional activation. Note: Macros are supported in older ABAP versions but not in newer ones.

Inputs: class_name (required), macros_code (required), transport_request, activate_on_update.

UpdateLocalTestClassA

Update a local test class in an ABAP class. Manages lock, check, update, unlock, and optional activation of parent class.

Inputs: class_name (required), test_class_code (required), transport_request, activate_on_update.

UpdateLocalTypesB

Update local types in an ABAP class (implementations include). Manages lock, check, update, unlock, and optional activation.

Inputs: class_name (required), local_types_code (required), transport_request, activate_on_update.

UpdateMetadataExtensionA

Update source code of an ABAP Metadata Extension (DDLX). Modifies Fiori UI annotations, field labels, search help, and list/object page layout for CDS views.

Inputs: name (required), source_code (required), activate, lock_handle, +1 more.

UpdateServiceBindingC

Update publication state for ABAP service binding via AdtServiceBinding workflow.

Inputs: service_name (required), service_binding_name (required), desired_publication_state (required), service_type, +2 more.

UpdateServiceDefinitionB

Update source code of an existing ABAP service definition. Uses stateful session with proper lock/unlock mechanism.

Inputs: source_code (required), service_definition_name (required), activate, transport_request.

UpdateStructureA

Update DDL source code of an existing ABAP structure. Locks the structure, uploads new DDL source, and unlocks. Optionally activates after update. Use this to modify existing structures without re-creating metadata.

Inputs: ddl_code (required), structure_name (required), activate, transport_request.

UpdateTableA

Update DDL source code of an existing ABAP table. Locks the table, uploads new DDL source, and unlocks. Optionally activates after update. Use this to modify existing tables without re-creating metadata.

Inputs: ddl_code (required), table_name (required), activate, transport_request.

UpdateUnitTestA

Update an ABAP Unit test run. Note: ADT does not support updating unit test runs and will return an error.

Inputs: run_id (required).

UpdateViewA

Update DDL source code of an existing CDS View or Classic View. Locks the view, checks new code, uploads new DDL source, unlocks, and optionally activates.

Inputs: view_name (required), ddl_source (required), activate, transport_request.

ValidateServiceBindingB

Validate service binding parameters (name, service definition, package, version) via ADT validation endpoint.

Inputs: service_binding_name (required), service_definition_name (required), description, package_name, +1 more.

Tool Schema Changelog

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

Loading tool schema changelogโ€ฆ

    TDQS

    B3/5.0

    Scored across 143 tools

    Disambiguation2/5

    Many tools have overlapping purposes, especially the GetX and ReadX pairs (e.g., GetClass vs. ReadClass) which both retrieve source code with slight metadata differences. Additionally, several listing tools (GetObjectsList, GetPackageContents, GetObjectsByType) serve similar purposes, making it difficult for an agent to select the correct tool.

    Naming Consistency3/5

    Tools generally follow a VerbObject PascalCase pattern (e.g., CreateClass, DeleteTable). However, inconsistency arises with the use of both 'Get' and 'Read' for retrieval operations, and 'List' vs 'Get' for list operations (e.g., ListTransports vs GetObjectsList). This breaks a uniform naming convention.

    Tool Count1/5

    With 143 tools, the server is excessively large for an MCP server. While the domain is broad, this many tools leads to cognitive overload and difficulty in tool selection, far exceeding typical curated sets (3-15 tools) and even heavy sets (25+). Many tools are granular variants that could be consolidated.

    Completeness5/5

    The tool set covers the full lifecycle of ABAP development objects: create, read, update, delete for classes, interfaces, tables, structures, views, data elements, domains, function groups, modules, behavior definitions, service artifacts, and more. It also includes runtime analysis, transport management, search, and unit testing, leaving no obvious gaps.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      B
      quality
      Not graded
      maintenance
      An MCP server that enables AI assistants to interact with SAP systems via the ABAP Development Tools (ADT) REST API. It allows users to read ABAP source code, inspect DDIC objects, and execute SQL queries directly.
      66
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      A standalone MCP server for SAP ABAP development and customizing that connects directly to your SAP system via ADT REST API, enabling AI assistants to search, read, write, activate, transport, debug, and run quality checks on ABAP code, as well as manage customizing/IMG configurations with governed transport recording.
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that connects AI assistants to SAP systems via the ADT REST API, enabling read, write, syntax-check, and activation of ABAP code directly from the chat.
      3
      MIT