MCP serverMCP servertypeExposes tools to a coding agent over MCP.See every one →What this type is →independently maintainedindependently maintainedoriginPublished by one person or a small company outside SAP. Says nothing about quality; the readings say that.See every one →

ADAM

An MCP server that debugs ABAP on a connected system over ADT, as one-shot captures or an interactive session, over stdio next to the assistant or as a shared server on SAP BTP Cloud Foundry.

An agent can read ABAP source and still not know why a value came out wrong. ADAM gives it SAP's own debugger over the ADT resources: one abap_debug call resolves the breakpoints against the active source, arms them for the session's own SAP user, triggers the run with the object's harmless ABAP Unit tests or an OData GET, and records every stop of that single run with the position, the call stack, the variables it was asked for and the steps after each stop, compacted into a line trace past twenty. A breakpoint addresses a line, a method, a MESSAGE statement, a statement kind such as COMMIT WORK or an exception class, and carries a hit count and an ABAP condition SAP evaluates there, so one stop can be the 500th pass of a loop. With interactive: true the program stays stopped and abap_debug_session drives it one move per call: a step (into, over or out), a continue to a line, an inspection of any variable, an end that lets the program run on or aborts it where it stands. abap_source returns the active source numbered the way breakpoints address it and abap_search finds objects by name or pattern; nothing is installed on the SAP system, the capture writes nothing there, and it refuses when Eclipse, VS Code or another capture already listens for that SAP user.

Facts

Last push

Where it sits

Lives in
Provides
DebuggingABAPDebuggingcapabilitySeeing what running code did between an input arriving and a result coming out: which code ran, what the values were at each point, and why a value ended up as it did.Agent access to your codeBTPABAPAgent access to your codecapabilityLetting a coding agent read the project or the system you actually have, reach its model, its objects and its checks, and act on it. In file-based environments that works out of the box; complex systems need dedicated access capabilities. Whatever the environment, the agent also needs project- and framework-specific context, so it understands the thing in front of it rather than guessing from what it remembers of its training data. The transport is incidental: an MCP server, a language server or a CLI answer the same question, and what differs between them is how much of the real thing the agent can see. Distinct from [MCP servers](capability:mcp-servers), which is a protocol adapter on your own running service, and from [agent guidance](capability:agent-guidance), which is knowledge handed over as files rather than read from the thing itself.
Serves
Runs
Cloud Foundrylocal
Requires
ADT resourcesADT resourcesartifactthe ADT resources the server calls on the connected system: it needs a system reachable over HTTP(S) with ADT enabled, and a user with ADT access and debug authorization
Optional
SAP BTP ABAP environmentSAP BTP ABAP environmentartifactthe ABAP instance whose service key the server logs on with, opening the browser for the SAP login on the first call@arc-mcp/xsuaa-auth@arc-mcp/xsuaa-authartifactthe authentication stack in front of the /mcp route and the destination lookups behind itSAP Authorization and Trust Management serviceSAP Authorization and Trust Management serviceartifactthe sign-in of the MCP clients, with dynamic client registration and the debug scope every tool call needs; the MTA creates the instance from xs-security.jsonSAP Destination serviceSAP Destination serviceartifactthe destination that names the SAP system and how each user logs on to it: PrincipalPropagation for an on-premise system or OAuth2UserTokenExchange for the BTP ABAP environmentSAP Connectivity serviceSAP Connectivity serviceartifactthe forward proxy the ADT calls leave through on their way into the customer's networkCloud ConnectorCloud Connectorartifactthe tunnel into the customer's network and the certificate mapping that turns the propagated user into an SAP logon name; its access control has to expose /sap/bc/adt with all sub-pathsSAP BTP, Cloud Foundry RuntimeSAP BTP, Cloud Foundry Runtimeartifactthe runtime the MTA is deployed to, at one instance because an interactive session holds the program and its debugger session in the process

Who is behind it

Clément RingotClément RingotPersonMaintains this
In the atlas: maintains 3, contributes to 4
@ClementRingot
maintainer

Before choosing this

Conditions

PracticalFunctional boundary

