🚀 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模式环境和空输入管道保证无阻塞执行。
______________________________________________________________________
📋 先决条件
- SAP BTP-CLI:已安装在您的系统中
PATH.
- 点击此处下载
- 活动会话:您必须登录。请验证:
btp list accounts/global-account - 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会话已过期。
- 清除AI聊天中的错误。
- 跑
btp login在你的终端。 - 刷新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以及自定义域特定的例外情况。
🔄 控制流程
- 申请入学:AI客户端(例如Antigravity)向注册的工具(例如。,
btp_list_subaccounts). - 预验证:工具层水合参数并执行基于正则表达式的技术验证(ID/GUID)。
- 执行:服务层构造一个安全的CLI命令,注入
--format json作为全球前缀。 - 重试和恢复:
- 如果命令超时,它将以指数回退重试。 - 如果输出包含警告+JSON,“深度恢复”引擎将提取有效的有效载荷。
- 错误映射:如果CLI返回“Session Expired”,装饰器会捕获它并向用户提供精确的
btp login命令指定其特定的二进制路径。 - 结构化响应:最终的JSON有效载荷被美化并作为markdown格式的字符串返回给AI。
______________________________________________________________________
📄 许可证
MIT许可证。
👤 作者
卡洛尔·查克拉博蒂 - @卡洛尔恰克拉博蒂
