MCP serverMCP servertypeExposes tools to a coding agent over MCP.See every one →What this type is →independently maintainedindependently maintainedoriginPublished by one person or a small company outside SAP. Says nothing about quality; the readings say that.See every one →

arc-1-bopf-enh

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

Classic BOPF enhancements, the customer extensions of SAP standard business objects such as the SAP TM freight order /SCMTMS/TOR, are maintained in the BOPF designer (BOBX), and ADT has no API for them, so arc-1 cannot reach them through ADT either. This adds four Custom_BopfEnh* tools to ARC-1 that read, create, change, check and delete an enhancement and its nodes, actions, determinations, validations, queries, associations and alternative keys. The tools call an ABAP service of their own, the ICF node /sap/bc/zbe_bopf_enh/ imported with abapGit, which works through /BOBF/CL_CONF_MODEL_API, the API behind the BOPF designer. Implementation classes are generated as stubs, and their code, the DDIC structures and the appends are written with ARC-1’s own SAPWrite and SAPActivate. Every change runs as a dry run in SAP first, and a deletion needs a token from a preview.

Facts

Last pushLicenceMIT

Where it sits

Lives in
Provides
Agent access to your codeABAPAgent access to your codecapabilityLetting a coding agent read the project or the system you actually have, reach its model, its objects and its checks, and act on it. In file-based environments that works out of the box; complex systems need dedicated access capabilities. Whatever the environment, the agent also needs project- and framework-specific context, so it understands the thing in front of it rather than guessing from what it remembers of its training data. The transport is incidental: an MCP server, a language server or a CLI answer the same question, and what differs between them is how much of the real thing the agent can see. Distinct from [MCP servers](capability:mcp-servers), which is a protocol adapter on your own running service, and from [agent guidance](capability:agent-guidance), which is knowledge handed over as files rather than read from the thing itself.
Requires
arc-1arc-1artifactthe MCP server that loads the extension as a file at startup; the four tools exist only inside itabapGitabapGitartifactimporting the ABAP service and its ICF node into the SAP system
Optional
DockerDockeroutside the atlasbuilding and running an image that bundles the extension alongside arc-1deployment

Who is behind it

abat-TAOabat-TAOPersonMaintains this
In the atlas: maintains 1, contributes to 2
@abat-TAO
maintainer

Before choosing this

Conditions

PracticalFunctional boundary

Classic BOPF only: business objects of the ABAP Programming Model for SAP Fiori are not handled, and on the BTP ABAP environment or S/4HANA Public Cloud classic BOPF enhancements do not exist. It is version 0.1.0, verified on S/4HANA 2025 (SAP_BASIS 816) on-premise only, and arc-1 still marks the plugin API it is built on as experimental. ARC-1 loads no extensions on its multi-target routes and offers none of these tools in its hyperfocused tool mode.

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
MCP server
Origin
Independently maintained

As an MCP server

