# ARC-1 [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/marianfoo/arc-1.git  
**GitHub Stars:** 238  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/arc-1-2

## Description
MCP server for SAP ABAP systems

## Tools
Capabilities this server exposes over MCP:

- **SAPRead** — Read SAP ABAP source, metadata and syntax results. For source purpose, explanations, specs, reviews or pre-change context, prefer SAPContext first. DDIC metadata: omit format (default text); structured is CLAS-only for ordinary reads. TABLE_QUERY: multi-column filters, data preview required; CDS needs SAP_BASIS 752+. TABLE_CONTENTS: single-column filter. INACTIVE_OBJECTS: no name. TABL/DTT: technical settings. SYNTAX: read-only SAP check (objectType+name, optional source for unsaved text). CLAS: method="*" for signatures, method="NAME" for one body, or grep. Global class declaration/implementation: MAIN (omit include). definitions/implementations contain local helpers.
- **SAPSearch** — Search for ABAP objects, exact object-directory entries, or source code. Modes:
1. Object search (default): name pattern with wildcards (*); returns type, name, package, description, ADT URI.
2. TADIR lookup (searchType="tadir_lookup"): exact cross-package lookup of one or more names (prefer over long SAPQuery TADIR IN-lists).
3. Source code search (searchType="source_code"): full-text search across source (SAP_BASIS ≥ 7.51).
Tips: BOR objects appear as SOBJ; the uri field feeds SAPNavigate, objectType feeds SAPRead/SAPWrite/SAPActivate. Searches object NAMES only — for field names use SAPRead(type='DDLS', include='elements') or SAPQuery on DD03L.
- **SAPNavigate** — Navigate code: definitions, references, completion, hierarchy. references: where-used objects by default; detail=positions/snippets adds bounded native usages; objectType filters results (e.g. CLAS/OC, PROG/P); type+name replaces uri. hierarchy queries SEOMETAREL for superclass/interfaces/direct subclasses: requires data/SQL opt-in + matching scope; otherwise inspect class MAIN with SAPRead. CDS (DDLS) impact: SAPContext(action="impact") classifies where-used into RAP buckets. Experimental relations: dependency maps or package neighborhoods, then selected reads. Consumer locations: references; objectType="CLAS/OC" for class-only; otherwise omit. Active metadata, not source-call/runtime proof. Coverage unknown. type+name required, no uri/source.
- **SAPLint** — Run local abaplint rules on ABAP/CDS source (auto-selects cloud or on-prem rules by system type). Actions:
- "lint": check source (errors+warnings) for ABAP (PROG/CLAS/INTF/FUNC) and CDS (DDLS).
- "lint_and_fix": lint + auto-fix fixable issues (keyword case, obsolete statements); returns fixed source.
- "list_rules": list rules + current config (no source).
- "format": pretty-print via SAP's ADT formatter (needs source).
- "get_formatter_settings" / "set_formatter_settings": read/update the system's global PrettyPrinter (indentation bool, style keywordUpper|keywordLower|keywordAuto|none; set is blocked read-only).
lint/lint_and_fix/list_rules run locally; format/*_formatter_settings call SAP. Syntax: SAPRead(type="SYNTAX"); ATC/unit tests: SAPDiagnose.
- **SAPDiagnose** — ABAP diagnostics:
- "syntax": check objects[] (CLAS/INTF/PROG/DDLS; version active/inactive). Single: prefer SAPRead SYNTAX.
- "unittest": harmless ABAP Unit for CLAS/PROG/FUGR or DEVC (exact; includeSubpackages recurses).
- "unittest_ci": harmless package tests with source reconciliation; empty/incomplete runs fail.
- "atc": ATC (name+type or objects [{type,name}], max 20). Omit variant for system default; unknown variant errors. "atc_variants": read variants/default, optional variant name filter.
- "atc_ci": package ATC CI; requires available API and verified selection.
- "cds_testcases": read suggested CDS Unit tests (name; SAP_BASIS 8.16+).
- "object_state": active/inactive ETags/hashes/divergence (name+type; CLAS includes). No server-driven types.
- "quickfix": proposals: name+type+source+line; optional column/sourceUri.
- "apply_quickfix": text deltas, no save; quickfix inputs + proposalUri/proposalUserContent.
- "dumps": ST22, newest: user/from/to/maxResults/filters; id=detail.
- "feed_schema": optional dump filters; action only.
- "traces": list profiler traces; id+analysis analyzes one.
- "trace_start": arm NEXT matching execution (write; defaults HTTP, SQL on); reproduce, then read "traces".
- "trace_requests": list armed traces. "trace_cancel": cancel by id (write).
- "system_messages": list SM02 messages. "gateway_errors": list /IWFND/ERROR_LOG (on-prem; detailUrl or id+errorType for detail).
- "odata_perf": read OData timing (url: host-relative; DB/ABAP/framework/auth); needs allowDataPreview.
- "authorization_trace": read STUSERTRACE/SUAUTHVALTRC (on-prem; needs SAP_ALLOW_DATA_PREVIEW).
- "cds_sql": read CDS native SQL (name).
- "sql_trace_state" / "set_sql_trace_state" (sqlOn; needs SAP_ALLOW_WRITES) / "sql_trace_directory": ST05 SQL-trace control.
Quickfix: syntax/ATC → quickfix → apply_quickfix → SAPWrite.
- **SAPContext** — Primary tool for understanding ABAP/CDS objects before specs, reviews, explanations, or changes — use instead of SAPRead when the user asks what an object does. Returns intent first (the object KTD when available) then compressed dependency contracts. Use SAPRead after SAPContext for exact source/method bodies/grep/drafts.

Decision rule — pick the action from the user's question:
- "What breaks if I change <CDS>?" / "Who consumes <I_*>?" / "Blast radius" → action="impact" (DDLS only).
- "Which includes/appends extend <TABL>?" → action="structure", type="TABL".
- "What does <object> do?" / "Explain" / "deps before editing" → action="deps" (default); type+name required.
- "Find all callers of <object>" → action="usages" (live SAP where-used lookup).

impact (CDS blast-radius): upstream AST deps + downstream where-used, classified into RAP buckets (projectionViews, bdefs, serviceDefinitions, serviceBindings, accessControls, metadataExtensions, abapConsumers, documentation, tables, other) + sibling-consistency hints. Use this instead of text-scanning DDDDLSRC/ACMDCLSRC with SAPQuery (it filters the noise). Optional includeIndirect, siblingCheck, siblingMaxCandidates.
deps: target KTD when available + selected dependency contracts, derived from source (not SAP-native relationships or a complete inventory). Counts distinguish root candidates from recursive attempts. Standard helper names are filtered. For CDS, includes dependency DDL/field catalogs for cl_cds_test_environment.
structure (TABL only): the DDIC include/append tree.

Non-CDS reverse-lookup: SAPNavigate(references); CDS: impact. Full detail: docs_page SAPContext.
- **SAPManage** — Probe and report SAP system capabilities. Use BEFORE operations that depend on optional features (abapGit, RAP/CDS, AMDP, HANA, UI5/Fiori, CTS transports, FLP). Also handles package (DEVC) lifecycle.

Actions:
- "features": cached feature status (fast, no round-trip; id, available, mode, probedAt). "probe": re-probe now (feature probes + auth + discovery refresh). "cache_stats": object cache health.
- "create_package" / "delete_package" / "change_package": DEVC lifecycle via ADT packages API.
- FLP read: flp_list_catalogs, flp_list_groups, flp_list_tiles (catalogId). FLP write: flp_create_catalog, flp_create_group, flp_create_tile, flp_add_tile_to_group, flp_delete_catalog. Classic designer tile/target-mapping model, deprecated since S/4HANA 2023; Work Zone exposure v2 needs LADIs (SAPRead type=UIAD).
- "set_api_state": release/revoke an object's API release contract (objectUri, or name+objectType; apiState defaults RELEASED, contract defaults C1 — C0 for SRVD, C3 for classic views). Write counterpart of SAPRead(type="API_STATE").

Returns features + systemType ("onprem"/"btp"); "available: false" means do NOT attempt dependent operations.
- **SAPTransport** — Manage CTS transport requests (SE09/SE10). Actions: list (current user, modifiable), get (tasks + objects), create (always a Workbench (K) request — the package/target sets target & layer, not the request category; optional explicit target), release, delete, remove_object (keep the request), reassign (change owner), release_recursive (tasks then parent), check (does a package need a transport — type, name, package), history (legacy name: current object lock plus assignment candidates — type, name; not complete transport history; read-only, no write scope needed). IDs look like A4HK900123. Status: D/L=modifiable, O/P=releasing, R/N=released.
- **SAPGit** — Git reads and gated abapGit workflows. gCTS mutations are quarantined. abapGit mutations need write/Git gates and allowedPackages ROOT/** or *; clone/pull evidence is unverified. external_info is gated HTTPS SAP egress.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "arc-1": {
    "command": "npx",
    "args": ["-y","arc-1@latest"]
  }
}
```

## Documentation

## What ARC-1 does

ARC-1 exposes SAP ABAP development and administration workflows through the Model Context Protocol. It connects to SAP systems through the ABAP Development Tools REST API and presents a compact set of intent-based tools rather than a separate MCP tool for every SAP operation.

The server can read ABAP source, method bodies, table data, CDS views, access controls, metadata extensions, service bindings, message classes, knowledge-transfer documents, and revision history. Search covers SAP objects and full-text source code. Development workflows include creating, updating, deleting, activating, formatting, testing, diagnosing, and navigating ABAP objects and related DDIC metadata.

Operational tools extend beyond source editing. ARC-1 can inspect and manage CTS transports, work with gCTS and abapGit repositories, inspect dependencies and usages, run ABAP SQL when separately enabled, and provide package, feature, cache, and launchpad helper operations.

## How it works

AI clients communicate with ARC-1 over MCP, while ARC-1 makes authenticated requests to the target SAP system through ADT. It supports SAP BTP and on-premise deployments. BTP Cloud Foundry deployments can use Destination Service, Cloud Connector, XSUAA, audit logging, and optional multi-target destination discovery. Per-user identity forwarding can use Cloud Connector principal propagation for on-premise SAP or token exchange for BTP ABAP Environment.

The tool surface is grouped into twelve intent-based tools. For example, SAPRead handles targeted reads, SAPWrite handles source and metadata mutations, SAPActivate handles activation and service-binding publication, and SAPDiagnose covers syntax checks, ABAP Unit, ATC, dumps, traces, and other diagnostics. SAPContext provides dependency, usage, impact, and structure queries, while SAPLint provides local linting and server-side ADT PrettyPrint.

ARC-1 also supports server-validated caching. Reads can use conditional requests with ETags, and HTTP-streamable deployments store cache data in SQLite; stdio deployments use in-memory caching.

## Setup and configuration

ARC-1 is distributed as an npm package and a Docker image. It can be deployed for local MCP use or as an HTTP service, including on SAP BTP Cloud Foundry. Authentication choices include Bearer API keys, OIDC/JWT providers such as Entra ID or Keycloak, OAuth 2.0 for local BTP development, XSUAA, and SAP identity propagation through destinations.

Write and data capabilities require deliberate configuration. Read-only operation is the default. Administrators can separately enable general writes, transport writes, Git writes, table and other data previews, and freestyle SQL. Package restrictions can constrain create, update, and delete operations; enabled writes otherwise default to the `$TMP` package. API-key HTTP deployments can assign profiles such as viewer, developer, or admin.

Additional controls include action deny lists, allowed origins for browser clients, rate limits, a server-wide SAP concurrency limit, HTTP security headers, audit logging, and an optional blocked-data-source list. These controls supplement SAP authorization rather than replacing it.

## Tools and capabilities

- **SAPRead:** Retrieve exact source, method sections, metadata, data previews, long texts, versions, and inactive-object information.
- **SAPSearch:** Find SAP objects and text matches across source code.
- **SAPWrite:** Modify ABAP and DDIC objects with automatic lock handling.
- **SAPActivate:** Activate individual or grouped objects and publish or unpublish service bindings.
- **SAPNavigate:** Resolve definitions, references, and completions.
- **SAPQuery:** Read saved SAPscript text or run opt-in ABAP SQL.
- **SAPTransport:** Inspect and manage CTS transports, including recursive release and history queries.
- **SAPGit:** Perform guarded gCTS and abapGit operations such as clone, pull, push, commit, and branch management.
- **SAPContext:** Inspect dependencies, usages, CDS impact, and table includes or appends.
- **SAPLint and SAPDiagnose:** Lint, format, syntax-check, test, analyze ATC results, inspect dumps and traces, and apply supported diagnostics.
- **SAPManage:** Probe features, inspect cache statistics, manage packages, and work with FLP catalog, group, and tile helpers.

_Full upstream README: https://allmcps.com/mcp/arc-1-2/readme_

