본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 05. 31. 02:06

sap-bdc-mcp-server

요약

SAP Business Data Cloud(BDC)와 Claude 같은 AI 어시스턴트를 연결하는 MCP 서버입니다. Delta Sharing 프로토콜을 통해 데이터 제품 관리, 공유 생성 및 검증 등 7가지 핵심 도구를 제공합니다.

핵심 포인트

  • SAP BDC와 AI 어시스턴트 간의 데이터 상호작용 지원
  • 데이터 공유 생성, CSN 스키마 관리, 제품 게시 기능 제공
  • v0.2.0에서 엔드 투 엔드 프로비저닝 및 사전 검증 도구 추가
  • Python 및 NPM을 통한 간편한 설치 및 실행 지원

SAP Business Data Cloud (BDC) Connect SDK와의 통합을 제공하는 MCP (Model Context Protocol) 서버입니다. 이 서버를 통해 Claude와 같은 AI 어시스턴트가 데이터 공유, Delta Sharing 프로토콜 작업 및 데이터 제품 관리를 위해 SAP BDC와 상호작용할 수 있습니다.

상태: ✅ PyPI에 출시됨 - v0.2.0 (2026-01-10)

v0.2.0 신규 기능: ✨ provision_share (엔드 투 엔드 오케스트레이션) 및 validate_share_readiness (사전 비행 검증) 도구 추가!

이 MCP 서버는 SAP BDC 작업을 위한 7가지 강력한 도구를 제공합니다:

공유 생성/업데이트 (Create/Update Shares): ORD 메타데이터를 사용하여 데이터 공유 관리
CSN 스키마 관리 (CSN Schema Management): Common Semantic Notation을 사용하여 공유 구성
데이터 제품 게시 (Data Product Publishing): 데이터 제품 게시 및 게시 취소
공유 삭제 (Share Deletion): 공유된 리소스 제거 및 철회
CSN 템플릿 생성 (CSN Template Generation): Databricks 공유로부터 CSN 템플릿 자동 생성
엔드 투 엔드 프로비저닝 (End-to-End Provisioning) ✨: 한 단계로 공유 생성, 권한 부여 및 등록 수행
사전 비행 검증 (Pre-flight Validation) ✨: 오류 방지를 위해 등록 전 공유 검증

  • Python 3.9 이상 (로컬 개발 시 Python 3.11 이상 권장)
  • Databricks 환경에 대한 액세스
  • SAP Business Data Cloud 계정
  • Delta Sharing을 위해 구성된 Databricks 수신자 (recipient)
  • 로컬 개발용: Databricks 개인 액세스 토큰 (personal access token)

선호하는 언어/플랫폼을 선택하세요:

pip install sap-bdc-mcp-server

npm install @mariodefelize/sap-bdc-mcp-server

참고: npm 패키지는 Python MCP 서버를 래핑(wrap)하므로 Python 3.9 이상이 설치되어 있어야 합니다.

전체 Node.js/TypeScript 문서는 NPM_README.md를 참조하세요.

# 저장소 복제
git clone https://github.com/MarioDeFelipe/sap-bdc-mcp-server.git
cd sap-bdc-mcp-server
...

프로젝트 루트에 .env 파일을 생성하세요:

# Databricks 설정
DATABRICKS_RECIPIENT_NAME=your_recipient_name
DATABRICKS_HOST=https://your-workspace.cloud.databricks.com
...

서버는 dbutils 없이도 작동하는 LocalDatabricksClient를 자동으로 사용합니다.

Databricks 노트북 내부에서 실행하는 경우, 다음 항목만 설정하십시오:

DATABRICKS_RECIPIENT_NAME=your_recipient_name
LOG_LEVEL=INFO

서버가 노트북 환경을 자동으로 감지하여 dbutils를 사용합니다.

MCP 서버는 stdio 기반 서비스로 실행됩니다:

python -m sap_bdc_mcp.server

또는 설치된 스크립트를 사용하여 실행할 수 있습니다:

sap-bdc-mcp

이 서버를 Claude Desktop 설정 파일에 추가하십시오:

MacOS의 경우: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows의 경우: %APPDATA%\Claude\claude_desktop_config.json

