在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环境并创建一个空间来托管应用程序。
[](https://gips3.baidu.com/it/u=632335053,2255673550&fm=3081&app=3081&f=PNG?w=1047&h=456)
快速笔记
- 选择一个与您的环境生命周期相对应的名称
- 捕获您的Cloud Foundry API端点,以便稍后登录
______________________________________________________________________
2) 安装Cloud Foundry CLI并在您的子帐户中激活CF
在本地安装Cloud Foundry CLI。在BTP中,激活子帐户的Cloud Foundry环境API并创建您的空间。这可确保您稍后运行的CLI命令有一个要部署的目标。
______________________________________________________________________
3) 创建SAP后端的目标
接下来,使用Destination将BTP连接到后端系统。这集中了凭据,并使其不在代码中。
导航到“连接”>“目的地”,并使用以下命令创建新的目的地:
- 从头开始
- 名称:SAP_Services(或其他相关名称)
类型:HTTP
代理类型:Internet
Url:Url_of-the_sap_backend_services
身份验证:基本身份验证
用户:用户名_访问_包_服务
密码:用于访问服务的密码
保存配置
- 单击目标并运行“检查连接”以验证设置。成功的结果如下:
提示:无论您在此处选择什么名称,稍后都必须与.env中的SAP_DESTINATION_name匹配。
______________________________________________________________________
4) 在当地准备项目
克隆存储库。将.env.example.复制到.env并设置推荐的查找默认值,然后将SAP_DESTINATION_NAME指向您的目标。
[](https://gips1.baidu.com/it/u=2065043792,3927442686&fm=3081&app=3081&f=PNG?w=400&h=294)
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
npm run deploy:btp[](https://gips3.baidu.com/it/u=2336837492,3945259606&fm=3081&app=3081&f=PNG?w=400&h=177)
[](https://gips2.baidu.com/it/u=59538243,3969680436&fm=3081&app=3081&f=PNG?w=400&h=182)
[](https://gips3.baidu.com/it/u=2684582899,2476030032&fm=3081&app=3081&f=PNG?w=400&h=178)
部署完成后,您将在空间中看到您的应用程序:
[](https://gips3.baidu.com/it/u=2677210467,1133392100&fm=3081&app=3081&f=PNG?w=399&h=88)
复制应用程序URL——您将在MCP客户端中使用它。
______________________________________________________________________
6) 从XSUAA检索访问令牌
您的MCP客户端将使用XSUAA颁发的OAuth令牌进行身份验证。
- 在BTP帐户中,转到服务>实例和订阅
- 打开XSUAA实例(例如sap mcp XSUAA-dev)或相关服务密钥
- 找到名为mykey的服务密钥并收集:
- 客户端id - 客户端密钥 - 网址:https://your_url/oauth/token
- 将凭据添加到access_token\_mcp.py
- 运行脚本以获取承载令牌:
- python访问令牌\_mcp.py
[](https://gips0.baidu.com/it/u=411120151,3495733171&fm=3081&app=3081&f=PNG?w=400&h=185)
______________________________________________________________________
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-): 按实体的唯一标识符删除实体
工具是如何生成的
- 服务器通过目录API发现OData服务
- 解析实体元数据和模式
- 为每个实体动态创建CRUD工具
- 在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发现模式,以准确地管理客户端可以看到的服务,这样你就可以在灵活性和安全性之间保持健康的平衡。
