ZenML

官方

通过你的 ZenML MCP 服务器与 MLOps 和 LLMOps 管道进行交互

你可以用 ZenML MCP 做什么?

  • 检查 ZenML 资源 — 通过 zenml_list_resources 和 zenml_describe_resources 请求列出或描述管道、堆栈、模型或部署。
  • 触发管道运行 — 使用 trigger_pipeline 并指定名称或 ID,从快照或模板请求新的运行。
  • 获取运行详情和日志 — 通过 get_step_logs、get_deployment_logs 或 get_step_code 检索步骤日志、部署日志或步骤代码。
  • 诊断设置问题 — 运行 diagnose_zenml_setup 以排查服务器连接或配置问题。
  • 打开交互式仪表板 — 通过 open_pipeline_run_dashboard 或 open_run_activity_chart 启动管道运行仪表板或活动图表。
  • 安全管理资源 — 使用 zenml_create_resource、zenml_update_resource 或 zenml_delete_resource 创建、更新或删除项目或堆栈等资源。

文档

面向 ZenML 的 MCP 服务器

Trust Score

本项目实现了一个用于与 ZenML API 交互的 https://modelcontextprotocol.io/introduction 服务器。

ZenML MCP Server

什么是 MCP?

模型上下文协议(MCP)是一种开放协议,它标准化了应用程序向大型语言模型(LLM)提供上下文的方式。它就像“AI 应用的 USB-C 接口”——提供了一种将 AI 模型连接到不同数据源和工具的标准方式。

MCP 遵循客户端-服务器架构,其中:

  • MCP 主机:希望通过 MCP 访问数据的程序,如 Claude Desktop 或 IDE
  • MCP 客户端:与服务器保持 1:1 连接的协议客户端
  • MCP 服务器:通过标准化协议公开特定功能的轻量级程序
  • 本地数据源:MCP 服务器可以安全访问的计算机文件、数据库和服务
  • 远程服务:MCP 服务器可以通过互联网连接的外部系统

什么是 ZenML?

ZenML 是一个用于构建和管理 ML 及 AI 管道的开源平台。它为管理数据、模型和实验提供了统一接口。

有关更多信息,请参阅 ZenML 网站 和 我们的文档。

功能特性

该服务器提供 MCP 工具,用于访问 ZenML 服务器的核心读取功能,从而获取以下实时信息:

核心实体

  • 用户 - 用户账户和权限
  • 堆栈 - 基础设施配置
  • 堆栈组件 - 单个堆栈构建块
  • 风格 - 可用的组件类型
  • 服务连接器 - 云认证

管道执行

  • 管道 - 管道定义
  • 管道运行 - 执行历史和状态
  • 管道步骤 - 单个步骤的详细信息、代码和日志
  • 计划 - 自动化运行计划
  • 工件 - 数据工件的元数据(而非数据本身)

部署与服务

  • 快照 - 冻结的管道配置(“运行/服务什么”的工件)
  • 部署 - 具有状态、URL 和日志的运行时服务实例
  • 服务 - 模型服务端点

组织与发现

  • 项目 - ZenML 资源的组织容器
  • 标签 - 用于发现的跨领域元数据标签
  • 构建 - 包含镜像和代码信息的管道构建工件

模型

  • 模型 - ML 模型注册表条目
  • 模型版本 - 版本化的模型工件

兼容性 API(建议迁移)

  • 管道运行模板 在 ZenML 0.97.0 中仍然可用,而 快照 是新工作流的首选(参见 迁移指南)

该服务器还允许您使用快照(首选)或已弃用的基于模板的触发参数来触发新的管道运行。

注意:我们正在根据用户反馈不断改进此集成。请加入我们的 Slack 社区 分享您的经验,帮助我们做得更好!

工具配置文件和写入策略

默认的 compact 配置文件通告了 16 个工具。七个通用工具涵盖了资源目录、读取、普通变更操作和有限的生命周期操作:

工具用途
zenml_describe_resources发现受支持的资源类型和有界操作模式
zenml_list_resources使用经过验证的过滤器和分页列出一种资源类型
zenml_get_resource获取单个资源,在需要时包含父级和项目范围
zenml_create_resource从类型化负载创建受支持的资源
zenml_update_resource更新一个确切的资源 UUID
zenml_delete_resource删除或归档一个确切的资源 UUID
zenml_action_resource运行允许列表中的生命周期或关系操作,不进行重试

