
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 质量检查、转储与跟踪,并进行 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 分