SAP BTP使用MCP服务器
使用自然语言讨论您的SAP BTP成本!此MCP服务器允许AI助手(如SAP Joule)回答有关云消费的问题。
你可以问的例子:
- *“我们还剩下多少云积分?”*
- *“这个月哪些服务最贵?”*
- *“比较我们的支出:一月与二月”*
- *“有超过配额的服务吗?”*
______________________________________________________________________
快速开始
# 1. Clone and enter the project
git clone https://github.com/ADS-Eng-TI-Cloud-Computing/sap-btp-usage-mcp-server.git
cd sap-btp-usage-mcp-server
# 2. Login to Cloud Foundry
cf login -a https://api.cf..hana.ondemand.com
# 3. Create required services
cf create-service xsuaa application sap-btp-usage-xsuaa -c xs-security.json
cf create-service destination lite sap-btp-usage-destination
# 4. Build and deploy
npm install && npm run build
cf push
# 5. Test it
curl https:///health然后在BTP驾驶舱中配置目的地(见下面的详细步骤)。
______________________________________________________________________
工作原理(简单版)
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ You ask │ ───► │ MCP Server │ ───► │ SAP BTP │
│ Joule │ │ (this app) │ │ Usage API │
└──────────────┘ └──────────────┘ └──────────────┘
"How many Validates Returns real
credits left?" & fetches usage data用简单的英语:
- 你问Joule一个关于BTP成本的问题
- Joule用您的问题呼叫此MCP服务器
- MCP服务器从SAP的Usage API获取数据
- 你会得到一个自然语言的答案
安全: 所有请求都通过XSUAA使用OAuth2/JWT令牌进行身份验证。
______________________________________________________________________
你可以问什么问题?
| 工具 | 它做什么 | 示例问题 |
|---|---|---|
sap_btp_get_cloud_credits | 显示您的信用余额和合同信息 | *“我们有多少学分?”* |
sap_btp_top_services | 列出最昂贵的服务 | *“按成本排名前五的服务”* |
sap_btp_compare_months | 比较几个月的支出 | *“比较1月和2月的支出”* |
sap_btp_check_overusage | 查找超出配额的服务 | *“有超出限额的服务吗?”* |
sap_btp_new_services | 显示最近启用的服务 | *“这个季度有什么新消息?”* |
sap_btp_cost_summary | 按类别细分成本 | *“按子账户列出的成本”* |
______________________________________________________________________
开始之前
您需要:
______________________________________________________________________
第1部分:部署MCP服务器
第一步:克隆项目
git clone https://github.com/ADS-Eng-TI-Cloud-Computing/sap-btp-usage-mcp-server.git
cd sap-btp-usage-mcp-server第二步:登录Cloud Foundry
cf login -a https://api.cf..hana.ondemand.com替换 `与您所在的地区:us10,eu10,br10`等等。
步骤3:创建服务
# Security service (authenticates requests)
cf create-service xsuaa application sap-btp-usage-xsuaa -c xs-security.json
# Destination service (connects to SAP APIs)
cf create-service destination lite sap-btp-usage-destination步骤4:构建和部署
npm install
npm run build
cf push步骤5:验证它是否正在运行
# Check app status
cf apps
# Test health endpoint
curl https:///health
# Expected: {"status":"healthy","server":"sap-btp-usage-mcp-server"}______________________________________________________________________
第2部分:配置用法API目标
MCP服务器需要连接到SAP的Usage API。在中设置此项 BTP驾驶舱:
- 首选 您的子帐户 → 连接性 → 目的地
- 点击 新目的地
- 填写:
| 字段 | 值 |
|---|---|
| 姓名 | SAP_BTP_USAGE_API |
| 类型 | HTTP |
| URL | https://uas-reporting.cfapps..hana.ondemand.com |
| 代理类型 | Internet |
| 身份验证 | OAuth2ClientCredentials |
| 客户端ID | *(您的UAS证书)* |
| 客户端密码 | *(您的UAS证书)* |
| 令牌服务URL | https://.authentication..hana.ondemand.com/oauth/token |
- 点击 保存 → 检查连接
📖 需要UAS证书吗?看 SAP BTP资源消耗API
______________________________________________________________________
第3部分:连接到SAP Joule Studio
现在让我们告诉Joule如何找到您的MCP服务器。
第一步:获取您的证书
# Create and view the service key
cf create-service-key sap-btp-usage-xsuaa joule-key
cf service-key sap-btp-usage-xsuaa joule-key保存这些值: clientid, clientsecret, url
步骤2:获取您的应用程序URL
cf app sap-btp-usage-mcp-server | grep routes步骤3:创建焦耳目标
在 BTP驾驶舱 (在Joule Studio的子账户中):
- 首选 连接性 → 目的地
- 点击 新目的地
- 填写:
| 字段 | 值 |
|---|---|
| 姓名 | MCP_UAS |
| 类型 | HTTP |
| URL | https:// |
| 代理类型 | Internet |
| 身份验证 | OAuth2ClientCredentials |
| 客户端ID | *(来自服务密钥: clientid)* |
| 客户端密码 | *(来自服务密钥: clientsecret)* |
| 令牌服务URL | *(来自服务密钥: url + /oauth/token)* |
| 令牌服务URL类型 | Dedicated |
步骤4:添加魔术属性⚠️
点击 新财产 并添加:
| 财产 | 价值 |
|---|---|
sap-joule-studio-mcp-server | true |
此属性是必需的! 没有它,Joule将无法发现您的MCP服务器。
步骤5:保存并测试目标
点击 保存 → 检查连接
✅ 目的地已经准备好了。现在在Joule Studio中创建代理。
______________________________________________________________________
步骤6:在SAP构建大厅中创建项目
- 打开 SAP构建大厅.
- 选择 焦耳试剂与技巧.
- 输入项目的名称。
- 点击 创建.
______________________________________________________________________
步骤7:在项目内部创建代理
- 在新项目中,单击 创建代理.
- 填写 名字 和 描述 领域。
| 字段 | 值 |
|---|---|
| 名字 | GA_BTP_Reporting |
| 描述 | 一个由人工智能驱动的助手,连接到您的SAP BTP帐户,提供有关云消费的实时见解。问这样的问题:“我们还剩下多少云信用额度?”,“本月哪些服务消耗最多?”“比较我们过去3个月的支出”,“是否有任何服务超过了配额?” |
- 填写 专长 和 说明 领域。
Fill Expertise and Instructions
| 字段 | 值 |
|---|---|
| 专长 | Expert on SAP BTP Global Account Reporting |
| 说明 | 从以下位置复制全文 代理说明 下面的部分。 |
______________________________________________________________________
步骤8:将MCP服务器添加到代理中
- 点击 添加MCP服务器.
- 填写MCP服务器详细信息,并选择在步骤3中创建的目标。
| 字段 | 值 |
|---|---|
| 名字 | MCP_UAS |
| 代理说明 | 您的SAP BTP FinOps助理。提出诸如“我们还有多少积分?”、“哪些服务成本最高?”或“比较1月和2月的支出”之类的问题,并根据您全球账户的实时消费数据获得即时答案。 |
| 目的地 | 选择 MCP_UAS (在步骤3中创建) |
- 点击 添加服务器那么 保存.
- 向代理添加其他工具:
- 点击 添加工具. - 选择 计算器 从可用工具列表中。 - 点击 添加 以确认。
> 这允许代理在分析成本数据时执行计算。
______________________________________________________________________
步骤9:测试代理
- 点击 测试 打开测试面板。
- 问你的代理人一个问题,例如:
> *“本月哪5项服务消耗的积分最多?”*
✅ 完成!您的Joule代理现在已连接到BTP Usage MCP服务器。
______________________________________________________________________
代理说明
复制下面的文本并将其粘贴到 说明 在配置代理时输入字段(步骤7)。
______________________________________________________________________
SAP BTP使用情况分析师
目的
此代理可帮助用户使用使用数据管理API中的实时数据来监控和分析SAP BTP全球帐户的使用情况。
工具
如有必要,您可以使用计算器工具来支持您的计算。
你可以问什么
| 问题类型 | 示例 |
|---|---|
| 云积分 | “我们还剩下多少云积分?” |
| 顶级消费者 | “本月哪5项服务消耗的积分最多?” |
| 比较时段 | “比较我们2026年1月和2月的支出” |
| 过度使用警报 | “是否有任何服务超出了配额?” |
| 新服务 | “过去30天启用了哪些服务?” |
| 成本细分 | “按子账户和数据中心显示成本汇总” |
可用工具
| 工具 | 说明 |
|---|---|
sap_btp_get_cloud_credits | 检查云信用余额、阶段和到期日期 |
sap_btp_top_services | 按成本或使用情况列出前N项服务 |
sap_btp_compare_months | 比较两个月的消费量 |
sap_btp_check_overusage | 识别超出配额或产生现收现付成本的服务 |
sap_btp_new_services | 列出最近启用的服务 |
sap_btp_cost_summary | 按服务、子账户或数据中心获取成本明细 |
指南
- 在比较数据时,始终指定时间段。
- 使用
top列出顶级消费者时的参数(默认值:5)。 - 对于成本明细,请指定
groupBy:service,subaccount,或datacenter. - 所有数据均来自SAP BTP Usage data Management API实时数据管理。
交互示例
用户: “我们还剩多少学分?” 代理人: 呼叫 sap_btp_get_cloud_credits → 返回余额、到期和阶段信息。
用户: “哪些服务超出预算?” 代理人: 呼叫 sap_btp_check_overusage → 返回超出配额的服务列表。
用户: “比较12月与1月的支出” 代理人: 呼叫 sap_btp_compare_months 有几个月 2025-12 和 2026-01 → 返回一个比较表。
______________________________________________________________________
地方发展(可选)
想在您的计算机上运行服务器进行测试吗?
第一步:创建 default-env.json
从Cloud Foundry服务复制凭据:
cf service-key sap-btp-usage-xsuaa local-key
cf service-key sap-btp-usage-destination local-key创建 default-env.json (⚠️ 永远不要提交此文件):
{
"VCAP_SERVICES": {
"xsuaa": [{
"label": "xsuaa",
"name": "sap-btp-usage-xsuaa",
"credentials": {
"clientid": "...",
"clientsecret": "...",
"url": "https://..."
}
}],
"destination": [{
"label": "destination",
"name": "sap-btp-usage-destination",
"credentials": {
"clientid": "...",
"clientsecret": "...",
"uri": "...",
"url": "..."
}
}]
}
}第二步:在本地运行
# With authentication (production-like)
npm run local
# Without authentication (easier for testing)
AUTH_ENABLED=false npm run local服务器运行于 http://localhost:3000
______________________________________________________________________
API终点
| 端点 | 它的作用 |
|---|---|
GET / | 服务器信息 |
GET /health | 健康检查 |
POST /mcp | MCP端点(受保护) |
GET /mcp/sse | SSE传输(受保护) |
______________________________________________________________________
故障排除
“连接被拒绝”或“401未经授权”
- 检查应用程序是否正在运行:
cf apps - 验证目标凭据是否与服务密钥匹配
“找不到目标”
- 确保
SAP_BTP_USAGE_APIBTP驾驶舱中存在目的地 - 检查目标名称是否准确(区分大小写)
Joule看不到MCP服务器
- 验证
sap-joule-studio-mcp-server: true属性已设置 - 确保目的地在 同一子账户 作为焦耳工作室
检查日志
cf logs sap-btp-usage-mcp-server --recent______________________________________________________________________
项目结构
sap-btp-usage-mcp-server/
├── src/
│ ├── auth/ # JWT validation & XSUAA
│ ├── schemas/ # Input validation (Zod)
│ ├── services/ # SAP BTP Usage API client
│ ├── tools/ # MCP tool definitions
│ └── index.ts # Main entry point
├── manifest.yaml # CF deployment config
├── xs-security.json # XSUAA scopes & roles
└── package.json______________________________________________________________________
了解更多
- SAP BTP使用API -API文件
- 模型上下文协议 --MCP规范
- SAP焦耳 --AI助理文档
