ARC-1
ARC-1 — SAP ADT MCP 服务器
ARC-1 (发音为 arc one [ɑːrk wʌn]) — 专为 SAP ABAP 系统打造的企业级 MCP 服务器。默认安全,可部署于 BTP 或本地环境,并经过大量单元测试、集成测试和端到端 (E2E) 测试的加固。
ARC-1 通过 ADT REST API 将 AI 助手(Claude、GitHub Copilot、Copilot Studio 以及任何 MCP 客户端)连接到 SAP 系统。它以 npm 包 和 Docker 镜像 的形式发布。
为什么选择 ARC-1?
专为需要 AI 辅助开发且具备安全护栏的组织而构建。受 abap-adt-api、mcp-abap-adt 和 vibing-steampunk 等开创性工作的启发,ARC-1 增加了生产环境运行所需的关键功能:
安全与管理控制
默认安全 — 只读,无自由 SQL,无表预览,默认不提供传输功能。使用
--profile developer或显式标志来启用功能操作允许/拒绝列表 — 精确控制允许的操作类型(读取、写入、搜索、查询、激活、传输)
包限制 — 将 AI 写入操作(创建、更新、删除)限制在特定包内,支持通配符(
--allowed-packages "Z*,$TMP")。读取操作不受包限制 — 请使用 SAP 原生授权进行读取级别的访问控制数据访问控制 — 启用表数据预览 (
--block-data=false) 或自由格式 SQL (--block-free-sql=false)传输安全 — 要求分配传输请求,限制特定传输,或将传输设为只读。当未提供显式传输时,更新/删除操作会自动使用锁定修正号
安全配置文件 — 预配置角色:
viewer、viewer-data、viewer-sql、developer、developer-data、developer-sql启用时写入限制为
$TMP— 仅限本地/临时对象;写入可传输包需要显式设置--allowed-packages
身份验证
API 密钥 — 用于内部部署的简单 Bearer 令牌
OIDC / JWT — Entra ID、Keycloak 或任何 OpenID Connect 提供商
OAuth 2.0 — 用于 BTP ABAP 环境的基于浏览器的登录
XSUAA — SAP BTP 原生认证,为 MCP 客户端提供自动令牌代理
主体传播 (Principal Propagation) — 通过云连接器 (Cloud Connector) 转发的每用户身份(每个 SAP 操作均以实际用户身份运行,而非技术账号)
BTP Cloud Foundry 部署
将 ARC-1 作为 Cloud Foundry 应用部署在 SAP BTP 上,并实现完整的平台集成:
目标服务 (Destination Service) — 通过托管目标连接到 SAP 系统
云连接器 (Cloud Connector) — 通过连接代理访问本地系统
主体传播 — 通过 X.509 证书实现端到端用户身份转发
XSUAA OAuth 代理 — MCP 客户端通过标准 OAuth 进行身份验证,ARC-1 处理 BTP 令牌交换
审计日志 — 将结构化事件记录到 stderr、文件或 BTP 审计日志服务
令牌效率
11 个基于意图的工具(约 5K 模式令牌)取代了 200 多个独立工具 — 保持 LLM 上下文窗口精简
方法级读取/编辑 — 读取或更新单个类方法,而非整个源代码(令牌消耗减少高达 20 倍)
上下文压缩 —
SAPContext可在一次调用中返回所有依赖项的公共 API 契约(7-30 倍压缩)
内置对象缓存
自动源码缓存 — 每次读取的 SAP 对象都会缓存在内存 (stdio) 或 SQLite (http-streamable) 中。重复读取无需调用 SAP 即可立即返回。
依赖图缓存 —
SAPContext依赖解析以源码哈希为键;未更改的对象在后续运行中会跳过所有 ADT 调用。预热器 — 启动时使用
ARC1_CACHE_WARMUP=true预索引所有自定义对象,从而实现反向依赖查找 (SAPContext(action="usages"))。写入失效 — 当
SAPWrite修改对象时,其缓存条目会自动删除;下次读取将获取最新源码。
请参阅 docs/caching.md 获取完整文档。
测试
1,367+ 个单元测试(53 个单元测试文件,模拟 HTTP)
~160 个针对真实 SAP 系统的集成测试,在缺少凭据或固定装置时提供明确的跳过原因
~70 个 E2E 测试,在运行中的 ARC-1 服务器和真实 SAP 系统上执行实际的 MCP 工具调用
包含 CRUD 生命周期和 BTP 冒烟测试通道 (
test:integration:crud,test:integration:btp:smoke)Node
22和24的 CI 矩阵;集成 + E2E 测试在push到main分支和内部 PR 时运行可靠性遥测 + 覆盖率作为信息性 CI 信号发布(非阻塞)
针对实际使用优化的工具
这 11 个工具是根据真实的 LLM 交互反馈设计的:
工具 | 功能描述 |
SAPRead | 读取 ABAP 源码、表数据、CDS 视图、元数据扩展 (DDLX)、服务绑定 (SRVB)、消息类、BOR 对象、已部署的 UI5/Fiori 应用 (BSP, BSP_DEPLOY)。类结构化格式返回元数据 + 分解后的包含文件 (JSON) |
SAPSearch | 对象搜索 + 系统范围内的全文源码搜索 |
SAPWrite | 创建/更新/删除 ABAP 源码和 DDIC 元数据,并自动锁定/解锁 (PROG, CLAS, INTF, FUNC, INCL, DDLS, DDLX, BDEF, SRVD, DOMA, DTEL)。支持多对象工作流的批量创建(例如,一次调用完成 RAP 堆栈或域+数据元素) |
SAPActivate | 激活 ABAP 对象 — 单个或批量(对于 RAP 堆栈至关重要)。发布/取消发布 OData 服务绑定 (SRVB) |
SAPNavigate | 转到定义、查找引用、代码补全 |
SAPQuery | 执行 ABAP SQL,并提供表未找到时的建议 |
SAPTransport | CTS 传输管理(列出、创建、发布) |
SAPContext | 压缩的依赖上下文 — 一次调用替代 N 次 SAPRead 调用 |
SAPLint | 本地 ABAP 代码检查(系统感知预设、自动修复、写入前验证) |
SAPDiagnose | 语法检查、ABAP 单元测试、ATC 代码质量、短转储 (Short Dumps)、分析器跟踪 |
SAPManage | 功能探测 — 在操作前检测系统支持的功能 |
工具定义会自动适应目标系统(BTP 与本地),移除不可用的类型并调整描述,确保 LLM 永远不会尝试不支持的操作。
功能检测
ARC-1 在启动时探测 SAP 系统并调整其行为:
检测 HANA、abapGit、RAP/CDS、AMDP、UI5 和传输可用性
自动检测 BTP 与本地系统
将 SAP_BASIS 版本映射到正确的 ABAP 语言版本
每个功能都可以强制开启/关闭或保留为自动检测
快速入门
npx arc-1@latest --url https://your-sap-host:44300 --user YOUR_USER有关 Docker、BTP 部署、客户端配置(Claude Desktop、Claude Code、VS Code、Copilot Studio)以及所有身份验证方法,请参阅 设置指南。
文档
完整文档请访问 marianfoo.github.io/arc-1。
指南 | 描述 |
部署选项、认证方法、客户端配置 | |
全部 11 个工具的完整参考 | |
带有图表的系统架构 | |
Docker 部署参考 | |
所有身份验证方法 | |
SAP BTP 上的 Cloud Foundry 部署 | |
代理工作流模式和最佳实践 |
开发
npm ci && npm run build && npm test请参阅 CLAUDE.md 了解代码库结构、测试命令和贡献指南。
鸣谢
项目 | 作者 | 贡献 |
oisee | 原始 Go MCP 服务器 — ARC-1 的起点 | |
Marcello Urbani | TypeScript ADT 库,权威 API 参考 | |
Mario Andreschak | 第一个用于 ABAP ADT 的 MCP 服务器 | |
Lars Hvam | ABAP 解析器/检查器(通过 @abaplint/core 使用) |
许可证
MIT
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/marianfoo/arc-1'
If you have feedback or need assistance with the MCP directory API, please join our Discord server