The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the MCP Abap Adt listing page.
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 FLUJO, Claude or 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!
The server is published on npm as mcp-abap-adt and listed in the MCP Registry as io.github.mario-andreschak/mcp-abap-adt, so most MCP clients can install it with a single command.
This guide is designed for beginners, so we'll walk through everything step-by-step. We'll cover:
.mcp.json or the CLI.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/adtNode.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).
Git (or GitHub Desktop) (optional in most cases): We'll use Git to download the project code. You have two options:
Now, let's get the project code and set it up:
The server is published on npm, so you don't need to clone or build anything. Most MCP clients can run it directly with npx:
You'll typically configure this inside your MCP client rather than run it by hand — point the client at the command npx with args ["-y", "mcp-abap-adt"] and supply your SAP credentials as environment variables (SAP_URL, SAP_USERNAME, SAP_PASSWORD, SAP_CLIENT; optionally SAP_LANGUAGE, TLS_REJECT_UNAUTHORIZED). See the integration sections below for and Cline.
To install it globally instead:
Clone the Repository:
Install Dependencies: This downloads all the necessary libraries the project needs. In the terminal, inside the root directory, run:
This might take a few minutes.
Build the Project: This compiles the code into an executable format.
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.)..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 Claude, FLUJO, Cline, etc. 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):
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.
🔍 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.FLUJO is the easiest way to use this server — no cloning, building, or editing JSON config. mcp-abap-adt is a curated Spotlight server, so it installs with a single click:
That's it — FLUJO downloads and runs the npm package for you.
mcp-abap-adt runs over stdio. If you need to reach it over streamable HTTP — for example from another app on your machine or a client that only speaks HTTP — let FLUJO re-host it: install the server in FLUJO as above, then toggle "Expose to external apps" on the server. FLUJO's built-in mcp-proxy then serves it over HTTP at http://localhost:4200/mcp-proxy/mcp-abap-adt, and any HTTP-capable MCP client can connect with a config like:
FLUJO keeps your SAP credentials with the installed server, so the HTTP config itself carries none.
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 mcpServers object in the cline_mcp_settings.json file. The recommended way is to run the published npm package via npx and pass your SAP credentials as environment variables — no local build required:
If you installed from source instead (see Manual Installation), point command at node with an absolute path to the build output, e.g. "args": ["C:/PATH_TO/mcp-abap-adt/dist/index.js"], and configure credentials via the .env file.
Test the Connection:
Claude Desktop can run this server directly via the published npm package.
Open Claude Desktop → Settings → Developer → Edit Config. This opens claude_desktop_config.json. The file lives at:
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.jsonAdd an mcp-abap-adt entry under mcpServers, filling in your SAP credentials:
Save the file and restart Claude Desktop. The ABAP tools appear under the tools (🔨) menu.
Windows tip: if
npxisn't found, set"command": "npx.cmd", or use the full path tonodewith the absolute path todist/index.jsfrom a source install.
Claude Code reads MCP servers from a .mcp.json file in your project root (shared with your team) or from user/project scope via the CLI.
Option A — .mcp.json in your project root:
Because this file is committed to your repo, avoid putting real passwords in it — either use placeholder values that each developer fills in locally, or reference environment variables (Claude Code expands ${VAR} in .mcp.json), e.g. "SAP_PASSWORD": "${SAP_PASSWORD}".
Option B — add it from the CLI:
Add --scope project to write it to the shared .mcp.json, or --scope user to make it available across all your projects. Verify with claude mcp list.
All text-returning tools support the optional startLine and maxLines arguments: GetProgram, GetClass, GetFunctionGroup, GetFunction, GetStructure, GetTable, GetTableContents, GetPackage, GetTypeInfo, GetInclude, SearchObject, GetTransaction, GetCDSView, GetInterface, GetBehaviorDefinition, and GetServiceDefinition. GetTableContents.max_rows and SearchObject.maxResults still limit upstream records; paging independently protects the textual response size.
startLine is a 1-based integer. It defaults to 1.maxLines is an integer from 1 through 100,000. When omitted, the tool requests all remaining lines.content[0].text exactly.content[0].text.autoPaged: true and capped: true.content: "", returnedLines: 0, and hasMore: false.The envelope has this shape:
content is the selected text, totalLines describes the full serialized result, and returnedLines counts source lines consumed. Continue ordinary paging with startLine + returnedLines while hasMore is true. autoPaged appears only when the caller did not request paging. capped means the requested/default range was reduced to meet the final content[0].text UTF-8 byte budget.
If one source line alone exceeds the budget, the envelope also contains truncatedMidLine: true. The returned prefix is UTF-8 safe and does not split a Unicode surrogate pair, but the omitted suffix cannot be recovered with line-based paging. That line counts as consumed; hasMore only indicates whether later source lines exist.
Clients that previously treated every result as raw source should parse content[0].text as JSON whenever they explicitly request paging or when automatic capping returns an envelope. Small unpaged responses remain backward compatible.
The default npm test run is credential-free and skips the live SAP integration suite. Maintainers can opt in by setting RUN_SAP_INTEGRATION=1 before running npm test -- src/index.test.ts.
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 FLUJO, Cline, Claude Desktop, Claude Code, or any other MCP client. Every listed tool also accepts the shared optional startLine and maxLines pagination parameters described above:
| 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 |
GetCDSView | Retrieve CDS view (DDL source) source code. | cds_view_name (string): Name of the CDS view (DDL source name). | @tool GetCDSView cds_view_name=I_CURRENCY |
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 |
GetBehaviorDefinition | Retrieve RAP Behavior Definition (BDEF) source. Requires ~NW 7.54 / S/4HANA. | behavior_definition_name (string): Name of the RAP Behavior Definition. | @tool GetBehaviorDefinition behavior_definition_name=ZMY_ENTITY |
GetServiceDefinition | Retrieve RAP Service Definition (SRVD) source. Requires ~NW 7.54 / S/4HANA. | service_definition_name (string): Name of the RAP Service Definition. | @tool GetServiceDefinition service_definition_name=ZMY_SERVICE |