SAP MCP服务器部署工具

在SAP BTP上部署MCP服务器,通过Cloud Foundry、Destinations和XSUAA实现OData服务发现和OAuth访问控制。

  • by BibekBarik18
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 BibekBarik18/SAP-MCP-server-in-SAP-BTP

使用说明

在SAP BTP中部署SAP MCP服务器

从零到MCP:在SAP BTP上部署SAP MCP服务器

在SAP BTP Cloud Foundry中将MCP服务器联机感觉就像将许多移动部件缝合在一起:Cloud Foundry、Destinations、OData发现和XSUAA。本指南将原始清单转化为一个故事驱动的演练,您可以从头到尾进行,而无需更改您已经依赖的确切步骤、命令或图像。


为什么要这样设置?

目标很简单:您将使用BTP Destination进行连接,使用XSUAA进行基于OAuth的访问。


来源:(SAP OData到MCP服务器在BTP上运行-SAP社区)

开始之前

您需要:

  • 可在互联网上访问的SAP后端服务
  • 启用Cloud Foundry的SAP BTP帐户
  • Cloud Foundry CLI、Node.js/npm和Python 3已安装

1) 创建您的SAP BTP子帐户和空间

从BTP开始。创建一个与您的环境相匹配的子帐户,并选择适合您的景观的任何地区。然后启用Cloud Foundry环境并创建一个空间来托管应用程序。

快速笔记

  • 选择一个与您的环境生命周期相对应的名称
  • 捕获您的Cloud Foundry API端点,以便稍后登录

2) 安装Cloud Foundry CLI并在您的子帐户中激活CF

在本地安装Cloud Foundry CLI。在BTP中,激活子帐户的Cloud Foundry环境API并创建您的空间。这可确保您稍后运行的CLI命令有一个要部署的目标。


3) 创建SAP后端的目标

接下来,使用Destination将BTP连接到后端系统。这集中了凭据,并使其不在代码中。

导航到“连接”>“目的地”,并使用以下命令创建新的目的地:

  1. 从头开始

  2. 名称:SAP_Services(或其他相关名称)

    类型:HTTP

    代理类型:Internet

    Url:Url_of-the_sap_backend_services

    身份验证:基本身份验证

    用户:用户名_访问_包_服务

    密码:用于访问服务的密码

    保存配置

  3. 单击目标并运行“检查连接”以验证设置。成功的结果如下:

提示:无论您在此处选择什么名称,稍后都必须与.env中的SAP_DESTINATION_name匹配。


4) 在当地准备项目

克隆存储库。将.env.example.复制到.env并设置推荐的查找默认值,然后将SAP_DESTINATION_NAME指向您的目标。

SAP_DESTINATION_NAME=your-own-destination(SAP_Services)

LOG_LEVEL=debug

# OData Service Discovery Configuration Examples
# Method 1: Allow all services (use * or 'true')
ODATA_ALLOW_ALL=false

# Method 2: Specify service patterns (supports glob patterns)
# Comma-separated list of patterns
ODATA_SERVICE_PATTERNS=*TASKPROCESSING*,*BOOK*,*FLIGHT*,*TRAVEL*,*TRVEXP*,*TRAVELAGENCY*,*TRAVELAGENCYSRV*,*TRAVELAPPROVALS*,*TRAVELAPPROVALS_SRV*,*ZBP*,*ZTRANSPORT*,*ZBC_UI_PARAM_E_CDS*

# Method 3: Use JSON array for more complex patterns
# ODATA_SERVICE_PATTERNS=["ZBP*", "ZTRANSPORT*", "/^Z.*_CDS$/"]

# Method 4: Use regex patterns (enclose in forward slashes)
# ODATA_SERVICE_PATTERNS=/^Z(BP|TRANSPORT).*/

# Exclusion patterns (services to exclude even if they match inclusion patterns)
ODATA_EXCLUSION_PATTERNS=*_TEST*,*_TEMP*

# Maximum number of services to discover (prevents system overload)
ODATA_MAX_SERVICES=50

# Discovery mode: 'all', 'whitelist', 'regex'
ODATA_DISCOVERY_MODE=whitelist

指导:

  • 从同种异体开始缩小范围,然后根据需要扩大范围
  • 保持ODATA_MAX_SERVICES合理,以防止发现峰值

5) 构建并部署到Cloud Foundry

