# mcp-abap-abap-adt-api

An MCP server that puts SAP ABAP work inside your AI client: object lookup, source edits, transports, debugging. Useful when you develop ABAP and want the agent to touch the system directly.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 205
- Author: mario-andreschak
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/mario-andreschak/mcp-abap-abap-adt-api
- Updated: 2026-09-16
- HTML: https://affpapa.org/en/nevibecode/mcp/mcp-abap-abap-adt-api

## What it does

The server wraps `abap-adt-api` and hands the agent a toolset for SAP: finding objects, reading and writing source, locks, activation, transports, debugging, refactoring, Git and analysis. Everything runs through a single SAP session held by a local stdio client. What that session may read or change is decided by SAP authorizations.

You build it yourself. Node 22.22.2+ or 24.15.0+ is required, then `npm ci` and `npm run build`, and the client launches `node` pointing at the absolute path of `dist/index.js`. Credentials arrive from the MCP client environment: `SAP_URL` is an origin with no path and no embedded login, alongside `SAP_USER` and `SAP_PASSWORD`. With a private CA, set `NODE_EXTRA_CA_CERTS` before Node starts. TLS verification stays on.

One operation runs at a time; anything overlapping gets a busy error. `SAP_REQUEST_TIMEOUT_MS` defaults to 60000 and accepts 100..120000. The client ignores redirects, does not pick up environment proxies, and never retries a mutating call. A write cut short may already have landed in SAP, so check locks and writes, then call `login`, `dropSession` or `logout` to recover. Treat it as a tool for a trusted operator, not a sandbox or a shared service.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `SAP_URL`, `SAP_USER`, `SAP_PASSWORD`, `SAP_CLIENT`, `SAP_LANGUAGE`, `NODE_TLS_REJECT_UNAUTHORIZED` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env SAP_URL=<SAP_URL> --env SAP_USER=<SAP_USER> --env SAP_PASSWORD=<SAP_PASSWORD> --env SAP_CLIENT=<SAP_CLIENT> --env SAP_LANGUAGE=<SAP_LANGUAGE> --transport stdio mcp-abap-abap-adt-api -- npx -y mcp-abap-abap-adt-api
```
Replace <…> with your own values. 1 more environment variable is in the server README

### Codex

**Platform CLI**
```bash
codex mcp add mcp-abap-abap-adt-api --env SAP_URL=<SAP_URL> --env SAP_USER=<SAP_USER> --env SAP_PASSWORD=<SAP_PASSWORD> --env SAP_CLIENT=<SAP_CLIENT> --env SAP_LANGUAGE=<SAP_LANGUAGE> -- npx -y mcp-abap-abap-adt-api
```
Replace <…> with your own values. 1 more environment variable is in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "mcp-abap-abap-adt-api": {
            "command": "npx",
            "args": [
                "-y",
                "mcp-abap-abap-adt-api"
            ],
            "env": {
                "SAP_URL": "<SAP_URL>",
                "SAP_USER": "<SAP_USER>",
                "SAP_PASSWORD": "<SAP_PASSWORD>",
                "SAP_CLIENT": "<SAP_CLIENT>",
                "SAP_LANGUAGE": "<SAP_LANGUAGE>"
            }
        }
    }
}
```
Replace <…> with your own values. 1 more environment variable is in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "mcp-abap-abap-adt-api": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "mcp-abap-abap-adt-api"
            ],
            "env": {
                "SAP_URL": "<SAP_URL>",
                "SAP_USER": "<SAP_USER>",
                "SAP_PASSWORD": "<SAP_PASSWORD>",
                "SAP_CLIENT": "<SAP_CLIENT>",
                "SAP_LANGUAGE": "<SAP_LANGUAGE>"
            }
        }
    }
}
```
Replace <…> with your own values. 1 more environment variable is in the server README

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e SAP_URL=<SAP_URL> -e SAP_USER=<SAP_USER> -e SAP_PASSWORD=<SAP_PASSWORD> -e SAP_CLIENT=<SAP_CLIENT> -e SAP_LANGUAGE=<SAP_LANGUAGE> mcp-abap-abap-adt-api npx -y mcp-abap-abap-adt-api
```
Replace <…> with your own values. 1 more environment variable is in the server README

## When to use it
- locate an ABAP object by class name and get its URI
- pull a program's source and run a syntax check
- push edited code back into the system
- sort out transports when moving changes
- attach the debugger to a running program

## Example prompts
- Find the ABAP class `zcl_invoice_xml_gen_model` and show me its source
- Run a syntax check on the code you just read from the system
- Show transport information for this object

## Similar
- [MCP Toolbox for Databases](https://affpapa.org/en/nevibecode/mcp/googleapis-mcp-toolbox-for-databases.md) — MCP server · ★ 16717
- [PostHog MCP Server](https://affpapa.org/en/nevibecode/mcp/posthog-mcp-server.md) — MCP server · ★ 40409
- [OpenWork MCP Gateway](https://affpapa.org/en/nevibecode/mcp/openwork-mcp-gateway.md) — MCP server · ★ 24242
- [Keploy](https://affpapa.org/en/nevibecode/mcp/keploy.md) — MCP server · ★ 18727
- [Nhost](https://affpapa.org/en/nevibecode/mcp/nhost.md) — MCP server · ★ 9366
- [basebalance.cloud — x402 RPC & MCP gateway](https://affpapa.org/en/nevibecode/mcp/basebalancecloud-x402-rpc-mcp-gateway.md) — MCP server · ★ 7506

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
