NestDaddy

Abap Adt Mcp

io.github.williansaez/abap-adt-mcp · v2.8.2

ABAP development from Claude and other MCP hosts: source, transports, tests, ATC, debugger

Connect Runs on your machine

Terminal
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]
claude_desktop_config.json
{
  "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>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "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>"
      }
    }
  }
}
.vscode/mcp.json
{
  "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

NameDescription
SAP_SYSTEMS_FILE
Optional
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_SYSTEMS
Optional, secret
Inline JSON map of destinations (same shape as SAP_SYSTEMS_FILE). Contains credentials — prefer SAP_SYSTEMS_FILE
SAP_DEFAULT_DESTINATION
Optional
Destination name used when a tool call omits `destination` (alternatively mark an entry with "default": true)
SAP_AUTH_TYPE
Optional
Default auth type for entries that don't specify one: sso (default), sso2, basic, or oauth
MCP_HTTP_PORT
Optional
When set (1024-65535), serve Streamable HTTP on http://127.0.0.1:<port>/mcp with bearer-token auth instead of stdio
MCP_HTTP_HOST
Optional
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_TOKEN
Optional, secret
Bearer token for the HTTP transport; auto-generated and written to ~/.abap-adt-mcp/http-token when unset
MCP_HTTP_MAX_SESSIONS
Optional
Maximum concurrent MCP sessions on the HTTP transport (default 16); further initialize requests get 503
MCP_HTTP_MAX_BODY_BYTES
Optional
Largest request body the HTTP transport accepts, in bytes (default 4194304); larger bodies are refused with HTTP 413
MCP_HTTP_SESSION_TTL_MINUTES
Optional
Idle minutes after which an HTTP session (and its SAP sessions/locks) is closed (default 30)
MCP_HTTP_ALLOWED_ORIGINS
Optional
Comma-separated Origin values allowed on the HTTP transport (loopback origins always allowed when bound to loopback; * allows any)
MCP_HTTP_ALLOWED_HOSTS
Optional
Comma-separated Host header values allowed (DNS-rebinding protection; loopback hosts always allowed when bound to loopback)
MCP_EXPORT_ROOT
Optional
When set, exportPackageSources may only write inside this directory
MCP_AUDIT_FILE
Optional
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_FILE
Optional
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_ONLY
Optional
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_PREVIEW
Optional
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_SQL
Optional
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_TOOLSETS
Optional
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_TOOLSETS
Optional
Toolsets to hide, comma list (core cannot be disabled)
MCP_MAX_RESPONSE_CHARS
Optional
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_TICKET
Optional
Set to 1 to enable the reentranceTicket tool (disabled by default: it returns a live SAP logon credential into the conversation)
SAP_URL
Optional
Legacy single-system mode: base URL of the SAP system, e.g. https://host:44300
SAP_USER
Optional
Legacy single-system mode: SAP username
SAP_PASSWORD
Optional, secret
Legacy single-system mode: SAP password
SAP_CLIENT
Optional
Legacy single-system mode: SAP client number, e.g. 100
SAP_LANGUAGE
Optional
Legacy single-system mode: logon language, e.g. EN
SAP_BROWSER_PATH
Optional
SSO destinations: path to a Chromium/Chrome/Edge binary for the browser login (auto-detected when unset)
SAP_BROWSER_PROFILE_DIR
Optional
SSO destinations: directory of the persistent browser profile that keeps the identity-provider session (default ~/.abap-adt-mcp/sso/<host>)
SAP_SSO2_COMMAND
Optional
Legacy single-system sso2 mode: absolute path to the trusted local ticket provider
SAP_SSO2_ARGS
Optional
Legacy single-system sso2 mode: JSON array of provider arguments (never put a ticket here)
SAP_SSO2_TIMEOUT_MS
Optional
Legacy single-system sso2 mode: provider timeout in milliseconds (default 30000; range 1000-300000)
SAP_TLS_INSECURE
Optional
Legacy single-system mode: set to 1 to skip TLS certificate verification for that system only (sandboxes with self-signed certificates)
SAP_OAUTH_TOKEN_URL
Optional
Legacy single-system mode with SAP_AUTH_TYPE=oauth: OAuth2 token endpoint (client_credentials)
SAP_OAUTH_CLIENT_ID
Optional
Legacy single-system mode with SAP_AUTH_TYPE=oauth: OAuth2 client id
SAP_OAUTH_CLIENT_SECRET
Optional, secret
Legacy single-system mode with SAP_AUTH_TYPE=oauth: OAuth2 client secret
SAP_OAUTH_SCOPE
Optional
Legacy single-system mode with SAP_AUTH_TYPE=oauth: optional OAuth2 scope
MCP_PROFILE_GATE
Optional
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_SECONDS
Optional
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_SECONDS
Optional
Lifetime of the per-session source cache used by grepPackage, cdsViewInfo and syntaxCheckCode (default 300; 0 keeps entries until logout)
MCP_CACHE_DIR
Optional
Directory for the cached SAP cloudification repository used by apiReleaseState (default ~/.abap-adt-mcp/cache)
MCP_API_CLASSIFICATION_FILES
Optional
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 published2 Nov 2026
Last updated2 Nov 2026
Registry nameio.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.