ABAP Development Tools
STDIOServer for interacting with SAP ABAP systems using Model Context Protocol.
Server for interacting with SAP ABAP systems using Model Context Protocol.
This project provides a server that allows you to interact with SAP ABAP systems using the Model Context Protocol (MCP). Think of it as a bridge that lets tools like Cline (a VS Code extension) talk to your ABAP system and retrieve information like source code, table structures, and more. It's like having a remote control for your ABAP development environment!
This guide is designed for beginners, so we'll walk through everything step-by-step. We'll cover:
Before you begin, you'll need a few things:
An SAP ABAP System: This server connects to an existing ABAP system. You'll need:
https://my-sap-system.com:8000
)100
).SICF
. Your basis administrator can help with this. Specifically, you will need the following services to be active:
/sap/bc/adt
GetTableContents
Tool, you will need the implementation of a custom service /z_mcp_abap_adt/z_tablecontent
. You can follow this guide hereGit (or GitHub Desktop): We'll use Git to download the project code. You have two options:
Node.js and npm: Node.js is a JavaScript runtime that lets you run JavaScript code outside of a web browser. npm (Node Package Manager) is included with Node.js and is used to install packages (libraries of code).
You should see version numbers for both Node.js and npm. If you see an error, Node.js might not be installed correctly, or it might not be in your system's PATH. (See Troubleshooting below).node -v npm -v
Now, let's get the project code and set it up:
To install MCP ABAP Development Tools Server for Cline automatically via Smithery:
npx -y @smithery/cli install @mario-andreschak/mcp-abap-adt --client cline
Clone the Repository:
cd Desktop
git clone https://github.com/mario-andreschak/mcp-abap-adt
cd mcp-abap-adt # Or whatever the folder name is
Install Dependencies: This downloads all the necessary libraries the project needs. In the terminal, inside the root directory, run:
npm install
This might take a few minutes.
Build the Project: This compiles the code into an executable format.
npm run build
Create a .env
file: This file stores sensitive information like your SAP credentials. It's very important to keep this file secure.
.env
(no extension)..env
file in a text editor (like Notepad, VS Code, etc.).SAP_URL=https://your-sap-system.com:8000 # Your SAP system URL
SAP_USERNAME=your_username # Your SAP username
SAP_PASSWORD=your_password # Your SAP password
SAP_CLIENT=100 # Your SAP client
Important: Never share your .env
file with anyone, and never commit it to a Git repository!To be fair, you usually dont usually "run" this server on it's own. It is supposed to be integrated into an MCP Client like Cline or Claude Desktop. But you can manually run the server in two main ways:
To run the server in standalone mode, use the following command in the terminal (from the root directory):
npm run start
You should see messages in the terminal indicating that the server is running. It will listen for connections from MCP clients. The server will keep running until you stop it (usually with Ctrl+C).
This mode is useful for debugging.
This will start the server and output a message like:npm run dev
🔍 MCP Inspector is up and running at http://localhost:5173 🚀
.
This is the URL you'll use to open the MCP inspector in your Browser.Cline is a VS Code extension that uses MCP servers to provide language support. Here's how to connect this ABAP server to Cline:
Install Cline: If you haven't already, install the "Cline" extension in VS Code.
Open Cline Settings:
cline_mcp_settings.json
file. The full path is usually something like: C:\Users\username\AppData\Roaming\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
(replace username
with your Windows username).Add the Server Configuration: You'll need to add an entry to the servers
array in the cline_mcp_settings.json
file. Here's an example:
{ "mcpServers": { "mcp-abap-adt": { "command": "node", "args": [ "C:/PATH_TO/mcp-abap-adt/dist/index.js" ], "disabled": true, "autoApprove": [] } // ... other server configurations ... } }
Test the Connection:
node -v
or npm -v
gives an error:
npm install
fails:
node_modules
folder and running npm install
again.cline_mcp_settings.json
. It must be the correct, absolute path to the root-server
directory, and use double backslashes on Windows.npm run start
to check).cd C:/PATH_TO/mcp-abap-adt/
.env
file.SICF
.This server provides the following tools, which can be used through Cline (or any other MCP client):
Tool Name | Description | Input Parameters | Example Usage (in Cline) |
---|---|---|---|
GetProgram | Retrieve ABAP program source code. | program_name (string): Name of the ABAP program. | @tool GetProgram program_name=ZMY_PROGRAM |
GetClass | Retrieve ABAP class source code. | class_name (string): Name of the ABAP class. | @tool GetClass class_name=ZCL_MY_CLASS |
GetFunctionGroup | Retrieve ABAP Function Group source code. | function_group (string): Name of the function group | @tool GetFunctionGroup function_group=ZMY_FUNCTION_GROUP |
GetFunction | Retrieve ABAP Function Module source code. | function_name (string), function_group (string) | @tool GetFunction function_name=ZMY_FUNCTION function_group=ZFG |
GetStructure | Retrieve ABAP Structure. | structure_name (string): Name of the DDIC Structure. | @tool GetStructure structure_name=ZMY_STRUCT |
GetTable | Retrieve ABAP table structure. | table_name (string): Name of the ABAP DB table. | @tool GetTable table_name=ZMY_TABLE |
GetTableContents | Retrieve contents of an ABAP table. | table_name (string), max_rows (number, optional, default 100) | @tool GetTableContents table_name=ZMY_TABLE max_rows=50 |
GetPackage | Retrieve ABAP package details. | package_name (string): Name of the ABAP package. | @tool GetPackage package_name=ZMY_PACKAGE |
GetTypeInfo | Retrieve ABAP type information. | type_name (string): Name of the ABAP type. | @tool GetTypeInfo type_name=ZMY_TYPE |
GetInclude | Retrieve ABAP include source code | include_name (string): name of the ABAP include` | @tool GetInclude include_name=ZMY_INCLUDE |
SearchObject | Search for ABAP objects using quick search. | query (string), maxResults (number, optional, default 100) | @tool SearchObject query=ZMY* maxResults=20 |
GetInterface | Retrieve ABAP interface source code. | interface_name (string): Name of the ABAP interface. | @tool GetInterface interface_name=ZIF_MY_INTERFACE |
GetTransaction | Retrieve ABAP transaction details. | transaction_name (string): Name of the ABAP transaction. | @tool GetTransaction transaction_name=ZMY_TRANSACTION |