Sap Adt MCP
Give Claude live access to SAP ABAP via ADT: read, search, check, test, and edit objects.
Connector by yzonur · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/yzonur-sap-adt-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: code-generation, debugging, testing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 26 read · 17 write · 4 delete · 12 not yet classified
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Tools by what they do 59
Read from the source code; the running server may list different tools.
Read 26 · Look things up without changing anything.
adt_browse_packageadt_cds_data_previewadt_cds_dependenciesadt_check_note_statusadt_compare_sourceadt_compare_versionsadt_debug_stackadt_debug_variablesadt_get_dumpadt_get_noteadt_get_sourceadt_get_transport
Show 14 more tools
adt_grep_sourceadt_list_dumpsadt_list_inactive_objectsadt_list_locksadt_list_packagesadt_list_released_apisadt_list_systemsadt_list_transportsadt_list_versionsadt_pingadt_read_spooladt_search_objectsadt_system_infoadt_transport_diff
Write 17 · Create, change, send or run things.
adt_create_objectadt_create_transportadt_debug_goto_stackadt_debug_set_breakpointadt_debug_set_variableadt_debug_set_watchpointadt_lockadt_pretty_printadt_release_transportadt_run_atcadt_run_atc_packageadt_run_atc_transport
Show 5 more tools
adt_run_unit_testsadt_schedule_jobadt_set_sourceadt_set_source_chunkedadt_unlock
Delete 4 · Delete, drop, revoke or wipe things.
adt_debug_delete_breakpointadt_debug_delete_watchpointadt_debug_stopadt_delete_object
Not yet classified 12 · We could not tell from the name and description.
adt_activateadt_debug_listenadt_debug_stepadt_implement_noteadt_rap_scaffoldadt_read_tableadt_report_issueadt_requestadt_syntax_checkadt_transport_queueadt_value_helpadt_where_used
Secrets and settings it asks for
Other settings (environment variables or headers).
SAP_ADT_MCP_CONFIG
Network hosts it talks to 4
api.github.com· found in codegithub.com· found in codesap-adt-mcp-reporter.onuryz-itu.workers.dev· found in codesap.com· found in code
Files it touches
- Your home directory (~)
- Any path the agent passes to its tools
Tools (59)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
adt_activateActivate one or more ABAP objects. Includes are activated in the context of their main program: the context is auto-resolved, and when the include belongs to several master programs the tool asks which one instead of failing with a 500. In multi-developer scenarios where the object's components are locked in a separate task under the same transport, set processRedoneOOSourceVersionOnly=true to ask SAP to re-activate only the redone OO source versions (bypasses the 'Object components locked in request and separate task' 403).
adt_browse_packageDescription is built at runtime.
adt_cds_data_previewPreview the data exposed by a CDS view (DDL source) via the ADT CDS Data Preview endpoint. Read-only. Returns structured { columns, rows } just like adt_read_table, but you only pass the CDS entity / DDL source name — no SQL. Requires a system with CDS support (NetWeaver 7.5x+ / S/4HANA).
adt_cds_dependenciesReturn the dependency graph of a CDS view — the entities it consumes (and, where the system exposes it, related objects). Uses the ADT DDL dependency graphdata endpoint. Returns the parsed object references plus the raw graph payload. Requires CDS support.
adt_check_note_statusReport the implementation status of a SAP Note in the system (e.g. can be implemented / obsolete / fully implemented / partially implemented). EXPERIMENTAL — see adt_get_note for availability constraints.
adt_compare_sourceCompare the source of the same object across two systems. Returns a unified-diff plus added/removed line counts.
adt_compare_versionsDiff two versions of the SAME object's source within one system. Defaults to active-vs-inactive (the daily 'what did I change but not yet activate' question). from/to are passed to the ADT ?version= query, which only understands the symbolic values 'active' and 'inactive' — a numeric version number is rejected with 400 ExceptionParameterValueInvalid. Returns a unified diff plus added/removed line counts, reusing the same diff engine as adt_compare_source.
adt_create_objectCreate a new ABAP object in a package. Supported types: program, class, interface, include, functiongroup, function, cds, accesscontrol, metadataext, behaviordef, messageclass. Refused under read-only mode.
adt_create_transportCreate a new transport request. Returns the new TR number. Subject to read-only mode. Note: on some systems TR *creation* routes through a SAP GUI dialog and fails headless with a 500 (SAPLSTRD/SAPLSPO4 'No window system type'). Assigning changes to an EXISTING request works headless — pass that TR id as `transport` to adt_lock / adt_set_source instead.
adt_debug_delete_breakpointDelete an external debugger breakpoint by its id (from adt_debug_set_breakpoint).
adt_debug_delete_watchpointDelete a watchpoint by id (from adt_debug_set_watchpoint). Phase 3, WRITE — refused under read-only mode. Best-effort until validated live.
adt_debug_goto_stackMove the active stack frame of the attached debuggee (Phase 2). Pass either `stackUri` (a /sap/bc/adt/debugger/stack/type/<t>/position/<n> URI from adt_debug_stack) or a 0-based `position`. WRITE — refused under read-only mode.
adt_debug_listenWait (bounded long-poll) for a debuggee to hit a breakpoint set with adt_debug_set_breakpoint. Returns { caught: true, … } with a summary (and auto-attaches) when a session is trapped, or { caught: false } if none arrived within the timeout — in which case call it again. One listener per process; set breakpoints first. TIMING: arm the listener BEFORE triggering the ABAP run — for a fast request (Fiori/OData) arming it after clicking is already too late. A trapped debuggee then waits only ~15-20 s for the attach before resuming on its own. READING caught:false — it means one of: (a) the run has…
adt_debug_set_breakpointSet an external ABAP debugger breakpoint at a line of an object. Pair with adt_debug_listen to catch a session that reaches it. Returns the breakpoint id (needed to delete it). Give either `uri` (a full ADT source URI) or `object`+`type` (+`include` for classes) with `line`. SCOPE: an external breakpoint traps HTTP/ICF (Fiori, OData, ADT), RFC and background sessions — NOT your own SAP GUI dialog session, so starting the report from SE38 with F8 traps nothing and opens no debugger. To debug dialog-only code, wrap it in an IF_OO_ADT_CLASSRUN class that runs it inside the ICF session: `SUBMIT <r…
adt_debug_set_variableSet a variable's value in the attached debuggee (Phase 3). WRITE — refused under read-only mode. Changes live session state; use with care on shared/production-adjacent systems.
Show 44 more tools
adt_debug_set_watchpointSet a debugger watchpoint that breaks when a variable changes (or a condition holds). Phase 3, WRITE — refused under read-only mode. NOTE: the watchpoint request/response contract has no reference implementation and is best-effort until validated on a live system; check `raw`.
adt_debug_stackReturn the call stack of the currently attached debuggee (after adt_debug_listen caught one).
adt_debug_stepAdvance the attached debuggee (Phase 2, flow control). `kind`: into (step into), over (step over), return (step out), continue (resume until the next breakpoint), runToLine / jumpToLine (need `uri`), terminate (stop the debuggee). WRITE — refused under read-only mode. Returns the new state (position, reached breakpoints) plus raw XML. A `continue` that lets the run finish answers `status: "debuggeeEnded"` — that is success (the debuggee resumed, the triggering request returned), not an error.
adt_debug_stopEnd the debug session: release the attached debuggee (stepContinue), then delete this process's listener and every breakpoint it set. Call when finished (or to reset after an error) so no dangling breakpoints/listeners are left on the system and no suspended request is left hanging.
adt_debug_variablesRead variable values from the currently attached debuggee. Pass `names` (variable names/ids in scope, e.g. ['sy-subrc','lv_total']); omit to read the top-level scope roots.
adt_delete_objectDelete an ABAP object. Acquires a lock and issues DELETE. Refused under read-only mode.
adt_get_dumpFetch the full detail of one ABAP short dump by id. Performs two requests: a metadata XML lookup (runtime error, program, links to dump text) followed by a fetch of the formatted dump text from the link returned by SAP. Returns the metadata plus a chapter map (shortText, whatHappened, errorAnalysis, howToCorrect, whereTerminated, sourceCodeExtract, …). Pass chapters: ['key', …] to limit the response to specific chapters; set full: true to also include the raw dump text (typically 100KB+).
adt_get_noteFetch SAP Note metadata (title, component, version, type, implementation prerequisites) via the Note Assistant ADT API. EXPERIMENTAL — only available on systems shipping the SNOTE ADT plug-in (modern S/4HANA). On systems without it the response carries available:false and a hint to use GUI SNOTE.
adt_get_sourceFetch the ABAP source of an object (program, class, interface, function module, include, CDS, table). Returns plain text. DDIC primitives without plain-text source (data element, domain, message class) return their ADT XML metadata instead (format: 'xml'). For sources larger than the MCP per-call output cap (~64 KB), use firstLine/lastLine to paginate or onlyMethod to slice a single method body — or pass `outputFile` to write the full source straight to disk (then edit it and write it back with adt_set_source `sourceFile`, keeping large objects entirely off the agent's I/O path).
adt_get_transportFetch detail of a single transport request (header + included objects).
adt_grep_sourceFull-text regex search across ABAP source. Complements adt_search_objects (which only matches names). Scope the search to a package (optionally recursive), a transport request, or an explicit object list. Fetches /source/main for each source-bearing object (programs, classes, interfaces, includes, CDS/DDLS, DCLS, DDLX, behavior definitions) and returns matching lines as object + line + text. DDIC primitives (tables, data elements, domains) and function groups are skipped (no single source document). Bounded by maxObjects and maxMatches — large packages are truncated, not silently capped.
adt_implement_noteImplement (download + apply) a SAP Note via the Note Assistant ADT API. WRITE operation — subject to read-only mode and requires a transport. EXPERIMENTAL and potentially disruptive: implementing a note changes system objects. Only available on systems shipping the SNOTE ADT plug-in. Prefer GUI SNOTE for anything non-trivial.
adt_list_dumpsList ABAP short dumps (ST22) from the runtime-dumps Atom feed. Each entry exposes id, runtime error name, terminated program, timestamp, user, and any release-specific rba:*/dump:* fields surfaced by the system. The server-side row cap is unreliable across releases (some ignore it) — adt_list_dumps trims to maxResults on the client too. Use adt_get_dump with an id for the full dump text.
adt_list_inactive_objectsList the inactive objects worklist for the connected user (the ADT 'Inactive Objects' view — what has been edited but not yet activated). Returns each object with its type and, where available, the transport it sits in. An empty list means everything is activated.
adt_list_locksList runtime enqueue locks (the SM12 analog). NOTE: most ABAP systems do NOT expose SM12 runtime enqueues over ADT REST — in that case the response carries available:false and a hint to use SM12. This is distinct from the editing lock acquired by adt_lock (a single object) and from DDIC lock-object definitions.
adt_list_packagesDescription is built at runtime.
adt_list_released_apisList the API release-state contracts the system defines — the catalog used to classify released objects (e.g. USE_IN_KEY_USER_APPS = C1, ADD_CUSTOM_FIELDS = C0), each with its compatibility-contract description. This is the released-API classification catalog, not a per-object enumeration (object-level released-API listing requires the release-dependent RIS search facet). Backed by repository/informationsystem/releasestates.
adt_list_systemsList configured SAP systems available for ADT calls, the default system, and read-only flags.
adt_list_transportsList transport requests visible to the configured user. Filter by user (requestor) and / or status (modifiable / released). Endpoint shape may vary across NetWeaver releases — falls back to adt_request if your system uses a different path.
adt_list_versionsList the version history of an object via the ADT versions sub-resource ({objectUri}/versions). NOTE: many on-prem NetWeaver releases do not expose a version-history REST endpoint and return 404 — in that case use adt_compare_versions to diff active vs inactive instead. The response carries available:false with a hint when the endpoint is absent.
adt_lockAcquire a stateful lock on an ABAP object. Returns a lockHandle to reuse across multiple adt_set_source calls. On CTS conflicts the error includes longText and t100 details (which TR is blocking, who owns it) so the caller can recover.
adt_pingPing a configured SAP system by calling the ADT discovery endpoint. Use to verify credentials and network reachability.
adt_pretty_printRun the ABAP pretty printer on supplied source code (stateless — no object lookup, no lock).
adt_rap_scaffoldGenerate a complete RAP stack from a short spec: CDS root view entity → behavior definition (managed) → behavior implementation class → service definition → service binding. DEFAULTS TO dryRun:true — returns the planned object names and generated source for review WITHOUT creating anything. Set dryRun:false to actually create them in dependency order (subject to read-only mode; requires a transport for non-local packages). The service binding is always plan-only (its publish step is not automated). Built on the same create primitives as adt_create_object.
adt_read_spoolRead the output (spool list) of a background job / spool request (SP01 analog). EXPERIMENTAL — see adt_schedule_job for availability constraints; returns available:false on systems without an ADT spool service.
adt_read_tableExecute an OpenSQL SELECT against the SAP database via the ADT Data Preview endpoint. Read-only by design (SELECT only — INSERT/UPDATE/DELETE rejected client- and server-side). Returns structured { columns, rows }. Use ABAP OpenSQL syntax: 'SELECT matnr matkl FROM mara WHERE matnr LIKE \'M%\''. Row count capped at maxRows (default 100, hard cap 5000). Requires NetWeaver 7.55+ or S/4HANA — older systems may not expose this endpoint.
adt_release_transportRelease a transport request. Subject to read-only mode.
adt_report_issueFile a bug or enhancement about a sap-adt-mcp TOOL back to the maintainer. The report is redacted (hosts, users, passwords, IPs, emails stripped), de-duplicated, and becomes a GitHub issue. Use this for defects the automatic crash reporter cannot see: wrong data in an otherwise-successful response, a parameter that is silently ignored, or a missing capability. Do NOT use it for problems in the user's ABAP code or SAP system — only for defects in this MCP server's own tools.
adt_requestGeneric ADT REST call — escape hatch for endpoints not covered by a high-level tool. Handles Basic auth, sap-client, cookies, CSRF token automatically. Path is confined to the /sap/bc/adt/ namespace.
adt_run_atcRun ABAP Test Cockpit (ATC) on one or more objects. ATC endpoint shape varies across NetWeaver releases.
adt_run_atc_packageRun ABAP Test Cockpit (ATC) over an ENTIRE package via the full ADT worklist flow (create worklist → run → fetch results). Returns parsed findings (check, message, priority, location) plus a priority histogram and the worklist id. When checkVariant is omitted, the system default check variant from ATC customizing is used. This is the bulk counterpart to adt_run_atc (single object).
adt_run_atc_transportRun ABAP Test Cockpit (ATC) over every object in a transport request via the full ADT worklist flow. Resolves the transport's object references, runs ATC against them, and returns parsed findings + priority histogram + worklist id. When checkVariant is omitted, the system default check variant is used.
adt_run_unit_testsRun ABAP Unit tests for one or more objects (typically test container classes).
adt_schedule_jobSchedule an ABAP background job (SM36 analog) that runs a report with a variant. WRITE operation — subject to read-only mode. EXPERIMENTAL: no standardized ADT job-scheduling API exists on classic NetWeaver; on systems without an extension service the response carries available:false. Prefer SM36 for anything important.
adt_search_objectsQuick-search the ABAP repository for objects whose name matches a pattern. Use '*' as wildcard.
adt_set_sourceReplace the ABAP source of an object. The new source is the FULL text of the include — it ATOMICALLY REPLACES the entire include on the server. Passing a partial chunk or diff will delete the rest of the include. Supply the source inline via `source`, OR — for a large object that would blow the per-call I/O cap — via `sourceFile` (a local path the MCP process reads itself). Orchestrates lock → PUT → unlock automatically. Requires read-only mode to be off for the target system.
adt_set_source_chunkedReplace ABAP source incrementally for files larger than the MCP per-call I/O cap. Caller acquires a lock with adt_lock, then sends the source in N chunks (chunkIndex 0..N-1) under a stable bufferId, and finally commits with commit=true to trigger the actual PUT. The chunks accumulate in server-side memory (10-minute TTL, 4 MB total cap per buffer). Same partial-source guard as adt_set_source applies at commit time.
adt_syntax_checkRun an ADT syntax check on an object. Returns the raw <chkrun:reports> XML. Includes only compile in the context of a main program: for type=include, pass `context` (the main program / function group), otherwise the check returns status='notProcessed'. When omitted for an include, the tool tries to auto-resolve the include's first main program.
adt_system_infoIdentify the connected SAP system: product (S/4HANA version, ECC or plain NetWeaver), SAP_BASIS release and SP level, and whether the ABAP Cloud development model is available (SAP_BASIS ≥ 7.57). Read-only — derived from table CVERS (installed software components) via the same Data Preview endpoint as adt_read_table, so it needs NetWeaver 7.55+ / S/4HANA. Call it before choosing release-sensitive guidance (Clean Core vs classic ABAP) or a release-dependent ADT endpoint.
adt_transport_diffDiff every object listed in a transport between two systems. Capped at maxObjects (default 50).
adt_transport_queueWhere is a transport request right now? Reads the request header (E070: status, owner, target) and the tp action log (TPALOG: export, forward into a follow-on import buffer, import steps with return codes) on one or more configured systems, and summarizes per target system: exported, in-import-queue, imported, imported-with-errors or import-aborted. Pass `systems` with every system of the route (e.g. ['DEV','QAS','PRD']) for the full picture — each system only logs the tp steps that touched it. Read-only (Data Preview SELECTs; NetWeaver 7.55+ / S/4HANA). The TMS buffer file itself is not reach…
adt_unlockRelease a stateful lock previously acquired with adt_lock.
adt_value_helpF4-style value help for a DDIC field, data element or domain: the domain's fixed values (with texts, DD07L/DD07T) and/or the contents of its check table / value table, joined with the text table in the requested language. Pass exactly one of `domain`, `dataElement`, or `table` + `field`. Read-only (Data Preview SELECTs on DDIC tables; needs NetWeaver 7.55+ / S/4HANA). Search helps (SE11 elementary/collective) are not evaluated — when a field has neither fixed values nor a check table the result says so.
adt_where_usedWhere-used list for an object. Returns the references that point to it. Widely-used objects can have thousands of references, so the list is capped at `maxResults` (default 200) — `numberOfResults` always reports the backend's full count and `truncated` says whether the list was cut. The result also carries `request` (method, url, headers, body) so the underlying ADT call can be replayed by hand.
Signals
- Stars
- 20
- Forks
- 4
- Open issues
- 1
- Contributors
- 1
- Last commit
- Oct 9, 2026 (21 days ago)
- Last release
- Oct 9, 2026 (21 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.yzonur/sap-adt-mcp- Version
- 0.8.57
- Auth
- No auth
- Packages
- npm sap-adt-mcp
- License
- MIT
- Repository
- github.com/yzonur/sap-adt-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
Sap Adt MCP. Agent Mart. https://agentmart.dev/connectors/yzonur-sap-adt-mcp (last updated 2026-10-24)