
ARC-1
io.github.marianfoo由 GitHub 帳號 marianfoo 發布v0.9.18更新於 Oct 26, 2026
MCP server for SAP ABAP systems
概覽
透過 ADT REST API 將 AI 助理連接到 SAP ABAP 系統的 MCP 伺服器,提供 12 個依意圖劃分的工具,用來讀取、編輯、測試與傳輸 ABAP 物件。
- 可以做什麼
- 讀取 ABAP 原始碼、方法內容、資料表資料、CDS 檢視、中繼資料與版本歷程,並支援 grep 式原始碼搜尋
- 在 SAP 系統中搜尋物件並進行全文原始碼檢索
- 建立、更新與刪除 ABAP 原始碼及 DDIC 中繼資料,自動上鎖/解鎖,並支援批次啟動物件
- 程式碼導覽(跳至定義、尋找參照、程式碼補全),以及相依性、where-used 與 CDS 影響分析
- 執行語法檢查、ABAP 單元測試、ATC 品質檢查、dump 與追蹤,並進行 lint 與格式化
- 管理 CTS 傳輸、gCTS/abapGit 工作流程、套件、快取以及 FLP 目錄輔助功能
- 適用情境
- 適合在 SAP 系統上進行 AI 輔助 ABAP 開發的團隊,希望助理在受控前提下讀取、修改、測試與傳輸 ABAP 物件。當你需要真實的系統脈絡而非貼上原始碼,或想先以唯讀預設設定試用時,都適用。
- 執行需求
- 可透過 npx 或 Docker 以 stdio 在本機執行,也可部署到 BTP Cloud Foundry。需要 SAP_URL、SAP_USER 與 SAP_PASSWORD,選用 SAP_CLIENT、SAP_LANGUAGE 與 SAP_TRANSPORT。需要能連線到 SAP 系統(BTP 後方的地端系統還需 Cloud Connector);多使用者 HTTP 部署另需 API key、OIDC、OAuth 或 XSUAA 驗證。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 ARC-1,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
ARC-1 — SAP ADT MCP Server
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.
[Test] [CodeQL] [Dependency Review]
Full Documentation | Quickstart | Security Review | Tool Reference | ARC-1 Updates | Blog Series
📬 Stay current with ARC-1 — get major releases, upgrade and security notes, practical guides, and occasional questions where your feedback can shape what comes next. Join ARC-1 Updates →
📖 New: AI ABAP Development blog series — long-form posts on AI for ABAP, ARC-1 design, and real-world BTP / Copilot Studio / Joule walkthroughs. Read the series →
Why ARC-1?
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:
Security & Admin Controls
- Safe by default — read-only, no free SQL, no table preview, no transport writes, no Git writes. Enable each capability with explicit
SAP_ALLOW_*flags - Action deny list — block specific tool actions with
SAP_DENY_ACTIONS(for exampleSAPWrite.delete), without exposing low-level operation codes to admins - Package restrictions — limit AI write operations (create, update, delete) to specific packages with wildcards (
--allowed-packages "Z*,$TMP"). Read operations are not restricted by package — use SAP's native authorization for read-level access control - Data access control (off by default) — table previews, saved SAPscript texts and SLG1 messages require
SAP_ALLOW_DATA_PREVIEW=true; freestyle SQL separately requiresSAP_ALLOW_FREE_SQL=true. Review enabled uses against the SAP API Policy, your SAP agreement, and internal data-governance rules. - Experimental data-source emergency brake — approved data/SQL deployments can set
SAP_BLOCKED_DATA_SOURCES=USR02,PA0002. ARC-1 then parses each SQL request and resolves active CDS plus replacement-object lineage before execution, denying direct or transitive exact-name matches and failing closed when lineage is unsupported or cannot be proven. The empty default adds no metadata calls. This denylist is defense in depth, not a production allowlist or replacement for SAP authorization/CDS DCL; see Authorization & Roles. - Transport safety — transport reads are available for review, while transport mutations require both
--allow-writesand--allow-transport-writes. Update/delete operations auto-use the lock correction number when no explicit transport is provided - Git workflow safety — Git operations are disabled by default. Enable explicitly with
--allow-git-writes/SAP_ALLOW_GIT_WRITES=true - API-key profiles — multi-key HTTP deployments can assign
viewer,viewer-data,viewer-sql,developer,developer-data,developer-sql, oradminper key - Writes restricted to
$TMPwhen enabled — only local/throwaway objects; writing to transportable packages requires explicit--allowed-packages - HTTP security headers (helmet) on by default — HSTS, CSP, X-Frame-Options, CORP, X-Content-Type-Options. COOP is deliberately not set so popup-based OAuth flows (Copilot Studio) keep working. No flag to disable.
- Opt-in CORS for browser MCP clients —
ARC1_ALLOWED_ORIGINS(comma-separated, exact match). Off by default; native MCP clients don't need it - Layered rate limiting — three layers out of the box: per-IP OAuth and shared MCP HTTP edge limits (Layer 1; MCP inherits the historical derived cap unless
ARC1_MCP_HTTP_RATE_LIMIToverrides it), per-user MCP quota (Layer 2, off by default — multi-user deployments opt in viaARC1_RATE_LIMIT=60), and a server-wide SAP-bound semaphore (Layer 3, default 10, on). HonorsRetry-Afteron 429/503 from SAP / BTP gateways. See the Rate Limiting Guide - Dependency and release evidence — Dependabot, npm audit and Dependency Review checks, CodeQL, Trivy container scanning, npm provenance, and a best-effort CycloneDX SBOM for the release's production npm lockfile graph. Section 13 of the security guide lists what each artifact covers, how to verify it, and the gaps. Vulnerability response targets are best-effort and non-contractual.
Authentication
- API key — simple Bearer token for internal deployments
- OIDC / JWT — Entra ID, Keycloak, or any OpenID Connect provider
- OAuth 2.0 — local browser-based login for BTP ABAP Environment service-key development
- XSUAA — SAP BTP native auth with automatic token proxy for MCP clients
- Per-user SAP identity — BTP Destination Service forwards the MCP user to SAP: Cloud Connector principal propagation for on-premise SAP, or
OAuth2UserTokenExchangefor BTP ABAP Environment
BTP Cloud Foundry Deployment
Deploy ARC-1 as a Cloud Foundry app on SAP BTP with full platform integration:
- Destination Service — connect to SAP systems via managed destinations
- Experimental multi-target mode — the default-off BTP mode discovers
destinations marked
arc1.enabled=trueand exposes pinned SID/client plus read-only aggregate endpoints; scoped pinned PP writes require separate destination/IAM opt-ins (setup, administration) - Optional target filtering — for shared multi-system gateways where teams need different target lists. Assign systems/clients through XSUAA roles; IAS changes are optional. This filters IAM-assigned targets, not automatically discovered SAP accounts.
- Cloud Connector — reach on-premise systems through the connectivity proxy
- Per-user destinations — user identity forwarded end-to-end via X.509 certificates for on-premise SAP, or exchanged for an ABAP bearer token for BTP ABAP Environment
- XSUAA OAuth proxy — MCP clients authenticate via standard OAuth, ARC-1 handles the BTP token exchange
- Audit logging — structured events to stderr, file, or BTP Audit Log Service
Token Efficiency
- 12 intent-based tools instead of 200+ individual tools — keeps tool selection simple, with the schema payload guarded by CI budgets and a hyperfocused 1-tool mode for tight context windows
- Method-level read/edit — read or update a single class method, not the whole source (up to 20x fewer tokens)
- Focused source and dependency context — use targeted
SAPReadfor exact implementation behavior. For business purpose, reviews or test design, start withSAPContext(action="deps", type=..., name=...)for available Knowledge Transfer Documents (SKTD/KTD) and dependency contracts, then compare requirements with source. Without documented requirements, intent is unverified.
Built-in Object Caching
- Server-validated source caching — every SAP object read is cached in memory (stdio) or SQLite (http-streamable). Repeated reads use
If-None-Match/ETag conditional GET, so unchanged objects return from cache after SAP confirms304 Not Modified. - Dependency parsing reuse — unchanged, authorized source can reuse parsed dependencies and contracts in memory. Aggregate dependency graphs are not cached; SAP authorization and source validation still apply.
- KTD-aware context — Knowledge Transfer Documents use the source cache and are revalidated when composed into
SAPContext(action="deps"). - Live where-used —
SAPContext(action="usages")and CDS impact analysis query SAP's current repository index with the caller's identity; no startup repository scan is required. - Active/inactive source views —
SAPReadacceptsversion="active" | "inactive" | "auto"and warns when the active source has an unactivated draft. - Write invalidation — when
SAPWriteorSAPActivatemutates an object, both active and inactive source cache entries are dropped; next read revalidates or fetches fresh source.
See docs/caching.md for full documentation.
Testing
- 3,474 unit tests (
104unit test files, mocked HTTP) - 262-test default integration profile against live SAP systems, with explicit skip reasons when credentials or fixtures are missing
- 141-test default E2E profile that executes real MCP tool calls against a running ARC-1 server and live SAP system
- Manual slow SAP profiles keep broad where-used, RAP full-stack, and recursive CTS release coverage out of the PR path (
test:integration:slow,test:e2e:slow, GitHub SAP Slow Tests workflow) - CRUD lifecycle and BTP smoke lanes included (
test:integration:crud,test:integration:btp:smoke) - CI matrix on Node
22and24; live SAP integration + E2E run on internal PRs and manual dispatch, with SAP jobs gated off for docs/chore PRs and external forks - Reliability telemetry + coverage published as informational CI signals (non-blocking)
Tools Refined for Real-World Usage
The 12 tools are designed from real LLM interaction feedback:
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.
Feature Detection
ARC-1 probes the SAP system at startup and adapts its behavior:
- Detects HANA, gCTS, abapGit, RAP/CDS, AMDP, UI5, and transport availability
- Auto-detects BTP vs on-premise systems
- Maps SAP_BASIS release to the correct ABAP language version
- Each feature can be forced on/off or left on auto-detect
- In shared-credential mode (technical user), runs a startup auth preflight once and blocks SAP tool calls with a clear error on 401/403 to avoid repeated failed logins and potential user lockout
ADT API Status and Strategy
For a custom MCP server such as ARC-1, SAP's Third-Party MCP Access reference architecture is the primary design and control baseline we recommend. For a shared service, start with BTP Cloud Foundry, XSUAA and strict principal propagation. SAP's API Policy FAQ Q56 allows custom MCP servers under conditions; Q32 confirms that Integration Suite is not mandatory.
SAP API Policy & Architecture Alignment explains that path, the controls ARC-1 already supports, and the remaining gaps. FAQ Q33 classifies ADT APIs as internal and limits them to endorsed development channels; ARC-1's direct TypeScript ADT client is not specifically identified as one. Clarify that channel and the intended AI-assisted development use with SAP before adoption, including dev/test. BTP hosting and security controls alone do not establish full policy adherence. Per-user SAP identity applies to PP; shared Basic modes retain a shared SAP identity.
Two ARC-1 capabilities can expose business data or execute ad-hoc SQL. Both are off by default and require explicit opt-in env vars, so the operator makes a deliberate decision before they are reachable:
When either capability is enabled, successful data-preview bodies are limited cumulatively per tool
call (2 MiB by default), and only two data-result calls per process remain admitted through parsing
and serialization. SAPQuery.maxRows is separately clamped to 10,000, but wide rows can reach the
byte limit much earlier. See Configuration before tuning
ARC1_MAX_DATAPREVIEW_RESPONSE_BYTES or ARC1_MAX_CONCURRENT_DATA_RESULTS.
With both flags at their defaults, ARC-1's data/sql rows are unreachable. FAQ Q33 excludes application-table reads, business-data export and backend SQL from ADT's intended development-tooling scope. Keep these flags off unless the specific use has a documented allowance or SAP authorization under the applicable agreements; internal approval or a technical opt-in alone is insufficient. Use Published business APIs for business-data integration.
ARC-1 combines capability discovery with conservative defaults and centralized authorization. Discovery establishes technical availability, not API-policy permission. Follow the reference architecture and verify both the API-specific allowance and the deployed controls.
Versioning & Stability
From 1.0 onward ARC-1 follows semantic versioning: patch releases fix bugs, minor releases add backward-compatible capability, and breaking changes to the MCP tool surface, configuration, or auth contract bump the major version.
Experimental, default-off features are excluded from this guarantee until they are promoted — they are clearly labeled and their surface may still change in a minor release. Today this covers the multi-target BTP mode (ADR-0006 / ADR-0007) and the data-source blocklist.
What changed per release: the annotated Release Notes give each release its impact and upgrade action; CHANGELOG.md lists every merged PR.
Quick Start
Install as an Agent Plugin — one portable install for the MCP server and all bundled SAP skills in GitHub Copilot, VS Code, Cursor, Codex, and other compatible clients:
Agent Plugins 1.0 does not define secret prompts, so create the ARC-1 .env in the installed
plugin's persistent data directory before connecting to SAP. See the
Agent Plugin guide for client-specific installation,
safe configuration, and verification.
Install in Claude — pick your surface (full guide: Install in Claude):
-
Claude Desktop — download the latest
arc-1-*.mcpbfrom Releases and double-click it (or Settings → Extensions). Claude prompts for your SAP connection. (The.mcpbis attached to releases automatically; if the newest one doesn't have it yet, see Install in Claude.) -
Claude Code — one install for the MCP server and all SAP skills:
-
Any MCP client / manual — run it directly:
-
Trying it out on your laptop? → Quickstart
-
Full local dev setup (Docker, cookie extractor, client configs)? → Local Development
-
Deploying for a team / BTP? → Deployment
Blog Series — AI ABAP Development
A long-form series on blog.zeis.de covering AI for ABAP development, ARC-1's design, and real-world walkthroughs:
- How I Use AI for Development and Why Context Matters
- ABAP and Agentic AI: The Hidden Problem in Real Projects
- Introducing ARC-1: A Secure ADT MCP Server for Enterprise SAP Development
- ARC-1 on SAP BTP: Secure ABAP Agentic Development Beyond the Laptop
- ARC-1 with Copilot Studio: SAP System Context Beyond Developers
- ARC-1 with Joule Studio: Bringing Real ABAP System Context into Joule
- From SEGW and Legacy UI5 to RAP with ARC-1
Full list and new posts → blog.zeis.de/tags/ai-abap-development-series.
Documentation
Full documentation is available at docs.arc-1-mcp.com.
Development
See CLAUDE.md for codebase structure, testing commands, and contribution guidelines.
Credits
License
MIT
來源:README.md,提交 744064c
工具
0版本歷史
1- v0.9.18最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分