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

VariableRequiredSecretDescription
SAP_SYSTEMS_FILENoNoPath 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_SYSTEMSNoYesInline JSON map of destinations (same shape as SAP_SYSTEMS_FILE). Contains credentials — prefer SAP_SYSTEMS_FILE
SAP_DEFAULT_DESTINATIONNoNoDestination name used when a tool call omits `destination` (alternatively mark an entry with "default": true)
SAP_AUTH_TYPENoNoDefault auth type for entries that don't specify one: sso (default), sso2, basic, or oauth
MCP_HTTP_PORTNoNoWhen set (1024-65535), serve Streamable HTTP on http://127.0.0.1:<port>/mcp with bearer-token auth instead of stdio
MCP_HTTP_HOSTNoNoBind address for the HTTP transport (default 127.0.0.1). Set 0.0.0.0 only inside containers that publish the port
MCP_HTTP_TOKENNoYesBearer token for the HTTP transport; auto-generated and written to ~/.abap-adt-mcp/http-token when unset
MCP_HTTP_MAX_SESSIONSNoNoMaximum concurrent MCP sessions on the HTTP transport (default 16); further initialize requests get 503
MCP_HTTP_MAX_BODY_BYTESNoNoLargest request body the HTTP transport accepts, in bytes (default 4194304); larger bodies are refused with HTTP 413
MCP_HTTP_SESSION_TTL_MINUTESNoNoIdle minutes after which an HTTP session (and its SAP sessions/locks) is closed (default 30)
MCP_HTTP_ALLOWED_ORIGINSNoNoComma-separated Origin values allowed on the HTTP transport (loopback origins always allowed when bound to loopback; * allows any)
MCP_HTTP_ALLOWED_HOSTSNoNoComma-separated Host header values allowed (DNS-rebinding protection; loopback hosts always allowed when bound to loopback)
MCP_EXPORT_ROOTNoNoWhen set, exportPackageSources may only write inside this directory
MCP_AUDIT_FILENoNoPath 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_FILENoNoDiagnostics: 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_ONLYNoNoSet 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_PREVIEWNoNoSet 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_SQLNoNoSet 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_TOOLSETSNoNoToolsets 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_TOOLSETSNoNoToolsets to hide, comma list (core cannot be disabled)
MCP_MAX_RESPONSE_CHARSNoNoCharacter 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_TICKETNoNoSet to 1 to enable the reentranceTicket tool (disabled by default: it returns a live SAP logon credential into the conversation)
SAP_URLNoNoLegacy single-system mode: base URL of the SAP system, e.g. https://host:44300
SAP_USERNoNoLegacy single-system mode: SAP username
SAP_PASSWORDNoYesLegacy single-system mode: SAP password
SAP_CLIENTNoNoLegacy single-system mode: SAP client number, e.g. 100
SAP_LANGUAGENoNoLegacy single-system mode: logon language, e.g. EN
SAP_BROWSER_PATHNoNoSSO destinations: path to a Chromium/Chrome/Edge binary for the browser login (auto-detected when unset)
SAP_BROWSER_PROFILE_DIRNoNoSSO destinations: directory of the persistent browser profile that keeps the identity-provider session (default ~/.abap-adt-mcp/sso/<host>)
SAP_SSO2_COMMANDNoNoLegacy single-system sso2 mode: absolute path to the trusted local ticket provider
SAP_SSO2_ARGSNoNoLegacy single-system sso2 mode: JSON array of provider arguments (never put a ticket here)
SAP_SSO2_TIMEOUT_MSNoNoLegacy single-system sso2 mode: provider timeout in milliseconds (default 30000; range 1000-300000)
SAP_TLS_INSECURENoNoLegacy single-system mode: set to 1 to skip TLS certificate verification for that system only (sandboxes with self-signed certificates)
SAP_OAUTH_TOKEN_URLNoNoLegacy single-system mode with SAP_AUTH_TYPE=oauth: OAuth2 token endpoint (client_credentials)
SAP_OAUTH_CLIENT_IDNoNoLegacy single-system mode with SAP_AUTH_TYPE=oauth: OAuth2 client id
SAP_OAUTH_CLIENT_SECRETNoYesLegacy single-system mode with SAP_AUTH_TYPE=oauth: OAuth2 client secret
SAP_OAUTH_SCOPENoNoLegacy single-system mode with SAP_AUTH_TYPE=oauth: optional OAuth2 scope
MCP_PROFILE_GATENoNoPlatform 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_SECONDSNoNoLifetime of the per-session source cache used by grepPackage, cdsViewInfo and syntaxCheckCode (default 300; 0 keeps entries until logout)
MCP_CACHE_DIRNoNoDirectory for the cached SAP cloudification repository used by apiReleaseState (default ~/.abap-adt-mcp/cache)
MCP_API_CLASSIFICATION_FILESNoNoExtra classification files for apiReleaseState, comma list: a path inside SAP's cloudification repository (partner/objectClassifications_ACME.json) or an https URL

Checks

CheckResultDetail
Source repository linkedPasshttps://github.com/williansaez/abap-adt-mcp
Version pinnedPassEvery package has an explicit version
Secrets requestedWarnAsks for 4 secrets: SAP_SYSTEMS, MCP_HTTP_TOKEN, SAP_PASSWORD, SAP_OAUTH_CLIENT_SECRET
Known package registryPassAll packages come from npm, PyPI, OCI, NuGet or MCPB
Namespace ownershipInfoName verified via GitHub account williansaez
Registry text aimed at the AIPassDescription and settings contain no hidden characters or instructions to the AI
Install scriptsPassabap-adt-mcp@2.8.1 runs nothing at install
Code red flagsPassRead 82 files in abap-adt-mcp@2.8.1: no obfuscation, encoded execution, credential reads or data-collection endpoints found
Text aimed at the AIPassNo 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.

Popularity16 / 40

15 GitHub stars, 522 downloads last week, no Hacker News posts found. Best two of the three, each on a log scale.

Activity15 / 25

Last push 2026-10-26, last release 2026-10-26, 0 commits in 90 days.

Issue health12 / 15

14 closed of 17 issues.

Our checks16 / 20

1 warning, each costing a fifth.

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 nameio.github.williansaez/abap-adt-mcp
PublisherGitHub account williansaez
How the name is verifiedName verified via GitHub account williansaez. The registry ties the name prefix to that account or domain; it does not check the code.
TypeLocal: runs on your machine from a package
Packagesnpm abap-adt-mcp 2.8.1 (stdio)
Version2.8.1
Published
Last updated
Source repositoryhttps://github.com/williansaez/abap-adt-mcp
WebsiteNone linked
CategoryCoding & design (assigned by keyword rule, not by hand)

Related servers in Coding & design