ABAP development over SAP ADT: source, transports, ATC, unit tests, debugger. SSO/basic/OAuth
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Let Claude read, write, test and check ABAP code on your SAP systems.
English Β· PortuguΓͺs (Brasil) Β· Deutsch
abap-adt-mcp is a Model Context Protocol server. Run it next to Claude Desktop, Claude Code or any other MCP host, point it at one or more SAP systems, and the model gets the same ADT REST endpoints Eclipse uses: search objects, read and edit source, create transports, activate, run ABAP Unit and ATC, read short dumps, query tables. One server exposes 173 tools over as many SAP systems as you configure, S/4HANA Cloud and on-prem alike.
Use it deliberately, and prefer development systems. A destination without a
policyblock is fully writable within your SAP authorizations. Per-destination guard rails (read-only, allowed packages, denied tables) are enforced by the server itself, whatever the host approves, so a careless prompt cannot reach the wrong system.
Released 2026-09-08. The full list is in CHANGELOG.md; what matters when you upgrade:
npm prints EBADENGINE and the server is untested; install the current LTS and restart the host. The container image was already on node:22-alpine.tls.servername on a destination. For a system reached by IP address or short hostname whose certificate carries the fully qualified name: the name is verified and sent as SNI, verification stays on, and insecureTls is no longer the only way through that landscape. listSystems shows servername NAME.kind: "tlsCertificate" with a hint that names the destination: unknown issuer gives the openssl s_client line for that host and points at tls.ca, a name mismatch quotes the names Node reported and points at tls.servername, an expired certificate says that only renewal fixes it. insecureTls is mentioned last.insecureTls stays, per destination, off by default, announced at startup; SECURITY.md records why.puppeteer-core 25 removes the last open Dependabot alert from the dependency tree (npm audit reports zero vulnerabilities); Dependabot now waits a cooldown before proposing updates and groups security updates into one pull request; dotenv is loaded quietly so stdout stays a clean JSON-RPC channel.Upgrading from 1.x needs no configuration change: systems.json, the policies, the tool names and the environment variables are unchanged.
Three things before you start:
npm and npx, which is all the host needs. No terminal is required to check: if Node is missing, the host's log says spawn npx ENOENT when it tries to start the server (see step 2).SAP_BR_DEVELOPER in the standard delivery); if Eclipse ADT works for you, this server works too. On-prem, the /sap/bc/adt service must be active in transaction SICF (a Basis task) and your user needs the usual ADT development authorizations. Only unattended oauth clients need a Communication Arrangement, see Authentication.Create a folder .abap-adt-mcp in your home directory and a file systems.json inside it, one entry per system (a "destination"). Without a terminal: on macOS open Finder, press Shift-Cmd-G, enter ~, create the folder (Finder asks you to confirm a name starting with a dot; Shift-Cmd-. shows hidden folders), then save the file there from any text editor. On Windows the folder is C:\Users\<you>\.abap-adt-mcp, created in File Explorer like any other. One S/4HANA Cloud tenant with browser SSO needs exactly this:
url is mandatory; client is the client your SSO session lands on (on the tested tenants the development system logged on to 080 and the customizing and test systems to 100; the About entry in the launchpad's user menu shows it); authType defaults to sso and "default": true lets you omit the destination name in every call. The key (DEV) is your choice and is the name you will use in chats. Several systems, with guard rails, look like this (or copy systems.example.json):
The pattern for any productive or test system is the PRD entry: add "policy": { "readOnly": true } and the server refuses every write there, whatever the model is asked. sso opens a real browser once for S/4HANA Cloud named users; basic is for on-prem users and Communication Users; oauth is for unattended clients. ${env:VAR} pulls a secret from the environment so it never sits in the file, policy is enforced by the server, and tls.ca adds a corporate CA with verification kept on (tls.servername names the certificate when the system is reached by IP address). $* (local packages) is listed only on the on-prem entry because the tested Public Cloud tenant refuses $TMP.
If you have a terminal, restrict the file to your user:
You can skip this step when the file holds no inline passwords (an SSO-only file, or secrets referenced as ${env:VAR}): the server then only prints a warning if the file is readable by others. It refuses to start only when a shared-readable file contains inline passwords, client secrets or git passwords. Windows has no file modes; the check is skipped there.
The package is on npm as abap-adt-mcp (published through trusted publishing with provenance), so npx is all you need.
Claude Code, one line:
Claude Desktop (Settings > Developer > Edit Config, then quit and reopen the app). Replace me with your own user name; on Windows write the path as C:/Users/<you>/.abap-adt-mcp/systems.json:
MCP_TOOLSETS=focused publishes the 114 development tools instead of all 173, which keeps the tool schemas from eating the chat's context window; drop it when you need the debugger, traces, abapGit, RAP or refactoring toolsets. The same JSON works in Cursor, Cline and other hosts that read an mcpServers map; VS Code names the map servers instead, so rename the top-level key there (docs/HOSTS.md has the per-host form). The key abap-adt-mcp is the name the host shows for the server and the prefix of every tool (mcp__abap-adt-mcp__searchObject in Claude Code); public ABAP skills written for this server look for that name, so a different key only stops those skills from recognising the server, nothing else breaks.
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/abap-adt-mcp)<a href="https://allmcps.com/mcp/abap-adt-mcp"><img src="https://allmcps.com/api/badge/abap-adt-mcp?style=directory" alt="Abap Adt MCP on AllMCPs" /></a>