Skip to main content
Glama

DISCLAIMER: This server is still in experimental status, use it with caution!

MCP-ADT

Description

This is a MCP-Server, it's a Model Context Protocol (MCP) server designed to facilitate seamless communication between ABAP systems and MCP clients. It is a wrapper for abap-adt-api and provides a suite of tools and resources for managing ABAP objects, handling transport requests, performing code analysis, and more, enhancing the efficiency and effectiveness of ABAP development workflows.

Related MCP server: SAP BTP ABAP ADT MCP Server

Features

  • Authentication: Securely authenticate with ABAP systems using the login tool.

  • Object Management: Create, read, update, and delete ABAP objects seamlessly.

  • Transport Handling: Manage transport requests with tools like createTransport and transportInfo.

  • Code Analysis: Perform syntax checks and retrieve code completion suggestions.

  • Extensibility: Easily extend the server with additional tools and resources as needed.

  • Session Management: Handle session caching and termination using dropSession and logout.

  • Multiple Connections: Configure several named SAP systems (e.g. DEV, QAS, PRD) and switch between them at runtime with listConnections and switchConnection.

Installation

Prerequisites

  • Node.js: Ensure you have Node.js installed. You can download it from here.

  • ABAP System Access: Credentials and URL to access the ABAP system.

Steps

  1. Allow commands in terminal if needed

    Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
  2. Clone the Repository

    git clone https://github.com/rafaelssclaudio/MCP.git
    cd MCP
  3. Install Dependencies

    npm install
  4. Configure Environment Variables

    An .env.example file is provided in the root directory as a template for the required environment variables. To set up your environment:

    a. Copy the .env.example file and rename it to .env:

    cp .env.example .env

    b. Open the .env file and replace the placeholder values with your actual SAP connection details:

    SAP_URL=https://your-sap-server.com:44300
    SAP_USER=YOUR_SAP_USERNAME
    SAP_PASSWORD=YOUR_SAP_PASSWORD
    SAP_CLIENT=YOUR_SAP_CLIENT
    SAP_LANGUAGE=YOUR_SAP_LANGUAGE

    Note: The SAP_CLIENT and SAP_LANGUAGE variables are optional but recommended.

    Multiple connections (DEV, QAS, PRD, ...)

    The server can hold several SAP connections at once. Declare each one with a name suffix in the format SAP_<FIELD>_<NAME>:

    # Default active connection on startup (optional; first declared otherwise)
    SAP_DEFAULT_CONNECTION=DEV
    
    # --- DEV ---
    SAP_URL_DEV=https://172.16.6.60:44300
    SAP_USER_DEV=YOUR_USER
    SAP_PASSWORD_DEV=YOUR_PASSWORD
    SAP_CLIENT_DEV=100
    SAP_LANGUAGE_DEV=PT
    
    # --- QAS ---
    SAP_URL_QAS=https://172.16.6.60:44300
    SAP_USER_QAS=YOUR_USER
    SAP_PASSWORD_QAS=YOUR_PASSWORD
    SAP_CLIENT_QAS=110
    SAP_LANGUAGE_QAS=PT
    
    NODE_TLS_REJECT_UNAUTHORIZED="0"
    • A connection name is any suffix you choose (DEV, QAS, PRD, S4H, ...). The server discovers connections from every SAP_URL_<NAME> variable found.

    • URL, USER and PASSWORD are required per connection; CLIENT and LANGUAGE are optional.

    • The legacy unsuffixed format (SAP_URL, SAP_USER, ...) is still supported and is registered under the name DEFAULT. You can mix both.

    • The active connection defaults to SAP_DEFAULT_CONNECTION if set, otherwise the first declared connection (legacy DEFAULT wins if present, then names in alphabetical order).

    • Switch connections at runtime with the switchConnection tool and inspect the available ones with listConnections (see Custom Instruction below).

    • Each connection gets its own session/login; switching does not log the others out.

    If you're using self-signed certificates, you can also set:

    NODE_TLS_REJECT_UNAUTHORIZED="0"

    IMPORTANT: Never commit your .env file to version control. It's already included in .gitignore to prevent accidental commits.

  5. Build the Project

    npm run build
  6. Run the Server

    npm run start
  7. Using it with Claude Code

    Install Claude-code in terminal

    npm install -g @anthropic-ai/claude-code

    Let Claude see the MCP ponting to the index.js from the dist where you installed it

    claude mcp add abap-adt --scope user -- node "C:\Users\Rafael\MCP\dist\index.js"

    (or alternatively integrate the MCP Server into VSCode)

