ABAP AI Code
An agentic coding assistant written in ABAP that runs as a SAP GUI report and reads, explains and reviews repository objects inside the system, running an LLM's tool calls as ABAP.
For systems where ABAP exists only in the system and exporting its source to a laptop is not allowed, it puts the agent loop inside: report Z_ABAP_AI_CODE2 sends a question to an LLM, runs the tool calls it returns as ABAP against live repository objects and returns the results, up to 8 iterations per question. Each tool is an ABAP class implementing ZIF_AI_TOOL, discovered at runtime and paired with a JSON function definition and a prompt fragment read from the frontend. Eight providers are preconfigured, and API keys are stored AES-256 encrypted per SAP user. The base package is read-only; creating, changing and deleting objects comes from the separate ABAP-AI-CODE-TOOLSABAP-AI-CODE-TOOLSAn optional abapGit package that adds create, modify and delete tools to ABAP AI Code, for ABAP programs and classes, with each diff block approved before it is saved.independent, abap. It speaks no MCP, and its navigation uses text search rather than ABAP parsing.
Facts
Where it sits
Who is behind it
In the atlas: maintains 9, contributes to 10@ysichovmaintainer
Before choosing this
Conditions
PolicySAP API Policy 4.2026a§ 1.1, 1.2, 2.2.2from Agent access to your codeAn MCP server calls ADT or another SAP API of a running system for an agent.
- § 1.1 Published APIs. Published APIs are made available for the documented purposes identified by SAP, including integration, extensions and data exchange.
- § 1.2 Non-Published APIs. Customer and third-party applications must not access non-published APIs except where documentation permits it or SAP otherwise authorizes it.
- § 2.2.2 AI call sequences and data extraction. Outside SAP-endorsed architectures, data services or expressly identified pathways, the policy prohibits specified agentic API use and systematic or large-scale extraction.
An agent that plans and executes ADT calls is the case section 2.2.2 names. Check that the endpoints are published for the intended use, and that the design runs within a pathway SAP identifies for it.
SAP API Policy 4.2026a →What it declares
Every artifact
- Type
- App
- Origin
- Independently maintained
As an app
- Where it runs
- Inside the system it serves
- Distributed through
- abapGit
Connections
Letting a coding agent read and act on your project or system
Git client written in ABAP that runs inside the system
abapGit package adding create, modify and delete tools to ABAP AI Code
SAP GUI debugger script recording steps so execution can run backwards
Download
README
quoted from ysichov/ABAP-AI-Code under MIT, readABAP AI Code
An agentic AI coding assistant that runs inside the SAP system. Written in ABAP with an HTML UI, it reads, explains, reviews and — with the optional write add-on — creates, changes and deletes ABAP repository objects. No code export, no laptop toolchain, no ADT required.
Demos: Z_ABAP_AI_CODE2 walkthrough · Combobulating
Table of contents
- 1. Why this exists — comparison with Claude Code / Codex
- 2. What you get
- 3. Repository layout and the plugin pattern
- 4. Installation
- 5. Configuration
- 6. First run
- 7. Tool catalog
- 8. Writing your own tool
- 9. Logs and observability
- 10. Security model
- 11. Known limitations
- 12. Legacy AGENTS flow
- 13. Links, TODO, license
1. Why this exists — comparison with Claude Code / Codex
Claude Code, Codex CLI and friends are excellent — if your code is on a laptop, in Git, and you are allowed to send it to a vendor from there. In a lot of SAP shops none of those three is true: the code lives only in the system, ADT/abapGit may not be installed, and exporting sources to a developer machine is a compliance conversation nobody wants to have.
ABAP AI Code is that class of tool, re-implemented where the ABAP code actually is. You start a report in SAP GUI, type a question in your own language, and an agentic loop (LLM → tool call → ABAP execution → result → LLM → …) works on live repository objects.
1.1 Side-by-side
| Claude Code / Codex CLI | ABAP AI Code | |
|---|---|---|
| Where it runs | Your laptop / a container | Inside the SAP system, SAP GUI report Z_ABAP_AI_CODE2 |
| What it sees | Files in a Git working copy | Live repository objects (READ REPORT, SEO_*, TADIR) — always the current version |
| How it changes code | Writes files; you commit | Writes via standard SAP APIs (RPY_*, SEO_*), with syntax check, transport entry (RS_CORR_INSERT) and activation |
| Reviewing a change | git diff in a terminal | Built-in HTML diff with per-hunk approve / decline, decline notes and an AI discussion thread per hunk |
| Prerequisites | Node.js, Git, code exported to disk | An SAP system. Nothing else — no ADT, no Eclipse, no Git working copy |
| Auth / secrets | Vendor account or API key on the laptop | API key AES-256 encrypted per SAP user in ZAICODE_APIKEY, unlocked by a password that is never stored |
| Model choice | Vendor's own models | 8 preconfigured providers (Anthropic, OpenAI, Mistral, Gemini, Groq, Cerebras, OpenRouter, NVIDIA); model list pulled live from /v1/models |
| Extending it | MCP servers, hooks — all outside SAP | ABAP plugin classes implementing ZIF_AI_TOOL, discovered automatically; they run in the system with full ABAP API access |
| Write access | Always on | Opt-in: the base package is read-only; write tools ship as a separate package you install only where changes are intended |
| ABAP awareness | Generic code model | ABAP-native: class/method-level reads, structure tree, McCabe + Halstead metrics, breakpoints, "run this program" |
| Data leaving the system | The whole working tree is reachable | Only what a tool explicitly sends: one object's source, one method, one diff |
1.2 When to use which
- Use Claude Code / Codex when your ABAP is already mirrored to Git and your policy allows a cloud agent to read that repository. The tooling around it is richer.
- Use ABAP AI Code when the code must not leave the system, when developers work in SAP GUI, when there is no abapGit mirror, or when you want AI assistance bound to SAP authorizations, transports and user identity.
- They are not exclusive. Nothing here prevents you from keeping an abapGit mirror and running both.
2. What you get
Concrete capabilities, from a user's point of view:
Ask about code in plain language. "What does ZCL_X do?", "Where is the bug in
Z_REPORT?", "Make me a table of the methods and what they do." Answers come back in
your language — the answer language follows the question language.
Read at the right granularity. A whole class, a single method (ZCL_X=>METHOD), a
program, several objects in one call (comma-separated), or everything matching a pattern
(ZCL_AITOOL_*). Over-broad requests ask you for confirmation instead of quietly reading
half the system.
Get a real code review. review_sap_code runs a dedicated reviewer prompt
(~15 KB of ABAP-specific review rules) against the live source and returns findings — not
a generic "looks fine to me".
See the object, not just the text. Answers that resolve to one object open in a real ABAP editor pane with syntax highlighting, a structure tree (sections / attributes / methods, or events / forms / modules), breakpoints you can set, and a "Run" button that starts the program via its selection screen.
Measure it. One click gives McCabe cyclomatic complexity and full Halstead metrics (η1/η2, volume, difficulty, effort, estimated bugs) per method and per class.
Approve changes hunk by hunk. When the write add-on is installed, a change never lands silently: you get a diff, you approve or decline each hunk, you can leave a note or argue with the AI about a specific hunk, and only then is it saved, transported and activated.
Keep the receipts. Every LLM request, response, thinking block, tool call and tool
result is written to a per-session log folder, plus a per-question token table and a
Claude-Code-compatible session.jsonl.
Bring your own model. Switch provider and model on the selection screen; the model
dropdown is filled from the provider's live /v1/models, so a new model is available the
day it ships. Anthropic extended thinking is supported with a configurable budget.
3. Repository layout and the plugin pattern
The platform is split into two abapGit repositories along a single line: can it change your code?
| Repository | Package contents | Install it when |
|---|---|---|
| ABAP-AI-Code (this repo) | Engine, agentic runner, UI, diff/review cluster, metrics, crypto, key management, and the read-only tools (read_sap_object, review_sap_code, show_code_example) | Always — it is the base |
| ABAP-AI-CODE-TOOLS | The write tools (create_sap_object, modify_sap_object, delete_sap_object) and ZCL_CODE_OBJECT_SAVER, which performs the actual write / delete / activate | Only on systems where AI-assisted code changes are intended |
This split is possible because every tool is a plugin:
Layer 1 <tool_name>.json OpenAI function definition — the contract the LLM sees
Layer 2 <tool_name>.md prompt fragment — behaviour rules for that tool
Layer 3 ZCL_AITOOL_<X> ABAP class implementing ZIF_AI_TOOL — does the work
ZCL_AI_TOOL_FACTORY discovers implementers at runtime by querying SEOMETAREL for
classes that implement ZIF_AI_TOOL or inherit from ZCL_AITOOL_BASE. Both the tools
JSON array and the tool section of the system prompt are assembled from that same
registry, so:
- installing a package adds its tools to the LLM's toolset and to the prompt — no core code is touched;
- not installing it means the LLM is never told the capability exists, so it cannot attempt it and then fail;
- the base has no compile-time dependency on the write package: the runner and the UI
call the saver purely by dynamic name (
CALL METHOD ('ZCL_CODE_OBJECT_SAVER')=>…), and write paths fail gracefully with "read-only platform" when it is absent.
Registration is fail-closed: a tool whose .json or .md companion file is missing
from the prompt folder is not registered, and a message names the missing file. A
forgotten file surfaces as an explicit warning instead of a tool that silently misbehaves.
Design rationale and the full envelope specification: FABLE_NEW_ARCHITECTURE.md.
4. Installation
Prerequisites
- abapGit — to pull the repositories into the system.
- An API key for at least one supported provider.
- HTTPS connectivity from the SAP system to the provider, configured in SM59. The setup is described step by step in this SAP Community post.
Note: AVE / ABAP Code Reviewer is no longer a required dependency. The diff/review cluster it used to provide now lives in this repository (
ZCL_CODE_ACR_*,ZCL_CODE_POPUP_DIFF). Install AVE only if you want it as a standalone tool.
Steps
- abapGit → Online → clone
https://github.com/ysichov/ABAP-AI-Codeinto a Z package. Pull and activate. - (Optional, write access) clone
https://github.com/ysichov/ABAP-AI-CODE-TOOLSinto a second package. abapGit does not resolve dependencies, so the base must be installed first. - Copy the
TOOLSfolder of this repository to the machine that runs SAP GUI — e.g.C:\soft\GITHUB\ABAP-AI-CODE\TOOLS. These.json/.mdfiles are read from the frontend at runtime; they are deliberately not abapGit objects, so prompts can be edited in a text editor without a transport. - If you installed the write add-on, copy its companion files (
create_sap_object.*,modify_sap_object.*,delete_sap_object.*) into the same folder. - Run
Z_ABAP_AI_CODE2once and either pointp_toolsat your folder and save a variant, or change the default in the program'sINITIALIZATIONblock.
5. Configuration
5.1 Providers (ZAICODE_PROVIDER)
Providers are pure customizing — table ZAICODE_PROVIDER, maintainable in SM30/SE16. On
first run of Z_ABAP_AI_KEYS it is seeded with:
| Provider | Base URL | Wire format |
|---|---|---|
ANTHROPIC | https://api.anthropic.com/v1 | Anthropic (ANTHROPIC flag set) |
OPENAI | https://api.openai.com/v1 | OpenAI (CACHEKEY flag set) |
MISTRAL | https://api.mistral.ai/v1 | OpenAI-compatible |
GEMINI | https://generativelanguage.googleapis.com/v1beta/openai | OpenAI-compatible |
GROQ | https://api.groq.com/openai/v1 | OpenAI-compatible |
CEREBRAS | https://api.cerebras.ai/v1 | OpenAI-compatible |
OPENROUTER | https://openrouter.ai/api/v1 | OpenAI-compatible |
NVIDIA | https://integrate.api.nvidia.com/v1 | OpenAI-compatible |
Three fields drive behaviour: URL (base endpoint), ANTHROPIC (speak the Anthropic wire
format instead of OpenAI), CACHEKEY (provider accepts OpenAI's prompt_cache_key).
Adding any other OpenAI-compatible provider is one table row — no code change.
5.2 API keys (Z_ABAP_AI_KEYS)
Run Z_ABAP_AI_KEYS to store a key:
- Provider / Name — several named keys per provider are supported (e.g.
DEFAULT,TEAM). - Key — the provider API key.
- Password (twice) — minimum 10 characters. This password is never stored anywhere.
The key is AES-256 encrypted into ZAICODE_APIKEY, with the AES key derived from the
password and sy-uname. See Security model.
5.3 Prompt / schema folder
p_tools on the selection screen points at the frontend folder holding
<tool_name>.json and <tool_name>.md. It also holds two files the runner reads directly:
tool_runner.md— the orchestrator's own system prompt (routing rules: read before modify, delete-vs-modify, read-only vs write, answer in the user's language…). Per-tool fragments are appended to it by the factory.delete_misuse_redirect.md— the template used to bounce adelete_sap_objectcall back tomodify_sap_objectwhen the user only asked to remove part of an object.
Edit any of these in a text editor and the change takes effect on the next run. This is the main tuning surface of the whole system.
6. First run
6.1 Selection screen
Z_ABAP_AI_CODE2 opens with only the password visible. Enter it and press Enter — that
unlocks the rest of the screen. The staged reveal is deliberate: without the password
nothing can be decrypted, so nothing else is worth showing.
| Field | Meaning |
|---|---|
p_pwd | Password for your stored key. Masked. Mandatory |
p_prov | Provider. Only providers you have a key for are listed; a single-key user is snapped straight to theirs |
p_name | Which of your named keys to use (auto-selected when you have exactly one) |
p_model | Model. Filled live from the provider's /v1/models, refreshed only when provider / key / password changes. Defaults to a haiku model when available |
p_tools | Frontend folder with the .json / .md tool files |
p_temp | Temperature (also changeable at runtime from the toolbar) |
p_maxt / p_nomax | Max output tokens, or no limit |
p_think / p_thbud | Anthropic extended thinking and its token budget (hidden for other providers) |
p_log | Folder for session logs |
p_wipe | Clear the password from memory right after the key is decrypted. Leave on in PROD; switch off on a dev box to avoid retyping |
6.2 The three-pane window
- Left — question. A text editor for your prompt, and the toolbar: Ask, History (all messages of the session), Temp (change temperature live), New session (clear the conversation).
- Middle — progress + structure. A live step log: each LLM call and each tool call with its label, elapsed seconds and token counts (in / out / cached). Below it, the structure tree of the object currently open; double-click a node to jump to it in the editor.
- Right — answer + code. Either the rendered HTML answer, or a real ABAP editor showing the object. In editor mode the toolbar gains Back (return to the list), Metrics (McCabe + Halstead) and, for a program, Run. Breakpoints can be set directly.
When a tool produces a change, this pane switches to a diff: each hunk carries approve / decline buttons, a note field and an AI thread so you can question a specific hunk before deciding. Nothing is written until you approve.
Under the hood, run() is a bounded agentic loop — up to 8 iterations of
LLM → tool calls → execute → feed results back, ending when the model answers with no
tool calls. Identical idempotent calls (the same read or review twice) are served from a
per-question cache instead of being re-executed.
7. Tool catalog
Read-only tools, shipped in this repository:
| Tool | Class | What it does |
|---|---|---|
read_sap_object | ZCL_AITOOL_READ | Reads PROG / CLAS / METH / FUNC sources. Accepts ZCL_X=>METHOD, comma-separated lists and ZCL_* wildcards. Asks for confirmation above 10 objects; reports "not found" as a hard error instead of letting the model hallucinate |
review_sap_code | ZCL_AITOOL_REVIEW | Reads the object itself and runs it through the reviewer prompt. Also the tool used for "find the bug / explain what's wrong" — diagnosis without modification |
show_code_example | ZCL_AITOOL_EXAMPLE | Generates an ABAP example for a topic. Display only — never saved, never reviewed |
Write tools, shipped in ABAP-AI-CODE-TOOLS:
| Tool | Class | What it does |
|---|---|---|
create_sap_object | ZCL_AITOOL_CREATE | Creates a program or class that does not exist yet |
modify_sap_object | ZCL_AITOOL_MODIFY | Changes an existing object — including removing a method, a FORM or comments |
delete_sap_object | ZCL_AITOOL_DELETE | Deletes a whole object. Guarded: a request to remove part of an object is redirected to modify_sap_object |
All three route through ZCL_CODE_OBJECT_SAVER, which does the syntax check, the transport
entry and the activation.
8. Writing your own tool
Four steps, no core changes:
-
Schema —
TOOLS/my_tool.json, a standard OpenAI function definition:{ "type": "function", "function": { "name": "my_tool", "description": "What it does and when the model should reach for it.", "parameters": { "type": "object", "properties": { "object_name": { "type": "string", "description": "…" } }, "required": ["object_name"] } } } -
Prompt fragment —
TOOLS/my_tool.md, the behavioural rules appended to the system prompt when (and only when) this tool is installed. -
ABAP class — inherit from
ZCL_AITOOL_BASEand redefine two methods:CLASS zcl_aitool_mine DEFINITION PUBLIC INHERITING FROM zcl_aitool_base CREATE PUBLIC. PUBLIC SECTION. CONSTANTS c_tool_name TYPE string VALUE 'my_tool'. METHODS zif_ai_tool~get_tool_name REDEFINITION. METHODS zif_ai_tool~execute REDEFINITION. ENDCLASS.executereceives the raw JSON arguments;get_json_attribute( )from the base pulls out a flat attribute. Fillrs_result:xml_payload(what goes back to the model),error_texton failure, and — for a tool that changes code —save_required,object_type,object_name,original_source,final_source, so the runner triggers the diff / approve / save flow. -
Activate. The factory finds the class on the next run. Nothing to register.
Two conventions worth remembering:
- Tool name = schema file name = md file name.
c_tool_nameis the single binding point between all three layers. - Never call the LLM client directly. Use
mo_context->ask( ). It routes the sub-call through the runner, so it appears in the progress panel, is logged and is counted in the token totals.mo_llm->ask( )bypasses all of that and makes the tool invisible.
To disable a tool without deleting it, redefine zif_ai_tool~is_active to return
abap_false.
9. Logs and observability
With p_log set, each session gets its own folder <log_path>/<date>_<time>/ containing,
per step:
| Suffix | Content |
|---|---|
Q | The raw request sent to the provider (JSON) and the assembled prompt (TXT) |
LLM | The raw response, plus a readable Markdown rendering |
THINK | The extended-thinking block, when enabled |
TOOL | Tool call arguments and results |
A | The final answer |
SUBQ / SUBLLM | Requests / responses of tool sub-agent calls |
Plus two aggregates:
_tokens.md— one row per question: input / output / cached tokens.claude_compatible/session.jsonl— the same session as Claude-Code-style JSONL, one JSON object per line, so a Claude session reader ingests it directly.
The middle pane shows the same information live while the loop runs.
10. Security model
API keys. Stored AES-256 encrypted in ZAICODE_APIKEY. The AES key is derived from the
password and sy-uname:
- the password is never persisted — not in the database, not in the source. Someone reading the table or this repository cannot decrypt anything;
- the username is embedded in the plaintext and verified on decrypt, so a copied row cannot be replayed under another user;
- format v2 (current) uses a random per-record salt and a random IV with stronger key stretching. Legacy v1 rows still decrypt; re-saving a key upgrades it.
Password handling in the UI. The cached model-list state stores a per-session salted
SHA-256 token of the password, never the password itself, so neither a debugger nor a dump
reveals it. With p_wipe on, the password is cleared from memory as soon as the key is
decrypted — the blast radius of a debug session shrinks to one key rather than the master
password.
Write access. Read-only by default. The write package is a separate installation decision, and even where it is installed nothing is saved without an explicit per-hunk approval, a syntax check and a normal transport entry.
What leaves the system. Only what a tool explicitly sends to the provider: the source of the object being read, reviewed or changed, plus your prompt. There is no background indexing and no repository-wide upload.
11. Known limitations
Stated plainly, so nothing surprises you:
- Navigation and the structure tree use plain text search, not real ABAP parsing — good enough to jump around, not a substitute for ADT.
- The agentic loop is capped at 8 iterations per question; very large multi-object tasks need to be split.
- Prompt / schema files live on the frontend, so each developer needs a local copy (this is also what makes them editable without a transport).
- The UI is SAP GUI +
CL_GUI_HTML_VIEWER; it is a desktop-SAP-GUI tool, not a Fiori app. - There is no MCP ecosystem — extensions are ABAP classes.
- Answer quality depends heavily on the
.mdprompt files. They are meant to be tuned. tool_runner.mdmentions aweb_searchtool that has no implementation in this repository; treat that line as aspirational until a plugin provides it.- The write add-on ships
delete_sap_object.jsonbut nodelete_sap_object.md— under the fail-closed rule that meansZCL_AITOOL_DELETErefuses to register until the prompt fragment is added.
12. Legacy AGENTS flow
The original implementation used string proto-tags ({AGENT:CODE_SEARCH PROG Z_TEST}) and
a chain of specialised agents, driven from the AGENTS folder
(Object_detector.md, task_orchestrator.md, class_processor.md, code_review.md,
final.md, …).
It still runs, in parallel with the new flow: copy the AGENTS folder locally and point the
legacy program's path at it. New work should use Z_ABAP_AI_CODE2 and the TOOLS folder —
the reasons are laid out in FABLE_NEW_ARCHITECTURE.md.
13. Links, TODO, license
- Write add-on: https://github.com/ysichov/ABAP-AI-CODE-TOOLS
- Architecture design doc: FABLE_NEW_ARCHITECTURE.md
- Roadmap: TODO.md
- SM59 / connectivity setup: SAP Community — ABAP Code Reviewer
- Standalone code reviewer (optional): https://github.com/ysichov/AVE
- License: MIT
Others providing
Compare all 48 on the Agent access to your code page →- @abap2ui5/mcp-server@abap2ui5/mcp-serverAn MCP server that puts the abap2UI5 development loop on the machine an agent runs on: check the view the ABAP builds, photograph it, deploy the class into a sandbox, boot the app headless and read the errors.community org, abapMCP server for the abap2UI5 check, deploy and run loopfrom ABAP
- arc-1-bopf-enharc-1-bopf-enhAn extension of four tools for arc-1, with an ABAP service behind it, that lets an agent read and maintain classic BOPF enhancements of SAP standard business objects.independent, abaparc-1 extension for reading and maintaining BOPF enhancementsfrom ABAP
- HammerHammerA native macOS code editor for ABAP and CDS, with an Object Navigator, Transport Organizer, Data Browser and Gateway Client in the same app as the editor.independent, abapNative macOS code editor for ABAP and CDSfrom ABAP
- arc-1-lsparc-1-lspAn edition of ARC-1 that hands every ADT interaction to SAP's own embedded adt-ls language server instead of a hand-rolled HTTP client.independent, abapEdition of ARC-1 that runs ADT calls through adt-lsfrom ABAP
- arc-1arc-1An MCP server in front of the ADT REST API that runs locally and on Cloud Foundry with twelve tools that read, search, write, activate, lint and transport ABAP objects.independent, abapMCP server over the ADT REST API for ABAP objectsfrom ABAP
- arc1-abap-bridgearc1-abap-bridgeA VS Code extension between arc-1 and ABAP Development Tools for VS Code, so GitHub Copilot can open an ABAP object by name, diff the inactive version and ask the system whether an edit would be accepted.independent, abapVS Code bridge between arc-1 and ADT for VS Codefrom ABAP
- arc1-adt-abap-mcp-extarc1-adt-abap-mcp-extOne JAR in Eclipse's dropins that turns on SAP's own ADT MCP server and adds read-only repository tools beside it — so an AI client reads your system without leaving Eclipse.independent, abapEclipse add-on enabling the ADT MCP server with read-only toolsfrom ABAP
- capforgecapforgeAn MCP server that scaffolds CAP and CDS for a coding agent and then holds it to cds compile — the agent does not stop until the generated code builds clean.independent, capMCP server scaffolding CAP and CDS checked by cds compilefrom CAP
- ABAP Accelerator MCP ServerABAP Accelerator MCP ServerAWS's ABAP MCP server for Amazon Q Developer and Kiro, deployable locally, in Docker or centrally on ECS Fargate with OAuth principal propagation; its repository is no longer maintained.partner, abapAWS's ABAP MCP server for Amazon Q Developer and Kirofrom ABAP
- Modernization Agents for SAP on AWSModernization Agents for SAP on AWSAWS's suite of agents for SAP modernisation work: custom ABAP converted for S/4HANA, PI/PO interfaces moved to Integration Suite, BW objects moved to SAP Datasphere, deployed into a customer's own AWS account and reached only after registration.partner, abapAWS agents for ABAP, PI/PO and BW modernisation workfrom ABAP
- @mcp-abap-adt/core@mcp-abap-adt/coreA descendant of the Andreschak and fr0ster servers rebuilt on its own architecture, published as an npm scope and a Claude Code plugin, with Korean and Japanese documentation beside the English.independent, abapABAP ADT MCP server published as an npm scope and pluginfrom ABAP
- @cap-js/mcp-server@cap-js/mcp-serverSAP's MCP server for CAP development, run as cds-mcp: search_model searches the project's compiled CDS model, search_docs searches the CAP documentation indexed as embeddings on the developer's own machine.sap official, capMCP server for CAP development: model and docs searchfrom CAP
- chandrashekhar-mahajan/abap-mcp-serverchandrashekhar-mahajan/abap-mcp-serverFifteen ADT tools behind five pluggable authentication strategies — Kerberos/SPNEGO, OAuth 2.0, X.509, browser SSO and basic — for systems where basic auth is not an option.independent, abapABAP MCP server with ADT tools and five authentication strategiesfrom ABAP
- dassian-adtdassian-adtA fork of mcp-abap-abap-adt-api hardened for use: 25 tools, input validation, error intelligence, MCP elicitation, session recovery and a test suite.independent, abapFork of mcp-abap-abap-adt-api with 25 tools and session recoveryfrom ABAP
- erpl-adterpl-adtOne C++ binary that speaks the ADT REST API as a CLI and as an MCP server — no Eclipse, no NetWeaver RFC SDK, no JVM — and reaches BW/4HANA modelling as well as ABAP.independent, abapC++ binary speaking the ADT REST API as a CLI and MCP serverfrom ABAP
- bw-modeling-mcpbw-modeling-mcpReads, creates and modifies BW/4HANA modelling objects through the same internal APIs Eclipse BWMT and the BW/4HANA Cockpit use — and can run centrally on BTP with each caller reaching BW as themselves.independent, btpMCP server for BW/4HANA modelling objectsfrom BTP/BAIP
- EPOD ADT MCP ServerEPOD ADT MCP ServerAn MCP server for ABAP that runs inside ABAP Development Tools for Eclipse on the ADT session of each connected project, with a standalone mode that runs with no IDE open.independent, abapMCP server for ABAP on the ADT session, in Eclipse or standalonefrom ABAP
- ZARC1_EXTENSION_FORMSZARC1_EXTENSION_FORMSAn extension of four tools for arc-1, with an ABAP backend behind it, that reaches the classic form objects ADT has no API for: SAPscript layout sets, Smart Styles and the TADIR record of a Smart Form.independent, abaparc-1 extension for SAPscript and Smart Forms objectsfrom ABAP
- fgalastri/MCP_ABAPfgalastri/MCP_ABAPValidates an ABAP class before it is deployed by converting the global class to a local one and syntax-checking that — plus CDS DDL and table metadata retrieval.independent, abapValidates an ABAP class before it is deployed by converting the global class to a local one and syntax-checking that — plus CDS DDL and table metadata retrieval.from ABAP
- fr0ster/mcp-abap-adtfr0ster/mcp-abap-adtFull CRUD across on-premise and ABAP Cloud systems, with five authentication methods and three transports: a library under Apache-2.0 and a standalone server under AGPL-3.0-only.independent, abapABAP MCP server with full CRUD on on-premise and ABAP Cloudfrom ABAP
- abapsmithabapsmithAn MCP server that lets an LLM develop in ABAP on a live system over ADT, with writes off by default and every mutation recorded in a local journal that can undo it.independent, abapABAP MCP server over ADT with a local journal that can undo writesfrom ABAP
- sap-ai-dev-toolkitsap-ai-dev-toolkitAn MCP proxy that pins an agent's ABAP tools to one SAP system: setup reads the BAS destinations or the local SAP GUI landscape and writes one stdio server per system, leaving the credentials in the destination or in the editor's own login prompts.independent, abapMCP proxy pinning an agent's ABAP tools to one SAP systemfrom ABAP
- aibap.mcpaibap.mcpA Go server that closes the loop: after create, write and activate it can run the class it just wrote through ADT's classrun and hand the console output back.independent, abapGo MCP server that writes, activates and runs ABAP classes via ADTfrom ABAP
- BellaBellaAn Eclipse plugin that puts Claude into ABAP Development Tools: explain, generate, rework and implement from the editor's context menu, completion as ghost text, and a chat whose tools reach the system through the developer's existing ADT logon.independent, abapEclipse plugin bringing Claude into ABAP Development Toolsfrom ABAP
- Maherd18/sap-mcp-serverMaherd18/sap-mcp-serverAn MCP server for ABAP development over the ADT resources: eight tools, each checked against a JSON policy file before the call reaches the system, with activation and transport release held for a person to approve.independent, abapPolicy-checked MCP server for ABAP development over ADTfrom ABAP
- sapdumpmcpsapdumpmcpAn MCP server for SAP dumps: it connects to an ABAP system over the ADT resources and lets an MCP client ask a dump for its description and call stack.independent, abapMCP server reading ABAP short dumps over ADTfrom ABAP
- ABAP remote filesystemABAP remote filesystemA Visual Studio Code extension that opens an ABAP system over ADT as an editable filesystem and exposes system tools to GitHub Copilot and external MCP clients.independent, abapVS Code extension editing ABAP systems over ADT as a filesystemfrom ABAP
- mcp-abap-abap-adt-apimcp-abap-abap-adt-apiThe write half of the same pair: a thin wrapper over Marcello Urbani's abap-adt-api, exposing lock, edit, activate, transport and syntax check for a full development loop.independent, abapWrite-oriented MCP server over abap-adt-apifrom ABAP
- mcp-abap-adtmcp-abap-adtThe read-oriented half of a pair of ABAP MCP servers: high-level tools such as GetProgram, GetClass and GetTable that fetch from a system, aimed at understanding it rather than changing it.independent, abapRead-oriented MCP server fetching ABAP programs, classes, tablesfrom ABAP
- SAP MCP Connection ManagerSAP MCP Connection ManagerA Windows desktop manager that holds SAP connections and hands them to Claude Desktop or Codex through a local MCP server, each connection carrying a policy that decides what the assistant may change and what data it may read.independent, abapWindows desktop manager handing SAP connections to assistants over MCPfrom ABAP
- ABAPilotABAPilotAn MIT-licensed MCP connector for ECC and on-premise S/4HANA that reads ABAP source and dictionary context, whose SAP-side half is a licensed product you install in the system.independent, abapMCP connector for ECC and on-premise S/4HANA with a licensed SAP sidefrom ABAP
- vibing-steampunkvibing-steampunkAn ADT-to-MCP bridge in Go that reaches past what ADT exposes — cluster tables decoded, spool and job logs read as tables, the IMG searched, selection texts written back.independent, abapADT-to-MCP bridge in Go reaching past what ADT exposesfrom ABAP
- ADT MCP ServerADT MCP ServerSAP's own ADT MCP server, and not a package: a preference inside ABAP Development Tools for VS Code that starts a local HTTP MCP server on a port you choose.sap official, abapLocal HTTP MCP server started from ABAP Development Tools for VS Codefrom ABAP
- ABAP Development Tools for VS CodeABAP Development Tools for VS CodeSAP's ABAP tools in VS Code: editing, debugging, ABAP Unit, ATC and transports for classes, CDS and RAP objects, over RFC to an on-premise or Private Cloud system and HTTP to a cloud one, with Joule's ADT MCP server and code completion behind an AI-unit licence.sap official, abapSAP's ABAP tools in VS Code for editing, debugging, ATC and transportsfrom ABAP
- SAP Joule for Developers, ABAP AI capabilitiesSAP Joule for Developers, ABAP AI capabilitiesSAP's AI for ABAP development in ADT for Eclipse and VS Code: chat, code completion, explain, test and CDS generation, RAP logic prediction, and since June 2026 an agentic mode over the ADT MCP Server, metered in AI units through the ABAP AI Hub Service on BTP.sap official, abapSAP's AI for ABAP development in ADT for Eclipse and VS Codefrom ABAP
- @sap/mdk-mcp-server@sap/mdk-mcp-serverFive tools for Mobile Development Kit work: create a project, generate pages and rules into it, drive the build and deploy, read the documentation, and pull OData metadata from Mobile Services.sap official, btpMCP server with five tools for Mobile Development Kit workfrom BTP/BAIP
- @sap-ux/fiori-mcp-server@sap-ux/fiori-mcp-serverSAP's Fiori MCP server, run as fiori-mcp, letting a coding assistant create and edit Fiori applications directly rather than describing the steps.sap official, ui5MCP server for creating and editing Fiori applicationsfrom UI5
- ABAPDocMCPABAPDocMCPTurns a transport request into a WRICEF technical specification: reads the transport's objects and source over ADT and writes a structured Markdown document with an object-relationship diagram.independent, abapMCP server turning a transport request into a WRICEF specificationfrom ABAP
- claude-sap-kitclaude-sap-kitA Claude Code plugin of three skills that extends arc-1 with five Custom_* tools for an on-premise ABAP system: running a report and reading its ALV as JSON, previewing a NAST message as PDF, and reading, writing and replacing SmartForms as XML.independent, abapClaude Code plugin adding Custom_* tools to arc-1from ABAP
- Skybuffer AI MCP serverSkybuffer AI MCP serverAn ABAP add-on that serves SAP business data, transactions and development context as MCP tools from an ICF node inside SAP ECC and S/4HANA, each call running as the signed-in user under PFCG authorization checks.independent, abapABAP add-on serving business data and transactions as MCP toolsfrom ABAP
- @ui5/mcp-server@ui5/mcp-serverSAP's MCP server for UI5 development: ten tools that scaffold an app or a card, read the project in front of the agent, and run the linter and the manifest validator against it.sap official, ui5MCP server for UI5 development with ten toolsfrom UI5
- abap-adt-cliabap-adt-cliPulls an ABAP package to local files over the ADT REST API in parallel, and pushes edited objects back under a transport — bulk sync rather than one object at a time in SE80 or Eclipse.independent, abapCLI that pulls and pushes ABAP packages as local files over ADTfrom ABAP
- workskong/mcp-abap-adtworkskong/mcp-abap-adtA deliberately light MCP adapter over ABAP ADT for object search, source, DDIC metadata, a data preview and runtime diagnostics, read-only in practice and documented in Korean.independent, abapLight MCP adapter for ABAP over ADT, documented in Koreanfrom ABAP
- KlystronKlystronAn MCP server written in ABAP that runs inside the application server behind an ICF service and exposes typed tools for ABAP development, quality, transports, customizing, roles, Basis operations and integration, with a client-side plugin of SAP skills.independent, abapMCP server in ABAP inside the application server, with agent skillsfrom ABAP
- pyrfc-mcppyrfc-mcpAn MCP server for calling an SAP system's RFC-enabled function modules from an agent, built so that discovering a function does not authorise calling it: a read or a write is denied unless the function name matches an allowlist the server is configured with.independent, abapMCP server calling RFC-enabled function modules behind an allowlistfrom ABAP
- ABAP-AI-CODE-TOOLSABAP-AI-CODE-TOOLSAn optional abapGit package that adds create, modify and delete tools to ABAP AI Code, for ABAP programs and classes, with each diff block approved before it is saved.independent, abapabapGit package adding create, modify and delete tools to ABAP AI Codefrom ABAP
- VERTEXVERTEXAn extension for ABAP Development Tools for Eclipse and VS Code that shows Simple Data Explorer, AVE and ACE in the editor over the developer's ADT connection.independent, abapADT extension for Eclipse and VS Code showing three SAP GUI toolsfrom ABAP
Details
Sources
Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.
Compatibility and provenance
abaplint
Flavors
“- The UI is SAP GUI + `CL_GUI_HTML_VIEWER`; it is a desktop-SAP-GUI tool, not a Fiori app.” — ysichov/ABAP-AI-Code — README
History in the atlas
- First seen.
For your agent
- Ref
artifact:ysichov-abap-ai-code- JSON
- /artifacts/ysichov-abap-ai-code.json
- MCP
- Connecting an agent