mcp-abap-interface-bridge
Facilitates communication with SAP ABAP backend environments leveraging the Model Context Protocol (MCP). This utility server enables external tooling to securely query critical development artifacts, such as source code listings and Data Dictionary schema definitions, acting as a crucial intermediary layer.
Author

mario-andreschak
Quick Info
Actions
Tags
mcp-abap-interface-bridge: Your Conduit to ABAP Development Artifacts (ADT)
This repository furnishes a dedicated server component enabling interaction with SAP ABAP systems utilizing the Model Context Protocol (MCP). Envision this as a necessary intermediary, permitting advanced tooling, such as the Cline extension within VS Code, to interrogate your ABAP landscape and extract metadata like program source, table definitions, and related development entities. It essentially offers remote operational oversight for your ABAP workspace!
This introductory guide is structured sequentially for newcomers, detailing every necessary action:
- Prerequisites Check: Essential requirements before initiation.
- Acquisition and Configuration: Setting up the environment and software.
- Server Initialization: Launching the operational service under various modalities.
- Integration with Cline: Establishing connectivity to the Cline VS Code utility.
- Diagnostic Procedures: Addressing typical failures and resolution pathways.
- Exposed Capabilities: A catalog of callable service functions.
1. Prerequisites Check
Before proceeding, ensure the following components are readily available:
-
An Active SAP ABAP Instance: This server requires connectivity to a live ABAP system, demanding:
- The system's accessible endpoint URI (e.g.,
https://my-sap-system.com:8000). - Valid authentication credentials (user ID and secret).
- The designated SAP client identifier (e.g.,
100). - Confirmation that the ABAP system permits ADT (ABAP Development Tools) connectivity. Typically, this necessitates activation of specific services within the
SICFtransaction code. Consult your system basis administrator. Specifically, the following URI paths must be operational:/sap/bc/adt
- For utilizing the
GetTableContentscapability, the deployment of a custom web service endpoint,/z_mcp_abap_adt/z_tablecontent, is mandatory. Reference this guide for implementation details: here
- The system's accessible endpoint URI (e.g.,
-
Version Control System (Git or GitHub Desktop): Required for downloading the source repository.
- Git: The command-line interface. Acquire Git Here. Select the appropriate build for your OS (Windows, macOS, or Linux) and follow the installation prompts.
- GitHub Desktop: A graphical interface alternative, often simpler for initial setups! Acquire GitHub Desktop Here. Install following the provided instructions.
-
Node.js Runtime and npm Package Manager: Node.js executes JavaScript outside browser contexts. npm manages project dependencies (code libraries).
- Download Node.js Here. Crucially, select the LTS (Long Term Support) distribution. This version prioritizes stability. Execute the installation wizard for your operating system, ensuring npm is included (usually default).
-
Verification Step: After installation, open a new command line interface (CMD on Windows, Terminal otherwise) and execute: bash node -v npm -v
Version numbers should display for both. If an error occurs, Node.js installation may be flawed or its location omitted from the system PATH (Consult Diagnostics).
2. Acquisition and Configuration
We now proceed to obtain and prepare the project assets:
Installation via Smithery
To automatically deploy the MCP ABAP Development Tools Server for Cline via Smithery:
bash npx -y @smithery/cli install @mario-andreschak/mcp-abap-adt --client cline
Manual Acquisition
-
Repository Cloning:
-
Using Git (CLI method):
- Launch your command prompt or terminal.
-
Navigate to your desired storage location (e.g., Desktop): bash cd Desktop
-
Duplicate the repository contents: bash git clone https://github.com/mario-andreschak/mcp-abap-adt
-
Change directory into the newly created project folder: bash cd mcp-abap-adt
-
Using GitHub Desktop:
- Launch GitHub Desktop.
- Select "File" -> "Clone Repository...".
- In the "URL" tab, paste the repository URI.
- Specify a local path for storage on your machine.
- Click "Clone".
-
-
Dependency Fetching: This step retrieves all required external libraries. bash npm install
Allow several minutes for completion.
-
Project Compilation: This transforms the source code into an executable format. bash npm run build
-
Creation of the Configuration File (
.env): This file safeguards confidential system access details. Security is paramount; this file must remain protected.- In the root directory, fabricate a new file named
.env(with no file extension). - Edit this
.envfile using a text editor (like Notepad or VS Code). -
Input the subsequent configuration lines, substituting the bracketed text with your actual SAP parameters: Note: If your secret contains the '#' symbol, enclose the entire password string within quotation marks!
SAP_URL=https://your-sap-system.com:8000 # URI of your SAP instance SAP_USERNAME=your_username # SAP User Identifier SAP_PASSWORD=your_password # SAP Secret SAP_CLIENT=100 # SAP Client Identifier
Critical Warning: Do not share the
.envfile, and absolutely ensure it is excluded from any version control submission (e.g.,.gitignore).
- In the root directory, fabricate a new file named
3. Server Initialization
Generally, direct standalone execution of this server is uncommon, as its primary purpose is to interface with an MCP client such as Cline or Claude Desktop. However, manual activation is possible via two primary operational modes:
- Isolated Mode: Executes the server directly, logging activity to the terminal. It waits passively for client attachments, which may render it functionally inert unless used purely for initial connectivity verification.
- Debugging/Development Mode: Initiates the server alongside the integrated MCP Inspector interface. Opening the specified URL in a web browser allows for interactive API testing.
3.1 Isolated Mode
To activate the server in its standalone configuration, execute the following command within the root directory's terminal:
bash npm run start
Activity messages confirming the server is active and listening for MCP connections will appear. Press Ctrl+C to terminate the process.
3.2 Debugging/Development Mode (With Inspector)
This mode is invaluable for diagnostic work.
-
Launch in Debug Mode: bash npm run dev
The output will include a notification similar to:
🔍 MCP Inspector is up and running at http://localhost:5173 🚀. This address is your entry point into the browser-based inspector.
4. Integration with Cline
Cline is a specialized VS Code extension utilizing MCP servers for enhanced programming language services. Steps to link this ABAP interface bridge:
-
Cline Installation: Install the "Cline" extension within VS Code if it is not already present.
-
Accessing Cline Configuration:
- Open VS Code settings (File -> Preferences -> Settings, or use Ctrl+,).
- Search for "Cline MCP Settings".
- Select "Edit in settings.json". This opens the configuration file, typically located in a user-specific global storage path (e.g.,
C:\Users\username\AppData\Roaming\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json).
-
Server Configuration Entry: Insert a new entry into the
serversarray within your configuration file:{ "mcpServers": { "mcp-abap-adt": { "command": "node", "args": [ "C:/PATH_TO/mcp-abap-adt/dist/index.js" ], "disabled": true, "autoApprove": [] } // ... other server configurations ... } }
-
Connection Validation:
- Cline should attempt automatic linkage. Verify the server's presence in the "MCP Servers" pane (accessible via controls within the Cline extension interface).
- Instruct Cline to retrieve a snippet of source code; it should log an attempt to employ the designated MCP tooling.
5. Diagnostic Procedures
node -vornpm -vyields an error:- Confirm Node.js installation integrity. Consider re-installation.
- Verify that the Node.js installation path is correctly registered in your system's PATH environment variable. (On Windows, use the System Properties dialog to adjust environment variables).
npm installterminates unsuccessfully:- Check active network connectivity.
- Attempt removal of the
node_modulesfolder, followed by re-runningnpm install. - If operating behind a corporate proxy, npm configuration adjustments may be necessary (search for "npm proxy settings").
- Cline fails to establish a session with the server:
- Scrutinize the path definition in
cline_mcp_settings.json. It must be the absolute file system path, utilizing double backslashes on Windows systems. - Confirm server activity via
npm run start. - Restart VS Code.
- Alternatively, for detailed inspection:
- Navigate to the
mcp-abap-adtroot directory in File Explorer. Shift+Right-Click and choose "Open PowerShell window here" (or navigate manually usingcd C:/PATH_TO/mcp-abap-adt/). - Execute
npm install, followed bynpm run build. - Execute:
npx @modelcontextprotocol/inspector node dist/index.js - Access the printed URL in your browser. Click "connect" on the navigation panel.
- Select "Tools" at the top, then "List Tools".
- Select
GetProgram, inputting a known Report name likeSAPMV45Aas the parameter value. - Analyze the resulting output for functional confirmation.
- Navigate to the
- Scrutinize the path definition in
- Errors during SAP Communication:
- Re-confirm credentials within the
.envfile. - Verify the SAP instance is operational and network-accessible.
- Ensure the user account possesses the required authorizations for ADT service consumption.
- Confirm necessary ADT endpoints are active in
SICF. - If facing SSL/TLS certificate validation issues related to self-signed or misconfigured SAP HTTP services, set the environment variable
TLS_REJECT_UNAUTHORIZEDas previously outlined.
- Re-confirm credentials within the
6. Exposed Capabilities
This service exposes the following functions, consumable via Cline or any compliant MCP client:
| Tool Identifier | Function Description | Required Inputs | Example Cline Invocation |
|---|---|---|---|
GetProgram |
Fetches the source textual content of an ABAP Report. | program_name (Textual identifier) |
@tool GetProgram program_name=ZMY_PROGRAM |
GetClass |
Extracts the source code for a specified ABAP Class. | class_name (Textual identifier) |
@tool GetClass class_name=ZCL_MY_CLASS |
GetFunctionGroup |
Retrieves the source content for an ABAP Function Group container. | function_group (Textual identifier) |
@tool GetFunctionGroup function_group=ZMY_FUNCTION_GROUP |
GetFunction |
Extracts the source code for an individual ABAP Function Module. | function_name (Textual), function_group (Textual) |
@tool GetFunction function_name=ZMY_FUNCTION function_group=ZFG |
GetStructure |
Queries and returns the definition of a DDIC Structure. | structure_name (Textual identifier) |
@tool GetStructure structure_name=ZMY_STRUCT |
GetTable |
Retrieves the metadata schema for an ABAP Database Table. | table_name (Textual identifier) |
@tool GetTable table_name=ZMY_TABLE |
GetTableContents |
Fetches data records from an ABAP table. | table_name (Textual), max_rows (Numeric, defaults to 100) |
@tool GetTableContents table_name=ZMY_TABLE max_rows=50 |
GetPackage |
Extracts metadata pertaining to an ABAP Software Component Package. | package_name (Textual identifier) |
@tool GetPackage package_name=ZMY_PACKAGE |
GetTypeInfo |
Retrieves detailed information regarding a specific ABAP data type definition. | type_name (Textual identifier) |
@tool GetTypeInfo type_name=ZMY_TYPE |
GetInclude |
Extracts the source text content embedded within an ABAP Include structure. | include_name (Textual identifier) |
@tool GetInclude include_name=ZMY_INCLUDE |
SearchObject |
Performs a broad search across development objects using wildcard queries. | query (Textual pattern), maxResults (Numeric, defaults to 100) |
@tool SearchObject query=ZMY* maxResults=20 |
GetInterface |
Extracts the source code definition for an ABAP Interface. | interface_name (Textual identifier) |
@tool GetInterface interface_name=ZIF_MY_INTERFACE |
GetTransaction |
Retrieves descriptive details associated with a specified ABAP Transaction Code. | transaction_name (Textual identifier) |
@tool GetTransaction transaction_name=ZMY_TRANSACTION |
