SAP ADT MCP Server
Enables interaction with SAP systems via the ABAP Development Tools (ADT) REST API, allowing AI assistants to read ABAP source code, inspect Data Dictionary (DDIC) objects, fetch CDS view definitions, and execute ABAP SQL queries.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SAP ADT MCP ServerShow me the source code for ABAP class CL_SALV_TABLE"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SAP ADT MCP Server
MCP server for SAP ABAP Development Tools (ADT) REST API. Enables AI assistants to read, create, and modify ABAP source code, inspect DDIC objects, execute SQL queries, manage transports, analyze traces, fetch short dumps, control the debugger, and more — across multiple SAP systems from a single server instance.
Tools (66)
Source Code & DDIC (11)
Tool | Description | Input |
| Fetch ABAP program/report source code |
|
| Fetch ABAP class source code |
|
| Fetch function module source code |
|
| Fetch function group source code |
|
| Fetch ABAP include source code |
|
| Fetch ABAP interface source code |
|
| Fetch CDS view DDL source |
|
| Fetch DDIC structure definition |
|
| Fetch ABAP database table definition |
|
| Fetch DDIC data element definition |
|
| Fetch DDIC domain definition |
|
Repository & Search (3)
Tool | Description | Input |
| Search ABAP objects by name pattern (wildcards supported) |
|
| Fetch transaction details (package, app component) |
|
| Fetch package contents (objects with types/descriptions) |
|
Create, Change & Execute (12)
Tool | Description | Input |
| Create, write source, and activate a program |
|
| Modify an existing program (lock, write, activate, unlock) |
|
| Create, write source, and activate a class |
|
| Modify an existing class (lock, write, activate, unlock) |
|
| Create, write source, and activate an interface |
|
| Modify an existing interface (lock, write, activate, unlock) |
|
| Create, write source, and activate a CDS view |
|
| Modify an existing CDS view (lock, write, activate, unlock) |
|
| Execute a program and return WRITE output |
|
| Execute ABAP SQL query and return results as table |
|
| Fetch ST22 short dumps for a date |
|
| Fetch CSRF token and session cookie | (none) |
Transport Management (7)
Tool | Description | Input |
| List all modifiable transports for current user | (none) |
| Get full transport details (tasks, objects, status) |
|
| Check transport requirements for an object |
|
| Create a new transport request |
|
| Release a transport for import |
|
| Delete a transport request |
|
| List SAP system users | (none) |
SAT Trace (7)
Tool | Description | Input |
| List ABAP runtime traces (SAT/SE30) |
|
| Get performance hit list for a trace |
|
| Get database access statistics for a trace |
|
| Get statement-level call tree for a trace |
|
| Delete a runtime trace |
|
| Create a trace collection configuration |
|
| Delete a trace configuration |
|
ST05 Performance Trace (3)
Tool | Description | Input |
| Enable SQL/buffer/RFC/auth trace for a user |
|
| Disable all active performance traces | (none) |
| Get active trace types, user filter, and server info | (none) |
Cross Trace (5)
Tool | Description | Input |
| Enable cross trace for RAP, OData, SADL, BAdI, Gateway |
|
| Disable a cross trace activation |
|
| List active cross trace activations | (none) |
| List captured cross trace results |
|
| Get detailed records for a cross trace |
|
Service Binding (3)
Tool | Description | Input |
| Get OData service binding details |
|
| Publish an OData service binding |
|
| Unpublish an OData service binding |
|
Debugger (14)
Tool | Description | Input |
| Start debugger listener (opens stateful session) |
|
| Stop listener and close debug session |
|
| Check if a debugger session is attached |
|
| Set a breakpoint at a source location |
|
| Remove a breakpoint |
|
| Attach to a running ABAP debug session |
|
| Get the current call stack | (none) |
| Get variable values |
|
| Get child/nested variable values |
|
| Set a variable value during debugging |
|
| Step into/over/return/continue/terminate |
|
| Navigate to a stack frame |
|
| Set a watchpoint on a variable (pause on value change) |
|
| List all active watchpoints | (none) |
Multi-System (1)
Tool | Description | Input |
| List all configured SAP systems with IDs, hostnames, and clients | (none) |
All tools accept an optional system_id parameter to target a specific SAP system. Omit to use the default (first configured) system.
Prerequisites
Node.js v18 or later
SAP user with S_ADT_RES authorization for ADT resource access
ICF services activated under
/sap/bc/adt/(via transactionSICF)Role SAP_BC_DWB_ABAPDEVELOPER or equivalent
Installation
git clone https://github.com/ethanhan2014/sap-adt-mcp.git
cd sap-adt-mcp
npm install
npm run buildConfiguration
Option 1: Single system via .env
cp .env.example .envEdit .env with your SAP system connection details:
SAP_HOSTNAME=your-sap-host.example.com
SAP_SYSNR=50
SAP_USERNAME=YOUR_USER
SAP_PASSWORD=YOUR_PASSWORD
SAP_CLIENT=001
SAP_LANGUAGE=ENVariable | Description | Example |
| SAP system hostname |
|
| System number (port = |
|
| SAP user |
|
| SAP password |
|
| SAP client |
|
| Logon language (default: |
|
Option 2: Multiple systems via systems.json
Create systems.json in the project root (see systems.json.example):
[
{
"id": "DEV",
"hostname": "dev-system.sap.com",
"sysnr": "50",
"client": "001",
"username": "YOUR_USER",
"password": "YOUR_PASSWORD",
"language": "EN"
},
{
"id": "QA",
"hostname": "qa-system.sap.com",
"sysnr": "00",
"client": "001",
"authType": "certificate",
"certThumbprint": "YOUR_CERT_THUMBPRINT",
"language": "EN"
}
]When systems.json is present, .env is ignored for system configuration. The first system is the default. Use system_id on any tool call to target a specific system.
Supported auth types:
basic (default) — username/password
certificate — X.509 client certificate via
certThumbprint
Usage
Claude Code
Add to ~/.claude.json:
{
"mcpServers": {
"sap-adt": {
"command": "node",
"args": ["/path/to/sap-adt-mcp/dist/index.js"]
}
}
}Cline (VS Code)
Add to Cline MCP settings (cline_mcp_settings.json):
{
"mcpServers": {
"sap-adt": {
"command": "node",
"args": ["/path/to/sap-adt-mcp/dist/index.js"],
"disabled": false,
"autoApprove": []
}
}
}Standalone
npm startDevelopment (with MCP Inspector)
npx @modelcontextprotocol/inspector node dist/index.jsTech Stack
TypeScript + Node.js
MCP SDK (
@modelcontextprotocol/sdk)Axios for HTTP
SAP ADT REST API over HTTPS with Basic Auth or X.509 Certificate
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Appeared in Searches
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ethanhan2014/sap-adt-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server