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 지원 SAP 개발이 필요한 조직을 위해 구축되었습니다. abap-adt-api, mcp-abap-adt, vibing-steampunk의 선구적인 작업에서 영감을 받았으며, ARC-1은 프로덕션 환경에서 실행하는 데 필요한 기능을 추가했습니다:
보안 및 관리 제어
기본적으로 안전함 — 읽기 전용, 자유 SQL 금지, 테이블 미리보기 금지, 기본적으로 전송(transport) 금지.
--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 — MCP 클라이언트를 위한 자동 토큰 프록시가 포함된 SAP BTP 기본 인증
Principal Propagation — Cloud Connector를 통해 전달되는 사용자별 ID(모든 SAP 작업은 기술 계정이 아닌 실제 사용자로 실행됨)
BTP Cloud Foundry 배포
전체 플랫폼 통합을 통해 SAP BTP에서 Cloud Foundry 앱으로 ARC-1을 배포하세요:
Destination 서비스 — 관리형 대상을 통해 SAP 시스템에 연결
Cloud Connector — 연결 프록시를 통해 온프레미스 시스템에 도달
Principal Propagation — X.509 인증서를 통해 종단 간 사용자 ID 전달
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 호출을 건너뜀.Pre-warmer —
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)CI 매트릭스 — Node
22및24;main으로의push및 내부 PR에서 통합 + E2E 실행신뢰성 원격 측정 + 커버리지 — 정보 제공용 CI 신호로 게시됨(비차단)
실제 사용을 위해 개선된 도구
11개의 도구는 실제 LLM 상호 작용 피드백을 기반으로 설계되었습니다:
도구 | 기능 |
SAPRead | ABAP 소스, 테이블 데이터, CDS 뷰, 메타데이터 확장(DDLX), 서비스 바인딩(SRVB), 메시지 클래스, BOR 객체, 배포된 UI5/Fiori 앱(BSP, BSP_DEPLOY) 읽기. 클래스에 대한 구조화된 형식은 메타데이터 + 분해된 include를 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 코드 품질, 짧은 덤프, 프로파일러 추적 |
SAPManage | 기능 프로빙 — 작업 전 시스템이 지원하는 기능 감지 |
도구 정의는 대상 시스템(BTP vs 온프레미스)에 자동으로 적응하여 사용할 수 없는 유형을 제거하고 설명을 조정하므로 LLM이 지원되지 않는 작업을 시도하지 않습니다.
기능 감지
ARC-1은 시작 시 SAP 시스템을 조사하고 동작을 조정합니다:
HANA, abapGit, RAP/CDS, AMDP, UI5 및 전송 가용성 감지
BTP vs 온프레미스 시스템 자동 감지
SAP_BASIS 릴리스를 올바른 ABAP 언어 버전으로 매핑
각 기능은 강제로 켜기/끄기하거나 자동 감지 상태로 둘 수 있음
빠른 시작
npx arc-1@latest --url https://your-sap-host:44300 --user YOUR_USERDocker, 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