用于SAP云集成的MCP服务器
SAP云集成中的MCP服务器为AI驱动的应用程序提供访问权限,使其能够使用SAP云集成(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容器中运行。
独立二进制文件
选项1:下载二进制文件
从(相关网站)下载与您的操作系统/架构兼容的二进制文件 发布 页面。
选项2:从源代码安装
使用 go install 编译并安装MCP服务器的命令:
go install github.com/vadimklimov/cpi-mcp-server@latest选项3:从源代码构建
- 克隆仓库并进入创建的目录:
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(注:这是一个专有名词,通常指一个用于Go语言项目的版本发布工具,直接音译为“戈雷勒”并不常见,因此直接保留原英文形式或根据上下文解释其功能为“Go语言项目发布工具”等,这里为保持原文风格,直接给出音译“戈雷勒”作为参考,实际使用时可能需要根据具体语境调整。) 使用提供的GoReleaser配置文件构建MCP服务器。
Docker 容器
选项1:拉取Docker镜像
- 使用
docker image pull命令(或docker pull(简写方式)来拉取MCP服务器镜像:
docker pull vadimklimov/cpi-mcp-server选项2:构建Docker镜像
- 克隆仓库并进入创建的目录:
git clone https://github.com/vadimklimov/cpi-mcp-server.git
cd cpi-mcp-server- 使用
docker build使用提供的 Dockerfile 构建 Docker 镜像的命令。
支持以下构建参数:
| 参数 | 描述 |
|---|---|
| 版本 | MCP 服务器版本 |
基本构建示例:
docker build .带有版本信息的构建示例:
docker build \
--tag vadimklimov/cpi-mcp-server:1.2.3 \
--build-arg VERSION=1.2.3 \
.或者,使用 docker bake 使用提供的Bake定义文件,通过(Docker Buildx的一部分)命令来构建Docker镜像。
Bake定义文件包含以下构建目标:
| 目标 | 描述 | 默认值 | 多平台构建 | 镜像标签 |
|---|---|---|---|---|
| dev | 开发版本构建 | 是 | 否 | dev |
| 快照 | 快照构建 | 否 | 是 | {VERSION}-快照 |
| 发布 | 发布构建 | 否 | 是 | {VERSION},最新 |
以下支持的 Bake 变量有:
| 变量 | 描述 | 默认值 | 由目标使用 |
|---|---|---|---|
| 版本 | MCP 服务器版本 | 开发版 | 开发版, 快照版, 正式版 |
| COMMIT_SHA | 构建修订版(构建的提交哈希) | 未知 | 快照,发布版 |
\[!NOTE\] (注:此标记通常用于指示注意或提醒,但“\[!NOTE\]”本身在中文中没有直接对应的翻译,这里仅保留其原样以表示这是一个提醒或注释的标记) 为了snapshot并且release使用 Docker Bake 是构建镜像的推荐方法。Bake 定义文件提供了合理的默认值,并添加了额外的镜像元数据。
\[!警告\] 在跑步之前snapshot或者release构建时,确保在Docker环境中启用了多平台构建支持。
\[!警告\] 这个(或“该”) 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 | Token URL(令牌URL) | 是 | ||
| MCP_CPI_CLIENT_ID | 客户ID | 是 | ||
| MCP_CPI_CLIENT_SECRET | 客户密钥 | 是 | ||
| MCP_CPI_TRANSPORT | MCP 传输(Transport) | 否 | 标准输入输出(stdio),HTTP | 标准输入输出(stdio) |
| MCP_CPI_PORT | 用于HTTP传输的端口 | 否 | 1024-65535范围内的值 | 8080 |
| MCP_CPI_LOG_LEVEL | 日志级别 | no | 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 |
访问SAP云集成API
MCP服务器使用SAP云集成的公共API来检索所需信息。这些API受OAuth保护,并支持客户端凭据流。MCP服务器采用这种认证机制来对调用SAP云集成租户API的请求进行认证和授权。
为了使MCP服务器能够访问SAP云集成租户所需的API,必须在已创建SAP集成套件相应订阅的SAP商业技术平台子账户中为此创建一个OAuth客户端。
在Cloud Foundry环境中,服务实例代表一个OAuth客户端——因此,必须为其创建服务实例和对应的服务密钥。
步骤1:创建服务实例
创建一个具有以下配置的服务实例:
- 服务:
SAP Process Integration Runtime - 计划:
api - 授予类型:
Client Credentials
以下角色是相应的MCP服务器工具所必需的:
| 工具 | 作用 | |||
|---|---|---|---|---|
| 获取集成包 | 工作区包读取 | |||
| 搜索集成包 | WorkspacePackagesRead | |||
| 获取集成流 | 工作区包读取 | |||
| 搜索集成流程 | 工作区包读取 | |||
| 获取值映射关系 | 工作区包读取 | |||
| search_value_mappings | WorkspacePackagesRead | (翻译为) | 搜索值映射 | 工作区包读取 |
| 获取消息映射 | 工作区包读取 | |||
| search_message_mappings | WorkspacePackagesRead | (翻译为) | 搜索消息映射 | 工作区包读取 |
| get_script_collections | WorkspacePackagesRead | (翻译为) | 获取脚本集合 | 工作区包读取 |
| 搜索脚本集合 | 读取工作区包 | |||
| 获取集成运行时工件 | 监控数据读取 | |||
| 搜索集成运行时工件 | 监控数据读取 |
步骤2:创建服务密钥
为上一步创建的服务实例创建一个具有以下配置的服务密钥:
- 密钥类型:
ClientId/Secret
OAuth客户端凭据和端点可以在 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代理工具配置
请参考您所使用的、支持MCP的IDE(集成开发环境)、代码编辑器、AI助手或其他智能工具的文档,以获取配置详情。
本地MCP服务器
以下示例说明了将本地MCP服务器添加到(系统/网络等)所需的配置 Claude Desktop(中文可译为“Claude桌面版”或根据具体语境简化为“Claude桌面”,但为保持原名特色,通常直接音译加说明使用“Claude桌面版”)请参考与您设置相关的代理工具的文档,以调整这些示例。
选项1:独立二进制文件
假设 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"
}
}
}
}选项2:Docker容器
假设MCP服务器配置(见 配置) 在(某处)被定义为 cpi-mcp-server.env 位于 /Users/demo/.config/mcp 目录,向其中添加以下配置 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服务器
以下示例说明了将远程MCP服务器添加到(系统/网络)所需的配置 克劳德·科德请参考与您设置相关的代理工具文档,以调整这些示例。
步骤1:启动MCP服务器
选项1:独立二进制文件
假设 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选项2:Docker容器
假设MCP服务器配置(参见 配置) 在……中被定义 cpi-mcp-server.env 位于 /Users/demo/.config/mcp 目录,使用 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\[提示\] 在MCP服务器中使用HTTP传输时,容器监听8080端口。 这个(或:该)-p(--publish(的)选项docker run可以使用命令将容器的8080端口发布到不同的主机端口(例如,-p 8888:8080)。
步骤2:在Claude Code中添加远程MCP服务器
选项1:使用Claude代码命令行界面(CLI)
使用 claude mcp add 添加远程MCP服务器的命令:
claude mcp add --transport http cpi http://localhost:8080/mcp选项2:手动编辑配置文件
在(配置文件/设置中)添加以下配置 .mcp.json 文件:
{
"mcpServers": {
"cpi": {
"type": "http",
"url": "http://localhost:8080/mcp"
}
}
}\[!NOTE\](注:此符号通常用于标记重要或需要注意的信息,翻译为中文时可保留原样或根据上下文调整表述,但在此直接给出翻译提示) 当在远程主机上运行MCP服务器时,确保在将其添加到代理工具时设置适当的主机名。
\[!警告\] 在远程模式下运行的MCP服务器必须配置为使用HTTPS(加密传输协议),以确保客户端与服务器之间的安全通信。强烈建议不要使用HTTP,因为它不提供传输层的安全性。
\[!警告\] 当前MCP服务器的实现不提供授权功能。在远程模式下操作服务器时,必须实施适当的访问限制机制,以防止未经授权的访问。
