Abap Adt MCP server
ABAP development from Claude and other MCP hosts: source, transports, tests, ATC, debugger
9 stars305 downloads/wk
Reviews
Write oneNobody has reviewed Abap Adt yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Abap Adt tools (100, 10 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
abapDocumentationABAP keyword documentation (the F1 help) as plain text. Two ways to ask: (a) keyword: a statement or addition such as "SELECT SINGLE", "WITH PRIVILEGED ACCESS", "LOOP AT GROUP BY" (the server builds the context for you); (b) cursor: objectUri, body (the source; fetched from objectUri when omitted), line and column of the element to explain. Long documents are paged with startLine/maxLines.
activateByNameActivate a single ABAP object by name and URL. Run after setObjectSource (and unLock); after activation run unitTestRun to verify behavior.
activateObjectsActivate ABAP objects using object references. Run after setObjectSource; the entries returned by inactiveObjects can be passed here directly. For a single object, activateByName is simpler.
activatePackageActivate every inactive object of a package (and its sub-packages) in one activation request, the way RAP stacks (CDS, behavior definition, service definition, classes) must be activated together. Returns the activation messages and what is still inactive afterwards.
adtCompatibilityGraphRetrieves the ADT compatibility graph.
adtCoreDiscoveryPerforms ADT core discovery. Returns a list of core discovery collections. For large systems, use startIndex/maxItems to page through the list instead of retrieving it all at once.
adtDiscoveryPerforms ADT discovery. Returns a list of discovery collections. For large systems, use startIndex/maxItems to page through the list instead of retrieving it all at once.
annotationDefinitionsRetrieves the CDS annotation catalog for the system. This can be large; use startIndex/maxItems to page through it instead of retrieving it all at once.
apiReleaseStateRelease state of SAP objects for ABAP Cloud / Clean Core, from SAP's official cloudification repository (released, deprecated with successors, classicAPI, noAPI) plus, when objectUrl is given, the backend's own /sap/bc/adt/apireleases answer. Check APIs before writing cloud code instead of recalling from memory. Pass names as "CL_X", "TABL:MARA", "FUGR:BAPI_..." (comma-separated) or a source to sc
atcApplyQuickfixApply a deterministic quickfix at an ATC finding location: recomputes the proposals (see atcQuickfixProposals), applies the chosen one to the source and writes it back with setObjectSource. Requires the object to be locked (lock returns the lockHandle). Activate afterwards with activateByName and re-run ATC to confirm the finding is gone.
atcChangeContactChanges the contact for an ATC finding.
atcCheckVariantRetrieves information about an ATC check variant.
atcContactUriRetrieves the contact URI for an ATC finding.
atcCustomizingRetrieves ATC customizing information.
atcDocumentationRead the documentation of an ATC check/finding (what the check tests, why it matters, how to fix). Pass the documentation URI found in an ATC finding (atcWorklists → findings[].link / docUri).
atcExemptProposalRetrieves an ATC exemption proposal.
atcQuickfixProposalsList the quickfix proposals available at an ATC finding location. Pass the source URL and position from an atcWorklists finding. Apply a proposal with atcApplyQuickfix. Read-only.
atcRequestExemptionRequests an ATC exemption.
atcSummaryAggregated view of an ATC result: totals by priority, by check and by object, top findings with location and quickfix availability. Pass runResultId from createAtcRun, or mainUrl (+ variant) to run ATC and summarize in one call. mainUrl accepts an object URL, a package URL (/sap/bc/adt/packages/zfin) or a transport URL (/sap/bc/adt/cts/transportrequests/DEVK900123).
atcUsersRetrieves a list of ATC users.
atcWorklistsRetrieves ATC worklists. For runs covering many objects, use startIndex/maxItems to page through the findings-per-object list instead of retrieving it all at once.
cdsViewInfoCDS entity by name in one call: element info (fields with types, associations, extension views, secondary objects) and optionally the DDL source. Pass the entity name (ZI_PRODUCT), not a URL.
checkRepoChecks a Git repository.
classComponentsList class components (methods, attributes, types). For large classes, use startIndex/maxComponents to page through the top-level component list instead of retrieving it all at once.
classIncludesURLs of the includes of a class (main, definitions, implementations, testclasses, macros) to use with getObjectSource/editObjectSource as they are (no /source/main suffix).
codeCompletionGet code completion suggestions
codeCompletionElementRetrieves code completion element information.
codeCompletionFullPerforms full code completion.
collectionFeatureDetailsRetrieves details for a given collection feature.
creatableTypeDetailsList the object types createObject supports, with per-type required fields, label and max name length (SAP-style get_object_type_details). Filter with typeId. For the system-reported creatable catalog see loadTypes.
createAtcRunwrite actionCreates an ATC run. Flow: atcCustomizing (system check variant name) -> atcCheckVariant (returns a worklistId) -> createAtcRun -> atcWorklists (findings). Passing a check variant NAME here also works: it is resolved to a worklistId via atcCheckVariant automatically.
ddicElementRetrieves information about a DDIC element. For complex objects the child element list (fields/associations/secondary objects) can be large; use startIndex/maxItems to page through it instead of retrieving it all at once.
ddicRepositoryAccessAccesses the DDIC repository. This can return a large list of object references; use startIndex/maxItems to page through it instead of retrieving it all at once.
debuggerAttachAttaches the debugger.
debuggerChildVariablesRetrieves child variables of a debugger variable. If the parent is a large structure/table, use startIndex/maxItems to page through the returned child rows instead of retrieving them all at once.
debuggerDeleteBreakpointswrite actionDeletes breakpoints.
debuggerDeleteListenerwrite actionStops a debug listener.
debuggerGoToStackNavigates to a specific stack entry in the debugger.
debuggerListenListens for debugging events.
debuggerListenersRetrieves a list of debugger listeners.
debuggerSaveSettingsSaves debugger settings.
debuggerSetBreakpointsSets breakpoints.
debuggerSetVariableValueSets the value of a debugger variable.
debuggerStackTraceRetrieves the debugger stack trace.
debuggerStepPerforms a debugger step.
debuggerVariablesRetrieves debugger variables. If an inspected parent is a large internal table, use startIndex/maxItems to page through the returned variable list instead of retrieving it all at once.
deleteObjectwrite actionDeletes an ABAP object from the system
dropSessionwrite actionClear local session cache
dumpDetailsFull formatted analysis of one ABAP short dump as plain text (header, what happened, error analysis, where terminated, source extract, variables, call stack). Pass the dumpId from dumps (or the full self link). Page long dumps with startLine/maxLines.
dumpsList recent ABAP short dumps (runtime errors). By default returns a compact summary per dump (runtime error, exception, program, user, time, where it terminated with source URL and line, top of the call stack) instead of the raw HTML. Filter with from/to (timestamps), user, or a substring in program/runtime error. Use dumpDetails(dumpId) for the full analysis of one dump. This is the root-cause pa
exportPackageSourceswrite actionWrite the sources of a package (and sub-packages) to a local directory in abapGit file layout (zcl_x.clas.abap, zcl_x.clas.testclasses.abap, zi_x.ddls.asddls, zrep.prog.abap …) so local tools (grep, editors, code review, documentation pipelines) can work on them. Read-only on SAP; writes only to the given directory (must be absolute; restricted to MCP_EXPORT_ROOT when set). Classes, interfaces, pr
featureDetailsRetrieves details for a given feature.
feedsRetrieves a list of feeds.
findCollectionByUrlFinds a collection by its URL.
findDefinitionFind symbol definition
findObjectPathFind path for an object
fixEditsApplies fix edits.
fixProposalsRetrieves fix proposals.
forceUnlockRelease every lock this server holds on the destination (or one objectUrl). With dropSession=true also drops the SAP session afterwards, which frees locks whose handles are already invalid. Use after failed writes left objects locked.
fragmentMappingsRetrieves fragment mappings.
getDataElementPropertiesRead a DDIC data element: type (domain or built-in), length, field labels (short/medium/long/heading), search help and flags. Pass the data element URL (/sap/bc/adt/ddic/dataelements/zde).
getDomainPropertiesRead a DDIC domain: data type, length, decimals, output settings and fixed values / value table. Pass the domain URL (/sap/bc/adt/ddic/domains/zdom) and optionally version=inactive.
gitCreateRepowrite actionCreates a new Git repository.
gitExternalRepoInfoRetrieves information about an external Git repository.
gitPullRepoPulls changes from a Git repository. For repos with many changed objects, use startIndex/maxItems to page through the list of imported/changed objects returned in the response instead of retrieving it all at once.
gitReposRetrieves a list of Git repositories.
gitUnlinkRepoUnlinks a Git repository.
inactiveObjectsGet list of inactive objects. For systems with many inactive objects across users, use startIndex/maxItems to page through the list instead of retrieving it all at once.
isProposalMessageChecks if a given object is a proposal message.
listLocksList the ADT locks this server currently holds on the destination (object, lockHandle, when, whether acquired automatically). Use it when a write fails with a lock/lockHandle error or before forceUnlock.
loadTypesList the ABAP object types creatable on this system (version-aware). Use BEFORE createObject to pick a valid objtype value such as CLAS/OC. For the raw ADT type catalog see objectTypes.
lockLock an ABAP object for editing and keep the lock across calls. Returns the lockHandle; the server also records it, so setObjectSource/editObjectSource/deleteObject/createTestInclude/atcApplyQuickfix on the same object may omit lockHandle while it is held. Not needed for a single write: those tools lock and unlock by themselves when no lock is held. Always unLock when done.
loginAuthenticate with ABAP system
logoutTerminate ABAP session
mainProgramsRetrieves the main programs for a given include.
nodeContentsRetrieves the contents of a node in the ABAP repository tree. For large packages/namespaces, use startIndex/maxItems to page through the node list instead of retrieving it all at once.
objectEnhancementsEnhancement implementations (implicit/explicit enhancement points, BAdI-free source enhancements) active on an ABAP source object, with optional source of each implementation. Use before editing standard-adjacent code to see what customer enhancements already hook in.
objectRegistrationInfoGet registration information for an ABAP object
objectStructureGet object structure details. For large/complex objects (e.g. classes with many includes), use startIndex/maxItems to page through the structure's top-level array instead of retrieving it all at once.
objectStructureElementsFlat list of the members (methods, attributes, events, types, fields…) of an object with name, type, visibility and flags, cheaper than objectStructure/classComponents when you only need an outline. version=inactive reads the inactive version.
objectTypesRetrieve the ADT object type catalog reported by the system. For picking an objtype to pass to createObject, prefer loadTypes (creatable types).
packageSearchHelpPerforms a package search help.
packageTreePackage hierarchy with its objects in one call: sub-packages (to maxDepth) and, per package, the objects with name, type, URL and description. Cheaper than repeated nodeContents calls; use objectTypes to keep only e.g. CLAS/OC,DDLS/DF.
pushRepoPushes changes to a Git repository.
reentranceTicketRetrieves an SAP reentrance ticket. WARNING: the ticket is a live logon credential and will appear in the conversation/host logs. Disabled unless the server is started with SAP_ALLOW_REENTRANCE_TICKET=1.
remoteRepoInfoRetrieves information about a remote Git repository.
runClasswrite actionRuns a class.
searchObjectSearch for objects
setDataElementPropertieswrite actionWrite a DDIC data element (type, field labels, search help…). Read it first with getDataElementProperties, modify the returned properties/metaData objects and pass them back as JSON. Requires lock (lockHandle) and a transport for transportable packages; activate afterwards with activateByName.
setDomainPropertieswrite actionWrite a DDIC domain (type, length, fixed values, value table…). Read it first with getDomainProperties, modify the returned properties/metaData objects and pass them back as JSON. Requires lock (lockHandle) and a transport for transportable packages; activate afterwards with activateByName.
stageRepoStages changes in a Git repository. For a large initial package push, use startIndex/maxItems to page through the staged/unstaged/ignored object lists instead of retrieving them all at once.
switchRepoBranchSwitches the branch of a Git repository.
syntaxCheckCdsUrlPerform ABAP syntax check with CDS URL
syntaxCheckCodeABAP syntax check of a source against the context of an existing object: url is the source URL of that object (…/source/main), required because the check resolves types and includes in its context; it is not a standalone check of free text. Provide the source in "code" (alias: source), or omit it to reuse the source last read/written for "url" this session. Returns line, offset, severity and text
syntaxCheckTypesRetrieves syntax check types.
typeHierarchyType hierarchy (subtypes or supertypes) of the class/interface at a given source position. Pass the source URL (…/source/main) and the 1-based line/column of the type name; the current source is re-read from SAP unless you pass it in "source". superTypes=true lists the inheritance chain upwards, false (default) lists implementers/subclasses.
unLockUnlock an ABAP object previously locked with lock (requires its lockHandle).
usageReferenceSnippetsRetrieves usage reference snippets (source excerpts) for a list of usage references, e.g. from usageReferences. For large input lists the returned snippets can be large; use startIndex/maxItems to page through the result instead of retrieving it all at once.
usageReferencesFind symbol references (system-wide "where used"). For widely-used symbols this can return hundreds/thousands of hits; use startIndex/maxItems to page through the result instead of retrieving it all at once.
whereUsedWhere-used list by object name: resolves the name with searchObject and returns the usage references (using object, its URL, kind of usage). No URL or source position needed.
Public scan report
scanner v0.1.9 · 2026-09-19 · same rubric, same numbers if you re-run it
- Code scan63 source files scanned20/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 4 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Findings (1)
- mediumeval / new Function used
exec.evaldist/lib/browserLogin.js: …n = browserLogin; const dynamicImport = new Function('specifier', 'return import(specifier)')…
What the publisher says
From the Abap Adt repository's README, as published. We do not edit it. Read it on GitHub
abap-adt-mcp
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 policy block 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.
Table of contents
- What is new in 2.0.0
- Setup
- What to ask the model
- Workflows in detail
- Built-in prompts
- Other ways to install
- Authentication
- Keeping it safe
- Audit log
- S/4HANA Cloud versus on-prem
- Configuration reference
- HTTP transport (optional)
What is new in 2.0.0
Released 2026-09-08. The full list is in CHANGELOG.md; what matters when you upgrade:
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Install directly
Runs npx -y abap-adt-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add abap-adt-mcp -- npx -y abap-adt-mcp
Abap Adt: common questions
- Is Abap Adt MCP server safe?
- Mostly: it is graded B (75/100). Read the Abap Adt safety report
- How do I install Abap Adt?
- It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
- Does Abap Adt need an API key?
- Yes. The registry entry asks for
SAP_SYSTEMS,MCP_HTTP_TOKEN,SAP_PASSWORD,SAP_OAUTH_CLIENT_SECRET. - Is Abap Adt maintained?
- The last commit was 5 days ago (2026-09-16). The latest release is v2.0.0.
- What can I use instead of Abap Adt?
- Servers from other publishers that do the same job: MCP Appium - Mobile Development and Automation Server MCP server.
Alternatives to Abap Adt
Same job from other publishers: the closest match first, then the best rated.
- MCP Appium - Mobile Development and Automation ServerMCP server for Appium mobile automation on iOS and Android devices with test creation tools.not reviewedEstablishedA