Usage

Once the server is running, you can interact with it using MCP clients or tools that support the Model Context Protocol (e.g. Cline). In order to integrate the MCP Server with Cline, use the following MCP Configuration:

    "mcp-abap-abap-adt-api": {
      "command": "node",
      "args": [
        "PATH_TO_YOUR/mcp-abap-abap-adt-api/dist/index.js"
      ],
      "disabled": true,
      "autoApprove": [
      ]
    },

Custom Instruction fo AI use

Use this Custom Instruction to explain the tool to your LLM model:

## mcp-abap-abap-adt-api Server

This server provides tools for interacting with an SAP system via ADT (ABAP Development Tools) APIs. It allows you to retrieve information about ABAP objects, modify source code, and manage transports.

**Working with Multiple Connections:**

The server can be configured with several SAP connections (e.g. DEV, QAS, PRD). One connection is "active" at a time, and every other tool operates against it.

*   **`listConnections`:** Lists all configured connections and shows which one is active.
    *   No parameters.
    *   Returns `{ active, connections: [{ name, url, user, client, language, active }] }` (passwords are never returned).

*   **`switchConnection`:** Changes the active connection. All subsequent tool calls use it until switched again.
    *   `connection`: (string, required) The connection name to activate (e.g. `DEV` or `QAS`, as returned by `listConnections`).
    *   Each connection keeps its own session; you may need to `login` after switching to a connection you haven't used yet.

**Key Tools and Usage:**

*   **`searchObject`:** Finds ABAP objects based on a query string (e.g., class name).
    *   `query`: (string, required) The search term.
    *   Returns the object's URI.  Example: `/sap/bc/adt/oo/classes/zcl_invoice_xml_gen_model`

*   **`transportInfo`:** Retrieves transport information for a given object.
    *   `objSourceUrl`: (string, required) The object's URI (obtained from `searchObject`).
    *   Returns transport details, including the transport request number (`TRKORR` or `transportInfo.LOCKS.HEADER.TRKORR` in the JSON response).

*   **`lock`:** Locks an ABAP object for editing.
    *   `objectUrl`: (string, required) The object's URI.
    *   Returns a `lockHandle`, which is required for subsequent modifications.

*   **`unLock`:** Unlocks a previously locked ABAP object.
    *   `objectUrl`: (string, required) The object's URI.
    *   `lockHandle`: (string, required) The lock handle obtained from the `lock` operation.

*   **`setObjectSource`:** Modifies the source code of an ABAP object.
    *   `objectSourceUrl`: (string, required) The object's URI *with the suffix `/source/main`*.  Example: `/sap/bc/adt/oo/classes/zcl_invoice_xml_gen_model/source/main`
    *   `lockHandle`: (string, required) The lock handle obtained from the `lock` operation.
    *   `source`: (string, required) The complete, modified ABAP source code.
    *   `transport`: (string, optional) The transport request number.

*   **`syntaxCheckCode`:** Performs a syntax check on a given ABAP source code.
    *   `code`: (string, required) The ABAP source code to check.
    *   `url`: (string, optional) The URL of the object.
    *   `mainUrl`: (string, optional) The main URL.
    *   `mainProgram`: (string, optional) The main program.
    *   `version`: (string, optional) The version.
    *   Returns syntax check results, including any errors.

*   **`activate`:** Activates an ABAP object. (See notes below on activation/unlocking.)
    *    `object`: The object to be activated.

*   **`getObjectSource`:** Retrieves the source code of an ABAP object.
    *   `objectSourceUrl`: (string, required) The object's URI *with the suffix `/source/main`*.

**Workflow for Modifying ABAP Code:**

