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-lsp

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

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

Latestv0.0.1ReleasedLast 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.
Flavors
Runs
Cloud Foundrylocal

Who is behind it

ARC MCPARC MCPOrganisationMaintains this
In the atlas: maintains 9
@arc-mcp
Marian ZeisMarian ZeisPersonMaintains this
In the atlas: maintains 35, contributes to 86, wrote 25
@marianfoo
maintainers

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-1 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 target

  • ARC1_ALLOW_TRANSPORT_WRITES / --allow-transport-writes | false | enable CTS transport creation

For agent access to your code

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

Connections2

Install

npm add arc-1-lsp

Derived from the package name. No recipe recorded; the README has the configuration.

Where arc-1-lsp runsarc-1-lsp — README, checked 2026-09-11: “MCP (stdio | http-streamable)”stdio or HTTPYour MCP client, actorYour MCP clientarc-1-lsp, modulearc-1-lsp
SAPnot SAP's, or the project's ownstated in the document

README

quoted from arc-mcp/arc-1-lsp under MIT, read
arc-mcp/arc-1-lsp/README.mdOn GitHub

arc-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:

  1. standard LSP code-intelligence (textDocument/* — document symbols, go-to- definition, references/where-used, type hierarchy, diagnostics/syntax check, completion) — it is a language server;
  2. a private LSP namespace (adtLs/* — destinations, logon, filesystem, activation, transport, unit tests);
  3. 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 protocolHand-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 coverageAll — 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)
MaturityProduction, multi-user, write-capableWorking; 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 standard textDocument/* APIs; target a declared symbol by name or a 1-based line+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 an if_oo_adt_classrun class 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_object returns ranged syntax diagnostics so an agent can self-correct.
  • Generation + transport (5, gated): generate_objects runs a RAP generator (scaffolds a full table/CDS/behavior/service set); create_transport opens a CTS request; assign_transport pins an existing TR to an object (returns a structured {assigned, object, transport}); list_transports (capped to limit, default 100, with an optional query filter — the system can hold thousands of requests) + get_lock_status (reads). For transportable (non-$TMP) packages the flow is validate_object → find_transport → (create_transport) → create_object/generate_objects (pass the TR as transport).

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

  1. Node.js 22+.
  2. 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 its adt-ls automatically. Discovery order:
    1. ARC1_ADT_LS_PATH (explicit path)
    2. vendor/adt-ls/<platform>/… (build-time injection, for containers)
    3. the newest installed sapse.adt-vscode-* VS Code extension
  3. 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 inside adt-ls's JRE). See docs/native-deps.md.

Compatibility: arc-1-lsp drives adt-ls's private adtLs/* protocol, which can change between releases. This build is verified against sapse.adt-vscode 1.0.0 / adt-ls 1.0.0.202605281240; on a different version arc-1-lsp logs a startup warning and you should re-verify against docs/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/PASSWORD must be set.
  • CC (on-prem via Cloud Connector, on BTP) — bind the connectivity + destination services and set only ARC1_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_*, not SAP_*. The main ARC-1 server uses SAP_* vars; arc-1-lsp uses ARC1_* (e.g. ARC1_ALLOW_TRANSPORT_WRITES, ARC1_SAP_USER). A SAP_* var is ignored — arc-1-lsp logs a startup warning naming the ARC1_* twin it expected so a migrated config doesn't silently lose a setting.

Env / flagDefaultMeaning
ARC1_ADT_LS_PATH / --adt-ls-path(discovered)explicit adt-ls binary
ARC1_ADT_LS_MCP_PORT / --adt-ls-mcp-port2240port 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 / --transportstdiostdio | http-streamable
ARC1_PORT / --port8080HTTP 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-writesfalseenable mutating tools (create/update/activate/delete/generate)
ARC1_ALLOW_TRANSPORT_WRITES / --allow-transport-writesfalseenable CTS transport creation (create_transport) — also requires ARC1_ALLOW_WRITES
ARC1_ALLOWED_PACKAGES / --allowed-packages$TMPpackages writes may target — exact / PREFIX* / *
ARC1_LOG_LEVELinfodebug|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-authbasicbasic (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-destinationSAPadt-ls destination id (DIRECT) or BTP destination name (CC)
ARC1_SAP_CLIENT / --sap-client001SAP client
ARC1_SAP_LANGUAGE / --sap-languageENSAP logon language
ARC1_SAP_INSECURE / --sap-insecuretrueaccept 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 .env auto-loading) — export the vars in your shell or set them via cf 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

DocWhat it covers
docs/adt-ls-reference.mdThe 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.mdarc-1 vs arc-1-lsp coverage, per-capability "implemented? why / why not"
docs/research/adt-ls-capability-map.mdThe 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.mdThe 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.mdThe 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.mdThe watch-list: what to re-verify against new adt-ls releases, and what would let us delete complexity
docs/native-deps.mdSystem libraries adt-ls needs in a slim container
docs/journey.mdThe 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.

MIT, read

History

Latest

v0.4.0

Features 1, Fixes 1

Notes
Features
  • engine: clientcert auth — passwordless X.509 mutual-TLS logon (#8) (ef3dd67)
Bug Fixes
  1. v0.3.0

    Features 1

    Notes
    Features
    • interactive SSO logon for local use (ARC1_SAP_AUTH=sso) (#6) (24a0cbe)
  2. v0.2.1

    Fixes 1

    Notes
    Bug Fixes
    • engine: spread lib services in wrapServices (forward-compat with additive methods) (#4) (e5874e7)
  3. v0.2.0

    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)
  4. v0.1.0

    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
    • adt-ls: pass initializationOptions.userAgentInfos (unblocks backend HTTP) (ec9e1fe)
    • self-heal SAP session re-logon + get_generator_schema packageName (20e6bca)
0downloads per week, npm
Weekly downloads for arc-1-lsp26 complete calendar weeks from 2026-04-27 to 2026-10-25; the latest total is 0.27 Apr – 3 May: 04 May – 10 May: 011 May – 17 May: 018 May – 24 May: 025 May – 31 May: 1441 Jun – 7 Jun: 268 Jun – 14 Jun: 815 Jun – 21 Jun: 4922 Jun – 28 Jun: 529 Jun – 5 Jul: 136 Jul – 12 Jul: 313 Jul – 19 Jul: 620 Jul – 26 Jul: 427 Jul – 2 Aug: 23 Aug – 9 Aug: 110 Aug – 16 Aug: 617 Aug – 23 Aug: 124 Aug – 30 Aug: 731 Aug – 6 Sept: 47 Sept – 13 Sept: 314 Sept – 20 Sept: 321 Sept – 27 Sept: 128 Sept – 4 Oct: 35 Oct – 11 Oct: 012 Oct – 18 Oct: 219 Oct – 25 Oct: 0
Declared alternative
  1. arc-1MCP server over the ADT REST API for ABAP objects
Agent access to your code
  1. @abap2ui5/mcp-serverMCP server for the abap2UI5 check, deploy and run loopfrom ABAP
  2. arc-1-bopf-enharc-1 extension for reading and maintaining BOPF enhancementsfrom ABAP
  3. HammerNative macOS code editor for ABAP and CDSfrom ABAP
  4. arc-1MCP server over the ADT REST API for ABAP objectsfrom ABAP
  5. arc1-abap-bridgeVS Code bridge between arc-1 and ADT for VS Codefrom ABAP
  6. arc1-adt-abap-mcp-extEclipse add-on enabling the ADT MCP server with read-only toolsfrom ABAP
  7. capforgeMCP server scaffolding CAP and CDS checked by cds compilefrom CAP
  8. ABAP Accelerator MCP ServerAWS's ABAP MCP server for Amazon Q Developer and Kirofrom ABAP
  9. Modernization Agents for SAP on AWSAWS agents for ABAP, PI/PO and BW modernisation workfrom ABAP
  10. @mcp-abap-adt/coreABAP ADT MCP server published as an npm scope and pluginfrom ABAP
  11. @cap-js/mcp-serverMCP server for CAP development: model and docs searchfrom CAP
  12. chandrashekhar-mahajan/abap-mcp-serverABAP MCP server with ADT tools and five authentication strategiesfrom ABAP
  13. dassian-adtFork of mcp-abap-abap-adt-api with 25 tools and session recoveryfrom ABAP
  14. erpl-adtC++ binary speaking the ADT REST API as a CLI and MCP serverfrom ABAP
  15. bw-modeling-mcpMCP server for BW/4HANA modelling objectsfrom BTP/BAIP
  16. EPOD ADT MCP ServerMCP server for ABAP on the ADT session, in Eclipse or standalonefrom ABAP
  17. ZARC1_EXTENSION_FORMSarc-1 extension for SAPscript and Smart Forms objectsfrom ABAP
  18. 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.from ABAP
  19. fr0ster/mcp-abap-adtABAP MCP server with full CRUD on on-premise and ABAP Cloudfrom ABAP
  20. abapsmithABAP MCP server over ADT with a local journal that can undo writesfrom ABAP
  21. sap-ai-dev-toolkitMCP proxy pinning an agent's ABAP tools to one SAP systemfrom ABAP
  22. aibap.mcpGo MCP server that writes, activates and runs ABAP classes via ADTfrom ABAP
  23. BellaEclipse plugin bringing Claude into ABAP Development Toolsfrom ABAP
  24. Maherd18/sap-mcp-serverPolicy-checked MCP server for ABAP development over ADTfrom ABAP
  25. sapdumpmcpMCP server reading ABAP short dumps over ADTfrom ABAP
  26. ABAP remote filesystemVS Code extension editing ABAP systems over ADT as a filesystemfrom ABAP
  27. mcp-abap-abap-adt-apiWrite-oriented MCP server over abap-adt-apifrom ABAP
  28. mcp-abap-adtRead-oriented MCP server fetching ABAP programs, classes, tablesfrom ABAP
  29. SAP MCP Connection ManagerWindows desktop manager handing SAP connections to assistants over MCPfrom ABAP
  30. ABAPilotMCP connector for ECC and on-premise S/4HANA with a licensed SAP sidefrom ABAP
  31. vibing-steampunkADT-to-MCP bridge in Go reaching past what ADT exposesfrom ABAP
  32. ADT MCP ServerLocal HTTP MCP server started from ABAP Development Tools for VS Codefrom ABAP
  33. ABAP Development Tools for VS CodeSAP's ABAP tools in VS Code for editing, debugging, ATC and transportsfrom ABAP
  34. SAP Joule for Developers, ABAP AI capabilitiesSAP's AI for ABAP development in ADT for Eclipse and VS Codefrom ABAP
  35. @sap/mdk-mcp-serverMCP server with five tools for Mobile Development Kit workfrom BTP/BAIP
  36. @sap-ux/fiori-mcp-serverMCP server for creating and editing Fiori applicationsfrom UI5
  37. ABAPDocMCPMCP server turning a transport request into a WRICEF specificationfrom ABAP
  38. claude-sap-kitClaude Code plugin adding Custom_* tools to arc-1from ABAP
  39. Skybuffer AI MCP serverABAP add-on serving business data and transactions as MCP toolsfrom ABAP
  40. @ui5/mcp-serverMCP server for UI5 development with ten toolsfrom UI5
  41. abap-adt-cliCLI that pulls and pushes ABAP packages as local files over ADTfrom ABAP
  42. workskong/mcp-abap-adtLight MCP adapter for ABAP over ADT, documented in Koreanfrom ABAP
  43. KlystronMCP server in ABAP inside the application server, with agent skillsfrom ABAP
  44. pyrfc-mcpMCP server calling RFC-enabled function modules behind an allowlistfrom ABAP
  45. ABAP-AI-CODE-TOOLSabapGit package adding create, modify and delete tools to ABAP AI Codefrom ABAP
  46. ABAP AI CodeAgentic coding assistant in ABAP that runs as an SAP GUI reportfrom ABAP
  47. VERTEXADT extension for Eclipse and VS Code showing three SAP GUI toolsfrom ABAP

Details

Sources4
sap-ai-mcp-serversdiscovered herechecked
npm registry, arc-1-lspversion, releases, installschecked
github.com/git+https://github.com/marianfoo/arc-1-lsp.gittree, 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
runtimesnode
deploymentCloud Foundry, local
latestv0.0.1
first release
releases and cadence1
discovered viasap-ai-mcp-servers
first seen in the atlas
ecosystem and domainabap, ai-and-agents
Flavors1
ABAP Cloud
“**Modern ABAP-Cloud types only** (class, interface, CDS, behavior def, service def/binding, …)” — arc-mcp/arc-1-lsp — READMEchecked
History in the atlas2
  1. 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.
  2. First seen.
For your agent
Ref
artifact:arc-mcp-arc-1-lsp
JSON
/artifacts/arc-mcp-arc-1-lsp.json
MCP
Connecting an agent