abap-adt-mcp
ABAP development from Claude and other MCP hosts: read and write source, transports, unit tests, ATC, dumps, debugger. Multi-system, with server-side guard rails.
Install / Use
claude mcp add williansaez -- npx -y github:williansaez/abap-adt-mcpIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Development & EngineeringSupported Platforms
Tags
Our assessment of abap-adt-mcp
abap-adt-mcp scores 75/100 on our quality scale, 3319th of 4,529 Development & Engineering skills we index.
Its MCP Server is 41 KB long, well organised into 22 sections with 6 code examples: long enough that it reads more like full documentation than a focused instruction file, which agents can find harder to follow.
It has 10 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated yesterday, so abap-adt-mcp is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 97/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands.
Automated pattern scan on 2026-10-01. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
abap-adt-mcp compared with similar skills
All 4 of these similar skills score higher than abap-adt-mcp; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| abap-adt-mcp (this skill)by williansaez | 75 | 10 | 1d ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 87.2k | 16d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.2k | today | CLAUDE.md |
| rufloby ruvnet | 100 | 73.6k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.2k | today | CLAUDE.md |
Frequently asked questions
- How do I install abap-adt-mcp?
- Run
claude mcp add williansaez -- npx -y github:williansaez/abap-adt-mcp. The install tabs above show the steps for each supported agent. - Which AI agents does abap-adt-mcp work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is abap-adt-mcp safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. It is MIT-licensed and scores 97/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is abap-adt-mcp still maintained?
- The repository was last updated yesterday, so abap-adt-mcp is actively maintained.
Skill content
View source on GitHubabap-adt-mcp
Let Claude read, write, test and check ABAP code on your SAP systems.
English · Português (Brasil) · Deutsch · Project site
You type a sentence in Claude. You get back an activated class, green unit tests and a transport number. abap-adt-mcp is the server in between: a Model Context Protocol server that gives Claude Desktop, Claude Code, VS Code or any other MCP host the same ADT services Eclipse uses, on every SAP system you configure, S/4HANA Cloud and on-prem alike. 173 tools, one process, and guard rails the server enforces itself: a destination marked read-only refuses every write before it reaches SAP, whatever the host approves.
See it in motion. The project site has seven short films, the setup in three steps and what to ask the model.
Before you connect a production system
- The model acts as your SAP user and can do nothing Eclipse would refuse you. What it reads (source, dumps, table rows where you open them) is sent to the model.
- A destination without a
policyblock is writable in every package your user may edit; table data stays closed until you open it.- Recommended: development and test systems only. If a production destination must exist, give it the
PRDpolicy of step 4: the server enforces it before any SAP call, whatever the host approves, so a careless prompt cannot write where the policy forbids it (For administrators).
See it work

That is the whole idea. You type a sentence. The model picks the tools, the server locks the object, writes, activates and unlocks it, and the unit tests come back green with a transport number attached. Ask for the same change on a production system and the answer is policyDenied before a single SAP call goes out: the guard rails live in the server, not in the chat window.
Seven short films show this and the single jobs behind it, a short dump traced to its line, an ATC run with its quickfixes, a transport review, a class created with its test, an ABAP Cloud readiness check. They are on the project site.
Table of contents
- See it work
- Setup
- What to ask the model
- For administrators
- Authentication
- S/4HANA Cloud versus on-prem
- Other ways to install
- Configuration
- Tool catalog
- Compared with SAP's official ADT MCP Server
- SAP API Policy
- Troubleshooting
- Testing and contributing
- Credits
- License
Setup
Three prerequisites:
- Node.js 22.12 or newer (22 or 24 LTS) from nodejs.org. On a managed laptop the ticket to IT is one line: "Please install Node.js LTS (22 or newer)"; nothing else needs installing.
- Access to the SAP system, the same as for Eclipse ADT: on S/4HANA Cloud the developer business role (
SAP_BR_DEVELOPERin the standard delivery); on-prem, ask your Basis team for the/sap/bc/adtservice inSICFand the usual ADT authorizations. - A Chromium browser (Chrome, Edge or Brave) for the browser login (
authType: sso, the default); not needed forbasic,oauthorsso2.
1. Describe your SAP systems
Create the folder .abap-adt-mcp in your home directory and the file systems.json inside it, one entry per system (a "destination"):
- Windows: the folder is
C:\Users\<your user name>\.abap-adt-mcp. Paste the JSON into Notepad and in Save As set "Save as type" to "All files" and the name tosystems.json, otherwise Notepad savessystems.json.txtand the server finds nothing. - macOS: the folder is
/Users/<you>/.abap-adt-mcp(Finder, Shift-Cmd-G,~); any editor.
{
"DEV": {
"url": "https://myXXXXXX.s4hana.cloud.sap",
"client": "080",
"authType": "sso",
"default": true,
"policy": { "allowedPackages": ["ZFIN"] }
}
}
DEVis your name for the system and the word you will use in chats;"default": truelets you omit it.url: the address you open the launchpad or Eclipse with, without a path.client: the client your SSO session logs on to (About in the launchpad's user menu shows it). A wrong client shows up later as "not authorized" on objects you can open in Eclipse.authTypedefaults tosso: a browser window opens once for the login, like Eclipse ADT. Other modes: Authentication.policy.allowedPackages: the packages the model may write to, exact names or patterns (ZFIN,Z*). Leave it out and every package you can edit in Eclipse is writable; start with one.
Production and on-prem systems come in step 4, after the first successful call.
2. Register the server in your host
The package is on npm as abap-adt-mcp; npx fetches it. Claude Desktop, no terminal: first block. Claude Code: one command. VS Code, Cursor and others: pointer below. Every entry passes the server two settings: SAP_SYSTEMS_FILE (where systems.json is) and MCP_TOOLSETS=focused, which publishes the 114 everyday development tools instead of all 173 so the tool schemas do not eat the chat's context (drop it when you need the debugger, traces, abapGit, RAP or refactoring).
Claude Desktop, no terminal needed:
- Settings > Developer > Edit Config opens the folder that holds
claude_desktop_config.json; open the file in Notepad or any editor. If Settings has no Developer tab, your Claude Desktop is managed by IT: ask them to add the entry below. - If the file already contains
"mcpServers", add only the"abap-adt-mcp"entry inside it; if it is empty, paste the whole block. - Replace
<you>with your user name (macOS:/Users/<you>/.abap-adt-mcp/systems.json). The forward slashes in the Windows path are deliberate: JSON needs\\for every backslash, forward slashes need nothing. - Quit and reopen the app.
{
"mcpServers": {
"abap-adt-mcp": {
"command": "npx",
"args": ["-y", "abap-adt-mcp"],
"env": { "SAP_SYSTEMS_FILE": "C:/Users/<you>/.abap-adt-mcp/systems.json", "MCP_TOOLSETS": "focused" }
}
}
}
Claude Code, one line in a terminal (-s user registers the server for every project, not only the current folder):
claude mcp add -s user abap-adt-mcp -e SAP_SYSTEMS_FILE=$HOME/.abap-adt-mcp/systems.json -e MCP_TOOLSETS=focused -- npx -y abap-adt-mcp
The same on Windows PowerShell:
claude mcp add -s user abap-adt-mcp -e SAP_SYSTEMS_FILE=$env:USERPROFILE\.abap-adt-mcp\systems.json -e MCP_TOOLSETS=focused -- npx -y abap-adt-mcp
VS Code with GitHub Copilot: the same entry in .vscode/mcp.json under a top-level servers key instead of mcpServers; docs/HOSTS.md has the file as tested, with ${input:} for secrets.
- Cursor, Cline, Windsurf, the Copilot CLI and Eclipse: docs/HOSTS.md.
- Keep the key
abap-adt-mcp: it is the name the host shows, the prefix of every tool, and what this project's agent skills look for.
3. Say hello
Open a new chat and type (replace DEV with the key you chose; the class is standard SAP, so the prompt is read-only and safe on any system):
List my SAP systems, log in to DEV and show me the source of class CL_ABAP_CHAR_UTILITIES.
A browser window opens for the SSO login (tick "stay signed in" and later logins are silent); the model then calls listSystems, searchObject and getObjectSource, and the reply names your destinations and ends with the class source. The host asks before running a tool you have not approved permanently: that dialog is a courtesy of the host, the policy block is the guarantee. If the server does not appear in the host, Troubleshooting names the log to read.
Two things worth knowing before the first edit:
- A write the policy forbids comes back as a refusal, not as a silent no-op:
kind: "policyDenied",Policy: setObjectSource blocked on destination PRD (readOnly). - Every change the model makes is on your transport and in the object's version history:
objectDiffandrevisionsshow it, and nothing leaves DEV without a transport release you approve.
4. Add production and on-prem systems
The same file with a production entry and an on-prem entry (systems.example.json has every option):
{
"DEV": {
"url": "https://myXXXXXX.s4hana.cloud.sap",
"client": "080",
"authType": "sso",
"default": true,
"policy": { "allowedPackages": ["Z*"] }
},
"PRD": {
"url": "https://myYYYYYY.s4hana.cloud.sap",
"client": "100",
"authType": "sso",
"policy": { "readOnly": true, "allowDataPreview": false, "deniedTools": ["exportPackageSources"] }
},
"ONPREM": {
"url": "https://sap.example.com:44300",
"client": "100",
"authType": "basic",
"user": "DEVELOPER",
"password": "${env:ONPREM_PASSWORD}",
"policy": { "allowedPackages": ["Z*", "$*"] },
"tls": { "ca": "/etc/ssl/corp-ca.pem" }
}
}
- If a production destination must exist,
PRDis its minimum policy:readOnlyrefuses every write, whatever the model is asked;allowDataPreview: falsekeeps table data closed even where the environment opens it for other destinations;deniedToolsclosesexportPackageSources, the one read that copies whole packages to disk. ${env:VAR}reads a secret from the environment, so it never sits in the file; add the variable where the host starts the server:-e ONPREM_PASSWORD=...onclaude mcp add(or export it in the shell that starts Claude Code), a"ONPREM_PASSWORD": "..."line in theenvblock of Claude Desktop, which does not pass your shell environment on. A file with an inline password must be readable by you only (chmod 600 ~/.abap-adt-mcp/systems.jsonon macOS and Linux; on Windows your profile folder is already private); an SSO-only file needs nothing.tls.canames a corporate CA certificate. Verification can be relaxed per destination only (insecureTls: true, announced at startup), never for the whole process.
That is the whole setup. Next: What to ask the model.
What to ask the model
The server is a toolbox the model picks from: ask in plain language and it chooses the sequence.
| Ask | Tools the model reaches for |
|---|---|
| "Explain what method GET_DATA of ZCL_ORDER_SERVICE does." | searchObject, getMethodSource |
| "Where is table ZTABLE still used, and by which programs?" | whereUsed, sourceTextSearch, `grepPac
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
87.2kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.2kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ruflo
73.6k🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, federation, vector RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
CowAgent
47.2kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