1.  **Find the object URI:** Use `searchObject`.
2.  **Read the original source code:** Use `getObjectSource` (with the `/source/main` suffix).
3.  **Clone and Modify the source code locally:** (e.g., `write_to_file` for creating a local copy, and using `read_file`, `replace_in_file` for modifying this local copy).
4.  **Get transport information:** Use `transportInfo`.
5.  **Lock the object:** Use `lock`.
6.  **Set the modified source code:** Use `setObjectSource` (with the `/source/main` suffix).
7.  **Perform a syntax check:** Use `syntaxCheckCode`.
8.  **Activate** the object, Use `activate`..
9.  **unLock the object:** Use `unLock`.

**Important Notes:**
*   **File Handling:** SAP is completly de-coupled from the local file system. Reading source code will only return the code as tool result - it has no effect on file. Files are not synchronized with SAP but merely a local copy for our reference. FYI: It's not strictly necessary for you to create local copies of source codes, as they have no effect on SAP, but it helps us track changes. 
*   **File Handling:** The local filenames you will use will not contain any paths, but only a filename! It's preferable to use a pattern like "[ObjectName].[ObjectType].abap". (e.g., SAPMV45A.prog.abap for a ABAP Program SAPMV45A, CL_IXML.clas.abap for a Class CL_IXML)
*   **URL Suffix:**  Remember to add `/source/main` to the object URI when using `setObjectSource` and `getObjectSource`.
*   **Transport Request:** Obtain the transport request number (e.g., from `transportInfo` or from the user) and include it in relevant operations.
*   **Lock Handle:**  The `lockHandle` obtained from the `lock` operation is crucial for `setObjectSource` and `unLock`. Ensure you are using a valid `lockHandle`. If a lock fails, you may need to re-acquire the lock. Locks can expire or be released by other users.
*   **Activation/Unlocking Order:** The exact order of `activate` and `unLock` operations might need clarification. Refer to the tool descriptions or ask the user. It appears `activate` can be used without unlocking first.
* **Error Handling:** The tools return JSON responses. Check for error messages within these responses.

## Efficient Database Access

SAP systems contain vast amounts of data.  It's crucial to write ABAP code that accesses the database efficiently to minimize performance impact and network traffic.  Avoid selecting entire tables or using broad `WHERE` clauses when you only need specific data.

*   **Use `WHERE` clauses:** Always use `WHERE` clauses in your `SELECT` statements to filter the data retrieved from the database.  Select only the specific rows you need.
*   **`UP TO 1 ROWS`:** If you only need a single record, use the `SELECT SINGLE` statement, if you can guarantee that you can provide ALL the key fields for the `SELECT SINGLE` statement. Otherwise, use the `SELECT` statement with the `UP TO 1 ROWS` addition. This tells the database to stop searching after finding the first matching record, improving performance. Example:

    ```abap
    SELECT vgbel FROM vbrp WHERE vbeln = @me->lv_vbeln INTO @DATA(lv_vgbel) UP TO 1 ROWS.
      EXIT. " Exit any loop after this.
    ENDSELECT.
    ```
## Checking Table and Structure Definitions

When working with ABAP objects, you may encounter errors related to unknown field names or incorrect table usage.  You can use the following tools to inspect table and structure definitions:

*   **`GetTable`:** Use this tool to retrieve the structure of an ABAP Dictionary table, including its field names and data types. This is helpful for verifying the correct fields to use in your `SELECT` statements.
*    If you need to inspect an include structure, you may need to use `searchObject` to find the include and then use `GetTypeInfo` or `GetStructure`. You may get a 404 error and try again with `GetStructure`
*   **`GetStructure`:** Use this tool to retrieve the structure of an ABAP Dictionary structure, including its field names and data types. This is helpful for verifying the correct fields to use in your `SELECT` statements.
*    If you need to inspect an include structure, you may need to use `searchObject` to find the include and then use `GetTypeInfo` or `GetStructure`.

Available Tools

133 tools
abapDocumentationD

Retrieves ABAP documentation.

Inputs: body (required), line (required), column (required), objectUri (required), +2 more.

activateByNameC

Activate an ABAP object using name and URL

Inputs: objectUrl (required), objectName (required), connection, mainInclude, +1 more.

activateObjectsB

