VOOZH about

URL: https://glama.ai/mcp/servers/marianfoo/arc-1?locale=zh-CN

⇱ ARC-1 by marianfoo | 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 语言版本

  • 每个功能都可以强制开启/关闭或保留为自动检测

Related MCP server: SAP ERP MCP Server by CData

快速入门

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

A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
1hResponse time
1dRelease cycle
47Releases (12mo)
Commit activity
Issues opened vs closed

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