是时候发货了。使用提供的npm脚本和您之前准备的CF CLI目标。

npm run build:btp
cf login -a <cf api endpoint of BTP>
npm run deploy:btp

部署完成后,您将在空间中看到您的应用程序:

复制应用程序URL——您将在MCP客户端中使用它。


6) 从XSUAA检索访问令牌

您的MCP客户端将使用XSUAA颁发的OAuth令牌进行身份验证。

  1. 在BTP帐户中,转到服务>实例和订阅
  2. 打开XSUAA实例(例如sap mcp XSUAA-dev)或相关服务密钥
  3. 找到名为mykey的服务密钥并收集:
    • 客户端id
    • 客户端密钥
    • 网址:https://your_url/oauth/token
  4. 将凭据添加到access_token_mcp.py
  5. 运行脚本以获取承载令牌:

7) 配置您的MCP客户端(例如GitHub Copilot)

使用您的应用程序URL和访问令牌,配置客户端:

  • MCP服务器URL:已部署应用程序的应用程序URL
  • 授权:持票人

就是这样——您的MCP客户端现在可以根据您在.env中设置的OData服务发现规则与BTP上托管的服务器进行通信。


MCP服务器工具详解

服务器为其发现的每个SAP OData实体自动生成四种类型的工具:

工具命名模式

{operation}-{serviceId}-{entityName}

例子: r-API_BUSINESS_PARTNER-BusinessPartner

四种工具类型

  • 读(r-): 通过过滤、排序和分页查询实体。支持集合查询和按键检索单个实体
  • 创建(c-): 根据OData元数据架构创建具有验证的新实体
  • 更新(u-): 使用PATCH操作修改现有实体以进行部分更新
  • 删除(d-): 按实体的唯一标识符删除实体

工具是如何生成的

  1. 服务器通过目录API发现OData服务
  2. 解析实体元数据和模式
  3. 为每个实体动态创建CRUD工具
  4. 在MCP协议层注册工具

自然语言→ 工具执行

用户请求 工具调用 OData操作
“显示10家银行” r-BankService-Bank GET/BankSet?$top=10
“创建客户John Doe” c-客户服务-客户 POST/客户集
“更新银行123名称” u-BankService-bank PATCH/BankSet('123')
“删除订单456” d-OrderService-order 删除/订单集('456')

每个工具都包括参数模式、输入验证和上下文感知帮助文本,使AI代理无需额外配置即可立即使用它们。


故障排除要点

  • 目标连接失败
    • 仔细检查URL、用户、密码和代理类型=Internet
    • 确保后端可以从公共互联网访问
  • 未发现OData服务
    • 临时设置ODATA_ALLOW_ALL=true以测试连接
    • 调整ODATA_SERVICE_PATTERNS或切换ODATA_DISCOVERY_MODE
  • 部署问题
    • 验证cf目标指向正确的组织和空间
    • 重新部署前重新运行npm run build:btp
  • 令牌错误
    • 确认服务密钥中的client_id、clientsecret和令牌url
    • 检查本地系统时间以避免JWT验证问题

安全提醒

  • 永远不要提交.env或服务密钥
  • 更喜欢生产环境中的BTP管理绑定
  • 严格遵守分配制度,定期轮换凭证

附加背景

如果您是SAP BTP和目的地的新手,这里有一个快速复习,介绍它们如何适应这种设置,以及为什么它们是MCP部署的理想选择。

什么是SAP业务技术平台(BTP)?

SAP BTP是SAP的集成平台即服务,用于构建、扩展和集成业务应用程序。它提供数据库和数据管理(例如SAP HANA Cloud)、应用程序开发和集成服务、分析以及人工智能和物联网等智能技术。它支持多云部署、深度SAP和非SAP集成以及强大的安全功能,所有这些都使其成为MCP服务器的坚实家园。

了解SAP BTP中的目的地

目标是受管理的连接定义。它们集中了URL、身份验证和其他属性,并支持各种身份验证方法,如Basic和OAuth。在本指南中,Destination允许MCP服务器在不硬编码凭据的情况下到达您的SAP后端,并使环境更改变得微不足道。


现在,您从SAP后端获得了一条干净、安全的路径→ BTP目的地→ MCP服务器→ MCP客户端。继续迭代OData发现模式,以准确地管理客户端可以看到的服务,这样你就可以在灵活性和安全性之间保持健康的平衡。