Activate ABAP objects using object references

Inputs: objects (required), connection, preauditRequested.

adtCompatibiliyGraphB

Retrieves the ADT compatibility graph.

Inputs: connection.

adtCoreDiscoveryD

Performs ADT core discovery.

Inputs: connection.

adtDiscoveryD

Performs ADT discovery.

Inputs: connection.

annotationDefinitionsC

Retrieves annotation definitions.

Inputs: connection.

atcCentralResultA

Reads a PERSISTED central ATC result by its display id (from SATC_AC_RESULTH / the ATC Result Browser), returned COMPACT (summary + per-object findings). This is the endpoint for CENTRAL runs — atcWorklists only works for transient worklist tokens and returns empty for central display ids. Findings include itemId/index (needed for exemptions), location with line, processor and lastChangedBy.

Inputs: displayId (required), connection, objectName, maxFindings, +1 more.

atcChangeContactB

Changes the contact for an ATC finding.

Inputs: userId (required), itemUri (required), connection.

atcCheckVariantA

STEP 1 of an ATC run. Opens an ATC worklist for the given check variant and RETURNS a worklistId (a token string), NOT informational text. Feed that returned worklistId into createAtcRun. Use the same check variant the SAP GUI uses, or the system default from atcCustomizing.

Inputs: variant (required), connection.

atcContactUriB

Retrieves the contact URI for an ATC finding.

Inputs: findingUri (required), connection.

atcCustomizingC

Retrieves ATC customizing information.

Inputs: connection.

atcExemptProposalC

Retrieves an ATC exemption proposal.

Inputs: markerId (required), connection.

atcRequestExemptionD

Requests an ATC exemption.

Inputs: proposal (required), connection.

atcUsersC

Retrieves a list of ATC users.

Inputs: connection.

atcWorklistsA

STEP 3 of an ATC run. Retrieves the findings of a completed ATC run, returned COMPACT (summary + per-object findings) to avoid huge payloads. For a central/shared worklist use objectName to filter to a single object.

Inputs: runResultId (required), timestamp, connection, objectName, +3 more.

bindingDetailsC

Retrieves details of a service binding.

Inputs: binding (required), index, connection.

checkRepoC

Checks a Git repository.

Inputs: repo (required), user, password, connection.

classComponentsC

List class components

Inputs: url (required), connection.

classIncludesC

Get class includes structure

Inputs: clas (required), connection.

codeCompletionC

Get code completion suggestions

Inputs: line (required), column (required), source (required), sourceUrl (required), +1 more.

codeCompletionElementC

Retrieves code completion element information.

Inputs: line (required), column (required), source (required), sourceUrl (required), +1 more.

codeCompletionFullC

Performs full code completion.

Inputs: line (required), column (required), source (required), sourceUrl (required), +2 more.

collectionFeatureDetailsC

Retrieves details for a given collection feature.

Inputs: url (required), connection.

createAtcRunA

STEP 2 of an ATC run. Runs ATC over an object/package and returns an object whose id is the runResultId for atcWorklists. IMPORTANT: variant here must be the worklistId returned by atcCheckVariant — NOT the check variant name.

Inputs: mainUrl (required), variant (required), connection, maxResults.

createObjectC

Create a new ABAP object

Inputs: name (required), objtype (required), parentName (required), parentPath (required), +4 more.

createTestIncludeC

Creates a test include for a class.

Inputs: clas (required), lockHandle (required), transport, connection.

createTransportC

Create a new transport request

Inputs: DEVCLASS (required), REQUEST_TEXT (required), objSourceUrl (required), connection, +1 more.

createTransportsConfigC

Creates transport configurations.

Inputs: connection.

ddicElementC

Retrieves information about a DDIC element.

Inputs: path (required), connection, getExtensionViews, getSecondaryObjects, +1 more.

ddicRepositoryAccessC

Accesses the DDIC repository.

Inputs: path (required), connection.

debuggerAttachC

Attaches the debugger.

Inputs: user (required), debuggeeId (required), debuggingMode (required), connection, +1 more.

debuggerChildVariablesA

Retrieves child variables of a debugger variable.

Inputs: parent, connection.

