arc-1-lsp
An edition of 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, abap that hands every ADT interaction to SAP's own embedded adt-ls language server instead of a hand-rolled HTTP client.
The split is the design: arc-1-lsp owns the MCP front end, authentication and scopes, write safety and orchestration, and adt-ls — SAP's language server, the headless core of the Eclipse tooling — owns CSRF, locking, XML, activation and transports, everything that is system-specific and easy to get subtly wrong. Thirty-nine tools, including LSP code intelligence such as hover, ATC and ABAP Unit with coverage, a create-edit-activate-test-delete authoring loop, RAP generation, run-application and service-binding publish. Runs locally over stdio or as a Docker application on BTP Cloud Foundry.
Facts
Where it sits
Who is behind it
In the atlas: maintains 9@arc-mcpMarian ZeisMarian ZeisMaintains this
In the atlas: maintains 35, contributes to 86, wrote 25@marianfoomaintainers
Before choosing this
Conditions
PracticalFunctional boundary
Single-tenant today, one technical user, with per-user principal propagation on the roadmap — so a shared deployment cannot yet act as the developer who asked. The sibling edition 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, abap speaks ADT directly if you would rather not depend on the language server.
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
- Runtime
- Node.js
- Runs on
- Cloud Foundrylocal
As an MCP server
- Runs as
- central serverlocal process
- Transport
- stdioHTTP
- Authentication
- user and passwordbrowser SSOX.509API keyBTP destination
- Tools
- 39
- Read-only
- nostates it is not
- Guardrails
2 quoted from README show all
ARC1_ALLOWED_PACKAGES/--allowed-packages|$TMP| packages writes may targetARC1_ALLOW_TRANSPORT_WRITES/--allow-transport-writes|false| enable CTS transport creation
For agent access to ABAP code
- Read
- sourcesearchwhere-usedDDICCDStable data
- Change
- writecreateactivatetransportsgit
- Check
- syntaxATCABAP Unit
- Run
- run codedumps
Connections
MCP server over the ADT REST API for ABAP objects
Letting a coding agent read and act on your project or system
Download
Install
npm add arc-1-lspDerived from the package name. No recipe recorded; the README has the configuration.
Architecture
Download
README
quoted from arc-mcp/arc-1-lsp under MIT, readarc-1-lsp
An edition of ARC-1 — a Model Context Protocol (MCP) server for SAP ABAP
development — that delegates all ABAP/ADT interaction to SAP's own embedded
adt-ls language server instead of a hand-rolled ADT HTTP client. arc-1-lsp
owns the MCP front-end, auth/scopes, write-safety, and orchestration; adt-ls
owns CSRF, locking, XML, activation, transport — everything system-specific.
Status: working — connects headless to a SAP system, exposes 39 MCP tools (reads + LSP code-intelligence incl. hover · ATC + ABAP-Unit coverage · a full create→edit→activate→test→delete authoring loop · RAP generation · run-application · service-binding publish · native transport), runs locally over stdio or as a Docker app on SAP BTP Cloud Foundry. Single-tenant / one technical user today; per-user principal propagation is on the roadmap.
Where adt-ls comes from
adt-ls is SAP's language server: the headless core of the Eclipse-based
ABAP Development Tools (ADT), shipped inside the official
ABAP Development Tools for VS Code
extension (sapse.adt-vscode). It exposes three surfaces, and arc-1-lsp drives
all of them:
- standard LSP code-intelligence (
textDocument/*— document symbols, go-to- definition, references/where-used, type hierarchy, diagnostics/syntax check, completion) — it is a language server; - a private LSP namespace (
adtLs/*— destinations, logon, filesystem, activation, transport, unit tests); - an embedded experimental MCP server (object creation, activation, RAP generators, transports, …).
arc-1-lsp does not reimplement any of that — it discovers, spawns, and drives
the developer-provided adt-ls headless (no Eclipse, no VS Code, no browser). The
adt-ls binary is under SAP's Developer License and is never bundled or
redistributed — you bring your own (see Prerequisites and
ADR-0002).
arc-1-lsp vs. main ARC-1 — which should I use?
Both are MCP servers for SAP ABAP and share the same tool shape. They differ in how they talk to SAP, and therefore in what they can do.
| ARC-1 (main) | arc-1-lsp (this repo) | |
|---|---|---|
| ADT protocol | Hand-rolled (CSRF, locking, XML, version quirks) | Delegated to SAP's adt-ls |
| System-specific code to maintain | ~29 ADT modules | ~zero (it's SAP's job) |
| Object-type coverage | All — classic and modern (programs, tables, function groups, domains, CDS, classes, RAP, …) | Modern ABAP-Cloud types only (class, interface, CDS, behavior def, service def/binding, …) |
| Free SQL / data preview | ✅ | ❌ (absent in adt-ls) |
| Navigation / where-used / type hierarchy | ✅ | ✅ (via adt-ls's standard LSP — textDocument/*) |
| Syntax check / ATC | ✅ | ✅ syntax check (check_syntax) + ATC (run_atc, system-default variant) |
| Git (gCTS / abapGit) | ✅ | ❌ (absent in adt-ls) |
| Maturity | Production, multi-user, write-capable | Working; reads + authoring loop; single technical user |
Use main ARC-1 for the broadest coverage (classic objects, free SQL, git, transport release/delete) and production multi-user deployments. Use arc-1-lsp when you want SAP itself to own the ADT protocol — less code to maintain, and behavior that tracks ADT exactly (including its standard LSP code-intelligence) — and your work is on modern ABAP-Cloud objects.
The honest, line-by-line map of what is and isn't wired (and why) lives in
docs/arc-1-feature-parity.md; the live-verified
capability boundary of adt-ls itself is in
docs/adt-ls-reference.md.
What works today
27 MCP tools. Reads work read-only; mutating tools are gated behind
ARC1_ALLOW_WRITES + a package allowlist (transport creation additionally needs
ARC1_ALLOW_TRANSPORT_WRITES).
- Reads (14):
health,list_destinations,list_creatable_objects,search_objects,list_inactive_objects,list_users,list_generators,get_generator_schema,get_object_type_details,get_service_binding,get_service_details,read_source,validate_object,find_transport. - Code intelligence (9, LSP):
document_symbols(outline),go_to_definition,go_to_declaration,find_references,type_hierarchy(super/subtypes + implementations),hover(signature + ABAP-Doc),document_highlight,check_syntax(the ABAP syntax check, no activation needed),completion. adt-ls is a language server — these proxy its standardtextDocument/*APIs; target a declaredsymbolby name or a 1-basedline+character. - Quality & test (3):
run_atc(ABAP Test Cockpit static analysis — security/ performance/cloud-readiness, system-default variant),list_atc_variants,run_unit_tests_with_coverage(test result + statement/branch/procedure coverage). - Runtime & business services (3):
run_application(run anif_oo_adt_classrunclass or program, capture console output),service_binding_details,publish_service_binding(publish/unpublish a SRVB → live OData; write-gated). - Authoring loop (5, write-gated):
create_object,update_source,activate_object,run_unit_tests,delete_object— a full create → edit → activate → test → delete cycle, by object name, for modern ABAP-Cloud types.activate_objectreturns ranged syntax diagnostics so an agent can self-correct. - Generation + transport (5, gated):
generate_objectsruns a RAP generator (scaffolds a full table/CDS/behavior/service set);create_transportopens a CTS request;assign_transportpins an existing TR to an object (returns a structured{assigned, object, transport});list_transports(capped tolimit, default 100, with an optionalqueryfilter — the system can hold thousands of requests) +get_lock_status(reads). For transportable (non-$TMP) packages the flow isvalidate_object→find_transport→ (create_transport) →create_object/generate_objects(pass the TR astransport).
Out of scope here (use main ARC-1): classic object types (program/table/
function group/domain/…), free SQL, transport release/delete, and git. These are
honest limits of adt-ls's headless surface, not missing features — details in
docs/arc-1-feature-parity.md.
The SAP session behind adt-ls self-heals: if it expires (idle timeout →
"logged off"), arc-1-lsp transparently re-logs on and retries the call once.
Architecture
agent (Claude / Copilot / Cursor / …)
│ MCP (stdio | http-streamable)
▼
arc-1-lsp (Node/TS — discovers, spawns & supervises adt-ls; auth + scopes; owns SAP logon)
├─ LSP over pipe ───────────▶ adt-ls (headless, BYO) ← bootstrap, destinations, logon, filesystem, activation
└─ HTTP localhost ─────────▶ adt-ls's own /mcp ← federated tools
│ HTTPS
▼
TLS reverse proxy (CN=localhost, in arc-1-lsp)
│ DIRECT ───────────────▶ SAP ABAP (internet-reachable)
└ CC ─▶ connectivity bridge ─▶ BTP Connectivity ─▶ Cloud Connector ─▶ SAP ABAP
adt-ls requires an HTTPS backend and validates its hostname; SAP's default
self-signed cert (CN=*.dummy.nodomain) fails that. So arc-1-lsp runs a local
TLS-terminating reverse proxy (cert CN=localhost, trusted via a truststore
built from adt-ls's own JRE) and re-originates to the real backend — directly,
or through the connectivity bridge on BTP. Logon is headless reentrance-ticket
emulation (no browser). Full recipe + decisions:
docs/adt-ls-headless-notes.md +
docs/adr/.
Prerequisites
- Node.js 22+.
- A developer-provided
adt-ls(BYO — never redistributed). Install the official ABAP Development Tools for VS Code extension (sapse.adt-vscode, which accepts SAP's Developer License) and arc-1-lsp finds itsadt-lsautomatically. Discovery order:ARC1_ADT_LS_PATH(explicit path)vendor/adt-ls/<platform>/…(build-time injection, for containers)- the newest installed
sapse.adt-vscode-*VS Code extension
- A reachable SAP ABAP system to connect to (optional — the server also
starts disconnected and still serves
health/tools). Runtime cert/proxy deps:openssl+keytool(the latter ships insideadt-ls's JRE). Seedocs/native-deps.md.
Compatibility: arc-1-lsp drives
adt-ls's privateadtLs/*protocol, which can change between releases. This build is verified againstsapse.adt-vscode1.0.0 / adt-ls 1.0.0.202605281240; on a different version arc-1-lsp logs a startup warning and you should re-verify againstdocs/adt-ls-reference.md.
Install & run
From source (stdio)
npm install
npm run build
node dist/index.js # or: npm run dev (tsx, no build)
Point an MCP client at the process over stdio. With no SAP vars set it starts
disconnected (handy for inspecting the tool list); set ARC1_SAP_* to auto-connect
(see Connect a SAP system).
As a CLI (npm)
npm install -g @arc-mcp/arc-1-lsp
arc1-lsp # stdio MCP server (honors the same env/flags)
The npm package ships the Node wrapper only — it still discovers your BYO adt-ls
(it does not contain any SAP binary).
Docker / http-streamable
The container bundles a build-time-injected linux adt-ls and serves MCP over
http-streamable behind an API key — this is the artifact deployed to BTP CF.
# stage the linux adt-ls (admin provides the licensed VSIX → vendor/)
node scripts/extract-adt-ls.mjs
# build the linux/amd64 image (host-builds dist; only prod deps + adt-ls are amd64)
IMAGE=arc-1-lsp:dev bash scripts/docker-build.sh
# run
docker run -e ARC1_API_KEYS=devkey -p 8080:8080 arc-1-lsp:dev
GET /healthz (no auth) for health checks; POST /mcp with
Authorization: Bearer <key> for MCP.
Connect a SAP system
Set the ARC1_SAP_* vars (or --sap-* flags) and arc-1-lsp logs on at startup.
ARC1_SAP_HOST=a4h.example.com ARC1_SAP_PORT=50001 \
ARC1_SAP_USER=DEVELOPER ARC1_SAP_PASSWORD=… ARC1_SAP_DESTINATION=A4H \
node dist/index.js
health then reports connectedDestination, and list_creatable_objects returns
the system's object catalog. Two connection modes:
- DIRECT (default) — the reverse proxy connects straight to an
internet-reachable backend. All four of
HOST/PORT/USER/PASSWORDmust be set. - CC (on-prem via Cloud Connector, on BTP) — bind the
connectivity+destinationservices and set onlyARC1_SAP_DESTINATION <btp-destination-name>; the engine resolves it and routes through the connectivity bridge automatically.
Auth (DIRECT mode): basic (user + password, default), sso (interactive browser
logon), or clientcert (passwordless X.509 mutual TLS — no browser, no password, silent
re-auth; set ARC1_SAP_CLIENT_CERT/_KEY). The client-cert path has its own guide covering
the AS ABAP server setup and how to obtain/store certificates (incl. enterprise / SAP Secure
Login Service): docs/client-cert-auth-setup.md.
Connect an MCP client
// Claude Code (HTTP):
// claude mcp add --transport http arc1lsp https://<host>/mcp \
// --header "Authorization: Bearer <api-key>"
//
// Cursor / Claude Desktop / VS Code — mcp.json:
{
"mcpServers": {
"arc1lsp": {
"url": "https://<host>/mcp",
"headers": { "Authorization": "Bearer <api-key>" }
}
}
}
For local stdio, point the client at the node dist/index.js (or arc1-lsp)
process instead of a URL. GUI inspector: npx @modelcontextprotocol/inspector.
Configuration (precedence: CLI flag > env var > default)
Env prefix is
ARC1_*, notSAP_*. The main ARC-1 server usesSAP_*vars; arc-1-lsp usesARC1_*(e.g.ARC1_ALLOW_TRANSPORT_WRITES,ARC1_SAP_USER). ASAP_*var is ignored — arc-1-lsp logs a startup warning naming theARC1_*twin it expected so a migrated config doesn't silently lose a setting.
| Env / flag | Default | Meaning |
|---|---|---|
ARC1_ADT_LS_PATH / --adt-ls-path | (discovered) | explicit adt-ls binary |
ARC1_ADT_LS_MCP_PORT / --adt-ls-mcp-port | 2240 | port for adt-ls's own MCP server |
ARC1_ADT_LS_MCP_TOKEN / --adt-ls-mcp-token | (generated) | bearer for adt-ls's MCP server |
ARC1_TRANSPORT / --transport | stdio | stdio | http-streamable |
ARC1_PORT / --port | 8080 | HTTP port (http-streamable; CF $PORT honored) |
ARC1_API_KEYS / --api-keys | (none) | edge auth: key[:label-or-profile][,key2…]; empty disables auth (local only). A profile suffix :viewer/:developer/:admin assigns scopes (per-tool enforcement arrives with the XSUAA edge — see ADR-0007); any other suffix is a free label (defaults to developer) |
ARC1_ALLOW_WRITES / --allow-writes | false | enable mutating tools (create/update/activate/delete/generate) |
ARC1_ALLOW_TRANSPORT_WRITES / --allow-transport-writes | false | enable CTS transport creation (create_transport) — also requires ARC1_ALLOW_WRITES |
ARC1_ALLOWED_PACKAGES / --allowed-packages | $TMP | packages writes may target — exact / PREFIX* / * |
ARC1_LOG_LEVEL | info | debug|info|warn|error (stderr only) |
| SAP connection — DIRECT mode (internet-reachable backend) | ||
ARC1_SAP_HOST / --sap-host | — | backend host |
ARC1_SAP_PORT / --sap-port | — | backend HTTPS port |
ARC1_SAP_AUTH / --sap-auth | basic | basic (headless user+password), sso (interactive browser logon — local desktop only; no password, but startup blocks until you sign in and re-auth re-opens the browser on your next call), or clientcert (passwordless X.509 mutual TLS — fully headless, no browser, silent re-auth; needs ARC1_SAP_CLIENT_CERT/_KEY). |
ARC1_SAP_USER / --sap-user | — | SAP user (basic: the reentrance ticket is fetched with these creds; sso / clientcert: an optional destination hint — the real user comes from the cert mapping) |
ARC1_SAP_PASSWORD / --sap-password | — | SAP password (basic mode; set via env / cf set-env, never committed). Not used in sso / clientcert mode. |
ARC1_SAP_CLIENT_CERT / --sap-client-cert | — | PEM client-certificate file path (clientcert mode); the subject must map to a SAP user via CERTRULE. Where to get it — and why your everyday "it just works" SSO cert usually can't be used (short-lived / non-exportable): see Obtaining a client certificate. |
ARC1_SAP_CLIENT_KEY / --sap-client-key | — | PEM private-key file path (clientcert mode). |
ARC1_SAP_DESTINATION / --sap-destination | SAP | adt-ls destination id (DIRECT) or BTP destination name (CC) |
ARC1_SAP_CLIENT / --sap-client | 001 | SAP client |
ARC1_SAP_LANGUAGE / --sap-language | EN | SAP logon language |
ARC1_SAP_INSECURE / --sap-insecure | true | accept the backend's self-signed cert (the proxy's own TLS is trusted separately) |
| SAP connection — CC mode (on-prem via Cloud Connector) | ||
ARC1_SAP_DESTINATION | — | BTP Destination Service name; resolved when connectivity is bound |
Config is read from CLI flags and the process environment only (no
.envauto-loading) — export the vars in your shell or set them viacf set-env.
Deploy to BTP Cloud Foundry
The image deploys to CF as a docker app (see manifest.yml). Secrets stay out of
git — the API key, SAP creds, and the registry pull token are passed at deploy time:
docker push ghcr.io/<owner>/arc-1-lsp:0.1.0
# secrets via cf set-env (never committed):
cf set-env arc-1-lsp ARC1_API_KEYS "$(openssl rand -hex 16)"
cf set-env arc-1-lsp ARC1_SAP_HOST <host>
cf set-env arc-1-lsp ARC1_SAP_PORT 50001
cf set-env arc-1-lsp ARC1_SAP_USER <user>
cf set-env arc-1-lsp ARC1_SAP_PASSWORD <secret>
cf set-env arc-1-lsp ARC1_SAP_DESTINATION <id>
cf set-env arc-1-lsp ARC1_ALLOW_WRITES true # optional, to enable the authoring loop
cf set-env arc-1-lsp ARC1_ALLOWED_PACKAGES '$TMP' # scope writes
# re-push (stop first if the org memory quota is tight — avoids a transient 2×2G):
cf stop arc-1-lsp
CF_DOCKER_PASSWORD=$(gh auth token) cf push arc-1-lsp -f manifest.yml
cf logs shows engine: connected destination …; the MCP health tool reports
connectedDestination. cf push preserves cf set-env vars not listed in the
manifest. If the ghcr image is private, CF pulls it with CF_DOCKER_PASSWORD;
make the package public to drop that.
Test a running instance (local or CF)
The /mcp endpoint is stateless StreamableHTTP — a bare tools/call works, no
session handshake.
ARC1_URL=https://<host>/mcp ARC1_KEY=<api-key> bash scripts/smoke-remote.sh
# → /healthz ok · health {connectedDestination} · tools/list · list_creatable_objects
Documentation
| Doc | What it covers |
|---|---|
docs/adt-ls-reference.md | The authoritative, live-verified adt-ls capability map — URI model, the getLsUri name→URI resolver, the method/tool matrix, the object-type boundary, the proven lifecycle, session self-heal, gotchas |
docs/arc-1-feature-parity.md | arc-1 vs arc-1-lsp coverage, per-capability "implemented? why / why not" |
docs/research/adt-ls-capability-map.md | The complete DECOMPILED adt-ls surface (ground truth — CFR-decompiled com.sap.adt.ls): all 23 adtLs/* segments / ~92 methods with DTO shapes + per-capability usefulness triage + wiring gap. Corrects hover/ATC/formatting verdicts; documents the embedded MCP server's dynamic tool collection |
docs/research/whats-left-on-sap.md | The earlier extension-front-end inventory (superseded in part by the capability map above) — strategic "what's reachable-but-unwired vs blocked-on-SAP" framing |
docs/adt-ls-headless-notes.md | The reverse-engineered headless connection recipe (initialize, reentrance-ticket logon, TLS/truststore) |
docs/adr/ | Architecture Decision Records — each decision, its context, and when to revisit it |
docs/assumptions-and-future-changes.md | The watch-list: what to re-verify against new adt-ls releases, and what would let us delete complexity |
docs/native-deps.md | System libraries adt-ls needs in a slim container |
docs/journey.md | The chronological story, including dead-ends (so they aren't re-walked) |
Contributing? See CONTRIBUTING.md (setup, tests, conventions)
and SECURITY.md (reporting vulnerabilities). Working with Claude
Code? CLAUDE.md is the design + codebase map. Releases are
automated from Conventional Commits via release-please.
Status & roadmap
✅ foundation → ✅ containerize → ✅ deploy to BTP CF → ✅ headless connect (DIRECT) → ✅ read + authoring-loop + generation/transport tools → ✅ session self-heal → ✅ LSP code-intelligence + ATC + coverage + run + native transport (39 tools).
Next: CC-mode deploy (code ready; needs a running Cloud Connector + bound
connectivity/destination), then per-user principal propagation (one
adt-ls session per user via the BTP Destination Service). Roadmap detail in
docs/plans/ and docs/assumptions-and-future-changes.md.
License & credits
MIT © 2026 Marian Zeis and contributors.
Built on the shell of ARC-1 (MIT,
© Alice Vinogradova and contributors) — arc-1-lsp reuses its MCP server,
configuration, authorization model, audit, and logging patterns. SAP's adt-ls
is not included or redistributed (SAP Developer License) — bring your own; see
ADR-0002.
History
Features 1, Fixes 1
Notes
Features 6, Fixes 7
Notes
Features
- adopt @marianfoo/adt-ls — engine becomes a thin adapter (#3) (00a257f)
- lsp: hover, document_highlight, go_to_declaration (semanticTokens-primed) (11d799d)
- quality: ATC (run_atc/list_atc_variants) + ABAP Unit coverage (da2782b)
- server: unwrap federated tool results to clean payloads (e761d35)
- services: run_application + service-binding details/publish (native srvb) (6449c3f)
- transport: native CTS transport list/assign + object lock status (29d8e16)
Bug Fixes
- cold-start: warm-up + robust retry; CDS symbol fallback; trim type_hierarchy (3df0161)
- engine: fall back to the next MCP port when the configured one is busy (f542346)
- session: accurate backendLive + 3-min keep-alive to avoid re-logon churn (a0f052f)
- session: activity-gate the keep-alive to stop idle re-logon churn (8ad3e6f)
- session: heal dead (idle-expired) SAP sessions + keep-alive heartbeat (11df1ff)
- tools: address Cursor re-test DX findings (fba7c9e)
- transport: refuse create_transport for local ($-prefixed) packages (df7d89f)
Features 16, Fixes 2
Notes
Features
- ABAP authoring loop (read/create/update/activate/test/delete) behind write-safety (44c72d2)
- adt-ls: headless reentrance logon — engine connects to a4h (proven) (aa75f8e)
- authz: scope model + API-key profiles + xs-security descriptor (enterprise-auth stage 1) (fc12d5c)
- connectivity bridge (Task 2) + arc-1-style tools task (Task 4.5) (a5bd03a)
- containerize — http-streamable transport, API-key auth, Dockerfile (870aba9)
- deploy to BTP CF — $PORT handling, manifest, live on us10 (9571fd1)
- deploy: arc-1-lsp connects to a4h from BTP CF (plan 04 Task 5, DIRECT mode) (a7e9dfa)
- engine: CF connectivity path — reverse proxy → bridge → Cloud Connector (plan 04 Task 4) (fc1ee7f)
- foundation — embedded adt-ls driver + minimal MCP server (af98d24)
- get_generator_schema forwards referencedObjectType/Name (638f8ad)
- lsp: code-intelligence tools — symbols, definition, references, type hierarchy, syntax check, completion (180f3eb)
- plan 04 (CC bridge) + port arc-1 BTP primitives (4d80624)
- tools: get_service_binding + arc-1 feature-parity doc (why/why-not per capability) (56a1f3f)
- tools: list_users, list_generators, get_generator_schema, get_object_type_details (dd7b633)
- tools: search_objects + list_inactive_objects (LSP) + tool-surface research (775a470)
- wire generate_objects + transport + validation tools (21 total) (e168c79)
Bug Fixes
Others providing
Compare all 43 on the Agent access to ABAP code page →- 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 objects
- @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 loop
- 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 enhancements
- 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 CDS
- 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 objects
- 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 Code
- 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 tools
- 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 Kiro
- 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 work
- @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 plugin
- 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 strategies
- 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 recovery
- 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 server
- 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 objects
- 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 standalone
- 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 objects
- 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.
- 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 Cloud
- 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 writes
- 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 system
- 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 ADT
- 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 Tools
- 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 ADT
- 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 ADT
- 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 filesystem
- 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-api
- 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, tables
- 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 MCP
- 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 side
- 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 exposes
- 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 Code
- 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 transports
- 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 Code
- 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 specification
- 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-1
- 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 tools
- 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 ADT
- 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 Korean
- 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 skills
- 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 allowlist
- 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 Code
- ABAP AI CodeABAP AI CodeAn 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.independent, abapAgentic coding assistant in ABAP that runs as an SAP GUI report
- 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 tools
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
Flavors
“**Modern ABAP-Cloud types only** (class, interface, CDS, behavior def, service def/binding, …)” — arc-mcp/arc-1-lsp — README
History in the atlas
- Triaged out of data/crawled/mcp-candidates.json, the sap-ai-mcp-servers sweep. Written from the repository's own README; the catalogue is credited as where it was found and its words are not reused.
- First seen.
For your agent
- Ref
artifact:arc-mcp-arc-1-lsp- JSON
- /artifacts/arc-mcp-arc-1-lsp.json
- MCP
- Connecting an agent