SAP Cloud Integration 的 MCP 服务器提供了一个访问集成包和集成工件的接口,这些集成包和工件位于 SAP Cloud Integration 租户中(SAP 集成套件的一部分)。
MCP 服务器提供了以下工具:
| 工具 | 描述 |
|---|---|
| get_integration_packages | 获取所有集成包 |
| search_integration_packages | 按 ID、版本、名称、供应商或模式搜索集成包 |
| get_integration_flows | 获取所有集成流 |
| search_integration_flows | 按 ID、版本或名称搜索集成流 |
| get_value_mappings | 获取所有值映射 |
| search_value_mappings | 按 ID、版本或名称搜索值映射 |
| get_message_mappings | 获取所有消息映射 |
| search_message_mappings | 按 ID、版本或名称搜索消息映射 |
| get_script_collections | 获取所有脚本集合 |
| search_script_collections | 按 ID、版本或名称搜索脚本集合 |
| get_integration_runtime_artifacts | 获取所有集成运行时工件 |
| search_integration_runtime_artifacts | 按 ID、版本、名称、类型或状态搜索集成运行时工件 |
MCP 服务器可以作为独立二进制文件安装,也可以在 Docker 容器内运行。
从 发布页面 下载与您的操作系统/架构兼容的二进制文件。
使用 go install 命令编译并安装 MCP 服务器:
go install github.com/vadimklimov/cpi-mcp-server@latest
git clone https://github.com/vadimklimov/cpi-mcp-server.git
cd cpi-mcp-server
go mod download
go mod tidy
go build 命令编译 MCP 服务器。基本构建示例:
go build
带有版本信息的构建示例:
go build \
-ldflags "-s -w -X github.com/vadimklimov/cpi-mcp-server/internal/appinfo.version=1.2.3" \
-o cpi-mcp-server \
.
或者,使用提供的 GoReleaser 配置文件通过 GoReleaser 构建 MCP 服务器。
docker image pull 命令(或 docker pull 简写)拉取 MCP 服务器镜像:docker pull vadimklimov/cpi-mcp-server
git clone https://github.com/vadimklimov/cpi-mcp-server.git
cd cpi-mcp-server
docker build 命令根据提供的 Dockerfile 构建 Docker 镜像。支持的构建参数如下:
| 参数 | 描述 |
|---|---|
| VERSION | MCP 服务器版本 |
基本构建示例:
docker build .
带有版本信息的构建示例:
docker build \
--tag vadimklimov/cpi-mcp-server:1.2.3 \
--build-arg VERSION=1.2.3 \
.
或者,使用 docker bake 命令(Docker Buildx 的一部分)根据提供的 Bake 定义文件构建 Docker 镜像。
Bake 定义文件包括以下构建目标:
| 目标 | 描述 | 默认 | 多平台构建 | 镜像标签 |
|---|---|---|---|---|
| dev | 开发构建 | 是 | 否 | dev |
| snapshot | 快照构建 | 否 | 是 | {VERSION}-snapshot |
| release | 发布构建 | 否 | 是 | {VERSION}, latest |
支持的 Bake 变量如下:
| 变量 | 描述 | 默认值 | 由目标使用 |
|---|---|---|---|
| VERSION | MCP 服务器版本 | dev | dev, snapshot, release |
| COMMIT_SHA | 构建修订版(用于构建的提交哈希) | unknown | snapshot, release |
[!NOTE] 对于
snapshot和release构建,推荐使用 Docker Bake。Bake 定义文件提供了合理的默认设置,并添加了额外的镜像元数据。
[!WARNING] 在运行
snapshot或release构建之前,请确保 Docker 环境中启用了多平台构建支持。
[!WARNING]
release目标会自动将构建的镜像推送到注册表。
基本构建示例(默认使用 dev 目标):
docker bake
带有版本信息的构建示例:
export VERSION=1.2.3
docker bake
或者
docker bake \
--set dev.tags=vadimklimov/cpi-mcp-server:1.2.3 \
--set dev.args.VERSION=1.2.3
[!TIP] 由于项目使用 Git 进行管理,建议使用当前提交哈希(SHA-1 哈希)作为构建修订版。
要获取当前提交哈希的长形式(完整形式),运行
git rev-parse HEAD命令。要获取当前提交哈希的短形式,运行
git rev-parse --short HEAD命令。
[!TIP] 既然项目已经使用 Git 标签进行 MCP 服务器版本控制,建议也使用 Git 标签进行构建版本控制。
要获取最近的标签,运行
git describe --tags $(git rev-list --tags --max-count=1)命令。
为了使 MCP 服务器正常工作,必须通过环境变量提供配置。
支持的环境变量如下:
| 环境变量 | 描述 | 是否必需 | 有效值 | 默认值 |
|---|---|---|---|---|
| MCP_CPI_BASE_URL | 基础 URL | 是 | ||
| MCP_CPI_TOKEN_URL | 访问令牌 URL | 是 | ||
| MCP_CPI_CLIENT_ID | 客户端 ID | 是 | ||
| MCP_CPI_CLIENT_SECRET | 客户端密钥 | 是 | ||
| MCP_CPI_TRANSPORT | MCP 传输方式 | 否 | stdio, http | stdio |
| MCP_CPI_PORT | 用于 HTTP 传输的端口 | 否 | 1024-65535 范围内的值 | 8080 |
| MCP_CPI_LOG_LEVEL | 日志级别 | 否 | none, error, warn, info, debug | none |
| MCP_CPI_LOG_FILE | 日志文件路径 | 否 | /path/to/log/file.log | /var/log/cpi-mcp-server.log |
| MCP_CPI_MAX_CONCURRENCY | 最大并发数 | 否 | 逻辑 CPU 数量 | |
| MCP_CPI_TIMEOUT | 超时时间(秒) | 否 | 60 |
MCP 服务器使用 SAP Cloud Integration 的公共 API 来检索所需的信息。这些 API 是受 OAuth 保护的,并支持客户端凭据流。MCP 服务器使用此身份验证机制来认证和授权对 SAP Cloud Integration 租户的 API 调用。
要使 MCP 服务器能够访问 SAP Cloud Integration 租户的必要 API,必须在 SAP Business Technology Platform 子账户中为其创建一个 OAuth 客户端,在该子账户中已创建了相应的 SAP Integration Suite 订阅。
在 Cloud Foundry 环境中,服务实例代表一个 OAuth 客户端——因此,需要为服务实例创建一个服务实例和服务密钥。
步骤 1:创建服务实例
创建具有以下配置的服务实例:
SAP Process Integration RuntimeapiClient Credentials相应 MCP 服务器工具所需的角色如下:
| 工具 | 角色 |
|---|---|
| get_integration_packages | WorkspacePackagesRead |
| search_integration_packages | WorkspacePackagesRead |
| get_integration_flows | WorkspacePackagesRead |
| search_integration_flows | WorkspacePackagesRead |
| get_value_mappings | WorkspacePackagesRead |
| search_value_mappings | WorkspacePackagesRead |
| get_message_mappings | WorkspacePackagesRead |
| search_message_mappings | WorkspacePackagesRead |
| get_script_collections | WorkspacePackagesRead |
| search_script_collections | WorkspacePackagesRead |
| get_integration_runtime_artifacts | MonitoringDataRead |
| search_integration_runtime_artifacts | MonitoringDataRead |
步骤 2:创建服务密钥
为上一步创建的服务实例创建具有以下配置的服务密钥:
ClientId/SecretOAuth 客户端凭据和端点可以在服务密钥的 oauth 部分找到:
| 配置参数 | 服务密钥属性 |
|---|---|
| 基础 URL | url |
| 访问令牌 URL | tokenurl |
| 客户端 ID | clientid |
| 客户端密钥 | clientsecret |
最小配置(仅需环境变量):
MCP_CPI_BASE_URL=https://{subdomain}.it-cpi{xxxxx}.cfapps.{region}.hana.ondemand.com/api/v1
MCP_CPI_TOKEN_URL=https://{subdomain}.authentication.{region}.hana.ondemand.com/oauth/token
MCP_CPI_CLIENT_ID=xxxxxxxxxx
MCP_CPI_CLIENT_SECRET=xxxxxxxxxx
完整配置(所有支持的环境变量):
MCP_CPI_BASE_URL=https://{subdomain}.it-cpi{xxxxx}.cfapps.{region}.hana.ondemand.com/api/v1
MCP_CPI_TOKEN_URL=https://{subdomain}.authentication.{region}.hana.ondemand.com/oauth/token
MCP_CPI_CLIENT_ID=xxxxxxxxxx
MCP_CPI_CLIENT_SECRET=xxxxxxxxxx
MCP_CPI_MAX_CONCURRENCY=3
MCP_CPI_TIMEOUT=120
MCP_CPI_TRANSPORT=http
MCP_CPI_PORT=8080
MCP_CPI_LOG_LEVEL=debug
MCP_CPI_LOG_FILE=/var/log/cpi-mcp-server.log
参考您使用的 IDE、代码编辑器、AI 助手或其他支持 MCP 的代理工具的文档以获取配置详情。
以下示例展示了如何将本地 MCP 服务器添加到 Claude Desktop。请参阅与您的设置相关的代理工具文档以调整这些示例。
假设 cpi-mcp-server 二进制文件位于 /Users/demo/go/bin 目录下,向 claude_desktop_config.json 文件添加以下配置:
{
"mcpServers": {
"cpi": {
"command": "/Users/demo/go/bin/cpi-mcp-server",
"env": {
"MCP_CPI_BASE_URL": "https://{subdomain}.it-cpi{xxxxx}.cfapps.{region}.hana.ondemand.com/api/v1",
"MCP_CPI_TOKEN_URL": "https://{subdomain}.authentication.{region}.hana.ondemand.com/oauth/token",
"MCP_CPI_CLIENT_ID": "xxxxxxxxxx",
"MCP_CPI_CLIENT_SECRET": "xxxxxxxxxx"
}
}
}
}
假设 MCP 服务器配置(见 配置)定义在 /Users/demo/.config/mcp 目录下的 cpi-mcp-server.env 文件中,向 claude_desktop_config.json 文件添加以下配置:
{
"mcpServers": {
"cpi": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--env-file",
"/Users/demo/.config/mcp/cpi-mcp-server.env",
"vadimklimov/cpi-mcp-server"
]
}
}
}
以下示例展示了如何将远程 MCP 服务器添加到 Claude Code。请参阅与您的设置相关的代理工具文档以调整这些示例。
步骤 1:启动 MCP 服务器
假设 cpi-mcp-server 二进制文件位于 /Users/demo/go/bin 目录下,使用以下命令启动 MCP 服务器:
export MCP_CPI_BASE_URL=https://{subdomain}.it-cpi{xxxxx}.cfapps.{region}.hana.ondemand.com/api/v1
export MCP_CPI_TOKEN_URL=https://{subdomain}.authentication.{region}.hana.ondemand.com/oauth/token
export MCP_CPI_CLIENT_ID=xxxxxxxxxx
export MCP_CPI_CLIENT_SECRET=xxxxxxxxxx
export MCP_CPI_TRANSPORT=http
/Users/demo/go/bin/cpi-mcp-server
假设 MCP 服务器配置(见 配置)定义在 /Users/demo/.config/mcp 目录下的 cpi-mcp-server.env 文件中,使用 docker container run 命令(或 docker run 简写)启动 MCP 服务器:
docker run \
--detach \
--name cpi-mcp-server \
--publish 8080:8080 \
--env-file /Users/demo/.config/mcp/cpi-mcp-server.env \
vadimklimov/cpi-mcp-server
[!TIP] 当使用 MCP 服务器中的 HTTP 传输时,容器监听 8080 端口。 使用
docker run命令的-p(--publish) 选项可以将容器的 8080 端口发布到不同的主机端口(例如,-p 8888:8080)。
步骤 2:将远程 MCP 服务器添加到 Claude Code
使用 claude mcp add 命令添加远程 MCP 服务器:
claude mcp add --transport http cpi http://localhost:8080/mcp
向 .mcp.json 文件添加以下配置:
{
"mcpServers": {
"cpi": {
"type": "http",
"url": "http://localhost:8080/mcp"
}
}
}
[!NOTE] 当在远程主机上运行 MCP 服务器时,请确保在将其添加到代理工具时正确设置了主机名。
[!WARNING] 在远程模式下运行的 MCP 服务器必须配置为使用 HTTPS(加密传输协议),以确保客户端和服务器之间的安全通信。强烈不建议使用 HTTP,因为它不提供传输级安全性。
[!WARNING] 当前 MCP 服务器的实现不提供授权功能。当在远程模式下运行服务器时,必须实施适当的身份验证机制以防止未经授权的访问。