ABAP development from Claude and other MCP hosts: read and write source, transports, unit tests, ATC, dumps, debugger. Multi-system, with server-side guard rails.
This ABAP ADT MCP server presents a mixed quality profile. Strengths: all 19 tools have descriptive names following verb-noun conventions (list*, *Profile, login, logout, drop*, classIncludes, classComponents, atc*, etc.), and all visible tools include descriptions ranging from 60-250+ characters. Most tools are domain-appropriate for SAP ABAP development. Significant weaknesses: many tools lack documented input schemas in the source artifacts provided (or schemas are minimally specified with only parameter names and basic types visible); parameter descriptions frequently lack constraint details (enums, ranges, patterns); output schemas are not documented anywhere in the provided code; error handling guidance is absent from tool definitions; parameter interdependencies are not explained (e.g., atcSummary accepts EITHER runResultId OR mainUrl+variant, but this is not clearly stated in parameter descriptions). The atcWorklists tool shows evidence of pagination support (startIndex/maxItems parameters), which is good, but other tools do not declare pagination. Security aspects (credential handling, permission gates) are not visible in tool definitions. The server claims 19 tools but the toolManifest.ts snippet shows only definitions with minimal schema detail, most visible schemas show only basic type info (string, number, boolean, object) without property-level documentation.
Apply 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.
Retrieves information about an ATC check variant.
Retrieves ATC customizing information.
Retrieves an ATC exemption proposal.
List 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.
Requests an ATC exemption.
Output schemas not documented. No tool definition shows what fields the LLM should expect in the response. This forces agents to guess what data is available and plan blind.
Parameter descriptions lack constraint details. For example, 'startIndex' in classComponents and atcWorklists is described as '0-based index' but lacks clarification on default value, bounds, or what happens if out-of-range. Most numeric params lack min/max constraints.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
Aggregated 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).
Retrieves a list of ATC users.
Retrieves 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.
List 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.
URLs of the includes of a class (main, definitions, implementations, testclasses, macros) to use with getObjectSource/editObjectSource as they are (no /source/main suffix).
Creates 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.
Clear local session cache
Health check of the server
Checks if a given object is a proposal message.
List configured SAP systems
Authenticate with ABAP system
Terminate ABAP session
System profile and capabilities
Mutually exclusive parameters not documented. atcSummary accepts EITHER runResultId OR (mainUrl + variant), but parameter descriptions do not state this dependency. LLMs may pass both or neither, causing errors.
Pagination support incomplete. atcWorklists and classComponents support startIndex/maxItems, but other list/search tools (atcUsers, atcCustomizing) do not declare pagination. Unclear if they return unbounded results or auto-limit.
No error recovery guidance in tool descriptions. Tools like login, atcApplyQuickfix (destructive), and createAtcRun provide no hints on what could fail or how to recover. LLMs cannot self-correct.
Destructive/sensitive operations lack idempotency or confirmation patterns. dropSession, atcApplyQuickfix, and atcRequestExemption are marked destructive/write but no description mentions dry-run, confirmation, or idempotency guarantees.
Parameter type schema incomplete in source. Most tools show Input as basic JSON ({type:string}, {type:number}, {type:object}) without nested property documentation or enum constraints. classIncludes alias support (className, classUrl) is mentioned in description but not formalized in schema.
Credential/session handling not visible in tool definitions. login/logout/dropSession presumably manage authentication, but no parameter descriptions explain where credentials come from (environment? parameters?) or how sessions persist server-side.
atcApplyQuickfix locks/unlocks object but lockHandle parameter is optional; unclear what happens if omitted. Description says 'let the server lock/unlock around the write' but no guarantee of atomicity or error handling if lock fails.