Skip to main content
Glama

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-apimcp-abap-adtvibing-steampunk 等开创性工作的启发,ARC-1 增加了生产环境运行所需的关键功能:

安全与管理控制

  • 默认安全 — 只读,无自由 SQL,无表预览,默认不提供传输功能。使用 --profile developer 或显式标志来启用功能

  • 操作允许/拒绝列表 — 精确控制允许的操作类型(读取、写入、搜索、查询、激活、传输)

  • 包限制 — 将 AI 写入操作(创建、更新、删除)限制在特定包内,支持通配符(--allowed-packages "Z*,$TMP")。读取操作不受包限制 — 请使用 SAP 原生授权进行读取级别的访问控制

  • 数据访问控制 — 启用表数据预览 (--block-data=false) 或自由格式 SQL (--block-free-sql=false)

  • 传输安全 — 要求分配传输请求,限制特定传输,或将传输设为只读。当未提供显式传输时,更新/删除操作会自动使用锁定修正号

  • 安全配置文件 — 预配置角色:viewerviewer-dataviewer-sqldeveloperdeveloper-datadeveloper-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 2224 的 CI 矩阵;集成 + E2E 测试在 pushmain 分支和内部 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 指南

Docker 部署参考

企业认证

所有身份验证方法

BTP 部署

SAP BTP 上的 Cloud Foundry 部署

AI 使用模式

代理工作流模式和最佳实践

开发

npm ci && npm run build && npm test

请参阅 CLAUDE.md 了解代码库结构、测试命令和贡献指南。

鸣谢

项目

作者

贡献

vibing-steampunk

oisee

原始 Go MCP 服务器 — ARC-1 的起点

abap-adt-api

Marcello Urbani

TypeScript ADT 库,权威 API 参考

mcp-abap-adt

Mario Andreschak

第一个用于 ABAP ADT 的 MCP 服务器

abaplint

Lars Hvam

ABAP 解析器/检查器(通过 @abaplint/core 使用)

许可证

MIT

Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - A tier

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