# mcp-abap-adt-ro

Gives an agent read-only access to ABAP repositories through ADT: object analysis, search and repository navigation.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 99
- Author: fr0ster
- License: Apache-2.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/fr0ster/mcp-abap-adt
- Updated: 2026-10-24
- HTML: https://affpapa.org/en/nevibecode/mcp/mcp-abap-adt-ro

## What it does

The server connects to SAP ECC/S/4HANA (on-premise) and SAP BTP ABAP Cloud and exposes read-only tools: where-used, object metadata, repository navigation, structure and dependency analysis. Nothing gets written back — that is the point, since analysis should rest on what the system actually contains rather than on what the model assumes.

It runs through `npx -y @mcp-abap-adt/core-ro`. Auth is destination-based: a service key file sits in the `service-keys` directory, and you pass its filename without the extension as `--mcp=<destination>`. Three options exist — basic over HTTP or RFC, SNC over RFC without a password, and JWT with a browser login. A JWT you already have goes in the `x-sap-jwt-token` header of `mcp-abap-adt-http` / `mcp-abap-adt-sse`. Transports are stdio, HTTP and SSE.

HTTP asks for nothing beyond Node.js 22 or 24. Pick RFC or SNC and you also need the SAP NW RFC library: the 64-bit `sapnwrfc.dll` from SAP GUI on Windows, otherwise the SAP NW RFC SDK. Without it the server will not start in that mode. Legacy BASIS < 7.50 systems are out of scope.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `MCP_ENV_PATH`, `AUTH_BROKER_PATH`, `MCP_BROWSER`, `MCP_BROWSER_AUTH_PORT`, `MCP_UNSAFE`, `SAP_CONNECTION_TYPE`, `SAP_SYSTEM_TYPE`, `SAP_LANGUAGE` — 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 MCP_ENV_PATH=<MCP_ENV_PATH> --env AUTH_BROKER_PATH=<AUTH_BROKER_PATH> --env MCP_BROWSER=<MCP_BROWSER> --env MCP_BROWSER_AUTH_PORT=<MCP_BROWSER_AUTH_PORT> --env MCP_UNSAFE=<MCP_UNSAFE> --transport stdio mcp-abap-adt-ro -- npx -y @mcp-abap-adt/core-ro
```
Replace <…> with your own values. 3 more environment variables are in the server README

### Codex

**Platform CLI**
```bash
codex mcp add mcp-abap-adt-ro --env MCP_ENV_PATH=<MCP_ENV_PATH> --env AUTH_BROKER_PATH=<AUTH_BROKER_PATH> --env MCP_BROWSER=<MCP_BROWSER> --env MCP_BROWSER_AUTH_PORT=<MCP_BROWSER_AUTH_PORT> --env MCP_UNSAFE=<MCP_UNSAFE> -- npx -y @mcp-abap-adt/core-ro
```
Replace <…> with your own values. 3 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "mcp-abap-adt-ro": {
            "command": "npx",
            "args": [
                "-y",
                "@mcp-abap-adt/core-ro"
            ],
            "env": {
                "MCP_ENV_PATH": "<MCP_ENV_PATH>",
                "AUTH_BROKER_PATH": "<AUTH_BROKER_PATH>",
                "MCP_BROWSER": "<MCP_BROWSER>",
                "MCP_BROWSER_AUTH_PORT": "<MCP_BROWSER_AUTH_PORT>",
                "MCP_UNSAFE": "<MCP_UNSAFE>"
            }
        }
    }
}
```
Replace <…> with your own values. 3 more environment variables are in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "mcp-abap-adt-ro": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@mcp-abap-adt/core-ro"
            ],
            "env": {
                "MCP_ENV_PATH": "<MCP_ENV_PATH>",
                "AUTH_BROKER_PATH": "<AUTH_BROKER_PATH>",
                "MCP_BROWSER": "<MCP_BROWSER>",
                "MCP_BROWSER_AUTH_PORT": "<MCP_BROWSER_AUTH_PORT>",
                "MCP_UNSAFE": "<MCP_UNSAFE>"
            }
        }
    }
}
```
Replace <…> with your own values. 3 more environment variables are in the server README

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e MCP_ENV_PATH=<MCP_ENV_PATH> -e AUTH_BROKER_PATH=<AUTH_BROKER_PATH> -e MCP_BROWSER=<MCP_BROWSER> -e MCP_BROWSER_AUTH_PORT=<MCP_BROWSER_AUTH_PORT> -e MCP_UNSAFE=<MCP_UNSAFE> mcp-abap-adt-ro npx -y @mcp-abap-adt/core-ro
```
Replace <…> with your own values. 3 more environment variables are in the server README

## When to use it
- trace every usage of an ABAP object before touching it
- inspect the structure of a class or function module
- map dependencies between objects across the repository
- pull object metadata straight from the system
- judge the impact of a change on related artifacts

## Example prompts
- Show me where class `ZCL_ORDER_HANDLER` is used
- Walk through the structure of function module `Z_GET_PRICE`
- Find every repository object that depends on this CDS view

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119160
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47392
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43872

---
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