debuggerDeleteBreakpointsC

Deletes breakpoints.

Inputs: ideId (required), breakpoint (required), terminalId (required), requestUser (required), +3 more.

debuggerDeleteListenerB

Stops a debug listener.

Inputs: user (required), ideId (required), terminalId (required), debuggingMode (required), +1 more.

debuggerGoToStackB

Navigates to a specific stack entry in the debugger.

Inputs: urlOrPosition (required), connection.

debuggerListenD

Listens for debugging events.

Inputs: user (required), ideId (required), terminalId (required), debuggingMode (required), +3 more.

debuggerListenersC

Retrieves a list of debugger listeners.

Inputs: user (required), ideId (required), terminalId (required), debuggingMode (required), +2 more.

debuggerSaveSettingsC

Saves debugger settings.

Inputs: settings (required), connection.

debuggerSetBreakpointsD

Sets breakpoints.

Inputs: user (required), ideId (required), clientId (required), terminalId (required), +7 more.

debuggerSetVariableValueB

Sets the value of a debugger variable.

Inputs: value (required), variableName (required), connection.

debuggerStackTraceC

Retrieves the debugger stack trace.

Inputs: connection, semanticURIs.

debuggerStepC

Performs a debugger step.

Inputs: steptype (required), url, connection.

debuggerVariablesB

Retrieves debugger variables.

Inputs: parents (required), connection.

deleteObjectB

Deletes an ABAP object from the system

Inputs: objectUrl (required), lockHandle (required), transport, connection.

dropSessionA

Clear local session cache (keeps STATEFUL mode so object locks still work).

Inputs: connection.

dumpsC

Retrieves a list of dumps.

Inputs: query, connection.

editObjectSourceA

Edits a (possibly LARGE) ABAP object by sending ONLY the snippet to change — the server does the whole read-modify-write: lock → get source → apply edits → syntax check → set source → (optional) activate → unlock. Nothing is written if an edit does not match uniquely or if the syntax check finds errors. Provide edits as string replacements ({oldString,newString[,replaceAll]}) and/or line replacements ({startLine,endLine,newText}).

Inputs: objectSourceUrl (required), edits, activate, newString, +7 more.

extractMethodEvaluateC

Evaluates an extract method refactoring.

Inputs: uri (required), range (required), connection.

extractMethodExecuteC

Executes an extract method refactoring.

Inputs: refactoring (required), connection.

extractMethodPreviewC

Previews an extract method refactoring.

Inputs: proposal (required), connection.

featureDetailsC

Retrieves details for a given feature.

Inputs: title (required), connection.

feedsB

Retrieves a list of feeds.

Inputs: connection.

findCollectionByUrlC

Finds a collection by its URL.

Inputs: url (required), connection.

findDefinitionD

Find symbol definition

Inputs: url (required), line (required), endCol (required), source (required), +4 more.

findObjectPathC

Find path for an object

Inputs: objectUrl (required), connection.

fixEditsD

Applies fix edits.

Inputs: source (required), proposal (required), connection.

fixProposalsC

Retrieves fix proposals.

Inputs: url (required), line (required), column (required), source (required), +1 more.

fragmentMappingsD

Retrieves fragment mappings.

Inputs: url (required), name (required), type (required), connection.

getObjectSourceA

Reads ABAP source. For LARGE objects do NOT read it whole: use search (grep with line numbers + context) to locate statements, or startLine/endLine to read a window. Without those, a very large source is truncated (head only) with totalLines and a hint. Line numbers in the output are display-only — do not include the "NNN: " prefix in editObjectSource.oldString.

Inputs: objectSourceUrl (required), search, endLine, options, +5 more.

getTransportConfigurationB

Retrieves a specific transport configuration.

Inputs: url (required), connection.

gitCreateRepoC

Creates a new Git repository.

Inputs: repourl (required), packageName (required), user, branch, +3 more.

gitExternalRepoInfoB

Retrieves information about an external Git repository.

Inputs: repourl (required), user, password, connection.

gitPullRepoC

Pulls changes from a Git repository.

Inputs: repoId (required), user, branch, password, +2 more.

gitReposC

Retrieves a list of Git repositories.

Inputs: connection.

gitUnlinkRepoC

Unlinks a Git repository.

Inputs: repoId (required), connection.

hasTransportConfigC

Check if transport configuration exists

Inputs: connection.

healthcheckB

Check server health and connectivity

Inputs: connection.

inactiveObjectsC

Get list of inactive objects

Inputs: connection.

isProposalMessageC

Checks if a given object is a proposal message.

Inputs: proposal (required), connection.

listConnectionsA

List all configured SAP connections (e.g. DEV, QAS) and indicate which one is currently active.

Inputs: no named parameters.

loadTypesC

Loads object types.

Inputs: connection.

lockC

Lock an object

Inputs: objectUrl (required), accessMode, connection.

loginC

Authenticate with ABAP system

Inputs: connection.

logoutC

Terminate ABAP session

Inputs: connection.

mainProgramsC

Retrieves the main programs for a given include.

Inputs: includeUrl (required), connection.

nodeContentsC

Retrieves the contents of a node in the ABAP repository tree.

Inputs: parent_type (required), user_name, connection, parent_name, +3 more.

objectRegistrationInfoC

Get registration information for an ABAP object

Inputs: objectUrl (required), connection.

objectStructureC

Get object structure details

Inputs: objectUrl (required), version, connection.

objectTypesC

Retrieves object types.

Inputs: connection.

packageSearchHelpC

Performs a package search help.

Inputs: type (required), name, connection.

prettyPrinterB

Formats ABAP code using the pretty printer.

Inputs: source (required), connection.

prettyPrinterSettingB

Retrieves the pretty printer settings.

Inputs: connection.

publishServiceBindingC

Publishes a service binding.

Inputs: name (required), version (required), connection.

pushRepoC

Pushes changes to a Git repository.

Inputs: repo (required), staging (required), user, password, +1 more.

reentranceTicketD

Retrieves a reentrance ticket.

Inputs: connection.

remoteRepoInfoC

Retrieves information about a remote Git repository.

Inputs: repo (required), user, password, connection.

renameEvaluateC

Evaluates a rename refactoring.

Inputs: uri (required), line (required), endColumn (required), startColumn (required), +1 more.

renameExecuteC

Executes a rename refactoring.

Inputs: refactoring (required), connection.

renamePreviewC

Previews a rename refactoring.

Inputs: renameRefactoring (required), transport, connection.

resetSessionA

RECOVER a broken write session: rebuilds a fresh STATEFUL ADT session for the active connection and re-logs in. Use this (NOT logout) when a lock/edit fails with "stale lock" or "stateful lost" — logout permanently disables the client, resetSession restores it and releases the prior session's locks.

Inputs: connection.

revisionsC

Retrieves revisions for an object.

Inputs: objectUrl (required), clsInclude, connection.

runAtcCheckA

One-shot ATC check: runs the FULL flow (check variant → run → read worklist) for one object/package and returns COMPACT findings. PREFER THIS over calling atcCheckVariant/createAtcRun/atcWorklists separately — it removes the worklistId/runId chaining mistakes. NOTE: this is a TRANSIENT run with the system default treatment; numbers may legitimately differ from a central/baseline worklist shown in SAP GUI.

Inputs: mainUrl (required), variant, connection, maxResults, +3 more.

runClassD

Runs a class.

Inputs: className (required), connection.

runQueryC

Runs a SQL query on the target system.

Inputs: sqlQuery (required), decode, rowNumber, connection.

searchObjectD

Search for objects

Inputs: query (required), max, objType, connection.

setObjectSourceA

Overwrites the FULL source of an object (requires the entire new source + lockHandle). For targeted changes on large objects prefer editObjectSource.

Inputs: source (required), lockHandle (required), objectSourceUrl (required), transport, +1 more.

setPrettyPrinterSettingC

Sets the pretty printer settings.

Inputs: style (required), indent (required), connection.

setTransportsConfigC

Sets transport configurations.

Inputs: uri (required), etag (required), config (required), connection.

stageRepoC

Stages changes in a Git repository.

Inputs: repo (required), user, password, connection.

switchConnectionA

Switch the active SAP connection. All subsequent tool calls use the selected connection until switched again.

