Token导航 LogoToken导航TokenDH.com
Sap Bdc MCP Server logo
运维云端stdio官方级别未说明来源级核验

Sap Bdc MCP Server

MCP Server

一个用于SAP Business Data Cloud的MCP服务器,提供数据共享、Delta Sharing协议操作和数据产品管理功能。

工具数

0

提示词数

0

GitHub Stars

9

资源数

0
PythonClaude云端部署Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

MarioDeFelipe

提供方

MarioDeFelipe

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install sap-bdc-mcp-server

详细介绍

SAP业务数据云MCP服务器

![License: MIT](https://opensource.org/licenses/MIT) ![Python 3.9+](https://www.python.org/downloads/) ![MCP](https://modelcontextprotocol.io)

提供与SAP Business Data Cloud(BDC)Connect SDK集成的MCP(模型上下文协议)服务器。该服务器使像Claude这样的人工智能助手能够与SAP BDC进行交互,以实现数据共享、增量共享协议操作和数据产品管理。

状态: ✅ 在PyPI上发布- v0.2.0版本 (2026-01-10) v0.2.0中的新功能: ✨ 添加 provision_share (端到端编排)和 validate_share_readiness (飞行前验证)工具!

特性

此MCP服务器提供 7个强大的工具 对于SAP BDC操作:

  • 创建/更新共享:使用ORD元数据管理数据共享
  • CSN架构管理:使用通用语义表示法配置共享
  • 数据产品发布:发布和取消发布数据产品
  • 共享删除:删除和撤回共享资源
  • CSN模板生成:从copula共享中自动生成CSN模板
  • 端到端资源调配 ✨: 一步式共享创建、授予和注册
  • 飞行前验证 ✨: 在注册前验证股份以防止错误

先决条件

  • Python 3.9+(建议本地开发使用Python 3.11+)
  • 访问copula环境
  • SAP业务数据云帐户
  • 已为增量共享配置了copula收件人
  • 用于本地开发:Rancher个人访问令牌

快速开始

安装

选择您喜欢的语言/平台:

Python(PyPI)

pip install sap-bdc-mcp-server

Node.js/TypeScript(npm)

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

注: npm包需要安装Python 3.9+,因为它封装了Python MCP服务器。

看 获取完整的Node.js/TypeScript文档。

来源

# Clone the repository
git clone https://github.com/MarioDeFelipe/sap-bdc-mcp-server.git
cd sap-bdc-mcp-server

# Install Python package in development mode
pip install -e .

# Install npm dependencies (optional, for Node.js development)
npm install

配置

地方发展(推荐)

创建一个 .env 项目根目录中的文件:

# Databricks Configuration
DATABRICKS_RECIPIENT_NAME=your_recipient_name
DATABRICKS_HOST=https://your-workspace.cloud.databricks.com
DATABRICKS_TOKEN=your_databricks_token

# Optional
LOG_LEVEL=INFO

服务器将自动使用 LocalDatabricksClient 无需 dbutils.

适用于copula笔记本环境

如果在ViewModel笔记本中运行,只需设置:

DATABRICKS_RECIPIENT_NAME=your_recipient_name
LOG_LEVEL=INFO

服务器将自动检测笔记本电脑环境并使用 dbutils.

用法

Python用法

运行服务器

MCP服务器作为基于stdio的服务运行:

python -m sap_bdc_mcp.server

或者使用已安装的脚本:

sap-bdc-mcp

与Claude Desktop集成

将此服务器添加到您的Claude Desktop配置文件中:

在MacOS上: ~/Library/Application Support/Claude/claude_desktop_config.json

在Windows上: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "sap-bdc": {
      "command": "python",
      "args": ["-m", "sap_bdc_mcp.server"],
      "env": {
        "DATABRICKS_RECIPIENT_NAME": "your_recipient_name"
      }
    }
  }
}

Node.js/TypeScript用法

对于Node.js/TypeScript应用程序,请使用npm包:

import { createSapBdcMcpClient } from '@mariodefelize/sap-bdc-mcp-server';

const client = await createSapBdcMcpClient({
  env: {
    DATABRICKS_HOST: process.env.DATABRICKS_HOST,
    DATABRICKS_TOKEN: process.env.DATABRICKS_TOKEN,
    DATABRICKS_RECIPIENT_NAME: process.env.DATABRICKS_RECIPIENT_NAME,
  },
});

