SAP BTP MCP 服务器

一个专业的模型上下文协议(MCP)服务器,为SAP业务技术平台(BTP)提供强大的自然语言接口,支持通过AI代理(如Claude、Gemini等)本地CLI会话管理云基础设施、安全和权限。

  • by kallolchakraborty
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 kallolchakraborty/btp-mcp-server

使用说明

🚀 SAP BTP MCP服务器

专业人士 模型上下文协议(MCP) 服务器为 SAP业务技术平台(BTP).

通过人工智能代理(Claude、Gemini等)使用您的本地会话管理您的云基础设施、安全性和权限 btp CLI会话。


🌟 主要特点

  • 会话基础设施:使用简单的语言提供子帐户并分配角色。
  • 安全设计:内置超时、非交互式执行和弹性输出解析。
  • 设计安全:
    • 完全运行 本地;不存储外部凭据或令牌。
    • 利用您现有的 BTP CLI身份验证 (SSO/JWT)。
  • 主动错误处理:当身份验证过期或输入无效时,提供明确的说明。
  • 自动发现:智能定位 btp 跨Windows、macOS和Linux的二进制文件。

🏗️ 防故障架构

该服务器专为关键任务AI自动化而设计:

  • 智能超时:防止“挂起”阈值为60s/120s的长时间SAP BTP API操作。
  • 深度JSON恢复:即使CLI返回混合输出或警告,也会自动提取有效数据。
  • 输入验证:预验证技术ID(GUID)和电子邮件,以防止不必要的CLI故障。
  • 非互动性:使用CI模式环境和空输入管道保证无阻塞执行。

📋 先决条件

  1. SAP BTP-CLI:已安装在您的系统中 PATH.
  2. 活动会话:您必须登录。请验证: btp list accounts/global-account
  3. **Python 3.10+**确保现代Python环境。

🛠️ 安装

使用 uv (推荐)

uv tool install --from . btp-mcp-server

使用 pip

pip install .

⚙️ 配置

将以下内容添加到MCP客户端配置中(例如。, claude_desktop_config.json):

使用 uv (最快)

{
  "mcpServers": {
    "btp": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/BTP MCP Server",
        "run",
        "btp-mcp-server"
      ]
    }
  }
}

使用Python

{
  "mcpServers": {
    "btp": {
      "command": "python3",
      "args": ["-m", "btp_mcp_server"],
      "env": { "PYTHONPATH": "/absolute/path/to/BTP MCP Server/src" }
    }
  }
}

🧠 可用工具

类别 工具 描述
系统 btp_ping 检查CLI运行状况和登录状态。
btp_execute_command 快跑 任何 通用BTP CLI命令。
账户 btp_list_subaccounts 列出所有可访问的子帐户。
btp_create_subaccount 为新的子账户提供验证。
btp_delete_subaccount 永久删除子帐户。
btp_list_regions 列出可用的技术区域(us10、eu10等)。
btp_list_directories 列出全局帐户中的目录。
安全 btp_list_users 列出全局帐户用户。
btp_assign_role_collection 向用户授予角色(例如管理员)。
资源 btp_list_entitlements 检查可用的服务计划/配额。
btp_remove_entitlement 从子账户中删除分配的权限。
btp_list_service_instances 列出子帐户中的活动服务。
btp_list_environment_instances 列出Cloud Foundry或Kyma等环境。
btp_list_subscriptions 列出SaaS应用程序订阅。

💬 使用示例

  • “使用ping检查我的BTP会话是否仍处于活动状态。”
  • “显示区域eu10中的所有子帐户。”
  • “将“子帐户管理员”角色分配给colleague@example.com."
  • “在us10中创建一个名为‘Internal Alpha’的开发子帐户。”

🆘 故障排除

身份验证错误(❌ 身份验证错误) 如果您看到此情况,则表示您的BTP CLI会话已过期。

  1. 清除AI聊天中的错误。
  2. 跑 btp login 在你的终端。
  3. 刷新AI会话。

未找到CLI(⚠️ 未找到BTP CLI) 确保 btp 在你的路径。在macOS/Linux上,尝试 ln -s /path/to/btp /usr/local/bin/btp.


🏗️ 系统设计

服务器遵循分层架构,以确保关注点的分离和最大的稳定性:

  • 工具层(server.py):用途 FastMCP 将Python函数注册为MCP工具。实现严格的Pydantic验证,并将技术异常映射到人类可读的markdown提示。
  • 服务层(btp_cli.py):协调命令执行。管理CLI路径的状态,处理二进制自动发现,并实现“深度JSON恢复”算法。
  • 执行层(subprocess):直接与操作系统交互。使用硬化环境(CI=true)以及标准错误重定向,以维护安全性和非交互性。
  • 公用事业层(utils.py):将跨领域问题(如日志记录)集中到 stderr 以及自定义域特定的例外情况。

🔄 控制流程

  1. 申请入学:AI客户端(例如Antigravity)向注册的工具(例如。, btp_list_subaccounts).
  2. 预验证:工具层水合参数并执行基于正则表达式的技术验证(ID/GUID)。
  3. 执行:服务层构造一个安全的CLI命令,注入 --format json 作为全球前缀。
  4. 重试和恢复:
    • 如果命令超时,它将以指数回退重试。
    • 如果输出包含警告+JSON,“深度恢复”引擎将提取有效的有效载荷。
  5. 错误映射:如果CLI返回“Session Expired”,装饰器会捕获它并向用户提供精确的 btp login 命令指定其特定的二进制路径。
  6. 结构化响应:最终的JSON有效载荷被美化并作为markdown格式的字符串返回给AI。

📄 许可证

MIT许可证。

👤 作者

卡洛尔·查克拉博蒂 - @卡洛尔恰克拉博蒂