
Mcp Abap Abap Adt Api
io.github.mario-andreschakPublished by GitHub account mario-andreschakv0.1.1Updated Oct 24, 2026
MCP server wrapping abap-adt-api for ABAP ADT development workflows against SAP systems
Overview
Lets an assistant read, edit, activate, and transport ABAP objects in an SAP system through ADT APIs.
- What you can do
- Wraps the abap-adt-api library to expose SAP ABAP Development Tools operations as tools. It can search for ABAP objects, read and write source code, lock and unlock objects, run syntax checks, activate objects, manage transports, run queries, debug, refactor, and use Git and analysis features. Large results are returned as paged result IDs read back with readResultPage.
- When to use it
- Use it when an assistant needs to work directly on ABAP code or DDIC objects in an SAP development system, for example to inspect source, make and activate changes, or run ad-hoc queries. It is aimed at a single trusted operator rather than shared or multi-user use.
- Requirements
- A local Node.js runtime (Node 22.22.2+ or 24.15.0+) and a source build launched via node with an absolute path to dist/index.js. Required environment variables: SAP_URL, SAP_USER, SAP_PASSWORD, and optionally SAP_CLIENT and SAP_LANGUAGE. Network access to the SAP system and ADT authorizations for the user are needed; a private CA can be supplied via NODE_EXTRA_CA_CERTS.
Installation
In SourceWeft
- Open Mcp Abap Abap Adt Api in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
ABAP ADT API MCP server
This server preserves 127 existing SAP ABAP tools and adds readResultPage for large results. Object CRUD, locking, activation, transports, queries, debugging, refactoring, Git and analysis share one SAP session owned by a trusted local stdio client. SAP authorizations determine what that session can read or change.
Installation and protocol
Use Node22.22.2+ or24.15.0+. Run npm ci and npm run build, then configure your MCP client to launch node with the absolute path to dist/index.js. Existing npm/registry releases do not contain this PR until the owner releases it. No release is published here.
Public TypeScript MCP2.0.0 supports modern2026-07-28 discovery and legacy2025-11-25 initialization, validated tools, cancellation and proper errors. This package exposes stdio; it is not an HTTP listener or MCP OAuth provider. Missing credentials still allow discovery. healthcheck reports local configuration and session recovery state, not verified SAP connectivity.
Environment comes from the MCP client. Dotenv loads only when SAP_ENV_FILE explicitly names a file. SAP_URL is an origin without a path, query or embedded credentials. For a private CA set NODE_EXTRA_CA_CERTS before launching Node. TLS verification cannot be disabled. Loopback HTTP is allowed for fixtures; a trusted private HTTP deployment requires SAP_ALLOW_HTTP=1 and exposes credentials to that network.
An authorized broker's static SAP_BEARER_TOKEN can replace the password. Rotate it by restarting the process; this does not implement XSUAA grants or prove tenant acceptance. No password-grant flow is introduced.
Session and limits
Only one operation runs at a time; overlaps receive a busy error. Debugger listeners also occupy this session until completed or cancelled. SAP_REQUEST_TIMEOUT_MS defaults to60000 and accepts100..120000, including login and every underlying HTTP request. Cancellation closes real sockets. The client does not follow redirects, inherit environment proxies, retry mutations or automatically reauthenticate a stateful call. An interrupted write may already have changed SAP: inspect writes and locks, then explicitly login, dropSession or logout to recover. Shutdown attempts a bounded logout; unreachable SAP can retain state until its own expiry.
HTTP stays on the configured origin under /sap/, with 2MiB requests,4MiB responses and verified TLS. XML entity declarations are rejected. Input JSON is bounded by bytes, nesting, arrays and field contracts. This is a trusted operator tool, not an OS sandbox or multi-user service. Git tools can ask SAP to contact a remote Git service with supplied credentials; those operations depend on SAP and remote permissions.
Schemas are derived from pinned abap-adt-api8.4.3 declarations, including objects, arrays and overloads. Previously documented JSON strings for object arguments remain accepted, parsed and validated. Unknown top-level arguments are rejected. scripts/generate-input-contracts.mjs and its report record the mapping; rerun and review on dependency updates. Its TypeScript6 compiler API is development-only; TypeScript7 builds the application.
Source snapshots from getObjectSource/successful setObjectSource can feed syntaxCheckCode when code is omitted (issue#2). The per-runtime cache is limited to8MiB,64entries and five minutes. Mutating/session operations clear old snapshots. Snapshots are the last observed text, not a guarantee against external edits. Explicit empty text is checked as an equivalent blank line because upstream rejects an empty string; results report emptySourceNormalized. Source options accept structured or JSON objects, including active/inactive versions. Existing line paging remains available. Class includes fetch class metadata first; a public-request adapter handles valid single-link class XML rejected by the upstream parser. Maps preserve their entries in JSON.
Above64KiB, results return an opaque resultId, a JSON page, nextOffset and expiry. Use readResultPage, concatenate pages and JSON-parse to recover the original tool result. Paging never repeats SAP requests or writes. At most four 4MiB results live for five minutes; mutations/session resets clear them. Expired results need an intentional repeat of the original read. Larger results fail clearly. Query/search/ATC defaults are100 with caps of1000 where available; an API may return an extra sentinel row. Other large structures use generic paging.
Validation and deployment acceptance
Tests use real local HTTP/XML fixtures and installed modern/legacy protocol exchanges. Linux/Windows Node22/24 and non-root Docker run in CI. No SAP production credentials or writes are used. For an authorized read-only deployment canary set SAP_LIVE_TEST=1 and optional SAP_LIVE_SOURCE_URL, then run npm run verify:live. This checks login/discovery/optional source reading, not every SAP write/debug/Git/transport feature. Validate those on a development system. Permissions, credentials, API availability and support through the end of2026 remain deployment checks.
Existing PRs19/20/21/22 overlap errors, result sizing, class includes and login; all remain open for owner review. PR15's state restoration and refactoring JSON work already exists on the starting branch. PR10's proposed XSUAA implementation is not merged here.
References: abap-adt-api, MCP2026-07-28, Node private CA configuration.
Existing tool workflow reference
Original workflow examples follow. Runtime, schema and installation behavior above supersedes older client-specific examples.
Custom Instruction
Use this Custom Instruction to explain the tool to your model:
Troubleshooting
npxcan't find the package / client won't start it: ensure Node.js is installed and on your PATH (node -v,npm -v). On Windows try"command": "npx.cmd", or use a source build with an absolute path tonode dist/index.js.- SAP connection errors: verify your credentials (
SAP_URL,SAP_USER,SAP_PASSWORD,SAP_CLIENT), confirm the system is reachable, that your user has ADT authorizations, and that/sap/bc/adtis active inSICF. - TLS / self-signed certificate errors: configure
NODE_EXTRA_CA_CERTSwith the absolute path to a trusted CA certificate before Node starts. Verification stays enabled.
Contributing
Contributions are welcome! Please follow these steps to contribute:
-
Fork the Repository
-
Create a New Branch
-
Commit Your Changes
-
Push to the Branch
-
Open a Pull Request
License
This project is licensed under the MIT License.
Source: README.md at commit 1602da7
Tools
0Version history
1- v0.1.1LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts