SAP BTP成本分析服务器

该服务通过自然语言处理与SAP BTP成本数据交互,提供实时云消费分析和报告功能。

  • by sap-ef
  • TypeScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 sap-ef/sap-btp-usage-mcp-server

使用说明

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.<region>.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://<your-app-url>/health

然后在BTP驾驶舱中配置目的地(见下面的详细步骤)。


工作原理(简单版)

┌──────────────┐         ┌──────────────┐         ┌──────────────┐
│   You ask    │   ───►  │  MCP Server  │   ───►  │  SAP BTP     │
│   Joule      │         │  (this app)  │         │  Usage API   │
└──────────────┘         └──────────────┘         └──────────────┘
     "How many               Validates              Returns real
   credits left?"            & fetches               usage data

用简单的英语:

  1. 你问Joule一个关于BTP成本的问题
  2. Joule用您的问题呼叫此MCP服务器
  3. MCP服务器从SAP的Usage API获取数据
  4. 你会得到一个自然语言的答案

安全: 所有请求都通过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 按类别细分成本 “按子账户列出的成本”

开始之前

您需要:

  • Node.js 18+ — 下载
  • Cloud Foundry命令行界面 — 下载
  • SAP BTP帐户 启用Cloud Foundry
  • 权利: XSUAA(应用计划)+目的地(精简计划)

第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.<region>.hana.ondemand.com

替换 <region> 与您所在的地区: 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://<your-app-url>/health
# Expected: {"status":"healthy","server":"sap-btp-usage-mcp-server"}

第2部分:配置用法API目标

MCP服务器需要连接到SAP的Usage API。在中设置此项 BTP驾驶舱:

  1. 首选 您的子帐户 → 连接性 → 目的地
  2. 点击 新目的地
  3. 填写:
字段 值
姓名 SAP_BTP_USAGE_API
类型 HTTP
URL https://uas-reporting.cfapps.<region>.hana.ondemand.com
代理类型 Internet
身份验证 OAuth2ClientCredentials
客户端ID (您的UAS证书)
客户端密码 (您的UAS证书)
令牌服务URL https://<subdomain>.authentication.<region>.hana.ondemand.com/oauth/token
  1. 点击 保存 → 检查连接

📖 需要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的子账户中):

  1. 首选 连接性 → 目的地
  2. 点击 新目的地
  3. 填写:
字段 值
姓名 MCP_UAS
类型 HTTP
URL https://<your-mcp-server-url>
代理类型 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构建大厅中创建项目

  1. 打开 SAP构建大厅.

  2. 选择 焦耳试剂与技巧.

  3. 输入项目的名称。

  4. 点击 创建.


步骤7:在项目内部创建代理

  1. 在新项目中,单击 创建代理.

  2. 填写 名字 和 描述 领域。

    字段 值
    名字 GA_BTP_Reporting
    描述 一个由人工智能驱动的助手,连接到您的SAP BTP帐户,提供有关云消费的实时见解。问这样的问题:“我们还剩下多少云信用额度?”,“本月哪些服务消耗最多?”“比较我们过去3个月的支出”,“是否有任何服务超过了配额?”
  3. 填写 专长 和 说明 领域。

    字段 值
    专长 Expert on SAP BTP Global Account Reporting
    说明 从以下位置复制全文 代理说明 下面的部分。

步骤8:将MCP服务器添加到代理中

  1. 点击 添加MCP服务器.

  2. 填写MCP服务器详细信息,并选择在步骤3中创建的目标。

    字段 值
    名字 MCP_UAS
    代理说明 您的SAP BTP FinOps助理。提出诸如“我们还有多少积分?”、“哪些服务成本最高?”或“比较1月和2月的支出”之类的问题,并根据您全球账户的实时消费数据获得即时答案。
    目的地 选择 MCP_UAS (在步骤3中创建)
  3. 点击 添加服务器那么 保存.

  4. 向代理添加其他工具:

    • 点击 添加工具.
    • 选择 计算器 从可用工具列表中。
    • 点击 添加 以确认。

    这允许代理在分析成本数据时执行计算。


步骤9:测试代理

  1. 点击 测试 打开测试面板。

  2. 问你的代理人一个问题,例如:

    “本月哪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_API BTP驾驶舱中存在目的地
  • 检查目标名称是否准确(区分大小写)

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

了解更多