九个专注工具仍然保留,因为它们提供诊断、活动上下文、流式日志或代码、管道执行或交互式应用:

  • diagnose_zenml_setup
  • get_active_user 和 get_active_project
  • trigger_pipeline
  • get_step_logs、get_step_code 和 get_deployment_logs
  • open_pipeline_run_dashboard 和 open_run_activity_chart

get_step_logs 最多返回 50,000 条条目,按从旧到新排序,带有 possibly_truncated 标志,以及一个 note,说明哪些条目缺失及原因。传递 tail 以仅获取最新条目。在 ZenML 0.97+ 服务器上,它会通过日志存储分页;在 0.96 上,它使用较旧的单请求端点。

当现有客户端仍依赖旧的实体特定名称(如 list_pipeline_runs)时,请使用 ZENML_MCP_PROFILE=legacy。这会保留针对 ZenML 0.97.0 的特征化工具名称和模式兼容层。它不会增加对旧版 ZenML 服务器版本的支持。仅在迁移期间使用:旧版响应形状可能比紧凑工具暴露更多操作元数据,尽管服务器在两个配置文件中都会省略包含凭据的配置和其他敏感字段。

注册和写入访问是独立的:

配置文件策略通告的工具
compactread_write16
compactread_only11
legacyread_write57
legacyread_only52

设置 ZENML_MCP_WRITE_POLICY=read_only 以从 MCP 发现和调度中移除所有四个通用变更工具和 trigger_pipeline。资源发现也会省略创建、更新、删除和操作模式。较旧的 ZENML_MCP_READ_ONLY=true 设置仍然被接受;无效的策略值会以只读模式失败关闭。无效的 ZENML_MCP_PROFILE 会以配置错误停止启动。

版本 2.0.0 需要 MCP Python SDK 2.2.0 和 ZenML 0.96.4。紧凑配置文件是新的默认配置,对于调用实体特定工具名称的客户端来说,这是一个破坏性的发现变更。在迁移这些客户端时设置 ZENML_MCP_PROFILE=legacy,然后将每个调用移至通用资源工具。

变更结果区分 completed、accepted 和 unknown 结果。服务器在变更可能已到达 ZenML 后不会重试。对于已接受或未知的结果,请在决定是否再次调用之前,遵循响应中的协调说明。在有可用命名读取时使用它。Webhook 创建和密钥轮换可以返回一次新的签名密钥;后续读取会省略它。删除模式说明操作是归档元数据、移除元数据、取消配置实时资源,还是可以删除存储的工件数据。

2.0 的首个版本涵盖了项目、堆栈和组件、风格、服务、管道和运行、快照和模板、部署、工件和版本、模型和版本、标签、连接器、代码仓库、Webhook、触发器、等待条件和钩子调用的普通操作。用户、计划、服务连接器类型、密钥和资源请求具有 zenml_describe_resources 所示的只读覆盖范围。它排除了 ZenML Cloud 控制平面管理、资源管理器管理、用户和凭据管理、密钥值 CRUD、连接器登录和验证、原始 Webhook 事件以及聚合调试或血缘工具。

通过发现精确模式开始通用工作流,然后调用它:

zenml_describe_resources(resource_type="pipeline_run", operation="list")
zenml_list_resources(
    resource_type="pipeline_run",
    filters={"status": "completed", "sort_by": "desc:created"},
    page=1,
    size=10,
)

提示和资源在两个配置文件中都可用。分析提示、有界资源模式端点和 most_recent_runs 是 MCP 提示或资源,而非工具。

运行模板兼容性

ZenML 0.97.0 保留了运行模板 CRUD API。新工作流首选快照。管道便捷创建和基于模板的触发参数已弃用。在旧版配置文件中,get_run_template 和 list_run_templates 对现有客户端仍然可用。

旧版 tag 输入保留在 list_run_templates 中以保持模式兼容性,但 ZenML 0.97.0 没有等效的服务器端过滤器。非空值会在 SDK 调用之前被拒绝。快照标签过滤仍然可用。

迁移:运行模板 → 快照

为什么变更? 快照取代了运行模板,成为 ZenML 首选的可用管道工件。0.97.0 SDK 仍然支持运行模板 CRUD,而新代码应使用快照。

快速迁移指南

旧模式(模板)紧凑模式(快照)
list_run_templates()zenml_list_resources(resource_type="snapshot", filters={"runnable": true, "named_only": true})
get_run_template(name)zenml_get_resource(resource_type="snapshot", resource_id=id)
trigger_pipeline(template_id=...)trigger_pipeline(snapshot_name_or_id=...)

示例工作流(快照优先)

1. Discover project context:
   → get_active_project()

2. Find runnable snapshots:
   → zenml_list_resources(resource_type="snapshot", filters={"runnable": true, "named_only": true})

3. Trigger a run:
   → trigger_pipeline(snapshot_name_or_id="my-snapshot")

4. Check deployments:
   → zenml_list_resources(resource_type="deployment", filters={"status": "running"})
   → get_deployment_logs(name_id_or_prefix="my-deployment", tail=100)

注意: get_deployment_logs 返回有界输出(默认 100 行,最大 1000 行,上限 100KB),并且需要安装相应的部署器集成。

通过仪表板快速设置(推荐)

设置 ZenML MCP 服务器的最简单方式是通过 ZenML 仪表板的 MCP 设置页面。

MCP Settings Page

在 ZenML 仪表板中导航到 设置 → MCP 以获取:

  • 预配置的代码片段,适用于您的特定服务器 URL 和凭据
  • 一键安装,通过受支持的 IDE 的深层链接
  • 复制粘贴配置,适用于 VS Code、Claude Desktop、Cursor、Claude Code、OpenAI Codex 等
  • Docker 和 uv 选项,根据您的偏好选择

ZenML Pro 用户

MCP 设置页面允许您一键生成个人访问令牌(PAT)。该令牌会自动包含在所有生成的配置片段中。

ZenML OSS 用户

  1. 首先通过 设置 → 服务账户 创建服务账户令牌
  2. 将令牌粘贴到 MCP 设置页面中
  3. 为您的 IDE 复制生成的配置

更喜欢手动设置? 请参阅下面的详细说明。

MCP 应用(实验性)

什么是 MCP 应用? MCP 应用是交互式 HTML UI,MCP 服务器可以直接将其提供给 AI 客户端。它们在沙盒 iframe 中渲染,并且可以双向调用服务器工具。有关完整详细信息,请参阅 官方公告。

Run Activity Chart

此服务器包含两个实验性 MCP 应用:

应用工具描述
管道运行仪表板open_pipeline_run_dashboard最近管道运行的交互式表格,包含状态、步骤详细信息和日志
运行活动图表open_run_activity_chart过去 30 天管道运行活动的条形图,包含状态细分

Pipeline Runs Dashboard

这些应用作为概念验证示例包含在内。我们欢迎针对更多 MCP 应用的反馈和贡献。这个新功能仍处于早期阶段,因此我们必须观察其发展。我们期望在未来更全面地支持它。

受支持的客户端

MCP 应用需要 Streamable HTTP 传输(而非 stdio)。以下客户端目前支持 MCP 应用:

  • ✅ VS Code(Insiders 版)
  • ✅ Goose
  • ✅ ChatGPT(即将推出)
  • ⚠️ Claude Desktop -- 截至 2026 年 1 月下旬,尚不能渲染应用。
  • ⚠️ Claude.ai(网页版)— 截至 2026 年 1 月下旬,尚不能渲染应用。

注意: 在撰写本文时,我们无法与 Claude Desktop 或 Claude.ai 进行充分测试。如果您遇到问题,请 报告问题。

使用 Docker 运行 MCP 应用

MCP 应用使用 Streamable HTTP。将容器端口绑定到回环地址,并在允许远程访问之前,在其前面放置经过身份验证的反向代理或身份感知访问服务。主机和来源验证可防止 DNS 重绑定;它们不会对调用者进行身份验证。

1. 构建并运行 Docker 容器:

docker build -t mcp-zenml:apps .

docker run --rm -d --name mcp-zenml-apps -p 127.0.0.1:8001:8001 \
  -e ZENML_STORE_URL="https://your-zenml-server.example.com" \
  -e ZENML_STORE_API_KEY="your-api-key" \
  -e ZENML_MCP_PROFILE="compact" \
  -e ZENML_MCP_WRITE_POLICY="read_write" \
  -e ZENML_ACTIVE_PROJECT_ID="your-project-id" \
  mcp-zenml:apps --transport streamable-http --host 0.0.0.0 --port 8001 \
  --disable-dns-rebinding-protection

2. 配置经过身份验证的远程访问: 创建一个命名的 Cloudflare Tunnel、带访问控制的 Tailscale Funnel,或等效的经过身份验证的反向代理。将其私有源指向 http://127.0.0.1:8001,要求公共主机名具备身份或服务凭据,并且只将经过身份验证的请求传递给源。将您的 MCP 客户端配置为使用提供商支持的 OAuth 流程或授权头。

在将 ZenML 凭据添加到容器之前,请验证未经身份验证的请求无法到达 MCP:

curl -i https://mcp.example.com/mcp

响应必须是访问提供商的 401、403 或登录重定向。JSON-RPC 或 MCP 响应意味着边界是开放的,必须先修复。

3. 连接您的经过身份验证的客户端:

{
	"servers": {
		"ZenML": {
			"url": "https://mcp.example.com/mcp",
			"type": "http"
		}
	},
	"inputs": []
}
  • 让 AI“打开流水线运行仪表板”或“显示运行活动图表”

重要说明:

  • ZENML_ACTIVE_PROJECT_ID 是必需的——没有它,流水线运行工具将失败并显示“当前未设置活动项目”
  • --disable-dns-rebinding-protection 仅在经过身份验证的代理验证公共主机且容器端口保持仅回环时适用
  • 将 ZenML API 密钥限制为 MCP 客户端所需的权限;对于仅检查的客户端,请使用 ZENML_MCP_WRITE_POLICY=read_only

测试与质量保证

此项目包含自动化测试,以确保 MCP 服务器保持功能正常:

  • 🔄 自动化冒烟测试:通过 GitHub Actions 每 3 天运行一次全面的冒烟测试
  • 🚨 问题创建:失败的测试会自动创建带有详细调试信息的 GitHub 问题
  • ⚡ 快速 CI:使用带缓存的 UV 进行快速依赖安装和测试
  • 🧪 手动测试:您可以使用 uv run scripts/test_mcp_server.py server/zenml_server.py 在本地运行冒烟测试

自动化测试验证:

  • MCP 协议连接和握手
  • 服务器初始化和工具发现
  • 基本工具功能(当 ZenML 服务器可访问时)
  • 资源和提示枚举
  • diagnose_zenml_setup 即使在受限环境中也返回结构化诊断信息

无凭据的 CI 通过 MCP 协议覆盖每个适配器。PR 和发布 CI 还会在回环地址上启动一个全新的 ZenML 0.97.0 OSS 服务器,并运行持久化 CRUD 和同名项目隔离收据。服务器使用临时配置和数据库,这些在作业退出时会被移除;不需要仓库环境、自托管运行器或 ZenML 凭据。

ZenML 的本地 OSS 服务器禁用身份验证,其 SQL 存储不支持流水线重放或外部部署基础设施。受限访问和功能启用的触发器、重放、部署、等待条件和资源请求收据因此仍然是单独的选择加入门控。它们分别需要 ZENML_MCP_RESTRICTED_INTEGRATION=1 配合 ZENML_MCP_RESTRICTED_API_KEY,或 ZENML_MCP_ACTION_INTEGRATION=1 配合 ZENML_MCP_ACTION_FIXTURE 中的精确一次性夹具 UUID。门控跳过并不证明这些功能已通过。操作员可以设置 ZENML_MCP_REQUIRE_COMPLETE_INTEGRATION=1 将缺失的选择加入门控转换为失败。云基础设施配置永远不会成为默认测试运行的一部分。

使用 MCP Inspector 进行调试

对于交互式调试,请使用 MCP Inspector——一个基于 Web 的工具,可让您实时测试 MCP 工具:

# Using .env.local (recommended for development)
cp .env.local.example .env.local  # Then edit with your credentials
source .env.local && npx @modelcontextprotocol/inspector \
  -e ZENML_STORE_URL=$ZENML_STORE_URL \
  -e ZENML_STORE_API_KEY=$ZENML_STORE_API_KEY \
  -- uv run server/zenml_server.py

这将打开一个预填了您的凭据的 Web UI——只需点击 连接 并使用 工具 选项卡即可交互式测试任何工具。

有关更详细的调试说明,请参阅 CLAUDE.md。

隐私与分析

ZenML MCP 服务器收集匿名使用分析,以帮助我们改进产品。

我们跟踪:

  • 使用了哪些工具以及使用频率
  • 错误率和类型(仅错误类型,不包含消息)
  • 基本环境信息(操作系统、Python 版本,以及是否在 Docker/CI 中运行)
  • 会话持续时间和工具使用模式

我们不收集:

  • 您的 ZenML 服务器 URL 或 API 密钥
  • 流水线名称、模型名称或任何业务数据
  • 错误消息或堆栈跟踪
  • 任何个人身份信息

要禁用分析:

# Option 1
export ZENML_MCP_ANALYTICS_ENABLED=false

# Option 2
export ZENML_MCP_DISABLE_ANALYTICS=true

用于调试/测试(将事件记录到 stderr 而不是发送):

export ZENML_MCP_ANALYTICS_DEV=true

对于 Docker 用户: 您可以设置 ZENML_MCP_ANALYTICS_ID(必须是有效的 UUID)以在容器重启时保持一致的匿名 ID。如果您不设置它,并且容器文件系统无法持久化分析 ID 文件,服务器将回退到由 ZENML_STORE_URL 的哈希派生的确定性匿名 UUID(URL 本身永远不会作为事件属性发送)。

其他分析选项:

  • ZENML_MCP_ANALYTICS_SHUTDOWN_TIMEOUT_S — 关闭期间同步刷新分析的最大时间(秒)(默认值:1.0)

关于关闭跟踪的说明: 关闭事件以有界超时同步发送,以获得最佳的交付可靠性。但是,如果容器被 SIGKILL 杀死(例如,docker kill),关闭处理程序无法触发——这是 Docker/操作系统的限制,而不是错误。

启动验证

您可以启用轻量级的启动诊断检查:

# Print warnings but start normally
uv run server/zenml_server.py --startup-validation warn

# Exit non-zero if required setup is missing (useful in Docker/CI)
uv run server/zenml_server.py --startup-validation strict

您也可以通过环境变量设置此项:ZENML_MCP_STARTUP_VALIDATION=warn。

diagnose_zenml_setup 工具也可作为 MCP 工具用于运行时故障排除——即使未安装 ZenML SDK 或缺少环境变量,它也能正常工作。

手动设置

先决条件

您需要能够访问已部署的 ZenML 服务器。如果您没有,可以在 ZenML Pro 注册免费试用,我们将为您管理部署。

提示: 一旦您拥有 ZenML 服务器,请查看仪表板中的 MCP 设置页面 以获取最简单的设置体验。

兼容性: 当前版本已针对 ZenML 0.97.0 进行测试。 如果您运行的是较旧的 ZenML 版本,请使用此 MCP 服务器的 早期版本。

您还需要(可能)在本地安装 uv。有关更多信息,请参阅 uv 文档。我们建议通过其安装脚本安装,或者如果您使用 Mac,则通过 brew 安装。(从技术上讲,您并不需要它,但它使安装和设置变得容易。)

您还需要在本地某处克隆此仓库:

git clone https://github.com/zenml-io/mcp-zenml.git

您的 MCP 配置文件

MCP 配置文件是一个 JSON 文件,告诉 MCP 客户端如何连接到您的 MCP 服务器。不同的 MCP 客户端会以不同方式使用或指定此文件。两个常用的 MCP 客户端是 Claude Desktop 和 Cursor,我们在下面提供了安装说明。

您需要按以下格式指定您的 ZenML MCP 服务器:

{
    "mcpServers": {
        "zenml": {
            "command": "/usr/local/bin/uv",
            "args": ["run", "path/to/server/zenml_server.py"],
            "env": {
                "LOGLEVEL": "WARNING",
                "NO_COLOR": "1",
                "ZENML_LOGGING_COLORS_DISABLED": "true",
                "ZENML_LOGGING_VERBOSITY": "WARN",
                "ZENML_ENABLE_RICH_TRACEBACK": "false",
                "ZENML_MCP_PROFILE": "compact",
                "ZENML_MCP_WRITE_POLICY": "read_write",
                "PYTHONUNBUFFERED": "1",
                "PYTHONIOENCODING": "UTF-8",
                "ZENML_STORE_URL": "https://your-zenml-server-goes-here.com",
                "ZENML_STORE_API_KEY": "your-api-key-here"
            }
        }
    }
}

有四个虚拟值需要您替换:

  • 您本地安装的 uv 的路径(上面列出的路径是 Mac 上通过 brew 安装时的位置)
  • zenml_server.py 文件的路径(这是您连接到 MCP 服务器时将运行的文件)。此文件位于此仓库的根目录中。您需要指定此文件的精确完整路径。
  • ZenML 服务器 URL(这是您的 ZenML 服务器的 URL。您可以在 ZenML Cloud UI 中找到它)。它看起来像 https://d534d987a-zenml.cloudinfra.zenml.io。
  • ZenML 服务器 API 密钥(这是您的 ZenML 服务器的 API 密钥。您可以在 ZenML Cloud UI 中找到它,或 https://docs.zenml.io/how-to/manage-zenml-server/connecting-to-zenml/connect-with-a-service-account 了解如何创建。对于 ZenML MCP 服务器,我们建议使用服务账户。)

您可以自由更改运行 MCP 服务器 Python 文件的方式,但使用 uv 可能是最简单的选项,因为它为您处理环境和依赖安装。

与 Claude Desktop 一起使用的安装

快速替代方案: 使用 ZenML 仪表板中的 MCP 设置页面(设置 → MCP)获取预配置的安装说明和 Claude Desktop 的深层链接。

您需要安装最新版本的 Claude Desktop。

您可以简单地打开设置菜单,将仓库根目录中的 mcp-zenml.mcpb 文件拖到菜单上,它将引导您完成安装和设置过程。您需要添加您的 ZenML 服务器 URL 和 API 密钥。

注意:MCP 捆绑包(.mcpb)取代了旧的桌面扩展(.dxt)格式;现有的 .dxt 文件在 Claude Desktop 中仍然有效。

可选:改进 ZenML 工具输出显示

为了获得更好的 ZenML 工具结果体验,您可以配置 Claude 以更可读的格式显示 JSON 响应。在 Claude Desktop 中,转到设置 → 个人资料,在“Claude 在响应中应考虑哪些个人偏好?”部分,添加类似以下内容(或使用这些确切的词语!):

When using zenml tools which return JSON strings and you're asked a question, you might want to consider using markdown tables to summarize the results or make them easier to view!

这将鼓励 Claude 将 ZenML 工具输出格式化为 Markdown 表格,使信息更容易阅读和理解。

与 Cursor 一起使用的安装

快速替代方案: ZenML 仪表板中的 MCP 设置页面(设置 → MCP)可以生成预填了您的凭据的精确 mcp.json 内容。

您需要安装 Cursor。

Cursor 的工作方式与 Claude Desktop 略有不同,您需要按仓库指定配置文件。这意味着如果您想在多个仓库中使用 ZenML MCP 服务器,您需要在每个仓库中指定配置文件。

要为单个仓库设置它,您需要:

  • 在仓库根目录中创建一个 .cursor 文件夹
  • 在其中创建一个包含上述内容的 mcp.json 文件
  • 进入您的 Cursor 设置,点击 ZenML 服务器以“启用”它。

根据我们的经验,有时即使它正常工作,也会显示红色错误指示器。您可以在 Cursor 聊天窗口中尝试聊天。它会告诉您是否能够访问 ZenML 工具。

Docker 镜像

您可以将服务器作为 Docker 容器运行。该进程通过 stdio 通信,因此它将等待 MCP 客户端连接。通过环境变量传递您的 ZenML 凭据。

预构建镜像(Docker Hub)

拉取最新的多架构镜像:

docker pull zenmldocker/mcp-zenml:latest

版本化发布标记为 X.Y.Z:

docker pull zenmldocker/mcp-zenml:2.0.0

使用您的 ZenML 凭据运行(stdio 模式):

docker run -i --rm \
  -e ZENML_STORE_URL="https://your-zenml-server.example.com" \
  -e ZENML_STORE_API_KEY="your-api-key" \
  zenmldocker/mcp-zenml:latest

使用 Docker 的规范 MCP 配置

{
  "mcpServers": {
    "zenml": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "ZENML_STORE_URL=https://...",
        "-e", "ZENML_STORE_API_KEY=ZENKEY_...",
        "-e", "ZENML_ACTIVE_PROJECT_ID=...",
        "-e", "ZENML_MCP_PROFILE=compact",
        "-e", "ZENML_MCP_WRITE_POLICY=read_write",
        "-e", "LOGLEVEL=WARNING",
        "-e", "NO_COLOR=1",
        "-e", "ZENML_LOGGING_COLORS_DISABLED=true",
        "-e", "ZENML_LOGGING_VERBOSITY=WARN",
        "-e", "ZENML_ENABLE_RICH_TRACEBACK=false",
        "-e", "PYTHONUNBUFFERED=1",
        "-e", "PYTHONIOENCODING=UTF-8",
        "zenmldocker/mcp-zenml:latest"
      ]
    }
  }
}

