SAP云集成MCP服务器

SAP云集成MCP服务器是一个AI驱动的工具,用于访问和管理SAP云集成租户中的集成包和集成工件。

  • by vadimklimov
  • Go
  • 本地部署
  • 26 星标
  • 更新于
在 GitHub 查看 vadimklimov/cpi-mcp-server

使用说明

用于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:从源代码构建

  1. 克隆仓库并进入创建的目录:
git clone https://github.com/vadimklimov/cpi-mcp-server.git
cd cpi-mcp-server
  1. 可选地,下载依赖项(否则,依赖项将在下一步构建过程中自动下载):
go mod download
go mod tidy
  1. 使用 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镜像

  1. 使用 docker image pull 命令(或 docker pull (简写方式)来拉取MCP服务器镜像:
docker pull vadimklimov/cpi-mcp-server

选项2:构建Docker镜像

  1. 克隆仓库并进入创建的目录:
git clone https://github.com/vadimklimov/cpi-mcp-server.git
cd cpi-mcp-server
  1. 使用 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服务器的实现不提供授权功能。在远程模式下操作服务器时,必须实施适当的访问限制机制,以防止未经授权的访问。