ABAP development from Claude and other MCP hosts: source, transports, tests, ATC, debugger
Connect Runs on your machine
claude mcp add abap-adt-mcp -e SAP_SYSTEMS_FILE=<SAP_SYSTEMS_FILE> -e SAP_SYSTEMS=<SAP_SYSTEMS> -e SAP_DEFAULT_DESTINATION=<SAP_DEFAULT_DESTINATION> -e SAP_AUTH_TYPE=<SAP_AUTH_TYPE> -e MCP_HTTP_PORT=<MCP_HTTP_PORT> -e MCP_HTTP_HOST=<MCP_HTTP_HOST> -e MCP_HTTP_TOKEN=<MCP_HTTP_TOKEN> -e MCP_HTTP_MAX_SESSIONS=<MCP_HTTP_MAX_SESSIONS> -e MCP_HTTP_MAX_BODY_BYTES=<MCP_HTTP_MAX_BODY_BYTES> -e MCP_HTTP_SESSION_TTL_MINUTES=<MCP_HTTP_SESSION_TTL_MINUTES> -e MCP_HTTP_ALLOWED_ORIGINS=<MCP_HTTP_ALLOWED_ORIGINS> -e MCP_HTTP_ALLOWED_HOSTS=<MCP_HTTP_ALLOWED_HOSTS> -e MCP_EXPORT_ROOT=<MCP_EXPORT_ROOT> -e MCP_AUDIT_FILE=<MCP_AUDIT_FILE> -e MCP_ADT_TRACE_FILE=<MCP_ADT_TRACE_FILE> -e MCP_READ_ONLY=<MCP_READ_ONLY> -e MCP_ALLOW_DATA_PREVIEW=<MCP_ALLOW_DATA_PREVIEW> -e MCP_ALLOW_FREE_SQL=<MCP_ALLOW_FREE_SQL> -e MCP_TOOLSETS=<MCP_TOOLSETS> -e MCP_DISABLED_TOOLSETS=<MCP_DISABLED_TOOLSETS> -e MCP_MAX_RESPONSE_CHARS=<MCP_MAX_RESPONSE_CHARS> -e SAP_ALLOW_REENTRANCE_TICKET=<SAP_ALLOW_REENTRANCE_TICKET> -e SAP_URL=<SAP_URL> -e SAP_USER=<SAP_USER> -e SAP_PASSWORD=<SAP_PASSWORD> -e SAP_CLIENT=<SAP_CLIENT> -e SAP_LANGUAGE=<SAP_LANGUAGE> -e SAP_BROWSER_PATH=<SAP_BROWSER_PATH> -e SAP_BROWSER_PROFILE_DIR=<SAP_BROWSER_PROFILE_DIR> -e SAP_SSO2_COMMAND=<SAP_SSO2_COMMAND> -e SAP_SSO2_ARGS=<SAP_SSO2_ARGS> -e SAP_SSO2_TIMEOUT_MS=<SAP_SSO2_TIMEOUT_MS> -e SAP_TLS_INSECURE=<SAP_TLS_INSECURE> -e SAP_OAUTH_TOKEN_URL=<SAP_OAUTH_TOKEN_URL> -e SAP_OAUTH_CLIENT_ID=<SAP_OAUTH_CLIENT_ID> -e SAP_OAUTH_CLIENT_SECRET=<SAP_OAUTH_CLIENT_SECRET> -e SAP_OAUTH_SCOPE=<SAP_OAUTH_SCOPE> -e MCP_PROFILE_GATE=<MCP_PROFILE_GATE> -e SAP_REQUEST_TIMEOUT_SECONDS=<SAP_REQUEST_TIMEOUT_SECONDS> -e MCP_SOURCE_CACHE_TTL_SECONDS=<MCP_SOURCE_CACHE_TTL_SECONDS> -e MCP_CACHE_DIR=<MCP_CACHE_DIR> -e MCP_API_CLASSIFICATION_FILES=<MCP_API_CLASSIFICATION_FILES> -- npx -y [email protected]
{
"mcpServers": {
"abap-adt-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"SAP_SYSTEMS_FILE": "<SAP_SYSTEMS_FILE>",
"SAP_SYSTEMS": "<SAP_SYSTEMS>",
"SAP_DEFAULT_DESTINATION": "<SAP_DEFAULT_DESTINATION>",
"SAP_AUTH_TYPE": "<SAP_AUTH_TYPE>",
"MCP_HTTP_PORT": "<MCP_HTTP_PORT>",
"MCP_HTTP_HOST": "<MCP_HTTP_HOST>",
"MCP_HTTP_TOKEN": "<MCP_HTTP_TOKEN>",
"MCP_HTTP_MAX_SESSIONS": "<MCP_HTTP_MAX_SESSIONS>",
"MCP_HTTP_MAX_BODY_BYTES": "<MCP_HTTP_MAX_BODY_BYTES>",
"MCP_HTTP_SESSION_TTL_MINUTES": "<MCP_HTTP_SESSION_TTL_MINUTES>",
"MCP_HTTP_ALLOWED_ORIGINS": "<MCP_HTTP_ALLOWED_ORIGINS>",
"MCP_HTTP_ALLOWED_HOSTS": "<MCP_HTTP_ALLOWED_HOSTS>",
"MCP_EXPORT_ROOT": "<MCP_EXPORT_ROOT>",
"MCP_AUDIT_FILE": "<MCP_AUDIT_FILE>",
"MCP_ADT_TRACE_FILE": "<MCP_ADT_TRACE_FILE>",
"MCP_READ_ONLY": "<MCP_READ_ONLY>",
"MCP_ALLOW_DATA_PREVIEW": "<MCP_ALLOW_DATA_PREVIEW>",
"MCP_ALLOW_FREE_SQL": "<MCP_ALLOW_FREE_SQL>",
"MCP_TOOLSETS": "<MCP_TOOLSETS>",
"MCP_DISABLED_TOOLSETS": "<MCP_DISABLED_TOOLSETS>",
"MCP_MAX_RESPONSE_CHARS": "<MCP_MAX_RESPONSE_CHARS>",
"SAP_ALLOW_REENTRANCE_TICKET": "<SAP_ALLOW_REENTRANCE_TICKET>",
"SAP_URL": "<SAP_URL>",
"SAP_USER": "<SAP_USER>",
"SAP_PASSWORD": "<SAP_PASSWORD>",
"SAP_CLIENT": "<SAP_CLIENT>",
"SAP_LANGUAGE": "<SAP_LANGUAGE>",
"SAP_BROWSER_PATH": "<SAP_BROWSER_PATH>",
"SAP_BROWSER_PROFILE_DIR": "<SAP_BROWSER_PROFILE_DIR>",
"SAP_SSO2_COMMAND": "<SAP_SSO2_COMMAND>",
"SAP_SSO2_ARGS": "<SAP_SSO2_ARGS>",
"SAP_SSO2_TIMEOUT_MS": "<SAP_SSO2_TIMEOUT_MS>",
"SAP_TLS_INSECURE": "<SAP_TLS_INSECURE>",
"SAP_OAUTH_TOKEN_URL": "<SAP_OAUTH_TOKEN_URL>",
"SAP_OAUTH_CLIENT_ID": "<SAP_OAUTH_CLIENT_ID>",
"SAP_OAUTH_CLIENT_SECRET": "<SAP_OAUTH_CLIENT_SECRET>",
"SAP_OAUTH_SCOPE": "<SAP_OAUTH_SCOPE>",
"MCP_PROFILE_GATE": "<MCP_PROFILE_GATE>",
"SAP_REQUEST_TIMEOUT_SECONDS": "<SAP_REQUEST_TIMEOUT_SECONDS>",
"MCP_SOURCE_CACHE_TTL_SECONDS": "<MCP_SOURCE_CACHE_TTL_SECONDS>",
"MCP_CACHE_DIR": "<MCP_CACHE_DIR>",
"MCP_API_CLASSIFICATION_FILES": "<MCP_API_CLASSIFICATION_FILES>"
}
}
}
}
{
"mcpServers": {
"abap-adt-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"SAP_SYSTEMS_FILE": "<SAP_SYSTEMS_FILE>",
"SAP_SYSTEMS": "<SAP_SYSTEMS>",
"SAP_DEFAULT_DESTINATION": "<SAP_DEFAULT_DESTINATION>",
"SAP_AUTH_TYPE": "<SAP_AUTH_TYPE>",
"MCP_HTTP_PORT": "<MCP_HTTP_PORT>",
"MCP_HTTP_HOST": "<MCP_HTTP_HOST>",
"MCP_HTTP_TOKEN": "<MCP_HTTP_TOKEN>",
"MCP_HTTP_MAX_SESSIONS": "<MCP_HTTP_MAX_SESSIONS>",
"MCP_HTTP_MAX_BODY_BYTES": "<MCP_HTTP_MAX_BODY_BYTES>",
"MCP_HTTP_SESSION_TTL_MINUTES": "<MCP_HTTP_SESSION_TTL_MINUTES>",
"MCP_HTTP_ALLOWED_ORIGINS": "<MCP_HTTP_ALLOWED_ORIGINS>",
"MCP_HTTP_ALLOWED_HOSTS": "<MCP_HTTP_ALLOWED_HOSTS>",
"MCP_EXPORT_ROOT": "<MCP_EXPORT_ROOT>",
"MCP_AUDIT_FILE": "<MCP_AUDIT_FILE>",
"MCP_ADT_TRACE_FILE": "<MCP_ADT_TRACE_FILE>",
"MCP_READ_ONLY": "<MCP_READ_ONLY>",
"MCP_ALLOW_DATA_PREVIEW": "<MCP_ALLOW_DATA_PREVIEW>",
"MCP_ALLOW_FREE_SQL": "<MCP_ALLOW_FREE_SQL>",
"MCP_TOOLSETS": "<MCP_TOOLSETS>",
"MCP_DISABLED_TOOLSETS": "<MCP_DISABLED_TOOLSETS>",
"MCP_MAX_RESPONSE_CHARS": "<MCP_MAX_RESPONSE_CHARS>",
"SAP_ALLOW_REENTRANCE_TICKET": "<SAP_ALLOW_REENTRANCE_TICKET>",
"SAP_URL": "<SAP_URL>",
"SAP_USER": "<SAP_USER>",
"SAP_PASSWORD": "<SAP_PASSWORD>",
"SAP_CLIENT": "<SAP_CLIENT>",
"SAP_LANGUAGE": "<SAP_LANGUAGE>",
"SAP_BROWSER_PATH": "<SAP_BROWSER_PATH>",
"SAP_BROWSER_PROFILE_DIR": "<SAP_BROWSER_PROFILE_DIR>",
"SAP_SSO2_COMMAND": "<SAP_SSO2_COMMAND>",
"SAP_SSO2_ARGS": "<SAP_SSO2_ARGS>",
"SAP_SSO2_TIMEOUT_MS": "<SAP_SSO2_TIMEOUT_MS>",
"SAP_TLS_INSECURE": "<SAP_TLS_INSECURE>",
"SAP_OAUTH_TOKEN_URL": "<SAP_OAUTH_TOKEN_URL>",
"SAP_OAUTH_CLIENT_ID": "<SAP_OAUTH_CLIENT_ID>",
"SAP_OAUTH_CLIENT_SECRET": "<SAP_OAUTH_CLIENT_SECRET>",
"SAP_OAUTH_SCOPE": "<SAP_OAUTH_SCOPE>",
"MCP_PROFILE_GATE": "<MCP_PROFILE_GATE>",
"SAP_REQUEST_TIMEOUT_SECONDS": "<SAP_REQUEST_TIMEOUT_SECONDS>",
"MCP_SOURCE_CACHE_TTL_SECONDS": "<MCP_SOURCE_CACHE_TTL_SECONDS>",
"MCP_CACHE_DIR": "<MCP_CACHE_DIR>",
"MCP_API_CLASSIFICATION_FILES": "<MCP_API_CLASSIFICATION_FILES>"
}
}
}
}
{
"servers": {
"abap-adt-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"SAP_SYSTEMS_FILE": "<SAP_SYSTEMS_FILE>",
"SAP_SYSTEMS": "<SAP_SYSTEMS>",
"SAP_DEFAULT_DESTINATION": "<SAP_DEFAULT_DESTINATION>",
"SAP_AUTH_TYPE": "<SAP_AUTH_TYPE>",
"MCP_HTTP_PORT": "<MCP_HTTP_PORT>",
"MCP_HTTP_HOST": "<MCP_HTTP_HOST>",
"MCP_HTTP_TOKEN": "<MCP_HTTP_TOKEN>",
"MCP_HTTP_MAX_SESSIONS": "<MCP_HTTP_MAX_SESSIONS>",
"MCP_HTTP_MAX_BODY_BYTES": "<MCP_HTTP_MAX_BODY_BYTES>",
"MCP_HTTP_SESSION_TTL_MINUTES": "<MCP_HTTP_SESSION_TTL_MINUTES>",
"MCP_HTTP_ALLOWED_ORIGINS": "<MCP_HTTP_ALLOWED_ORIGINS>",
"MCP_HTTP_ALLOWED_HOSTS": "<MCP_HTTP_ALLOWED_HOSTS>",
"MCP_EXPORT_ROOT": "<MCP_EXPORT_ROOT>",
"MCP_AUDIT_FILE": "<MCP_AUDIT_FILE>",
"MCP_ADT_TRACE_FILE": "<MCP_ADT_TRACE_FILE>",
"MCP_READ_ONLY": "<MCP_READ_ONLY>",
"MCP_ALLOW_DATA_PREVIEW": "<MCP_ALLOW_DATA_PREVIEW>",
"MCP_ALLOW_FREE_SQL": "<MCP_ALLOW_FREE_SQL>",
"MCP_TOOLSETS": "<MCP_TOOLSETS>",
"MCP_DISABLED_TOOLSETS": "<MCP_DISABLED_TOOLSETS>",
"MCP_MAX_RESPONSE_CHARS": "<MCP_MAX_RESPONSE_CHARS>",
"SAP_ALLOW_REENTRANCE_TICKET": "<SAP_ALLOW_REENTRANCE_TICKET>",
"SAP_URL": "<SAP_URL>",
"SAP_USER": "<SAP_USER>",
"SAP_PASSWORD": "<SAP_PASSWORD>",
"SAP_CLIENT": "<SAP_CLIENT>",
"SAP_LANGUAGE": "<SAP_LANGUAGE>",
"SAP_BROWSER_PATH": "<SAP_BROWSER_PATH>",
"SAP_BROWSER_PROFILE_DIR": "<SAP_BROWSER_PROFILE_DIR>",
"SAP_SSO2_COMMAND": "<SAP_SSO2_COMMAND>",
"SAP_SSO2_ARGS": "<SAP_SSO2_ARGS>",
"SAP_SSO2_TIMEOUT_MS": "<SAP_SSO2_TIMEOUT_MS>",
"SAP_TLS_INSECURE": "<SAP_TLS_INSECURE>",
"SAP_OAUTH_TOKEN_URL": "<SAP_OAUTH_TOKEN_URL>",
"SAP_OAUTH_CLIENT_ID": "<SAP_OAUTH_CLIENT_ID>",
"SAP_OAUTH_CLIENT_SECRET": "<SAP_OAUTH_CLIENT_SECRET>",
"SAP_OAUTH_SCOPE": "<SAP_OAUTH_SCOPE>",
"MCP_PROFILE_GATE": "<MCP_PROFILE_GATE>",
"SAP_REQUEST_TIMEOUT_SECONDS": "<SAP_REQUEST_TIMEOUT_SECONDS>",
"MCP_SOURCE_CACHE_TTL_SECONDS": "<MCP_SOURCE_CACHE_TTL_SECONDS>",
"MCP_CACHE_DIR": "<MCP_CACHE_DIR>",
"MCP_API_CLASSIFICATION_FILES": "<MCP_API_CLASSIFICATION_FILES>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
SAP_SYSTEMS_FILEOptional | Path to a JSON file mapping destination names to system configs (url, client, authType basic/sso/sso2/oauth, credentials). Recommended; keep the file mode 0600. See systems.example.json |
SAP_SYSTEMSOptional, secret | Inline JSON map of destinations (same shape as SAP_SYSTEMS_FILE). Contains credentials — prefer SAP_SYSTEMS_FILE |
SAP_DEFAULT_DESTINATIONOptional | Destination name used when a tool call omits `destination` (alternatively mark an entry with "default": true) |
SAP_AUTH_TYPEOptional | Default auth type for entries that don't specify one: sso (default), sso2, basic, or oauth |
MCP_HTTP_PORTOptional | When set (1024-65535), serve Streamable HTTP on http://127.0.0.1:<port>/mcp with bearer-token auth instead of stdio |
MCP_HTTP_HOSTOptional | Bind address for the HTTP transport (default 127.0.0.1). Set 0.0.0.0 only inside containers that publish the port |
MCP_HTTP_TOKENOptional, secret | Bearer token for the HTTP transport; auto-generated and written to ~/.abap-adt-mcp/http-token when unset |
MCP_HTTP_MAX_SESSIONSOptional | Maximum concurrent MCP sessions on the HTTP transport (default 16); further initialize requests get 503 |
MCP_HTTP_MAX_BODY_BYTESOptional | Largest request body the HTTP transport accepts, in bytes (default 4194304); larger bodies are refused with HTTP 413 |
MCP_HTTP_SESSION_TTL_MINUTESOptional | Idle minutes after which an HTTP session (and its SAP sessions/locks) is closed (default 30) |
MCP_HTTP_ALLOWED_ORIGINSOptional | Comma-separated Origin values allowed on the HTTP transport (loopback origins always allowed when bound to loopback; * allows any) |
MCP_HTTP_ALLOWED_HOSTSOptional | Comma-separated Host header values allowed (DNS-rebinding protection; loopback hosts always allowed when bound to loopback) |
MCP_EXPORT_ROOTOptional | When set, exportPackageSources may only write inside this directory |
MCP_AUDIT_FILEOptional | Path of a JSONL audit trail: one record per tool call (tool, destination, duration, outcome ok/error/denied/unavailable, policy gate, redacted argument summary) |
MCP_ADT_TRACE_FILEOptional | Diagnostics: path of a JSONL trace with one line per ADT request (method, URI, status, headers). Cookie, Set-Cookie, Authorization and CSRF values are reduced to name and length; no response body is kept, error lines carry the first 300 characters of the redacted error text. Off when unset. |
MCP_READ_ONLYOptional | Set to 1 to make every destination read-only (server-side; only read-only annotated tools plus login/logout run). Per-destination policies live in systems.json |
MCP_ALLOW_DATA_PREVIEWOptional | Set to 1 to let tableContents read table and CDS rows on every destination that does not state policy.allowDataPreview itself (reading table data is off by default) |
MCP_ALLOW_FREE_SQLOptional | Set to 1 to allow runQuery and tableContents with sqlQuery on every destination that does not state policy.allowFreeSql itself (free SQL is off by default; implies table data) |
MCP_TOOLSETSOptional | Toolsets to publish: comma list (core,source,objects,transports,analysis,tests,atc,data,discovery,runtime,refactoring,rap,services,git,debugger,traces) or a preset: all (default) or focused |
MCP_DISABLED_TOOLSETSOptional | Toolsets to hide, comma list (core cannot be disabled) |
MCP_MAX_RESPONSE_CHARSOptional | Character budget for a single tool response before results are paged/truncated (default 40000, minimum 5000). Raise it if your MCP host accepts larger tool outputs |
SAP_ALLOW_REENTRANCE_TICKETOptional | Set to 1 to enable the reentranceTicket tool (disabled by default: it returns a live SAP logon credential into the conversation) |
SAP_URLOptional | Legacy single-system mode: base URL of the SAP system, e.g. https://host:44300 |
SAP_USEROptional | Legacy single-system mode: SAP username |
SAP_PASSWORDOptional, secret | Legacy single-system mode: SAP password |
SAP_CLIENTOptional | Legacy single-system mode: SAP client number, e.g. 100 |
SAP_LANGUAGEOptional | Legacy single-system mode: logon language, e.g. EN |
SAP_BROWSER_PATHOptional | SSO destinations: path to a Chromium/Chrome/Edge binary for the browser login (auto-detected when unset) |
SAP_BROWSER_PROFILE_DIROptional | SSO destinations: directory of the persistent browser profile that keeps the identity-provider session (default ~/.abap-adt-mcp/sso/<host>) |
SAP_SSO2_COMMANDOptional | Legacy single-system sso2 mode: absolute path to the trusted local ticket provider |
SAP_SSO2_ARGSOptional | Legacy single-system sso2 mode: JSON array of provider arguments (never put a ticket here) |
SAP_SSO2_TIMEOUT_MSOptional | Legacy single-system sso2 mode: provider timeout in milliseconds (default 30000; range 1000-300000) |
SAP_TLS_INSECUREOptional | Legacy single-system mode: set to 1 to skip TLS certificate verification for that system only (sandboxes with self-signed certificates) |
SAP_OAUTH_TOKEN_URLOptional | Legacy single-system mode with SAP_AUTH_TYPE=oauth: OAuth2 token endpoint (client_credentials) |
SAP_OAUTH_CLIENT_IDOptional | Legacy single-system mode with SAP_AUTH_TYPE=oauth: OAuth2 client id |
SAP_OAUTH_CLIENT_SECRETOptional, secret | Legacy single-system mode with SAP_AUTH_TYPE=oauth: OAuth2 client secret |
SAP_OAUTH_SCOPEOptional | Legacy single-system mode with SAP_AUTH_TYPE=oauth: optional OAuth2 scope |
MCP_PROFILE_GATEOptional | Platform gate for toolsets the destination does not expose (debugger, traces, abapGit, ...): enforce (default, refuse before calling SAP), warn (log only) or off |
SAP_REQUEST_TIMEOUT_SECONDSOptional | Seconds an ADT request may receive nothing before it fails as a network error, so a connection that died while the machine slept cannot hang every call (default 600; 0 waits forever) |
MCP_SOURCE_CACHE_TTL_SECONDSOptional | Lifetime of the per-session source cache used by grepPackage, cdsViewInfo and syntaxCheckCode (default 300; 0 keeps entries until logout) |
MCP_CACHE_DIROptional | Directory for the cached SAP cloudification repository used by apiReleaseState (default ~/.abap-adt-mcp/cache) |
MCP_API_CLASSIFICATION_FILESOptional | Extra classification files for apiReleaseState, comma list: a path inside SAP's cloudification repository (partner/objectClassifications_ACME.json) or an https URL |
Details
| Package | [email protected] (NPM, stdio) |
| First published | 2 Nov 2026 |
| Last updated | 2 Nov 2026 |
| Registry name | io.github.williansaez/abap-adt-mcp |
More developer tools servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