// Validate a share
const validation = await client.validateShareReadiness({
  share_name: 'my_share',
});

console.log(validation);

await client.close();

看 获取完整的Node.js/TypeScript文档和示例。

或者,如果安装在虚拟环境中:

{
  "mcpServers": {
    "sap-bdc": {
      "command": "C:\\path\\to\\venv\\Scripts\\python.exe",
      "args": ["-m", "sap_bdc_mcp.server"],
      "env": {
        "DATABRICKS_RECIPIENT_NAME": "your_recipient_name"
      }
    }
  }
}

可用工具

1.创建或更新共享

使用ORD元数据创建或更新数据共享。

参数:

  • share_name (必填):股份名称
  • ord_metadata (可选):ORD元数据对象
  • tables (可选):要包含的表名数组

例子:

{
  "share_name": "customer_data_share",
  "ord_metadata": {
    "title": "Customer Data",
    "description": "Shared customer information"
  },
  "tables": ["customers", "orders"]
}

2.创建_更新_共享_csn

使用CSN格式创建或更新共享。

参数:

  • share_name (必填):股份名称
  • csn_schema (必需):CSN模式定义对象

例子:

{
  "share_name": "product_share",
  "csn_schema": {
    "definitions": {
      "Products": {
        "kind": "entity",
        "elements": {
          "ID": {"type": "String"},
          "name": {"type": "String"}
        }
      }
    }
  }
}

3.发布_数据_产品

发布数据产品以供使用。

参数:

  • share_name (必填):股份名称
  • data_product_name (必填):数据产品的名称

例子:

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

4.删除_共享

删除共享并撤回共享资源。

参数:

  • share_name (必填):要删除的股份名称

例子:

{
  "share_name": "old_share"
}

5.generate_csn模板

从现有的copula共享生成CSN模板。

参数:

  • share_name (必填):copula共享的名称

例子:

{
  "share_name": "existing_databricks_share"
}

6.准备金_份额✨ 新增:端到端编排

一步配置:在一次操作中创建ViewModel共享、授予收件人并向SAP BDC注册。

此工具协调完整的工作流程:

  1. 创建ConnectionDelta共享
  2. 将指定的表添加到共享中
  3. 将共享授予您配置的收件人
  4. 在SAP BDC中注册共享

参数:

  • share_name (必填):要创建的股份名称
  • tables (必填):表名数组(格式: catalog.schema.tableschema.table)
  • ord_metadata (必需):作战需求文件元数据对象

- title (必填):显示股份的标题 - shortDescription:简要说明 - description:详细说明 - version:版本号(例如“1.0.0”) - releaseStatus:状态(例如,“活动”、“测试版”) - tags:标签数组

  • comment (可选):对Rancher共享的评论
  • auto_grant (可选):自动授予收件人(默认值: true)
  • skip_if_exists (可选):如果共享已存在,则跳过(默认值: true)

例子:

{
  "share_name": "customer_analytics",
  "tables": ["main.analytics.customers", "main.analytics.orders"],
  "ord_metadata": {
    "title": "Customer Analytics Data",
    "shortDescription": "Customer and order data for analytics",
    "description": "Comprehensive customer analytics dataset including customer profiles and order history",
    "version": "1.0.0",
    "releaseStatus": "active",
    "tags": ["analytics", "customer", "orders"]
  },
  "comment": "Customer analytics share for data consumers",
  "auto_grant": true
}

它的作用:

  • ✅ 创建copula共享(如果存在,则跳过)
  • ✅ 将所有指定的表添加到共享中
  • ✅ 授予收件人SELECT权限
  • ✅ 使用ORD元数据在SAP BDC中注册
  • ✅ 提供逐步进度反馈
  • ✅ 如果任何步骤失败,显示已完成的步骤和手动执行的步骤

为什么使用此步骤而不是手动步骤:

  • 单个命令,而不是4个单独的操作
  • 自动错误处理和恢复指导
  • Idempotent-如果中断,可以安全重试
  • 清楚地了解每个步骤的成功/失败

7.validate_share_ready✨ 新:飞行前验证

注册前验证:检查copula共享是否已准备好进行BDC连接操作。

该工具执行全面的飞行前检查:

  1. ✅ 验证该共享是否存在于ViewModel中
  2. ✅ 检查共享是否有表/对象
  3. ✅ 验证是否已将共享授予您的收件人
  4. ✅ 如果验证失败,提供可操作的后续步骤