A stopped program holds an SAP work process and its caller's request, so an interactive session is the wrong shape wherever that matters: one runs per SAP user at a time, other captures for that user are refused while it is open, and a Cloud Foundry deployment stays at one instance because the next call must reach the same process. Breakpoints in report and function-group includes are not accepted, and a message breakpoint catches MESSAGE statements only, so RAP messages from new_message( … ) and BAPI return tables never stop a run. On SAP_BASIS 7.50 and older the system cannot name the session's debug user, so there SAP_USER is used behind Basic or cookie authentication only.

What it declares

Every artifact

Type
MCP server
Origin
Independently maintained
Runtime
Node.js
Runs on
Cloud Foundrylocal

As an MCP server

Transport
stdioHTTP

Tasks this contributes to1Beta

Reach a system in the customer's own network as the signed-in userAn application on SAP BTP calls a system inside the customer's network and that system sees the person who signed in, not a shared service user.Coversan MCP server built so that each of its users debugs as themselves
What it does

Applies the pattern to a debugger. Deployed on Cloud Foundry it signs each MCP client in through XSUAA, hands that user's token to a PrincipalPropagation destination, and reaches the ABAP system through the Connectivity proxy and the Cloud Connector as that person's own SAP user, so SAP's debug authorisations are theirs and the capture catches only their runs. It checks the destination at its first call and refuses a BasicAuthentication one, under which every user would debug as one SAP user and could catch each other's runs, unless a deployment that a single person uses sets ABAP_DEBUGGER_ALLOW_SHARED_USER=true.

Remaining work

Set up the Cloud Connector, STRUST and CERTRULE as the pattern requires, create the destination, build and deploy the MTA, and assign the role collection carrying the debug scope. Its XSUAA and Destination calls are tested simulated and a first deployment on a real subaccount is still to come.

All options on the Authentication page →

Connections12

ADAM connectionsADAMPROVIDES→ provides2provides stated Hands a coding agent the debugger of the connected system and the two reads around it, as the caller's own SAP user: the active source numbered the way breakpoints address it, the repository quick search, a run triggered by the object's harmless ABAP Unit tests or an OData `GET`, and what the program did at each stop of that run. ClementRingot/ADAM — README: https://github.com/clementringot/adam ClementRingot/ADAM — README, Guarantees and limits: https://github.com/clementringot/adamAgent access to your codeprovides stated Drives SAP's own ABAP debugger from outside the system over ADT: it resolves and arms external breakpoints for the session's own SAP user, triggers the run, and at every stop of that one run records where the program stands, the call stack, the variables asked for and the steps taken after the stop, then releases the program and removes what it set. An interactive mode keeps the program waiting at a stop and takes one move per call. ClementRingot/ADAM — README, one-shot mode: https://github.com/clementringot/adam ClementRingot/ADAM — README, interactive mode: https://github.com/clementringot/adam ClementRingot/ADAM — README, Guarantees and limits: https://github.com/clementringot/adamDebuggingNEEDS→ connects to2connects to stated arms the external breakpoints, starts the debugger listener, attaches from the application server the program stopped on and reads the position, call stack and variables, all through the ADT REST API that Eclipse ADT uses ClementRingot/ADAM — README: https://github.com/clementringot/adam ClementRingot/ADAM — README, How a capture works: https://github.com/clementringot/adamABAP platformconnects to stated If: the server is deployed as a shared server on SAP BTP Cloud Foundry exchanges the signed-in MCP user's token at the Destination service for the per-user credentials the ADT calls then carry, so the debugger reaches SAP as that person's own SAP user ADAM — docs/btp-deployment.md, the call path: https://raw.githubusercontent.com/ClementRingot/ADAM/main/docs/btp-deployment.md ADAM — docs/btp-deployment.md, Create the destination: https://raw.githubusercontent.com/ClementRingot/ADAM/main/docs/btp-deployment.mdSAP Destination serviceif→ needs1needs stated the ADT resources the server calls on the connected system: it needs a system reachable over HTTP(S) with ADT enabled, and a user with ADT access and debug authorization ClementRingot/ADAM — README, Requirements: https://github.com/clementringot/adam ClementRingot/ADAM — README, Requirements: https://github.com/clementringot/adamADT resources→ optionally needs7optionally needs stated If: the server runs in HTTP mode on SAP BTP Cloud Foundry the authentication stack in front of the `/mcp` route and the destination lookups behind it ADAM — docs/btp-deployment.md: https://raw.githubusercontent.com/ClementRingot/ADAM/main/docs/btp-deployment.md@arc-mcp/xsuaa-authifoptionally needs stated If: the deployed server reaches an on-premise SAP system the tunnel into the customer's network and the certificate mapping that turns the propagated user into an SAP logon name; its access control has to expose `/sap/bc/adt` with all sub-paths ADAM — docs/btp-deployment.md, Before you start: https://raw.githubusercontent.com/ClementRingot/ADAM/main/docs/btp-deployment.mdCloud Connectorifoptionally needs stated If: the server is deployed as a shared server on SAP BTP Cloud Foundry the sign-in of the MCP clients, with dynamic client registration and the `debug` scope every tool call needs; the MTA creates the instance from `xs-security.json` ADAM — docs/btp-deployment.md: https://raw.githubusercontent.com/ClementRingot/ADAM/main/docs/btp-deployment.md ADAM — docs/btp-deployment.md, Give users the role: https://raw.githubusercontent.com/ClementRingot/ADAM/main/docs/btp-deployment.mdSAP Authorization and Trust Managementserviceifoptionally needs stated If: the SAP system debugged is the SAP BTP ABAP environment, reached with a service key instead of a URL and credentials the ABAP instance whose service key the server logs on with, opening the browser for the SAP login on the first call ClementRingot/ADAM — README, Installation: https://github.com/clementringot/adamSAP BTP ABAP environmentifoptionally needs stated If: the server is deployed as a shared server on SAP BTP instead of run locally over stdio the runtime the MTA is deployed to, at one instance because an interactive session holds the program and its debugger session in the process ClementRingot/ADAM — README, Installation: https://github.com/clementringot/adam ADAM — docs/btp-deployment.md, Configure and deploy: https://raw.githubusercontent.com/ClementRingot/ADAM/main/docs/btp-deployment.mdSAP BTP, Cloud Foundry Runtimeifoptionally needs declared If: the deployed server reaches an on-premise SAP system behind the Cloud Connector the forward proxy the ADT calls leave through on their way into the customer's network ADAM — mta.yaml: https://raw.githubusercontent.com/ClementRingot/ADAM/main/mta.yaml ADAM — docs/btp-deployment.md, Before you start: https://raw.githubusercontent.com/ClementRingot/ADAM/main/docs/btp-deployment.mdSAP Connectivity serviceifoptionally needs stated If: the server is deployed as a shared server on SAP BTP Cloud Foundry the destination that names the SAP system and how each user logs on to it: `PrincipalPropagation` for an on-premise system or `OAuth2UserTokenExchange` for the BTP ABAP environment ClementRingot/ADAM — README, Configuration: https://github.com/clementringot/adam ADAM — docs/btp-deployment.md: https://raw.githubusercontent.com/ClementRingot/ADAM/main/docs/btp-deployment.mdSAP Destination serviceif
Where ADAM runsYour ABAP systemYour SAP BTP subaccountClementRingot/ADAM — README, Development, checked 2026-10-26: “`src/http-server.ts` (Streamable HTTP with XSUAA/API-key auth), `src/server.ts` (MCP), `src/config.ts`, `src/index.ts` (entry point, stdio or `--http`).”stdio or HTTPdocumentedrequiresdocumentedmay needif the SAP system debugged isthe SAP BTP ABAP environment,reached with a service key inste…documentedmay needif the server runs in HTTPmode on SAP BTP Cloud Foundrydocumentedmay needif the server is deployed as ashared server on SAP BTP CloudFoundrydocumentedoutboundif the server is deployed as ashared server on SAP BTP CloudFoundrydocumentedmay needif the deployed server reachesan on-premise SAP systembehind the Cloud Connectordocumentedmay needif the deployed server reachesan on-premise SAP systemdocumentedmay needif the server is deployed as ashared server on SAP BTPinstead of run locally over stdiodocumentedHTTP, outbounddocumentedoutboundYour MCP client, actorYour MCP clientABAP platform, SAP solutionABAP platformSAP solutionADAM, moduleADAM@arc-mcp/xsuaa-auth, module@arc-mcp/xsuaa-authCloud Connector, moduleCloud ConnectorADT resources, service instanceADT resourcesSAP BTP ABAP environment, service instanceSAP BTP ABAPenvironmentSAP Authorization and Trust Management service, service instanceSAP Authorizationand TrustManagement serviceSAP Destination service, service instanceSAP DestinationserviceSAP Connectivity service, service instanceSAP ConnectivityserviceSAP BTP, Cloud Foundry Runtime, service instanceSAP BTP, CloudFoundry Runtime
SAPnot SAP's, or the project's ownauthenticationstated in the documentdocumented onlyunder a condition

README

quoted from ClementRingot/ADAM, read
ClementRingot/ADAM/README.mdOn GitHub

ADAM

Node.js 22.12+ MCP server License: MIT

ADAM is an MCP server that lets an AI assistant — Claude, GitHub Copilot, Cursor… — debug ABAP code in SAP's own debugger: set breakpoints, run the code, read the variables, step through it. It speaks the ABAP Development Tools (ADT) REST API, as Eclipse does, so nothing has to be installed on the SAP system.

You:     Why does ZCL_ORDER=>GET_TOTAL return 0 for order 4711?

Claude:  abap_source  {type: "CLAS", name: "ZCL_ORDER", method: "get_total"}
         abap_debug   {type: "CLAS", name: "ZCL_ORDER", breakpoints: [{line: 42, hits: 3}],
                       variables: ["LS_ITEM-NETWR", "LV_TOTAL"], steps: 2}
         → three iterations of the loop in one run, each with both values and two steps
excerpt, no licence read, read the rest, on GitHub

Others providing11

Debugging
  1. CF Space SwitcherSwitches Cloud Foundry API, org and space from a view in VS Code
  2. @saptools/cf-debuggerNode.js inspector tunnel over cf ssh to Cloud Foundry apps
  3. @saptools/cf-explorerFile search in apps deployed to SAP BTP Cloud Foundry over cf ssh
  4. @saptools/cf-function-traceStep-by-step state recorder for one JavaScript function in Node.js
  5. @saptools/cf-hanaSQL runner against the SAP HANA Cloud database bound to a CF app
  6. @saptools/cf-inspectorShell debugger for remote Node.js over the Chrome DevTools Protocol
  7. @saptools/cf-live-traceHTTP trace hook streaming a running CF Node.js app's traffic
Agent access to your code
  1. Modernization Agents for SAP on AWSAWS agents for ABAP, PI/PO and BW modernisation work
  2. bw-modeling-mcpMCP server for BW/4HANA modelling objects
  3. sap-ai-dev-toolkitMCP proxy pinning an agent's ABAP tools to one SAP system
  4. @sap/mdk-mcp-serverMCP server with five tools for Mobile Development Kit work

Details

Sources3
GitHub APIdiscovered herechecked
github.com/ClementRingot/ADAMtree, pushes, contributors, CIchecked
README.mdquoted, and what the entry declareschecked

Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.

Compatibility and provenance
runtimesnode
deploymentCloud Foundry, local
discovered viaGitHub API
first seen in the atlas
ecosystem and domainabap, ai-and-agents
Flavors2
Standard ABAP
“- An SAP system reachable over HTTP(S) with ADT enabled: SAP NetWeaver / S/4HANA on-premise (SAP_BASIS 7.50 or later), or the SAP BTP ABAP Environment.” — ClementRingot/ADAM — README, Requirementschecked
ABAP Cloud
“- An SAP system reachable over HTTP(S) with ADT enabled: SAP NetWeaver / S/4HANA on-premise (SAP_BASIS 7.50 or later), or the SAP BTP ABAP Environment.” — ClementRingot/ADAM — README, Requirementschecked
History in the atlas1
  1. First seen.
For your agent
Ref
artifact:clementringot-adam
JSON
/artifacts/clementringot-adam.json
MCP
Connecting an agent