{
"mcpServers": {
"sap-bdc": {
...

Node.js/TypeScript 애플리케이션의 경우, npm 패키지를 사용하십시오:

import { createSapBdcMcpClient } from '@mariodefelize/sap-bdc-mcp-server';
const client = await createSapBdcMcpClient({
env: {
...

전체 Node.js/TypeScript 문서 및 예제는 NPM_README.md를 참조하십시오.

또는, 가상 환경(virtual environment)에 설치된 경우:

{
"mcpServers": {
"sap-bdc": {
...

ORD 메타데이터를 사용하여 데이터 공유(data share)를 생성하거나 업데이트합니다.

매개변수 (Parameters):

share_name

(필수): 공유 이름
ord_metadata

(선택 사항): ORD 메타데이터 객체
tables

(선택 사항): 포함할 테이블 이름 배열

예시 (Example):

{
"share_name": "customer_data_share",
"ord_metadata": {
...

CSN 형식을 사용하여 공유를 생성하거나 업데이트합니다.

매개변수 (Parameters):

share_name

(필수): 공유 이름
csn_schema

(필수): CSN 스키마(schema) 정의 객체

예시 (Example):

{
"share_name": "product_share",
"csn_schema": {
...

데이터 제품(data product)을 게시하여 소비할 수 있도록 만듭니다.

매개변수 (Parameters):

share_name

(필수): 공유 이름
data_product_name

(필수): 데이터 제품 이름

예시 (Example):

{
"share_name": "customer_data_share",
"data_product_name": "CustomerAnalytics"
...

공유를 삭제하고 공유된 리소스를 회수합니다.

매개변수 (Parameters):

share_name

(필수): 삭제할 공유 이름

예시 (Example):

{
"share_name": "old_share"
}

기존 Databricks share로부터 CSN 템플릿을 생성합니다.

매개변수 (Parameters):

share_name

(필수): Databricks share의 이름

예시 (Example):

{
"share_name": "existing_databricks_share"
}

원스텝 프로비저닝 (One-step provisioning): 단일 작업으로 Databricks share를 생성하고, 수신자에게 권한을 부여하며, SAP BDC에 등록합니다.

이 도구는 전체 워크플로 (workflow)를 오케스트레이션 (orchestrate)합니다:

  • Databricks Delta share 생성
  • 지정된 테이블을 share에 추가
  • 설정된 수신자에게 share 권한 부여
  • SAP BDC에 share 등록

매개변수 (Parameters):

share_name

(필수): 생성할 share의 이름
tables

(필수): 테이블 이름 배열 (형식: catalog.schema.table 또는 schema.table)
ord_metadata

(필수): ORD 메타데이터 (metadata) 객체
title

(필수): share의 표시 제목
shortDescription

: 짧은 설명
description

: 상세 설명
version

: 버전 번호 (예: "1.0.0")
releaseStatus

: 상태 (예: "active", "beta")
tags

: 태그 배열

comment

(선택 사항): Databricks share에 대한 주석
auto_grant

(선택 사항): 수신자에게 자동 권한 부여 (기본값: true)
skip_if_exists

(선택 사항): share가 이미 존재하는 경우 건너뛰기 (기본값: true)

예시 (Example):

{
"share_name": "customer_analytics",
"tables": ["main.analytics.customers", "main.analytics.orders"],
...

수행 작업 (What it does):

  • ✅ Databricks share 생성 (이미 존재하는 경우 건너뜀)
  • ✅ 지정된 모든 테이블을 share에 추가
  • ✅ 수신자에게 SELECT 권한 부여
  • ✅ ORD 메타데이터와 함께 SAP BDC에 등록
  • ✅ 단계별 진행 피드백 제공
  • ✅ 단계 중 실패할 경우, 완료된 작업과 수동으로 수행해야 할 작업 안내

수동 단계 대신 이 도구를 사용하는 이유:

  • 4개의 개별 작업 대신 단일 명령어로 수행 가능
  • 자동 에러 핸들링 (error handling) 및 복구 가이드 제공
  • 멱등성 (Idempotent) 보장 - 중단 시 재시도해도 안전함
  • 각 단계의 성공/실패에 대한 명확한 가시성 제공

등록 전 검증 (Validate before you register): Databricks share가 BDC Connect 작업을 수행할 준비가 되었는지 확인하십시오.

이 도구는 다음과 같은 종합적인 사전 점검 (pre-flight checks)을 수행합니다:

  • ✅ Databricks에 Share가 존재하는지 확인
  • ✅ Share에 테이블/객체가 있는지 확인
  • ✅ Share가 수신자에게 권한 부여되었는지 확인
  • ✅ 검증 실패 시 실행 가능한 다음 단계 제공

매개변수 (Parameters):

share_name

(필수): 검증할 Share의 이름

check_bdc_registration

(선택 사항): BDC 등록 상태도 함께 확인 (기본값: false)

예시 (Example):

{
"share_name": "customer_data_share"
}

성공 응답 (Success Response):

✅ Share 'customer_data_share'가 BDC Connect 등록을 위한 준비가 되었습니다!
모든 검사를 통과했습니다:
✅ PASS Share 'customer_data_share'가 Databricks에 존재합니다
...

실패 응답 (Failure Response):

❌ Share 'test_share'가 BDC Connect를 위한 준비가 되지 않았습니다
발견된 오류:
❌ Share가 비어 있음 - 추가된 테이블이 없음
...

사용 사례 (Use Cases):

등록 전: create_or_update_share를 호출하기 전에 Share를 검증
문제 해결 (Troubleshooting): 등록이 실패한 원인 파악
문서화 (Documentation): 필요한 사항에 대한 체크리스트 생성
CI/CD 파이프라인: 배포 전 자동화된 검증
온보딩 (Onboarding): 신규 사용자가 전제 조건을 이해하도록 지원

이것이 중요한 이유:

  • "시행착오 (trial and error)" 워크플로우 방지 - Share가 준비되었는지 사전에 파악
  • 모호한 에러 메시지 대신 명확하고 실행 가능한 가이드 제공
  • 등록을 시도하기 전에 문제를 포착하여 시간 절약
  • 한 번의 호출로 모든 전제 조건 검증

서버는 다음을 사용합니다:

MCP SDK: 프로토콜 구현용
SAP BDC Connect SDK: SAP Business Data Cloud 작업을 위한 SDK
Delta Sharing: 보안 데이터 공유를 위한 개방형 프로토콜
ORD 프로토콜: 리소스 검색 및 메타데이터용

pytest

sap-bdc-mcp-server/
├── src/
│ └── sap_bdc_mcp/
...

SAP BDC Connect SDK는 원래 Databricks 노트북 내부에서 실행되도록 설계되어 dbutils (Databricks 유틸리티)에 대한 액세스가 필요했습니다. 이로 인해 로컬 개발이 어려웠습니다.

우리는 LocalDatabricksClient를 만들었습니다

  • dbutils 없이도 작동하도록 SAP BDC SDK를 확장한 커스텀 래퍼 (wrapper)

. 이를 통해 다음이 가능해집니다:

로컬 개발 (Local development) - Databricks 노트북 없이 사용자의 로컬 머신에서 실행
IDE 통합 (IDE integration) - 선호하는 개발 도구 사용 가능
쉬운 디버깅 (Easier debugging) - 표준 Python 디버깅 워크플로우 활용
CI/CD 친화적 (CI/CD friendly) - 자동화된 파이프라인에서 작동
Claude Desktop 통합 (Claude Desktop integration) - MCP 서버 직접 사용

LocalDatabricksClient 클래스:

dbutils 요구사항 우회

  • 워크스페이스 URL 및 API 토큰을 직접 수락

.env 파일로부터 읽기

  • 노트북 컨텍스트(notebook context)가 필요 없음

모드 자동 감지

  • 브라운필드 (Brownfield, BDC Connect) 또는 Databricks Connect 모드를 자동으로 사용

호환성 유지

  • SAP BDC SDK API와 완전히 호환됨

명확한 에러 메시지

  • 설정이 누락된 경우 유용한 가이드 제공
from sap_bdc_mcp.local_client import LocalDatabricksClient
# 환경 변수로부터 초기화
client = LocalDatabricksClient.from_env()
...

BDC Connect 모드 (Brownfield) ✨

  • 인증을 위해 OIDC 페더레이션 (OIDC federation) 사용
  • Databricks secrets 불필요
  • 더 간단한 설정
  • 수신자(recipient)가 설정되어 있는 경우 자동으로 감지됨

Databricks Connect 모드

  • 추가적인 secrets (api_url, tenant, token_audience) 필요
  • 환경 변수를 통해 제공 가능
  • 그린필드 (Greenfield) 배포용

전체 가이드를 확인하세요:

QUICKSTART.md - 5분 만에 시작하기
IMPLEMENTATION_SUCCESS.md - 기술적 심층 분석
HOW_TO_CREATE_SHARE.md - 전체 워크플로우 가이드

강조할 주요 포인트:

문제점 (The Problem): SAP BDC SDK는 dbutils를 요구하여 사용처를 Databricks 노트북으로 제한함
조사 (The Investigation): dbutils가 실제로 무엇을 제공하는지 이해하기 위해 SDK를 분석함
발견 (The Discovery): 단 2가지 용도로만 사용됨 - 워크스페이스 자격 증명(credentials) 획득 및 secrets 접근
해결책 (The Solution): 자격 증명을 직접 주입하는 LocalDatabricksClient를 생성함
결과 (The Result): 200줄 미만의 코드로 완전한 로컬 개발 지원 구현

기술적 하이라이트:

  • DatabricksClient로부터 커스텀 상속 (Custom inheritance)
  • dbutils를 우회하기 위해 __init__ 오버라이드 (Override)

요구사항 - _get_secret() 오버라이드 (Override)

환경 변수 (env vars)로부터 읽기 위해 - 모든 SDK 기능 유지

  • SAP BDC SDK 자체에는 변경 사항 없음
┌─────────────────────────┐
│ Claude Desktop │
│ (MCP Client) │
...

서버는 다음을 사용합니다:

MCP SDK: 프로토콜 구현용
SAP BDC Connect SDK: SAP Business Data Cloud 작업을 위한 SDK
Delta Sharing: 보안 데이터 공유를 위한 개방형 프로토콜
ORD Protocol: 리소스 검색 및 메타데이터용

서버는 두 가지 통합 모드를 지원합니다:

1. 노트북 모드 (Notebook Mode) (기존)

  • Databricks 노트북 내부에서 실행
  • 인증을 위해 dbutils 사용 - 활성화된 노트북 세션 필요

2. 로컬 모드 (Local Mode) (신규!) ✨

  • 로컬 머신에서 실행
  • 인증을 위해 환경 변수 (environment variables) 사용
  • 노트북 불필요

인증은 다음을 통해 처리됩니다:

  • Databricks 워크스페이스 인증 정보 (URL + 토큰)
  • Databricks 내 수신자 (Recipient) 설정
  • SAP BDC 서비스 인증 정보 (BDC Connect 모드에서 자동 구성됨)

로컬 개발 시:

  • DATABRICKS_HOST, DATABRICKS_TOKEN, DATABRICKS_RECIPIENT_NAME이 포함된 .env 파일이 존재하는지 확인하십시오.
  • Databricks 토큰이 유효한지 확인하십시오.
  • 워크스페이스 URL이 올바른지 확인하십시오.

노트북 환경 시:

  • dbutils를 사용할 수 있는 Databricks 노트북에서 실행 중인지 확인하십시오.
  • DATABRICKS_RECIPIENT_NAME 환경 변수를 설정하십시오.

로컬 개발을 위해, .env 파일에 다음 항목이 설정되어 있는지 확인하십시오:

DATABRICKS_HOST=https://your-workspace.cloud.databricks.com
DATABRICKS_TOKEN=dapi...
DATABRICKS_RECIPIENT_NAME=your_recipient_name

SAP BDC에 등록하기 전에 Databricks에 공유 (share)가 존재해야 합니다:

  • 먼저 Databricks에서 Delta share를 생성하십시오.
  • 수신자에게 해당 공유 권한을 부여하십시오.
  • 그런 다음 이 서버를 사용하여 SAP BDC에 등록하십시오.

상세 단계는 HOW_TO_CREATE_SHARE.md를 참조하십시오.

Databricks에서 수신자에게 공유 권한을 부여하십시오:

GRANT SELECT ON SHARE your_share_name TO RECIPIENT your_recipient_name;

  • PyPI의 SAP BDC Connect SDK
  • Model Context Protocol (MCP) 문서
  • Delta Sharing 프로토콜
  • SAP Business Data Cloud

이 MCP 서버는 있는 그대로(as-is) 제공됩니다. 이 통합 기능을 사용할 때는 SAP BDC Connect SDK 라이선스 약관을 검토해 주세요.

기여(Contributions)를 환영합니다! 다음 사항에 대한 자세한 내용은 CONTRIBUTING.md를 참조하세요:

  • 개발 환경 설정

  • 테스트 실행

  • 풀 리퀘스트 (Pull Requests) 제출

  • 코드 스타일 가이드라인

  • Databricks 환경을 통한 초기 검증

  • 로컬 개발 지원 (LocalDatabricksClient)

  • PyPI 패키지 배포

  • 포괄적인 문서화

  • Node.js 환경을 위한 npm 패키지

  • 추가적인 SAP BDC SDK 기능

  • 향상된 에러 처리 및 로깅

  • 더 많은 통합 예제 및 튜토리얼

  • 비디오 튜토리얼 및 데모

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub Claude Ecosystem의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0