参数:

  • share_name (必填):要验证的股份名称
  • check_bdc_registration (可选):同时检查BDC注册状态(默认值: false)

例子:

{
  "share_name": "customer_data_share"
}

成功响应:

✅ Share 'customer_data_share' is READY for BDC Connect registration!

All checks passed:
  ✅ PASS Share 'customer_data_share' exists in Databricks
  ✅ PASS Share has 3 object(s)
  ✅ PASS Share is granted to recipient 'bdc-connect-12345'

Next step: Register with BDC using create_or_update_share('customer_data_share', ...)

故障响应:

❌ Share 'test_share' is NOT ready for BDC Connect

Errors found:
  ❌ Share is empty - no tables added
  ❌ Share not granted to BDC Connect recipient 'bdc-connect-12345'

Required actions:
  1. Add tables: w.shares.update(name='test_share', ...)
  2. Grant share: GRANT SELECT ON SHARE test_share TO RECIPIENT `bdc-connect-12345`

使用案例:

  • 注册前:在调用之前验证共享 create_or_update_share
  • 故障排除:了解注册失败的原因
  • 文档:生成所需内容的清单
  • CI/CD管道:部署前自动验证
  • 入职:帮助新用户了解先决条件

为什么这很重要:

  • 防止“试错”工作流程-提前知道共享是否准备就绪
  • 清晰、可操作的指导,而不是神秘的错误消息
  • 通过在尝试注册之前发现问题来节省时间
  • 在一次通话中验证所有先决条件

建筑

服务器使用:

  • MCP-SDK:用于协议实施
  • SAP BDC连接SDK:用于SAP业务数据云运营
  • 三角洲共享:安全数据共享的开放协议
  • ORD协议:用于资源发现和元数据

发展

运行测试

pytest

项目结构

sap-bdc-mcp-server/
├── src/
│   └── sap_bdc_mcp/
│       ├── __init__.py
│       ├── server.py       # Main MCP server implementation
│       └── config.py       # Configuration management
├── pyproject.toml          # Project dependencies
├── .env.example           # Environment variable template
└── README.md              # This file

地方发展设置

dbutils 挑战

SAP BDC Connect SDK最初设计用于在copula笔记本中运行,需要访问 dbutils (ViewModel实用程序)。这给当地发展带来了挑战。

我们的解决方案:LocalDatabricksClient

我们创造了 LocalDatabricksClient -一个自定义包装器,用于扩展SAP BDC SDK以使其工作 没有 dbutils这使得:

本地开发 -在您的计算机上运行,无需使用copula笔记本 ✅ IDE集成 -使用您最喜欢的开发工具 ✅ 更容易调试 -标准Python调试工作流程 ✅ CI/CD友好 -在自动化管道中工作 ✅ Claude桌面集成 -直接使用MCP服务器

运作原理

LocalDatabricksClient 类别:

  1. 旁路 dbutils 需求 -直接接受工作区URL和API令牌
  2. 阅读来源 .env 文件 -不需要笔记本上下文
  3. 自动检测模式 -自动使用棕地(BDC连接)或copula连接模式
  4. 保持兼容性 -与SAP BDC SDK API完全兼容
  5. 清除错误消息 -如果缺少配置,则提供有用的指导
from sap_bdc_mcp.local_client import LocalDatabricksClient

# Initialize from environment variables
client = LocalDatabricksClient.from_env()

# Or with explicit credentials
client = LocalDatabricksClient(
    workspace_url="https://your-workspace.cloud.databricks.com",
    api_token="your_token",
    recipient_name="your_recipient"
)

支持两种模式

BDC连接模式(布朗菲尔德)

  • 使用OIDC联盟进行身份验证
  • 无需使用copula机密
  • 更简单的设置
  • 如果已配置收件人,则自动检测

copula连接模式

  • 需要额外的机密(api_url、租户、token_audition)
  • 可以通过环境变量提供
  • 用于绿地部署

安装指南

请参阅我们的综合指南:

博客文章/技术文章

重点突出:

  1. 问题:SAP BDC SDK需要 dbutils,将使用限制在copula笔记本上
  2. 调查:我们分析了SDK以了解 dbutils 实际提供
  3. 发现:仅2次使用-获取工作区凭据和访问机密
  4. 解决方案:已创建 LocalDatabricksClient 直接注入凭据
  5. 结果:完整的本地开发支持,代码\<200行

技术亮点:

  • 自定义继承自 DatabricksClient
  • 以(权力)否决 __init__ 绕过 dbutils 需求
  • 以(权力)否决 _get_secret() 从env变量读取
  • 维护所有SDK功能
  • SAP BDC SDK本身无任何更改

建筑

系统概述

┌─────────────────────────┐
│   Claude Desktop        │
│   (MCP Client)          │
└───────────┬─────────────┘
            │ MCP Protocol (stdio)
┌───────────▼─────────────┐
│  sap_bdc_mcp.server     │
│  ┌───────────────────┐  │
│  │ BDCClientManager  │  │
│  │   (Auto-detect)   │  │
│  └────────┬──────────┘  │
│           ├─────────────┼─ Notebook? → DatabricksClient (dbutils)
│           │             │
│           └─────────────┼─ Local? → LocalDatabricksClient (.env)
└───────────┼─────────────┘
            │
┌───────────▼─────────────┐
│ SAP BDC Connect SDK     │
│ ┌──────────────────┐    │
│ │ BdcConnectClient │    │
│ └────────┬─────────┘    │
└──────────┼──────────────┘
           │ HTTPS/OIDC
┌──────────▼──────────────┐
│  Databricks + SAP BDC   │
└─────────────────────────┘

传统建筑

服务器使用:

  • MCP-SDK:用于协议实施
  • SAP BDC连接SDK:用于SAP业务数据云运营
  • 三角洲共享:安全数据共享的开放协议
  • ORD协议:用于资源发现和元数据

重要说明

copula集成

服务器支持两种集成模式:

1.笔记本模式 (原件)

  • 在copula笔记本中运行
  • 用途 dbutils 获取凭据
  • 需要活动笔记本会话

2.本地模式 新✨

  • 在本地计算机上运行
  • 使用环境变量作为凭据
  • 无需笔记本

认证

身份验证通过以下方式处理:

  1. Databricks工作区凭据(URL+令牌)
  2. copula中的收件人配置
  3. SAP BDC服务凭据(在BDC连接模式下自动配置)

故障排除

“BDC客户端未初始化”错误

地方发展:

  • 确保 .env 文件存在 DATABRICKS_HOST, DATABRICKS_TOKEN,以及 DATABRICKS_RECIPIENT_NAME
  • 检查您的copula令牌是否有效
  • 验证工作区URL是否正确

对于笔记本电脑环境:

  • 确保您正在使用以下命令在copula笔记本中运行 dbutils 可用的
  • DATABRICKS_RECIPIENT_NAME 环境变量

缺少环境变量

对于本地开发,请确保在您的 .env 文件:

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

“共享不存在”错误

在向SAP BDC注册之前,该共享必须存在于ViewModel中:

  1. 首先在copula中创建增量共享
  2. 将股份授予您的收件人
  3. 然后使用此服务器向SAP BDC注册它

HOW_TO_CREATE_SHARE.md 详细步骤。

“权限被拒绝”或“未向收件人授予共享”

将该份额授予您在Databricks中的收件人:

GRANT SELECT ON SHARE your_share_name TO RECIPIENT `your_recipient_name`;

资源

许可证

此MCP服务器按原样提供。使用此集成时,请查看SAP BDC Connect SDK许可条款。

贡献

欢迎投稿!请查看 贡献.md 有关以下内容的详细信息:

  • 设置您的开发环境
  • 运行测试
  • 提交拉取请求
  • 代码风格指南

路线图

  • \[x\] 使用copula环境进行初步验证
  • \[x\] 本地开发支持(LocalDatabricksClient)
  • \[x\] PyPI包发布
  • \[x\] 全面的文件
  • \[\]Node.js环境的npm包
  • \[\]其他SAP BDC SDK功能
  • \[\]增强的错误处理和日志记录
  • \[\]更多集成示例和教程
  • \[\]视频教程和演示

支持

  • 问题:
  • 讨论:
  • 文档: 维基

致谢

  • BDC Connect SDK的SAP
  • 模型上下文协议的拟人化
  • MCP社区寻求灵感和支持

目录标签

目录标签

PythonClaude云端部署数据共享本地部署企业数据管理云集成DeltaSharing数据产品

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP