返回市场
决策-mcp-服务器

决策-mcp-服务器

作者:DecisionsDev5 星标更新:2025-11-14

项目介绍

IBM ODM 决策 MCP 服务器文档

概述

IBM ODM 决策 MCP 服务器连接了 IBM ODM 和现代 AI 助手及编排平台。 它使您能够:

  • 将决策作为工具暴露给 AI 助手
  • 在工作流中动态自动化决策
  • 轻松集成到 Watson Orchestrate、Claude Desktop 和 Cursor AI
  • 集中并暴露业务逻辑给最终用户和机器人

特性

  • 工具集成: 添加并调用 ODM 决策(即规则集)作为工具
  • 决策存储: 使用本地存储系统管理资源
  • 认证: Zen API 密钥、基本认证和 OpenID 连接
  • 多平台支持: 与 Watson Orchestrate、Claude Desktop 和 Cursor AI 兼容

快速开始:Claude Desktop 集成

有关设置和使用 Claude Desktop 与决策 MCP 服务器的详细说明,请参阅 Claude Desktop 集成指南

演示视频

观看我们的演示视频,了解 Claude Desktop 集成的实际操作:

IBM Watsonx 编排集成

通过决策 MCP 服务器,IBM watsonx 编排可以增强由 IBM 运营决策经理 (ODM) 实现的决策。

有关详细说明,请参阅 IBM watsonx 编排集成指南


前提条件及安装

前提条件

  • Python 3.13 或更高版本 - 此 MCP 服务器使用 Python 编写,需要 Python 3.13 或更高版本
  • uv - 一个快速的 Python 包安装器和解析器(推荐)

安装 uv

运行决策 MCP 服务器最简单的方法是使用 uv,它处理包安装和执行:

macOS 和 Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows:

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

替代方法(通过 pip):

pip install uv

有关更多安装选项,请参阅 uv 文档

运行服务器

一旦安装了 uv,您可以直接运行决策 MCP 服务器而无需手动安装:

uvx --from git+https://github.com/DecisionsDev/ibm-odm-decision-mcp-server start --url http://localhost:9060/res

uvx 命令会自动:

  • 下载并安装包
  • 管理依赖项
  • 运行服务器

配置

1. ODM 容器环境及认证

根据您的 IBM ODM 部署情况,使用适当的认证/授权方法:

1.1. ODM 在 Cloud Pak for Business Automation 上

  • 环境: Cloud Pak for Business Automation (CP4BA)
  • 认证: Zen API 密钥
    • CLI: --zenapikey <您的 Zen API 密钥>
    • 环境变量: ZENAPIKEY=<您的 Zen API 密钥>

1.2. ODM 在 Kubernetes 上

  • 环境: 在 Kubernetes 上部署的 IBM ODM(包括 OpenShift)
  • 认证:
    • 基本认证:
      • CLI: --username <用户名> --password <密码>
      • 环境变量: ODM_USERNAME=<用户名> ODM_PASSWORD=<密码>
    • OpenID 连接(使用客户端密钥):
      • CLI: --client-id <CLIENT_ID> --client-secret <CLIENT_SECRET> --token-url <TOKEN_URL> 并可选 --scope <scope>
      • 环境变量: CLIENT_ID=<client_id> CLIENT_SECRET=<client_secret> TOKEN_URL=<URL> 并可选 SCOPE=<scope>
    • OpenID 连接(使用私钥 JWT):
      • CLI: --client-id <CLIENT_ID> --pkjwt-key-path <PRIVATE_KEY_PATH> --pkjwt-cert-path <CERT_PATH> --token-url <TOKEN_URL> 并可选 --scope <scope>--pkjwt-key-password <PASSWORD> 如果私钥受密码保护。
      • 环境变量: CLIENT_ID=<client_id> PKJWT_KEY_PATH=<private_key_path> PKJWT_CERT_PATH=<cert_path> TOKEN_URL=<URL> 并可选 SCOPE=<scope>PKJWT_KEY_PASSWORD=<password> 如果私钥受密码保护。

      注意: PKJWT 认证需要私钥及其证书。私钥用于签署 JWT(JSON Web Token),而证书用于计算 x5t 指纹。可以使用受密码保护的私钥。在这种情况下,必须指定密码。

1.3. ODM 开发者版(Docker/本地)

  • 环境: 本地 Docker 或开发者版
  • 认证: 基本认证
    • CLI: --username <用户名> --password <密码>
    • 环境变量: ODM_USERNAME=<用户名> ODM_PASSWORD=<密码>

2. 不同的认证类型:控制台 vs 运行时

决策 MCP 服务器实际上与两个不同的 ODM 组件/服务器通信:

  • RES 控制台
  • 决策服务运行时

当这两个 ODM 组件被配置为使用不同的认证类型时,决策 MCP 服务器可以通过以下方式配置:

  • 指定用于认证两个 ODM 组件的所有参数,
  • 并使用以下附加参数:
    • CLI: --console-auth-type <console_auth_type> --runtime-auth-type <runtime_auth_type>

    • 环境变量: CONSOLE_AUTH_TYPE=<console_auth_type> RUNTIME_AUTH_TYPE=<runtime_auth_type>

      其中 <console_auth_type><runtime_auth_type> 必须取以下值之一:

      auth_type描述.
      BASIC基本认证
      ZENZen API 密钥认证.
      SECRET使用客户端密钥的 OpenID 连接认证
      PKJWT使用私钥(PKJWT)的 OpenID 连接认证
      NONE无认证/授权

注意事项:

  • 决策 MCP 服务器不支持使用相同的认证类型但不同的凭据
  • 例如,使用两个不同用户名的基本认证(一个用于 RES 控制台,另一个用于运行时)
  • 这种情况不被支持。
  • 必须配置唯一的用户/服务账户以访问两个 ODM 组件(见下文3. 授权)。

3. 授权

3.1. ODM 在 Cloud Pak for Business Automation 上

如果 ODM 部署在 IBM Cloud Pak for Business Automation 中,使用的用户/服务账户必须分配有授予以下 Zen 权限的角色,以便能够访问 RES 控制台和决策服务运行时:

Zen 权限
ODM - 监控决策服务在决策服务中
ODM - 执行决策服务在决策服务中

更多信息请参阅 管理用户权限

3.2. ODM 在 Kubernetes 上

如果 ODM 部署在 Kubernetes 上,使用的用户/服务账户必须具有以下角色:

ODM 角色
resMonitors
resExecutors

3.3. ODM 在云端

如果 ODM 部署在托管服务 ODM on Cloud 中,必须为使用的用户/服务账户分配以下角色(适用于合适的环境(开发/测试/生产)):

ODM on Cloud 角色
Monitor

更多信息请参阅 创建和管理服务账户

4. 安全连接

4.1. 服务器证书

为了建立到服务器的安全 SSL/TLS 连接,决策 MCP 服务器必须有权访问用于签署服务器证书的证书。

如果使用公共 CA 证书签署了服务器证书,决策 MCP 服务器可以在系统信任的证书中找到它。

如果是自签名证书,可以指定:

  • CLI: --ssl-cert-path <证书文件名>
  • 环境变量: SSL_CERT_PATH=<证书文件名>

或者,在开发/测试环境中,可以忽略服务器的真实性:

  • CLI: --verifyssl "False"
  • 环境变量: VERIFY_SSL="False"

4.2. mTLS(双向 TLS)

服务器可以配置为检查尝试建立安全连接的客户端的真实性。

在这种情况下,作为客户端的决策 MCP 服务器必须配置有私钥及其相关证书(并且服务器必须配置为信任在建立安全连接时呈现该证书的客户端)。

可以指定以下参数:

  • CLI: --mtls-key-path <PRIVATE_KEY_PATH> --mtls-cert-path <CERT_PATH> 并可选 --mtls-key-password <PASSWORD> 如果私钥受密码保护。
  • 环境变量: MTLS_KEY_PATH=<private_key_path> MTLS_CERT_PATH=<cert_path> 并可选 MTLS_KEY_PASSWORD=<password> 如果私钥受密码保护。

配置参数表

CLI 参数环境变量描述默认值
--urlODM_URL决策服务控制台的 URL(用于管理和部署操作)http://localhost:9060/res
--runtime-urlODM_RUNTIME_URL决策服务运行时的 URL(用于执行决策服务)<ODM_URL>/DecisionService
--usernameODM_USERNAME基本认证或 Zen 认证的用户名odmAdmin
--passwordODM_PASSWORD基本认证的密码odmAdmin
--zenapikeyZENAPIKEY用于 Cloud Pak for Business Automation 的 Zen API 密钥认证
--client-idCLIENT_ID用于认证的 OpenID 连接客户端 ID
--client-secretCLIENT_SECRET用于认证的 OpenID 连接客户端密钥
--pkjwt-cert-pathPKJWT_CERT_PATHPKJWT 认证的证书路径(对于 PKJWT 是必需的)
--pkjwt-key-pathPKJWT_KEY_PATHPKJWT 认证的私钥证书路径(对于 PKJWT 是必需的)
--pkjwt-key-passwordPKJWT_KEY_PASSWORD解密 PKJWT 认证私钥的密码。仅在密钥受密码保护时需要。
--token-urlTOKEN_URL用于认证的 OpenID 连接令牌端点 URL
--scopeSCOPE请求访问令牌时使用的 OpenID 连接范围,使用客户端凭证进行认证openid
--verifysslVERIFY_SSL是否验证 SSL 证书(TrueFalseTrue
--ssl-cert-pathSSL_CERT_PATHSSL 证书文件的路径。如果没有提供,默认为系统证书。
--mtls-cert-pathMTLS_CERT_PATH客户端的 SSL 证书文件路径,用于 mTLS 认证(对于 mTLS 是必需的)
--mtls-key-pathMTLS_KEY_PATH客户端的 SSL 私钥文件路径,用于 mTLS 认证(对于 mTLS 是必需的)
--mtls-key-passwordMTLS_KEY_PASSWORD解密客户端 mTLS 认证私钥的密码。仅在密钥受密码保护时需要。
--console-auth-typeCONSOLE_AUTH_TYPE显式设置 RES 控制台的认证类型(BASIC, ZEN, PKJWT, SECRET, NONE
--runtime-auth-typeRUNTIME_AUTH_TYPE显式设置决策服务运行时的认证类型(BASIC, ZEN, PKJWT, SECRET, NONE
--log-levelLOG_LEVEL设置日志级别(DEBUG, INFO, WARNING, ERROR, CRITICALINFO
--traces-dirTRACES_DIR存储执行跟踪的目录~/.mcp-server/traces
--trace-enableTRACE_ENABLE启用或禁用跟踪存储(TrueFalseFalse
--trace-maxsizeTRACE_MAXSIZE在删除最旧的跟踪之前存储的最大跟踪数50

决策 MCP 服务器配置文件

您可以使用 JSON 配置文件为像 Claude Desktop 或 Cursor AI 这样的客户端配置 MCP 服务器,该文件可以包含环境变量和命令行参数。

提示:

  • 使用命令行参数进行快速覆盖或非敏感参数。
  • 使用环境变量传递秘密信息。
  • 如需混合使用这两种方法,命令行参数将覆盖环境变量。

下面的例子显示了一个典型场景,其中敏感信息(这里是指密码)作为环境变量传递(因此不会出现在进程参数中),其他参数作为命令行参数传递:

{
  "mcpServers": {
    "ibm-odm-decision-mcp-server": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/DecisionsDev/ibm-odm-decision-mcp-server",
        "start",
        "--url", "https://odm-res-console-url",
        "--ssl-cert-path", "certificate-file",
        "--username", "your-username"
      ],
      "env": {
        "ODM_PASSWORD": "odmAdmin"
      }
    }
  }
}

以下示例展示了根据部署类型(开发/测试或生产)和环境(CloudPak 等)的不同使用场景。


示例 1:本地开发的基本认证

对于本地开发和测试,使用基本认证。

"args": [
  "--from",
  "git+https://github.com/DecisionsDev/ibm-odm-decision-mcp-server",
  "start",
  "--url", "http://localhost:9060/res",
  "--username", "odmAdmin"
],
"env": {
  "ODM_PASSWORD": "odmAdmin"
}

示例 2:Cloud Pak(Zen API 密钥)

对于 Cloud Pak 上的生产部署,使用 Zen API 密钥。

"args": [
  "--from",
  "git+https://github.com/DecisionsDev/ibm-odm-decision-mcp-server",
  "start",
  "--url",           "https://odm-res-console-url",
  "--ssl-cert-path", "certificate-file",
  "--username",      "YOUR_ZENUSERNAME"
],
"env": {
  2023-10-12 16:00:00
  "ZENAPIKEY": "YOUR_ZEN_API_KEY"
}

示例 3:OpenID 连接

对于 Cloud Pak 以外的其他环境上的生产部署,如果 ODM 配置为使用 OpenID 连接,可以使用 OpenID 连接。

决策 MCP 服务器可以使用客户端凭证流程对配置为使用 OpenID 连接的 ODM 进行认证。

有两种认证变体:

  1. 使用客户端密钥
"args": [
  "--from",
  "git+https://github.com/DecisionsDev/ibm-odm-decision-mcp-server",
  "start",
  "--url",           "https://odm-res-console-url",
  "--runtime-url",   "https://odm-runtime-url",
  "--ssl-cert-path", "certificate-file",
  "--token-url",     "https://your-openid-connect_provider-token-endpoint-url",
  "--scope",         "the_scope_to_be_used_for_client_credentials"
],
"env": {
  "CLIENT_ID":      "YOUR_CLIENT_ID",
  "CLIENT_SECRET":  "YOUR_CLIENT_SECRET"
}
  1. 使用私钥(PKJWT)
"args": [
  "--from",
  "git+https://github.com/DecisionsDev/ibm-odm-decision-mcp-server",
  "start",
  "--url",           "https://odm-res-console-url",
  "--runtime-url",   "https://odm-runtime-url",
  "--ssl-cert-path", "certificate-file",
  "--token-url",     "https://your-openid-connect_provider-token-endpoint-url",
  "--scope",         "the_scope_to_be_used_for_client_credentials"
],
"env": {
  "CLIENT_ID":       "YOUR_CLIENT_ID",
  "PKJWT_KEY_PATH":  "PKJWT_PRIVATE_KEY_FILENAME",
  "PKJWT