loading…
Search for a command to run...
loading…
MCP server for SAP ABAP systems
MCP server for SAP ABAP systems
ARC-1 (pronounced arc one [ɑːrk wʌn]) — Enterprise-ready MCP server for SAP ABAP systems. Secure by default, deployable to BTP or on-premise, and hardened with large unit/integration/E2E test coverage.
ARC-1 connects AI assistants (Claude, GitHub Copilot, Copilot Studio, and any MCP client) to SAP systems via the ADT REST API. It ships as an npm package and Docker image.
Full Documentation | Quickstart | Tool Reference
Built for organizations that need AI-assisted SAP development with guardrails. Inspired by the pioneering work of abap-adt-api, mcp-abap-adt, and vibing-steampunk — ARC-1 adds what's needed to run in production:
SAP_ALLOW_* flagsSAP_DENY_ACTIONS (for example SAPWrite.delete), without exposing low-level operation codes to admins--allowed-packages "Z*,$TMP"). Read operations are not restricted by package — use SAP's native authorization for read-level access control--allow-data-preview=true) or free-form SQL (--allow-free-sql=true) only when needed--allow-writes and --allow-transport-writes. Update/delete operations auto-use the lock correction number when no explicit transport is provided--allow-git-writes / SAP_ALLOW_GIT_WRITES=trueviewer, viewer-data, viewer-sql, developer, developer-data, developer-sql, or admin per key$TMP when enabled — only local/throwaway objects; writing to transportable packages requires explicit --allowed-packagesDeploy ARC-1 as a Cloud Foundry app on SAP BTP with full platform integration:
SAPContext returns public API contracts of all dependencies in one call (7-30x compression)SAPContext dep resolution keyed by source hash; unchanged objects skip all ADT calls on subsequent runs.ARC1_CACHE_WARMUP=true to pre-index all custom objects at startup, enabling reverse dependency lookup (SAPContext(action="usages")) and fast CDS impact workflows (SAPContext(action="impact", type="DDLS")).SAPWrite modifies an object, its cache entry is automatically dropped; next read fetches fresh source.See docs/caching.md for full documentation.
53 unit test files, mocked HTTP)test:integration:crud, test:integration:btp:smoke)22 and 24; integration + E2E run on push to main and internal PRsThe 12 tools are designed from real LLM interaction feedback:
| Tool | What it does |
|---|---|
| SAPRead | Read ABAP source, table data, CDS views, metadata extensions (DDLX), service bindings (SRVB), message classes, BOR objects, deployed UI5/Fiori apps (BSP, BSP_DEPLOY), plus on-prem metadata reads for authorization fields (AUTH), feature toggles (FTG2), and enhancement implementations (ENHO). Structured format for classes returns metadata + decomposed includes as JSON |
| SAPSearch | Object search + full-text source code search across the system |
| SAPWrite | Create/update/delete ABAP source and DDIC metadata with automatic lock/unlock (PROG, CLAS, INTF, FUNC, INCL, DDLS, DDLX, BDEF, SRVD, DOMA, DTEL). Batch creation for multi-object workflows (e.g., RAP stack or domain+data element in one call) |
| SAPActivate | Activate ABAP objects — single or batch (essential for RAP stacks). Publish/unpublish OData service bindings (SRVB) |
| SAPNavigate | Go-to-definition, find references, code completion |
| SAPQuery | Execute ABAP SQL with table-not-found suggestions |
| SAPTransport | CTS transport management (list/create/release/delete/reassign), transport requirement checks, and reverse lookup history (action="history") |
| SAPGit | Git-based ABAP workflows across gCTS and abapGit (list/clone/pull/push/commit/branch/unlink) with backend auto-selection and safety gating (--allow-git-writes) |
| SAPContext | Compressed dependency context (action="deps"), reverse dependency lookup (action="usages"), and CDS upstream/downstream impact analysis (action="impact" for DDLS) |
| SAPLint | Local ABAP lint (system-aware presets, auto-fix, pre-write validation) + ADT PrettyPrint (server-side formatting) |
| SAPDiagnose | Syntax check, ABAP Unit tests, ATC code quality, short dumps, profiler traces |
| SAPManage | Feature probing — detect what the system supports before acting |
Tool definitions automatically adapt to the target system (BTP vs on-premise), removing unavailable types and adjusting descriptions so the LLM never attempts unsupported operations.
ARC-1 probes the SAP system at startup and adapts its behavior:
npx arc-1@latest --url https://your-sap-host:44300 --user YOUR_USER
Full documentation is available at marianfoo.github.io/arc-1.
| Guide | Description |
|---|---|
| Quickstart | 5-minute npx + Claude Desktop setup |
| Local Development | Full local dev — all install methods, MCP client configs, SSO cookie extractor |
| Deployment | Multi-user deployment — Docker, BTP Cloud Foundry, BTP ABAP |
| Configuration | Every flag and env var, one table |
| Updating | Update procedures per install method |
| Enterprise Auth | Layer A / Layer B auth internals, coexistence matrix |
| Tool Reference | Complete reference for all 12 tools |
| Architecture | System architecture with diagrams |
| AI Usage Patterns | Agent workflow patterns and best practices |
npm ci && npm run build && npm test
See CLAUDE.md for codebase structure, testing commands, and contribution guidelines.
| Project | Author | Contribution |
|---|---|---|
| vibing-steampunk | oisee | Original Go MCP server — ARC-1's starting point |
| abap-adt-api | Marcello Urbani | TypeScript ADT library, definitive API reference |
| mcp-abap-adt | Mario Andreschak | First MCP server for ABAP ADT |
| abaplint | Lars Hvam | ABAP parser/linter (used via @abaplint/core) |
MIT
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"arc-1": {
"command": "npx",
"args": []
}
}
}