Inputs: connection (required).

switchRepoBranchB

Switches the branch of a Git repository.

Inputs: repo (required), branch (required), user, create, +2 more.

syntaxCheckCdsUrlC

Perform ABAP syntax check with CDS URL

Inputs: cdsUrl (required), connection.

syntaxCheckCodeC

Perform ABAP syntax check with source code

Inputs: code (required), url, mainUrl, version, +2 more.

syntaxCheckTypesC

Retrieves syntax check types.

Inputs: connection.

systemUsersB

Retrieves a list of system users.

Inputs: connection.

tableContentsC

Retrieves the contents of an ABAP table.

Inputs: ddicEntityName (required), decode, sqlQuery, rowNumber, +1 more.

tracesCreateConfigurationB

Creates a trace configuration.

Inputs: config (required), connection.

tracesDbAccessC

Retrieves database access information for a trace.

Inputs: id (required), connection, withSystemEvents.

tracesDeleteB

Deletes a trace.

Inputs: id (required), connection.

tracesDeleteConfigurationC

Deletes a trace configuration.

Inputs: id (required), connection.

tracesHitListC

Retrieves the hit list for a trace.

Inputs: id (required), connection, withSystemEvents.

tracesListC

Retrieves a list of traces.

Inputs: user, connection.

tracesListRequestsC

Retrieves a list of trace requests.

Inputs: user, connection.

tracesSetParametersC

Sets trace parameters.

Inputs: parameters (required), connection.

tracesStatementsC

Retrieves statements for a trace.

Inputs: id (required), options, connection.

transportAddUserC

Adds a user to a transport.

Inputs: user (required), transportNumber (required), connection.

transportConfigurationsC

Retrieves transport configurations.

Inputs: connection.

transportDeleteC

Deletes a transport.

Inputs: transportNumber (required), connection.

transportInfoC

Get transport information for an object source

Inputs: objSourceUrl (required), devClass, operation, connection.

transportReferenceC

Retrieves a transport reference.

Inputs: pgmid (required), obj_name (required), obj_wbtype (required), tr_number, +1 more.

transportReleaseD

Releases a transport.

Inputs: transportNumber (required), IgnoreATC, connection, ignoreLocks.

transportsByConfigC

Retrieves transports by configuration.

Inputs: configUri (required), targets, connection.

transportSetOwnerC

Sets the owner of a transport.

Inputs: targetuser (required), transportNumber (required), connection.

unitTestEvaluationC

Evaluates unit test results.

Inputs: clas (required), flags, connection.

unitTestOccurrenceMarkersC

Retrieves unit test occurrence markers.

Inputs: url (required), source (required), connection.

unitTestRunC

Runs unit tests.

Inputs: url (required), flags, connection.

unLockC

Unlock an object

Inputs: objectUrl (required), lockHandle (required), connection.

unPublishServiceBindingB

Unpublishes a service binding.

Inputs: name (required), version (required), connection.

usageReferencesC

Find symbol references

Inputs: url (required), line, column, connection.

usageReferenceSnippetsC

Retrieves usage reference snippets.

Inputs: references (required), connection.

userTransportsC

Retrieves transports for a user.

Inputs: user (required), targets, connection.

validateNewObjectC

Validate parameters for a new ABAP object

Inputs: options (required), connection.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.5/5.0

    Scored across 133 tools

    Disambiguation4/5

    Most tools have distinct purposes with clear descriptions, but overlapping exists among similar workflows (e.g., multiple ATC run methods) and some tools could be confused without careful reading.

    Naming Consistency3/5

    All names use camelCase, but patterns vary: some start with a verb (activateByName), others with a noun (abapDocumentation). Inconsistent verb usage and typos (compatibiliyGraph) reduce consistency.

    Tool Count2/5

    133 tools is excessive for a typical MCP server. While ADT covers many facets, this many tools likely causes clutter and cognitive load for agents, far beyond the recommended 3-15 range.

    Completeness4/5

    The tool set covers a comprehensive range of ABAP development tasks including ATC, debugging, transport, git, refactoring, and object lifecycle. Minor gaps may exist but are difficult to identify given the breadth.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers