abap-adt-doZimple
English · Español
AI that works on your SAP system with the rules of a senior consultant.
An MCP server by DoZimple that gives AI agents — Claude Code, Kiro or any MCP client — secure, verifiable access to SAP ABAP systems: review code and transport requests, run ATC and ABAP Unit, diagnose incidents, query the official documentation and, where authorized, save changes in the right transport after a human confirms them.
45 tools · 9 functional groups · 3 guided flows · ECC 6.0 (NW 7.50) and S/4HANA
Features · Full tool reference · Security · Threat model · Parity with other SAP MCPs · DoZimple Transport Risk · Credits · Contact
What you can ask
“What does transport DEVK900123 really change, and which objects usually travel with it but are missing?”
“Run ATC on ZDEMO_REPORT, explain the P1 findings with their SAP note and propose the fix SAP offers.”
“Can I use
CONDon this 7.50 system? If not, rewrite the method with compatible syntax and validate it against SAP.”“Last night's billing job failed: dumps, job log and application log, and tell me the probable cause.”
“Is this release of four transports ready for production? Explain it in business terms for the PMO.”
The agent picks the tools, chains them and answers with evidence. Every answer states which system it comes from, and a failure is never presented as an empty result or as success.
Why it is different
Overview
Architecture
flowchart LR
subgraph Client["MCP client (Claude Code, Kiro…)"]
A[AI agent]
end
subgraph Srv["abap-adt-doZimple (stdio, no ports)"]
R["Registry and policy<br/>system · role · capability · module<br/>confirmation · audit"]
T["45 tools + 3 flows"]
K[("OS keychain")]
D["Docs component<br/>(isolated process)"]
end
subgraph SAP["SAP systems"]
DEV["DEV — read and, if authorized, write"]
QAS["QAS / PRD — read only"]
TR["DoZimple Transport Risk<br/>(SAP component)"]
end
A <-->|MCP| R --> T
T -->|ADT over HTTPS| DEV
T -->|ADT over HTTPS| QAS
T -->|ICF service| TR
T --> D
R -.credentials.-> K
D -.filtered queries.-> W[(SAP documentation)]
Features by group
Summary per group; each tool's details — parameters, types, defaults, requirements and credits — are in the full reference (in Spanish).
Code review and transports
Know what a transport really changes and what it may break, before releasing it.
Quality, ATC and remediation
Find, understand and fix findings with SAP's real syntax check and quick fixes.
Repository exploration
Read and understand any ABAP object and its relations, on ECC and S/4HANA.
Data queries
Query tables with ABAP SQL, read-only, with sensitive and personal data protected.
Incident diagnosis
One conversation for what used to take ST22, SM37, SLG1 and /IWFND/ERROR_LOG.
Read-only debugging
See where a program stops and what its values are, without changing anything and only in development.
SAP documentation
Answer from official documentation and check which syntax exists in each release.
Controlled writes
Save changes only in development, in the right transport, previewed and confirmed by a human.
DoZimple Transport Risk
Decide whether a whole release can go to QA or production, with the why in business terms.
Operations and growth
See what works on each system and decide the next tool with data.
Guided flows
They show up as commands in the MCP client (in Claude Code: /mcp__abap-adt-doZimple__<name>) and chain the tools
with the working rules of a senior consultant.
DoZimple Transport Risk
The most valuable module for operations: before releasing, it tells whether a transport or a whole release can go to QA or production, and why not, in three layers — a business verdict for the PMO, what to review for the consultant, and release actions for Basis.
- Whole releases, not single transports: what travels in one transport covers the others; it computes the import sequence and detects mutual dependencies and collisions between transports.
- What breaks silently: positional access to structures that change, code and dictionary dependencies that don't travel and don't exist on the target, version drift.
- The real state of the landscape: target import queue, CTS locks, transports of copies that drag other people's changes, import health and the objects that fail most.
- Evidence for change management audits.
It works on any ABAP stack with CTS (ECC and S/4HANA) and is read-only on every system. It requires a proprietary DoZimple SAP component (ICF service in development and read-only RFCs on the targets), which is not distributed in this repository.
Want it in your landscape? → dozimple.cl
Security
Designed to pass a Security and Basis review without exceptions. Details: SECURITY.md and the threat model (STRIDE and OWASP Top 10 for LLM applications).
- No network surface: stdio only; no ports are opened.
- Credentials in the OS keychain (macOS Keychain or Linux Secret Service), never in files, logs or responses.
- Policy per role: QA and production are never written; development only with explicit authorization.
coretool profile (default): at startup only the everyday tools are published (find, read, query, check, save andload_tools); the rest stay registered but disabled and are loaded per catalog group withload_tools(groups), which notifies the client withtools/list_changed. Fewer tokens per conversation and less tool confusion."tools": { "profile": "expert" }orABAP_DZ_PROFILE=expertpublishes everything at startup. Theonly/exceptfilter overrides the profile: what it excludes cannot be loaded.- Selective tool exposure:
"tools": { "only": [...], "except": [...] }insystems.json, orABAP_DZ_TOOLS(comma-separated) in a project's MCP client configuration. Entries are tool names, catalog groups (exploracion,escritura…) or access kinds (read,write,exec). The environment never widens what the configuration allows; an unpublished tool does not exist for the client. A typo is reported at startup. - Strict parameters: an unknown or misspelled parameter is an error listing the accepted ones, never silently ignored.
- No write without human confirmation: a preview with SAP's syntax check and the real diff, confirmed through MCP elicitation or a single-use token bound to those exact arguments.
- Hash-chained audit log of every write and execution, and of every business-data read (
data_read: tables, masked columns, row count; never the values), fail-closed (no log, no write and no result), verifiable withnpm run audit:verify. - Data categories with elevated access: security and roles, HCM master data, payroll and personal data in clear
are read only under a temporary elevation the person confirms (
elevate_access: system, category, minutes, reason), allowed per system in the configuration; every grant, use and revocation is anelevation_*audit event. - SAP credential material blocked in SQL queries, also through views and CDS, even if the SAP user is authorized. Validated against a real S/4HANA 2023 system, where standard views and CDS read USR02 without naming it.
- Personal data masked and row caps on systems with production data.
- Free SQL parsed, not pattern-matched: FROM, JOIN, subqueries and CTEs are resolved to base tables; a query
whose sources cannot be determined (host variables, dynamic sources) is rejected. On production-data systems
sql_queryandtable_contentsread in two steps: preview of tables and cap, then human confirmation, like a write. - No customer data to the internet: online documentation search is off by default and, when enabled, every query with objects, transports, systems, users or customer names is blocked.
- Third parties isolated in their own process with a minimal environment.
- Controlled supply chain: 4 production dependencies pinned to exact versions, no install scripts, verified registry signatures, CycloneDX SBOM, audit and secret scanning on every commit and in CI.
Compatibility
Installation
Quick start
npm install -g --ignore-scripts @dozimple/[email protected]
abap-adt-dozimple init --client claude-code # or claude-desktop · kiro · cursor · vscode
init asks for the system (id, URL, client, user, role), writes ~/.config/abap-adt-dozimple/systems.json with
600 permissions, stores the password in the OS secret store (the store itself prompts; nothing is written to a
file) and registers the server in the chosen client without touching its other entries. --dry-run shows what it
would do; --force replaces an existing system or entry; init --help lists every flag. Step by step, the same
thing is:
From npm, step by step
Pinned to an exact version, without install scripts, like the project's own dependencies:
npm install -g --ignore-scripts @dozimple/[email protected]
PKG="$(npm root -g)/@dozimple/abap-adt"
mkdir -p ~/.config/abap-adt-dozimple && chmod 700 ~/.config/abap-adt-dozimple
cp "$PKG/config/systems.example.json" ~/.config/abap-adt-dozimple/systems.json # systems, roles and permissions
chmod 600 ~/.config/abap-adt-dozimple/systems.json
sh "$PKG/scripts/set-password.sh" MY_DEV # prompts; stored in the keychain
node "$PKG/dist/scripts/smoke.js" MY_DEV # read-only validation
MCP client registration:
{ "mcpServers": { "abap-adt-doZimple": { "command": "abap-adt-dozimple" } } }
Every release is published from CI with npm provenance:
npm view @dozimple/[email protected] dist.attestations shows the attestation, and the GitHub release carries the
tarball, its Sigstore bundle (.sigstore.json), the same bundle as in-toto provenance (.intoto.jsonl) and the
SBOM. To check it: gh attestation verify dozimple-abap-adt-2.1.0.tgz --repo <owner>/abap-adt-dozimple.
Team mode over HTTP (identity per person)
abap-adt-dozimple serve --host 127.0.0.1 --port 2235 # behind a TLS reverse proxy
abap-adt-dozimple serve --host 0.0.0.0 --cert srv.pem --key srv.key # or with its own TLS
Streamable HTTP endpoint (/mcp). Every request carries the SAP identity of the person using it
(Authorization: Basic user:password), and the server talks to SAP as that person: their user in connections,
locks, transports and the audit log. Passwords live only in memory while the session lasts and are never written
to disk; the server refuses to listen outside loopback without TLS. Sessions are capped and expire after
inactivity (--max-sessions, --idle-minutes, or ABAP_DZ_HTTP_* variables). Client registration:
{ "mcpServers": { "abap-adt-doZimple": { "type": "http", "url": "https://sap-mcp.example/mcp", "headers": { "Authorization": "Basic <base64 user:password>" } } } }
From source
npm ci && npm run build
mkdir -p ~/.config/abap-adt-dozimple
cp config/systems.example.json ~/.config/abap-adt-dozimple/systems.json # systems, roles and permissions (chmod 600)
scripts/set-password.sh MY_DEV # prompts for the password; stored in the keychain
npm run smoke -- MY_DEV # read-only validation
MCP client registration:
{ "mcpServers": { "abap-adt-doZimple": { "command": "node", "args": ["/path/to/abap-adt-doZimple/dist/index.js"] } } }
SAP documentation group (optional): install mcp-sap-docs
(Apache-2.0, abap variant) in a separate folder and declare how to start it in sidecars.docs of systems.json
(see config/systems.example.json). It runs as an isolated process; online search stays off unless allowOnline.
See CONTRIBUTING.md. To contribute or extend: git config core.hooksPath .githooks (secret and customer-data scanner before every commit)
and the nueva-tool guide — adding a tool means adding one file. Code comments
and tool descriptions are in Spanish; contributions in English are welcome.
Credits
abap-adt-doZimple is built on other people's work, and says so: each tool lists its credits in the reference. Dependency: its code is used. Data: third-party content that is queried. Idea: a design studied and reimplemented without copying code. Algorithm: a published method.
Full dependency licenses: THIRD_PARTY_NOTICES.md. If you are the author of one of these projects and want to adjust how you are credited, reach us at dozimple.cl.
Are you using it?
Tell us where and what for: open a short "I'm using it" issue (country, SAP release, MCP client, kind of use; no company or system names needed). npm and GitHub only give us anonymous counters, and what you tell us is what decides the next tools.
About DoZimple
DoZimple — technology that connects operations, data and innovation. SAP consulting and development (ABAP, CDS, OData, RAP, Fiori), integration and SAP BTP, software and portals connected to the ERP, and applied artificial intelligence over controlled sources, with reproducible answers and human review.
This MCP server is an example of how we work: useful AI, with control, traceability and security by design. Let's talk → dozimple.cl
License
Apache-2.0 — © 2026 DoZimple. See also NOTICE. The DoZimple Transport Risk SAP component is proprietary and not part of this repository. SAP, ABAP and S/4HANA are trademarks of SAP SE; this project is not affiliated with SAP SE.
About the ADT protocol. The server uses the REST protocol of ABAP Development Tools, the same one Eclipse ADT uses. It is not a released SAP API (no stability contract, no SAP support for third-party clients), so the server checks each system's ADT discovery and reports what is missing instead of assuming it. It is meant to be used like an IDE: each person with their own named SAP user and developer license, never a shared technical user. Review how your SAP agreement treats developer tools and indirect access before rolling it out. Details in NOTICE.