The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the MCP Abap Adt listing page.
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:
Why teams use it:
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).
Install the server and configure your client using the configurator:
Full configurator usage (separate repo): CLIENT_INSTALLERS.md.
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.
Destination-based auth is the default. Drop service keys into the standard platform folder and use the filename as your destination:
Standard service key paths:
~/.config/mcp-abap-adt/service-keys/<destination>.json%USERPROFILE%\\Documents\\mcp-abap-adt\\service-keys\\<destination>.jsonFor full details (paths, .env, direct headers), see Authentication & Destinations.
The project provides two main usage patterns:
Run as a standalone MCP server with stdio, HTTP, or SSE transport:
Embed MCP server into existing applications (e.g., SAP CAP/CDS, Express):
See Handlers Management → EmbeddableMcpServer dedup strategies for how readonly tools are deduped against high/low/compact, how to opt out with NoDedupStrategy, and how to plug a custom IReadOnlyDedupStrategy for role-based rules.
mcp-conf from @mcp-abap-adt/configurator (repo: mcp-abap-adt-conf, docs: CLIENT_INSTALLERS.md)Key examples of high-value workflows and tools:
GetWhereUsed, DescribeByList, GetObjectStructure, GetObjectInfo, SearchObject, GetPackageTree, GetPackageContentsGetAbapAST, GetAbapSemanticAnalysis, GetIncludesListCreateBehaviorDefinition, UpdateBehaviorDefinition, CreateBehaviorImplementation, UpdateBehaviorImplementation, CreateServiceDefinition, UpdateServiceDefinition, CreateMetadataExtension, UpdateMetadataExtensionCreateView, UpdateView, GetView, DeleteViewCreateClass, UpdateClass, GetClass, DeleteClass, CreateInterface, UpdateInterface, GetInterface, DeleteInterfaceCreateFunctionGroup, UpdateFunctionGroup, GetFunctionGroup, DeleteFunctionGroup, CreateFunctionModule, UpdateFunctionModule, GetFunctionModule, DeleteFunctionModuleCreateTransport, GetTransport, ActivateObjectPublished in the official MCP Registry and listed on Glama.ai.
GetDomain, CreateDomain, UpdateDomain - Create, retrieve, and update ABAP domainsGetDataElement, CreateDataElement, UpdateDataElement - Create, retrieve, and update ABAP data elementsGetTable, CreateTable, GetTableContents - Create and retrieve ABAP database tables with data previewGetStructure, CreateStructure - Create and retrieve ABAP structuresGetView, CreateView, UpdateView - Create and manage CDS Views and Classic ViewsGetClass, CreateClass, UpdateClass - Create, retrieve, and update ABAP classesGetProgram, CreateProgram, UpdateProgram - Create, retrieve, and update ABAP programsGetBehaviorDefinition, CreateBehaviorDefinition, UpdateBehaviorDefinition - Create and manage ABAP Behavior Definitions with support for Managed, Unmanaged, Abstract, and Projection typesCreateMetadataExtension, UpdateMetadataExtension - Create and manage ABAP Metadata ExtensionsActivateObject - Universal activation for any ABAP objectCreateTransport, GetTransport - Create and retrieve transport requestsGetEnhancements, GetEnhancementImpl, GetEnhancementSpot - Enhancement discovery and analysisGetIncludesList - Recursive include discoveryGetInactiveObjects - Monitor inactive objects waiting for activationRuntimeCreateProfilerTraceParameters, RuntimeListProfilerTraceFiles, RuntimeGetProfilerTraceData, RuntimeGetDumpById - Profiling and dump analysis with JSON payloadsRuntimeListFeeds, RuntimeListSystemMessages, RuntimeGetGatewayErrorLog - Feed reader (dumps, system messages, gateway errors), SM02 system messages, Gateway error logGetSqlQuery - 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.
@mcp-abap-adt/configurator (repo: mcp-abap-adt-conf) provides the mcp-conf CLI to auto-configure clientsThis project uses two npm packages:
These packages are automatically installed via npm install and are published to npm.
After installing globally with npm install -g, you can run from any directory:
Env resolution:
--env-path=<path|file> (or MCP_ENV_PATH) for explicit .env file.
my.env): resolved from current working directory.--env=<destination> for destination file in standard sessions store:
~/.config/mcp-abap-adt/sessions/<destination>.env%USERPROFILE%\\Documents\\mcp-abap-adt\\sessions\\<destination>.env.env in current working directory.Example .env file:
For JWT authentication (SAP BTP):
For RFC connection:
See RFC Setup Guide for prerequisites (SAP NW RFC SDK).
For client certificate (mTLS) authentication — on-prem HTTP only:
For Kerberos (SPNEGO) authentication — on-prem HTTP only:
Certificate auth notes:
SAP_USERNAME / SAP_PASSWORD required.SAP_CERT_PATH + SAP_CERT_KEY_PATH) or a PKCS#12 file (SAP_CERT_PFX_PATH), not both.SAP_CONNECTION_TYPE=rfc is not supported).Kerberos auth notes:
kinit or a keytab.kerberos npm package must be installed (needs GSSAPI dev libs on Linux / build tools on Windows): npm i kerberos.SAP_USERNAME / SAP_PASSWORD required — identity comes from the TGT..env directly.⚠️ Help wanted — not yet validated on a live system. Certificate and Kerberos auth pass full unit coverage but have not been tested against a real SAP system. If you have on-prem client-certificate or Kerberos/SPNEGO SSO, please try it and open an issue with results — especially whether Kerberos succeeds with a single-leg Negotiate token or your system needs mutual-auth continuation.
Generate .env from Service Key (JWT):
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).
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:
See Client Configuration for complete configuration options.
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.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.console.* in tests are routed through the test logger with a [test] prefix.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.
GNU General Public License v3.0 only (GPL-3.0-only).
Earlier published versions were MIT and stay MIT — a licence change is not
retroactive.
Copyright © 2025–2026 Oleksii Kyslytsia
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3.
It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See LICENSE for the full text.
What this means. Running it, and using it on your own data, carries no conditions at all. Distributing it, or a modified version of it, means passing on the same freedoms — including the source. This is a finished tool rather than a library to build on; the libraries it is built from are LGPL, so they can be linked from programs under any licence.