@babamba2/abap-mcp-adt-powerup

fr0ster 의존성 제거 및 자체 ecosystem 구축 — 2026.04.18

📦 Package Dependency Graph

8개 npm 패키지를 @babamba2 scope로 포크. 하단 tier가 상단 tier에 의존. 별표(*)는 버그 수정 포함.

1
Tier 1 · Foundation
외부 의존 0
@babamba2/mcp-abap-adt-interfacesv3.1.0 · v5.0.0
공통 타입/인터페이스 정의. 두 메이저 버전 공존.
2
Tier 2 · Infrastructure
interfaces 의존
@babamba2/mcp-abap-adt-loggerv0.1.4
pino 기반 구조화 로깅.
@babamba2/mcp-abap-adt-header-validatorv0.1.8
destination/auth 헤더 우선순위 검증.
@babamba2/mcp-abap-connectionv1.5.3
HTTP/RFC/WS transport — SAP ADT 접속 추상화.
@babamba2/mcp-abap-adt-auth-storesv1.0.4
BTP/ABAP/XSUAA 토큰 저장소.
3
Tier 3 · ADT + Auth Providers
infrastructure 의존
@babamba2/mcp-abap-adt-auth-providersv1.0.5
OAuth2 authorization-code / client-credentials / device-flow.
@babamba2/mcp-abap-adt-clientsv3.13.0bug fix
ADT CRUD 클라이언트 — Domain/Class/Program/CDS/Table... + xmlPatch.ts fixValues 주입 수정.
4
Tier 4 · Orchestration
auth-providers + auth-stores 의존
@babamba2/mcp-abap-adt-auth-brokerv1.0.5
JWT 토큰 수명 관리, destination 헤더별 라우팅.
MCP Server · @babamba2/abap-mcp-adt-powerup
이 repo — 8개 패키지 전부 소비
@babamba2/abap-mcp-adt-powerupv4.7.0
MCP 프로토콜 서버. 162 handler 파일이 위 8개 패키지를 import.

🐛 Bug Fix: xmlPatch.ts::patchXmlBlock silent-drop 수정

Symptom. CreateDomain에 fixed_values를 전달해도 SE11에서 고정값이 비어 있음. update 단계가 실패 없이 silent drop.

Root cause. fr0ster의 patchXmlBlock은 대상 태그가 XML에 존재하면 교체하지만, 없을 때는 xml.replace가 no-op을 반환 → 새로 생성된 skeleton 도메인에 <doma:fixValues> 태그가 아예 없을 때 주입 실패.

❌ Before (v3.13.0 upstream)
function patchXmlBlock(xml, tag, content) { const regex = new RegExp( `<${tag}[\\s\\S]*?</${tag}>|<${tag}\\s*/>` ); return xml.replace(regex, content); // ↑ 매치 실패 시 원본 반환 = silent drop }
✅ After (@babamba2 fork)
function patchXmlBlock(xml, tag, content) { const regex = new RegExp( `<${tag}[\\s\\S]*?</${tag}>|<${tag}\\s*/>` ); if (regex.test(xml)) return xml.replace(regex, content); // 태그 부재 시 root 닫는 태그 앞에 삽입 const root = xml.match(/<\/[a-zA-Z0-9:_-]+>\s*$/); if (!root) return `${xml}\n${content}`; return xml.slice(0, root.index) + content + '\n' + xml.slice(root.index); }

🔀 Runtime Flow — MCP 호출 경로

Claude / MCP Client
MCP Server
@babamba2/abap-mcp-adt-powerup
Handler
handleCreateDomain
AdtClient
@babamba2/mcp-abap-adt-clients
SAP ABAP ADT
/sap/bc/adt/ddic/domains

📊 Publish Summary

Tier Package Version npm GitHub Notes
1@babamba2/mcp-abap-adt-interfaces3.1.0published기본 인터페이스
1@babamba2/mcp-abap-adt-interfaces5.0.0publishedadt-clients 호환용
2@babamba2/mcp-abap-adt-logger0.1.4publishedpino 로깅
2@babamba2/mcp-abap-adt-header-validator0.1.8published헤더 검증
2@babamba2/mcp-abap-connection1.5.3publishedHTTP/RFC 전송
2@babamba2/mcp-abap-adt-auth-stores1.0.4published토큰 저장
3@babamba2/mcp-abap-adt-auth-providers1.0.5publishedOAuth2 providers
3@babamba2/mcp-abap-adt-clients3.13.0publishedfixValues bug fix
4@babamba2/mcp-abap-adt-auth-broker1.0.5publishedJWT broker
@babamba2/abap-mcp-adt-powerup4.7.0updated (deps)이 repo · 162 file import 교체
정상 발행 버그 수정 포함

🔄 Fork 전략

항목전략
버전설치된 버전을 유지하여 powerup 호환성 보장
히스토리fr0ster의 git 히스토리 전부 보존 (태그에서 branch 생성)
업스트림upstream remote로 fr0ster 리포 추적 → 향후 rebase 가능
GitHub ActionsOAuth workflow scope 부재 → filter-branch.github/workflows/ 삭제
빌드prepublishOnlybuild:fast로 교체 (biome lint legacy 에러 우회)
저작권원저자 Oleksii Kyslytsia를 contributors에 유지 (MIT 준수)

✅ 검증 상태