mcpField
M
MCP Server for ZenML

MCP Server for ZenML

本地服务
zenml.ioAI 与智能体491 天前更新

关于 MCP Server for ZenML

这是一个 MCP 服务,让 Cursor、Claude Desktop 等 MCP 客户端能够读取 ZenML MLOps 与 LLMOps 流水线的信息。适合使用 ZenML 管理机器学习与大模型流水线的团队。

主要功能

  1. 01读取流水线、运行记录与步骤日志
  2. 02查看 Stack、组件与 Service Connector
  3. 03查询 Snapshot、部署与模型版本
  4. 04按 compact 或 legacy 配置文件选择工具集
  5. 05支持只读写入策略
  6. 06通过 trigger_pipeline 触发流水线运行

适用场景

  1. 01在编码客户端中查看流水线运行状态与失败步骤
  2. 02检索模型版本与部署信息
  3. 03在只读策略下安全地浏览 ZenML 资源

MCP 相关

该项目是 MCP 服务,向 MCP 客户端暴露 ZenML 资源的工具、提示词与资源,并可通过设置限制写入操作。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"zenml": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ZENML_STORE_URL",
"-e",
"ZENML_STORE_API_KEY",
"-e",
"ZENML_MCP_PROFILE",
"-e",
"ZENML_MCP_WRITE_POLICY",
"docker.io/zenmldocker/mcp-zenml:2.0.0"
],
"env": {
"ZENML_STORE_URL": "<ZENML_STORE_URL>",
"ZENML_STORE_API_KEY": "<ZENML_STORE_API_KEY>",
"ZENML_MCP_PROFILE": "<ZENML_MCP_PROFILE>",
"ZENML_MCP_WRITE_POLICY": "<ZENML_MCP_WRITE_POLICY>"
}
}
}
}
启动命令docker run -i --rm -e ZENML_STORE_URL -e ZENML_STORE_API_KEY -e ZENML_MCP_PROFILE -e ZENML_MCP_WRITE_POLICY docker.io/zenmldocker/mcp-zenml:2.0.0
需要配置的环境变量
ZENML_STORE_URLBase URL of your ZenML server (e.g., https://<workspace-id>-zenml.cloudinfra.zenml.io).
ZENML_STORE_API_KEY密钥API key used to authenticate with your ZenML server (ideally a service account key).
ZENML_MCP_PROFILETool registration profile: compact (default) or legacy.
ZENML_MCP_WRITE_POLICYMutation policy: read_write (default) or read_only.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocidocker.io/zenmldocker/mcp-zenml:2.0.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

用于 ZenML 的 MCP 服务

Trust Score

本项目实现了一个用于与 ZenML API 交互的 Model Context Protocol (MCP) 服务。

ZenML MCP 服务

什么是 MCP?

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

MCP 采用客户端-服务端架构,其中:

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

什么是 ZenML?

ZenML 是一个用于构建和管理 ML 与 AI 工作流的开源平台。它提供统一的界面,用于管理数据、模型和实验。

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

功能

该服务提供 MCP 工具,以访问 ZenML 服务的核心只读功能,方便获取以下内容的实时信息:

核心实体
  • 用户 - 用户账户和权限
  • Stacks - 基础设施配置
  • Stack Components - 单个 Stack 构建模块
  • Flavors - 可用组件类型
  • Service Connectors - 云端身份验证
工作流执行
  • Pipelines - 工作流定义
  • Pipeline Runs - 执行历史和状态
  • Pipeline Steps - 单个步骤的详情、代码和日志
  • Schedules - 自动运行计划
  • Artifacts - 数据制品的元数据(不包含数据本身)
部署与服务
  • Snapshots - 冻结的工作流配置(即“要运行/提供服务的内容”制品)
  • Deployments - 运行时服务实例,包含状态、URL 和日志
  • Services - 模型服务端点
组织与发现
  • Projects - 用于组织 ZenML 资源的容器
  • Tags - 用于发现的跨领域元数据标签
  • Builds - 包含镜像和代码信息的工作流构建制品
模型
  • Models - ML 模型注册表条目
  • Model Versions - 版本化模型制品
兼容性 API(建议迁移)
  • Pipeline run templates 在 ZenML 0.97.0 中仍可用;新工作流则优先使用 Snapshots(参见迁移指南)

该服务还支持使用快照(优先)或已弃用的基于模板的触发参数来触发新的工作流运行。

注意:我们会根据用户反馈持续改进此集成。 欢迎加入我们的 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执行允许列表中的生命周期或关系操作,不进行重试

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

  • 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 服务版本的支持。仅在 迁移期间使用:legacy 响应可能会暴露比精简工具更多的操作元数据,不过服务端会在 两个配置档中都省略包含凭据的配置和其他敏感字段。

工具注册和写入权限相互独立:

配置档策略公布的工具
compactread_write16
compactread_only11
legacyread_write57
legacyread_only52

设置 ZENML_MCP_WRITE_POLICY=read_only,即可从 MCP 发现和分派中移除全部 4 个通用变更工具 以及 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,服务端不会 重试。对于 accepted 或 unknown 结果,请按照响应中的协调说明操作,再决定是否再次调用。 如果有对应的命名读取工具,请使用该工具。Webhook 创建和密钥轮换可能只会返回一次新的签名密钥; 后续读取将不会包含该密钥。删除架构会说明某项操作是归档元数据、移除元数据、停用正在运行的 资源,还是可能删除已存储的工件数据。

首个 2.0 版本涵盖项目、栈和组件、Flavor、服务、流水线和运行、快照和模板、 部署、工件和版本、模型和版本、标签、连接器、代码仓库、Webhook、触发器、等待条件 以及钩子调用的常规操作。用户、计划、服务连接器类型、密钥和资源请求仅提供 zenml_describe_resources 所示的只读支持。不包括 ZenML Cloud 控制平面管理、 Resource Manager 管理、用户和凭据管理、密钥值的增删改查、连接器登录和验证、 原始 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。

旧版 list_run_templates 输入中的 tag 仍予以保留,以保持架构兼容性,但 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 Settings page 设置 ZenML MCP 服务是最简单的方式。

MCP 设置页面

在 ZenML 仪表板中前往 Settings → MCP,即可获取:

  • 针对你的特定服务 URL 和凭据预先配置的代码片段
  • 通过深层链接一键安装支持的 IDE
  • 适用于 VS Code、Claude Desktop、Cursor、Claude Code、OpenAI Codex 等的复制粘贴配置
  • 根据偏好选择 Docker 或 uv 方案
ZenML Pro 用户

MCP Settings 页面支持一键生成个人访问令牌(PAT)。该令牌会自动包含在所有生成的配置代码片段中。

ZenML OSS 用户
  1. 首先通过 Settings → Service Accounts 创建服务账号令牌
  2. 将令牌粘贴到 MCP Settings 页面
  3. 复制为你的 IDE 生成的配置

更倾向于手动设置? 请参阅下方的详细说明。

MCP Apps(实验性)

什么是 MCP Apps? MCP Apps 是 MCP 服务可直接提供给 AI 客户端的交互式 HTML UI。它们会在沙盒 iframe 中呈现,并可双向调用服务工具。详情请参阅官方公告。

运行活动图表

此服务包含两个实验性 MCP Apps:

应用工具描述
流水线运行仪表板open_pipeline_run_dashboard交互式表格,展示近期流水线运行的状态、步骤详情和日志
运行活动图表open_run_activity_chart柱状图,展示过去 30 天的流水线运行活动及状态细分

流水线运行仪表板

这些应用是概念验证示例。我们欢迎大家对更多 MCP Apps 提供反馈和贡献。此新功能仍处于早期阶段,其后续发展还有待观察。我们预计未来会更全面地支持它。

支持的客户端

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

  • ✅ VS Code(Insiders Edition)
  • ✅ Goose
  • ✅ ChatGPT(即将推出)
  • ⚠️ Claude Desktop —— 截至 2026 年 1 月下旬,尚无法渲染 Apps。
  • ⚠️ Claude.ai(Web)—— 截至 2026 年 1 月下旬,尚无法渲染 Apps。

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

使用 Docker 运行 MCP Apps

MCP Apps 使用 Streamable HTTP。请将容器端口绑定到环回地址,并在允许远程访问前,在其前方部署经过身份验证的反向代理或身份感知型访问服务。主机和 Origin 验证可防止 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 为必需项——未设置时,流水线运行工具将报错:“No project is currently set as active”
  • 只有在经过身份验证的代理会验证公共主机,且容器端口仍仅绑定到环回地址时,才适合使用 --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 文件,服务会回退为一个确定性的匿名 UUID,该 UUID 根据 ZENML_STORE_URL 的哈希值生成(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 中找到它,也可以阅读这些文档了解如何创建密钥。对于 ZenML MCP 服务,我们建议使用服务账号。)

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

与 Claude Desktop 配合安装

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

你需要安装最新版的 Claude Desktop。

只需打开 Settings 菜单,将此仓库根目录中的 mcp-zenml.mcpb 文件拖到菜单上,即可按照提示完成安装和设置。你需要添加 ZenML 服务 URL 和 API 密钥。

注意:MCP 捆绑包(.mcpb)取代了旧版 Desktop Extensions(.dxt)格式;现有的 .dxt 文件仍可在 Claude Desktop 中使用。

可选:改善 ZenML 工具输出的显示效果

为了更好地查看 ZenML 工具的结果,你可以配置 Claude,以更易读的格式显示 JSON 响应。在 Claude Desktop 中,前往 Settings → Profile,然后在 “What personal preferences should Claude consider in responses?” 部分添加类似以下内容(也可以直接使用这些文字!):

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 Settings 页面(Settings → MCP)可以生成已预填凭据的准确 mcp.json 内容。

你需要安装 Cursor。

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

要为单个代码仓库进行设置,你需要:

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

根据我们的经验,有时即使服务正常运行,也会显示红色错误指示标记。你可以在 Cursor 聊天窗口中尝试使用它。如果它无法访问 ZenML 工具,会告知你。

Docker 镜像

你可以将服务作为 Docker 容器运行。该进程通过标准输入/输出进行通信,因此会等待 MCP 客户端连接。通过环境变量传入你的 ZenML 凭据。

预构建镜像(Docker Hub)

拉取最新的多架构镜像:

docker pull zenmldocker/mcp-zenml:latest

带版本号的发行版使用 X.Y.Z 标记:

docker pull zenmldocker/mcp-zenml:2.0.0

使用你的 ZenML 凭据运行(标准输入/输出模式):

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 Bundles(.mcpb)

本项目使用 MCP Bundles(.mcpb)——Anthropic Desktop Extensions(DXT)的后继格式。MCP Bundles 会将整个 MCP 服务(包括依赖项)打包为单个文件,并提供便捷的配置方式。

关于格式更名的说明:MCP Bundles 取代了旧版 .dxt 格式。Claude Desktop 仍向后兼容现有的 .dxt 文件,但我们现在发布 mcp-zenml.mcpb,并建议今后使用该格式。

代码仓库根目录中的 mcp-zenml.mcpb 文件使用 MCPB 0.4 UV 运行时。 主机将为当前操作系统安装锁定的 Python 依赖项,因此同一个 Bundle 无需嵌入特定平台的原生扩展,即可在 macOS、Windows 和 Linux 上运行。UV 首次解析打包环境时需要网络连接。

Bundle 构建会重复使用已提交的 mcpb-uv.lock,并以离线模式解析其 Python 依赖关系图。Bundle 的依赖项列表来自 pyproject.toml 中的 [project].dependencies。更改该列表后,设置 MCPB_REFRESH_LOCK=1,即可在保留所有仍适用的版本锁定项的同时在线重新解析;设置 MCPB_REFRESH_LOCK=upgrade,则会将所有版本锁定项更新到最新版本。

将 .mcpb 文件拖放到 Claude Desktop 的设置中时,它会自动处理:

  • 运行时依赖项安装
  • 安全的配置管理
  • 跨平台兼容性
  • 便捷的设置流程

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

已发布到 Anthropic MCP Registry

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

  • **始终保持最新:**每次发布时,都会使用标记提交中的 manifest.json 和 server.json 刷新 Registry 条目。
  • **其他安装方式:**你仍可以通过打包的 .mcpb bundle 在本地安装(见上文),或运行 Docker 镜像。

在此了解有关 Registry 的更多信息:

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。