本地构建

从仓库根目录:

docker build -t zenmldocker/mcp-zenml:local .

运行本地构建的镜像:

docker run -i --rm \
  -e ZENML_STORE_URL="https://your-zenml-server.example.com" \
  -e ZENML_STORE_API_KEY="your-api-key" \
  zenmldocker/mcp-zenml:local

MCP 捆绑包(.mcpb)

此项目使用 MCP 捆绑包(.mcpb)——Anthropic 桌面扩展(DXT)的继任者。MCP 捆绑包将整个 MCP 服务器(包括依赖项)打包到单个文件中,并具有用户友好的配置。

关于重命名的说明:MCP 捆绑包取代了较旧的 .dxt 格式。Claude Desktop 保持与现有 .dxt 文件的向后兼容性,但我们现在发布 mcp-zenml.mcpb 并建议今后使用它。

仓库根目录中的 mcp-zenml.mcpb 文件使用 MCPB 0.4 UV 运行时。主机为当前操作系统安装固定的 Python 依赖项,因此相同的捆绑包可以在 macOS、Windows 和 Linux 上工作,而无需嵌入特定于平台的原生扩展。安装需要网络访问,首次 UV 解析捆绑环境时需要。

捆绑包构建重用已提交的 mcpb-uv.lock 并在离线模式下解析其 Python 依赖图。捆绑包的依赖列表来自 [project].dependencies 中的 pyproject.toml。更改该列表后,设置 MCPB_REFRESH_LOCK=1 以在线重新解析,同时保留仍然适合的每个固定版本;MCPB_REFRESH_LOCK=upgrade 将每个固定版本移动到其最新版本。 当你将 .mcpb 文件拖放到 Claude Desktop 的设置中时,它会自动处理:

  • 运行时依赖安装
  • 安全配置管理
  • 跨平台兼容性
  • 用户友好的设置流程

更多信息,请参阅 Anthropic 关于桌面扩展(DXT)的公告以及其文档中相关的 MCP 捆绑包打包指南:https://www.anthropic.com/engineering/desktop-extensions

已发布到 Anthropic MCP 注册表

此 MCP 服务器已发布到官方 Anthropic MCP 注册表,可被兼容的主机发现。在每次标记发布时,我们的 CI 会通过注册表的 mcp-publisher CLI(使用 GitHub OIDC)更新注册表条目,因此你可以在任何支持注册表的地方(例如 Claude Desktop 的扩展目录)直接安装或发现 ZenML MCP Server。

  • 始终最新: 注册表条目会在每次发布时从标记提交的 manifest.json 和 server.json 刷新。
  • 替代安装路径: 你仍然可以通过打包的 .mcpb 捆绑包在本地安装(见上文),或运行 Docker 镜像。

在此处了解更多关于注册表的信息: