abap-adt-mcp
io.github.williansaez/abap-adt-mcp
About abap-adt-mcp
abap-adt-mcp is an MCP server published by the GitHub account williansaez. ABAP development from Claude and other MCP hosts: source, transports, tests, ATC, debugger
It runs on your own machine: your AI client starts it from the npm package abap-adt-mcp at version 2.8.1.
It asks for 4 secrets: SAP_SYSTEMS, MCP_HTTP_TOKEN, SAP_PASSWORD and SAP_OAUTH_CLIENT_SECRET. Give it a key with the least access that still works.
Version 2.8.1 was published on 26 October 2026, and the source code is public, so you can read it before installing.
Written from the registry entry. 9 automated checks on the registry entry and the package code: 7 pass, 1 warn, 0 fail, 1 info. How we check.
What it asks for
| Variable | Required | Secret | Description |
|---|---|---|---|
SAP_SYSTEMS_FILE | No | No | 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 | No | Yes | Inline JSON map of destinations (same shape as SAP_SYSTEMS_FILE). Contains credentials — prefer SAP_SYSTEMS_FILE |
SAP_DEFAULT_DESTINATION | No | No | Destination name used when a tool call omits `destination` (alternatively mark an entry with "default": true) |
SAP_AUTH_TYPE | No | No | Default auth type for entries that don't specify one: sso (default), sso2, basic, or oauth |
MCP_HTTP_PORT | No | No | 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 | No | No | 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 | No | Yes | Bearer token for the HTTP transport; auto-generated and written to ~/.abap-adt-mcp/http-token when unset |
MCP_HTTP_MAX_SESSIONS | No | No | Maximum concurrent MCP sessions on the HTTP transport (default 16); further initialize requests get 503 |
MCP_HTTP_MAX_BODY_BYTES | No | No | Largest request body the HTTP transport accepts, in bytes (default 4194304); larger bodies are refused with HTTP 413 |
MCP_HTTP_SESSION_TTL_MINUTES | No | No | Idle minutes after which an HTTP session (and its SAP sessions/locks) is closed (default 30) |
MCP_HTTP_ALLOWED_ORIGINS | No | No | Comma-separated Origin values allowed on the HTTP transport (loopback origins always allowed when bound to loopback; * allows any) |
MCP_HTTP_ALLOWED_HOSTS | No | No | Comma-separated Host header values allowed (DNS-rebinding protection; loopback hosts always allowed when bound to loopback) |
MCP_EXPORT_ROOT | No | No | When set, exportPackageSources may only write inside this directory |
MCP_AUDIT_FILE | No | No | 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 | No | No | 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 | No | No | 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 | No | No | 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 | No | No | 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 | No | No | 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 | No | No | Toolsets to hide, comma list (core cannot be disabled) |
MCP_MAX_RESPONSE_CHARS | No | No | 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 | No | No | Set to 1 to enable the reentranceTicket tool (disabled by default: it returns a live SAP logon credential into the conversation) |
SAP_URL | No | No | Legacy single-system mode: base URL of the SAP system, e.g. https://host:44300 |
SAP_USER | No | No | Legacy single-system mode: SAP username |
SAP_PASSWORD | No | Yes | Legacy single-system mode: SAP password |
SAP_CLIENT | No | No | Legacy single-system mode: SAP client number, e.g. 100 |
SAP_LANGUAGE | No | No | Legacy single-system mode: logon language, e.g. EN |
SAP_BROWSER_PATH | No | No | SSO destinations: path to a Chromium/Chrome/Edge binary for the browser login (auto-detected when unset) |
SAP_BROWSER_PROFILE_DIR | No | No | SSO destinations: directory of the persistent browser profile that keeps the identity-provider session (default ~/.abap-adt-mcp/sso/<host>) |
SAP_SSO2_COMMAND | No | No | Legacy single-system sso2 mode: absolute path to the trusted local ticket provider |
SAP_SSO2_ARGS | No | No | Legacy single-system sso2 mode: JSON array of provider arguments (never put a ticket here) |
SAP_SSO2_TIMEOUT_MS | No | No | Legacy single-system sso2 mode: provider timeout in milliseconds (default 30000; range 1000-300000) |
SAP_TLS_INSECURE | No | No | 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 | No | No | Legacy single-system mode with SAP_AUTH_TYPE=oauth: OAuth2 token endpoint (client_credentials) |
SAP_OAUTH_CLIENT_ID | No | No | Legacy single-system mode with SAP_AUTH_TYPE=oauth: OAuth2 client id |
SAP_OAUTH_CLIENT_SECRET | No | Yes | Legacy single-system mode with SAP_AUTH_TYPE=oauth: OAuth2 client secret |
SAP_OAUTH_SCOPE | No | No | Legacy single-system mode with SAP_AUTH_TYPE=oauth: optional OAuth2 scope |
MCP_PROFILE_GATE | No | No | Platform gate for toolsets the destination does not expose (debugger, traces, abapGit, ...): enforce (default, refuse before calling SAP), warn (log only) or off |
MCP_SOURCE_CACHE_TTL_SECONDS | No | No | Lifetime of the per-session source cache used by grepPackage, cdsViewInfo and syntaxCheckCode (default 300; 0 keeps entries until logout) |
MCP_CACHE_DIR | No | No | Directory for the cached SAP cloudification repository used by apiReleaseState (default ~/.abap-adt-mcp/cache) |
MCP_API_CLASSIFICATION_FILES | No | No | Extra classification files for apiReleaseState, comma list: a path inside SAP's cloudification repository (partner/objectClassifications_ACME.json) or an https URL |
Checks
| Check | Result | Detail |
|---|---|---|
| Source repository linked | Pass | https://github.com/williansaez/abap-adt-mcp |
| Version pinned | Pass | Every package has an explicit version |
| Secrets requested | Warn | Asks for 4 secrets: SAP_SYSTEMS, MCP_HTTP_TOKEN, SAP_PASSWORD, SAP_OAUTH_CLIENT_SECRET |
| Known package registry | Pass | All packages come from npm, PyPI, OCI, NuGet or MCPB |
| Namespace ownership | Info | Name verified via GitHub account williansaez |
| Registry text aimed at the AI | Pass | Description and settings contain no hidden characters or instructions to the AI |
| Install scripts | Pass | abap-adt-mcp@2.8.1 runs nothing at install |
| Code red flags | Pass | Read 82 files in abap-adt-mcp@2.8.1: no obfuscation, encoded execution, credential reads or data-collection endpoints found |
| Text aimed at the AI | Pass | No hidden characters or instructions to the AI in 82 files, including comments and the README |
Popularity & health: 59 / 100
Worked out from public numbers and our own checks, not from user reviews or ratings. It says how used and how looked-after a server is, not whether it is safe.
6 forks, 57 merged pull requests. Sources: GitHub, npm, PyPI (pypistats.org) and Hacker News (Algolia), fetched 2026-10-31.
What people say
No Hacker News threads link to its source code.
Look further: search Reddit, search Hacker News, read its GitHub issues. These are not reviews we checked.
Facts
| Registry name | io.github.williansaez/abap-adt-mcp |
|---|---|
| Publisher | GitHub account williansaez |
| How the name is verified | Name verified via GitHub account williansaez. The registry ties the name prefix to that account or domain; it does not check the code. |
| Type | Local: runs on your machine from a package |
| Packages | npm abap-adt-mcp 2.8.1 (stdio) |
| Version | 2.8.1 |
| Published | |
| Last updated | |
| Source repository | https://github.com/williansaez/abap-adt-mcp |
| Website | None linked |
| Category | Coding & design (assigned by keyword rule, not by hand) |
Related servers in Coding & design
SAP ABAP MCP7/7Develop, test, analyze, and operate SAP ABAP systems through ADT…- Hindsight MCP3/4MCP server for AI-assisted coding with development history: git,…
- XF Model Source4/4Find the right AI model for your job. Free discovery and ranking;…
- xmp4 — Semantic code knowledge for your stack4/4OSS libs in your stack, really used: source, tests, callers. C#,…
- .NET Debugger for MCP4/4Give an AI agent a real .NET debugger: breakpoints, stepping,…
- STM32 GDB Debugger7/7Debug STM32 firmware on real hardware via GDB +…