Tools
4
Guardrails
4 quoted from README, Guardrails show all
  • Writes need SAP_ALLOW_WRITES, SAP_ALLOW_PLUGIN_RAW_WRITES and a caller

  • The extension runs each change as a dry run in SAP first and refuses it unless its package is in

  • The ABAP service changes only enhancement objects in the customer namespace (Z*, Y* or a namespace the

  • Deleting needs a token from a preview and stops when the enhancement changed in

For agent access to ABAP code

Read
sourcesearchwhere-usedDDICCDStable data
Change
writecreateactivatetransportsgit
Check
syntaxATCABAP Unit
Run
run codedumps
property statedstated nonot said

Connections4

arc-1-bopf-enh connectionsarc-1-bopf-enhPROVIDES→ provides1provides stated Reaches what ADT does not on an on-premise system: an agent connected to [arc-1](artifact:arc-mcp-arc-1) reads, creates, changes, checks and deletes classic BOPF enhancements of SAP standard business objects and their entities, without BOBX. abat-TAO/arc-1-bopf-enh — repository description: https://github.com/abat-TAO/arc-1-bopf-enh abat-TAO/arc-1-bopf-enh — README: https://raw.githubusercontent.com/abat-TAO/arc-1-bopf-enh/main/README.mdAgent access to your codeNEEDS→ needs2needs stated importing the ABAP service and its ICF node into the SAP system abat-TAO/arc-1-bopf-enh — README, Quick start: https://raw.githubusercontent.com/abat-TAO/arc-1-bopf-enh/main/README.md abat-TAO/arc-1-bopf-enh — README, Quick start: https://raw.githubusercontent.com/abat-TAO/arc-1-bopf-enh/main/README.mdabapGitneeds stated the MCP server that loads the extension as a file at startup; the four tools exist only inside it abat-TAO/arc-1-bopf-enh — README, Deployment: https://raw.githubusercontent.com/abat-TAO/arc-1-bopf-enh/main/README.md abat-TAO/arc-1-bopf-enh — README, Quick start: https://raw.githubusercontent.com/abat-TAO/arc-1-bopf-enh/main/README.mdarc-1→ optionally needs1optionally needs stated If: ARC-1 and its extension are deployed as a Docker image rather than run locally or on Cloud Foundry building and running an image that bundles the extension alongside [arc-1](artifact:arc-mcp-arc-1) arc-1-bopf-enh: docs/deployment.md: https://raw.githubusercontent.com/abat-TAO/arc-1-bopf-enh/main/docs/deployment.mdDockerif

Install

git clone https://github.com/abat-TAO/arc-1-bopf-enh.git
cd arc-1-bopf-enh
cd arc1-extension && npm ci --ignore-scripts && npm run build
The config you actually write
"ARC1_PLUGINS": "<absolute path>/arc1-extension/dist/bopf-enh.mjs",
"SAP_ALLOW_WRITES": "true",
"SAP_ALLOW_PLUGIN_RAW_WRITES": "true",
"SAP_ALLOWED_PACKAGES": "$TMP,ZTM_EXT"

Copied from abat-TAO/arc-1-bopf-enh — README, Quick start, read . Not run by the atlas.

Where arc-1-bopf-enh runsBy its type: an MCP server is called by an MCP clientcallsdocumentedrequiresdocumentedrequiresdocumentedmay needif ARC-1 and its extension aredeployed as a Docker imagerather than run locally or on Cl…Your MCP client, actorYour MCP clientDocker, SoftwareDockerSoftwarearc-1-bopf-enh, modulearc-1-bopf-enharc-1, modulearc-1abapGit, moduleabapGit
SAPnot SAP's, or the project's ownstated in the documentdocumented onlyunder a condition

README

quoted from abat-TAO/arc-1-bopf-enh under MIT, read
abat-TAO/arc-1-bopf-enh/README.mdOn GitHub

arc-1-bopf-enh

Classic BOPF enhancements, the customer extensions of SAP standard business objects such as the SAP TM freight order /SCMTMS/TOR, are maintained in the BOPF designer (transaction BOBX). ADT has no API for them, so tools that work through ADT cannot reach them either.

arc-1-bopf-enh closes that gap for ARC-1, the MCP server for SAP: an ABAP service on SAP's BOPF configuration API and an ARC-1 extension with four tools. AI agents connected to ARC-1 can then read, create, change, check and delete enhancement objects and their nodes, actions, determinations, validations, queries, associations and alternative keys.

Status: 0.1.0. Verified live on SAP_BASIS 816 (S/4HANA 2025): the ABAP Platform trial with the EPM sales order, and an S/4HANA system with SAP TM and the freight order /SCMTMS/TOR, both on-premise. Private cloud and older releases such as S/4HANA 2023 should work as well but are not tested yet. Built against ARC-1 1.5.0, verified with ARC-1 1.4.0 and 1.5.0. ARC-1 still marks its plugin API (apiVersion 1) as experimental, so a later ARC-1 release may need an update of this extension.

Tools

ToolARC-1 policyPurpose
Custom_BopfEnhReadreadExtensible business objects, their enhancements, one enhancement with its entities, and the names SAP proposes before a create
Custom_BopfEnhWritewrite, createCreate and change enhancements and their entities; every change runs as a dry run first
Custom_BopfEnhDeletewrite, deleteDelete own entities or a whole enhancement: preview with token, then deletion
Custom_BopfEnhMaintainwrite, updateBOPF consistency check; refresh after appends to standard nodes

docs/tools.md describes parameters, results, errors and the typical flows.

Quick start

This path runs ARC-1 locally, started by your MCP client. For Docker and SAP BTP, see Deployment.

You need an SAP system with classic BOPF, tested with S/4HANA 2025 (SAP_BASIS 816) on-premise (private cloud and older releases should work but are not tested yet); abapGit in that system; and an SAP user with developer authorization (S_DEVELOP) for the packages of the enhancements. Building the extension yourself also needs Node.js 22.19 or later on Linux, macOS or WSL (the build scripts use POSIX shell commands).

  1. Set up ARC-1 first. Follow ARC-1's quickstart and check that your agent can read an ABAP object through it. The extension only adds tools to a working ARC-1.
  2. Import the ABAP objects. In abapGit, create an online repository with https://github.com/abat-TAO/arc-1-bopf-enh in a package of your choice, for example the local package $ZBE_BOPF_ENH, and pull. Without access to GitHub from the SAP system, import arc-1-bopf-enh-abap-<version>.zip from the latest release as an offline repository instead. abapGit creates and activates the ICF node /sap/bc/zbe_bopf_enh/.
  3. Get the extension. Download bopf-enh.mjs from the latest release, with THIRD-PARTY-NOTICES.md next to it. Or build it yourself; the result is arc1-extension/dist/bopf-enh.mjs:
    git clone https://github.com/abat-TAO/arc-1-bopf-enh.git
    cd arc-1-bopf-enh/arc1-extension && npm ci --ignore-scripts && npm run build
  4. Add it to ARC-1. Extend the env block of the ARC-1 server in your MCP client configuration and restart the client:
    "ARC1_PLUGINS": "<absolute path>/bopf-enh.mjs",
    "SAP_ALLOW_WRITES": "true",
    "SAP_ALLOW_PLUGIN_RAW_WRITES": "true",
    "SAP_ALLOWED_PACKAGES": "$TMP,ZTM_EXT"
  5. Try it. Ask your agent "Which enhancements does /BOBF/EPM_SALES_ORDER have?". If you built the extension yourself, you can also call the tool from arc1-extension with ARC-1's command line client and the same SAP_* settings in your shell:
    ARC1_PLUGINS=$PWD/dist/bopf-enh.mjs npx arc1-cli call Custom_BopfEnhRead --json '{"what":"businessObjects"}'

Other object names. All objects carry the code BE (ZCL_BE_*, ZBE_*, $ZBE_BOPF_ENH, ICF node zbe_bopf_enh). If these names are taken in your system, the release files do not fit: clone the repository and rename it from its root before steps 2 and 3:

node tools/rename.mjs --code XY --dry-run   # preview
node tools/rename.mjs --code XY             # ZCL_BE_ → ZCL_XY_, ZBE_ → ZXY_; --letter Y also changes Z → Y

The script renames the abapGit files and their contents, the extension with its service path, the tests and the documentation, recomputes the file name of the ICF node and checks SAP's name length limits. --map renames.json renames single objects. In step 2, import the renamed objects: push your copy to your own Git repository and use its URL, or zip it (with .abapgit.xml and src/) and import it as an offline repository. In step 3, build the extension from your copy.

Deployment

ARC-1 loads the extension as a file at startup, wherever ARC-1 runs:

ARC-1 runsSupported
Locally (npx arc-1)Yes, verified
DockerYes, with an image based on ARC-1's image; not verified yet
SAP BTP Cloud Foundry, single targetYes, for on-premise systems through the Cloud Connector; not verified yet
SAP BTP Cloud Foundry, multi-target routesNo: ARC-1 loads no extensions there
Any, with SAP BTP ABAP Environment or S/4HANA Public CloudNo: classic BOPF enhancements do not exist there

docs/deployment.md has the settings and steps for each setup.

Design

  • Own ICF service. ARC-1 extensions call SAP over HTTP, and ARC-1 refuses extension writes to /sap/bc/adt/. The ABAP side is therefore its own ICF node, /sap/bc/zbe_bopf_enh/: reads are GET, changes are one POST.
  • SAP's API, not table writes. The service works through /BOBF/CL_CONF_MODEL_API, the API behind the BOPF designer, and reads the BOPF meta model directly only where that API has gaps, such as alternative keys and the consistency check.
  • Thin extension. The TypeScript side holds the parameter schemas, runs the dry run before every change and applies the package and transport settings of the ARC-1 server.
  • Source code stays with ARC-1. Implementation classes are generated as stubs. Implementing them, and creating DDIC structures and appends, is done with ARC-1's own tools (SAPWrite, SAPActivate).

Guardrails

Three layers check every change:

  1. ARC-1 allows reads (GET) always. Writes need SAP_ALLOW_WRITES, SAP_ALLOW_PLUGIN_RAW_WRITES and a caller with the write scope.
  2. The extension runs each change as a dry run in SAP first and refuses it unless its package is in SAP_ALLOWED_PACKAGES ($TMP when empty) and its transport in SAP_ALLOWED_TRANSPORTS (any when empty). ARC-1 itself applies these two settings only to its built-in tools. The extension accepts exact names, * and a trailing * such as Z*; unlike ARC-1, an entry ROOT/** allows only the package ROOT, so list its subpackages explicitly.
  3. The ABAP service changes only enhancement objects in the customer namespace (Z*, Y* or a namespace the system is the producer of) and only their own entities, never the standard business object. It checks S_DEVELOP, extensibility, package, transport and language, and accepts only new, valid names, including the names of objects BOPF generates. Deleting needs a token from a preview and stops when the enhancement changed in between; database tables with data are not deleted.

Example

The user asks: "Add a subnode NOTES under ROOT of the enhancement ZENH_TOR." The agent then makes the following tool calls, shown here with their arguments; nobody types them by hand. New entity names start with the prefix of the enhancement, here ZENH, so the node becomes ZENH_NOTES:

// 1. Which names will BOPF generate? (Custom_BopfEnhRead)
{ "what": "names", "operation": "createNode", "enhancement": "ZENH_TOR", "node": "ROOT", "name": "ZENH_NOTES" }
// → dataStructure to create first, combinedStructure, combinedTableType, databaseTable

// 2. Create the data structure with SAPWrite and SAPActivate, then check the node (Custom_BopfEnhWrite)
{ "operation": "createNode", "enhancement": "ZENH_TOR", "node": "ROOT", "name": "ZENH_NOTES",
  "dataStructure": "ZS_NOTES_D", "dryRun": true }

// 3. The same call without dryRun creates the node; then check the enhancement (Custom_BopfEnhMaintain)
{ "operation": "check", "enhancement": "ZENH_TOR" }
// → findings of the enhancement, and baseFindings that belong to the standard business object

Known limitations

  • Classic BOPF only. Business objects of the ABAP Programming Model for SAP Fiori (BOPF generated from CDS views) are not handled.
  • New subnodes cannot be made extensible themselves, because the extension does not create extension includes.
  • Entities cannot be renamed. Associations, alternative keys and determination patterns change by delete and create.
  • scope=all returns every entity of the standard business object, which is very large for objects such as /SCMTMS/TOR; combine it with node.
  • The consistency check assigns findings to the standard object by the element SAP reports them for. Findings without such an element count as findings of the enhancement.
  • Tested only with S/4HANA 2025 (SAP_BASIS 816) on-premise. Private cloud and older releases such as S/4HANA 2023 should work as well but are not tested yet.
  • ARC-1 stops every HTTP request to SAP after 120 seconds. A write makes two requests: the dry run and the change.
  • Not available on SAP BTP ABAP Environment and S/4HANA Public Cloud, on ARC-1's multi-target routes and in ARC-1's hyperfocused tool mode; see docs/deployment.md.

Development

docs/development.md covers the code layout, the HTTP contract, abaplint, the ABAP Unit tests with their test enhancement on the EPM sales order, and the build and tests of the extension (npm test).

License

MIT. ARC-1 is a separate project, also under the MIT license.

MIT, read

History

Latest

v0.1.0

Notes

First release of arc-1-bopf-enh: an extension of ARC-1, the MCP server for SAP, for classic BOPF enhancement objects. AI agents connected to ARC-1 can read, create, change, check and delete enhancements of SAP standard business objects, with their nodes, actions, determinations, validations, queries, associations and alternative keys, without the BOPF designer (BOBX).

Tested with S/4HANA 2025 (SAP_BASIS 816) on-premise and ARC-1 1.5.0. Private cloud and older releases such as S/4HANA 2023 should work as well but are not tested yet.

Agent access to ABAP code
  1. @abap2ui5/mcp-serverMCP server for the abap2UI5 check, deploy and run loop
  2. HammerNative macOS code editor for ABAP and CDS
  3. arc-1-lspEdition of ARC-1 that runs ADT calls through adt-ls
  4. arc-1MCP server over the ADT REST API for ABAP objects
  5. arc1-abap-bridgeVS Code bridge between arc-1 and ADT for VS Code
  6. arc1-adt-abap-mcp-extEclipse add-on enabling the ADT MCP server with read-only tools
  7. ABAP Accelerator MCP ServerAWS's ABAP MCP server for Amazon Q Developer and Kiro
  8. Modernization Agents for SAP on AWSAWS agents for ABAP, PI/PO and BW modernisation work
  9. @mcp-abap-adt/coreABAP ADT MCP server published as an npm scope and plugin
  10. chandrashekhar-mahajan/abap-mcp-serverABAP MCP server with ADT tools and five authentication strategies
  11. dassian-adtFork of mcp-abap-abap-adt-api with 25 tools and session recovery
  12. erpl-adtC++ binary speaking the ADT REST API as a CLI and MCP server
  13. bw-modeling-mcpMCP server for BW/4HANA modelling objects
  14. EPOD ADT MCP ServerMCP server for ABAP on the ADT session, in Eclipse or standalone
  15. ZARC1_EXTENSION_FORMSarc-1 extension for SAPscript and Smart Forms objects
  16. fgalastri/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.
  17. fr0ster/mcp-abap-adtABAP MCP server with full CRUD on on-premise and ABAP Cloud
  18. abapsmithABAP MCP server over ADT with a local journal that can undo writes
  19. sap-ai-dev-toolkitMCP proxy pinning an agent's ABAP tools to one SAP system
  20. aibap.mcpGo MCP server that writes, activates and runs ABAP classes via ADT
  21. BellaEclipse plugin bringing Claude into ABAP Development Tools
  22. Maherd18/sap-mcp-serverPolicy-checked MCP server for ABAP development over ADT
  23. sapdumpmcpMCP server reading ABAP short dumps over ADT
  24. ABAP remote filesystemVS Code extension editing ABAP systems over ADT as a filesystem
  25. mcp-abap-abap-adt-apiWrite-oriented MCP server over abap-adt-api
  26. mcp-abap-adtRead-oriented MCP server fetching ABAP programs, classes, tables
  27. SAP MCP Connection ManagerWindows desktop manager handing SAP connections to assistants over MCP
  28. ABAPilotMCP connector for ECC and on-premise S/4HANA with a licensed SAP side
  29. vibing-steampunkADT-to-MCP bridge in Go reaching past what ADT exposes
  30. ADT MCP ServerLocal HTTP MCP server started from ABAP Development Tools for VS Code
  31. ABAP Development Tools for VS CodeSAP's ABAP tools in VS Code for editing, debugging, ATC and transports
  32. SAP Joule for Developers, ABAP AI capabilitiesSAP's AI for ABAP development in ADT for Eclipse and VS Code
  33. ABAPDocMCPMCP server turning a transport request into a WRICEF specification
  34. claude-sap-kitClaude Code plugin adding Custom_* tools to arc-1
  35. Skybuffer AI MCP serverABAP add-on serving business data and transactions as MCP tools
  36. abap-adt-cliCLI that pulls and pushes ABAP packages as local files over ADT
  37. workskong/mcp-abap-adtLight MCP adapter for ABAP over ADT, documented in Korean
  38. KlystronMCP server in ABAP inside the application server, with agent skills
  39. pyrfc-mcpMCP server calling RFC-enabled function modules behind an allowlist
  40. ABAP-AI-CODE-TOOLSabapGit package adding create, modify and delete tools to ABAP AI Code
  41. ABAP AI CodeAgentic coding assistant in ABAP that runs as an SAP GUI report
  42. VERTEXADT extension for Eclipse and VS Code showing three SAP GUI tools

Details

Sources3
Added by handdiscovered herechecked
github.com/abat-TAO/arc-1-bopf-enhtree, pushes, contributors, CIchecked
README.mdquoted, and what the entry declareschecked

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
discovered viaAdded by hand
first seen in the atlas
ecosystem and domainabap, ai-and-agents
Flavors1
Standard ABAP
“Verified live on SAP_BASIS 816 (S/4HANA 2025)” — abat-TAO/arc-1-bopf-enh — README, Statuschecked
History in the atlas2
  1. Entered by intake from the repository README after the admin had routed the URL to a refresh of arc-1, which reported it as a candidate of its own. Written from the README and the repository description.
  2. First seen.
For your agent
Ref
artifact:abat-tao-arc-1-bopf-enh
JSON
/artifacts/abat-tao-arc-1-bopf-enh.json
MCP
Connecting an agent