# mcp-zenml

MCP-сервер, через который агент читает и меняет ресурсы ZenML: пайплайны, запуски, стеки, модели. Пригодится, когда нужно смотреть живые данные ML-платформы прямо из IDE.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed · ★ 49
- Автор: zenml-io
- Лицензия: MIT · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/zenml-io/mcp-zenml
- Обновлён: 2026-10-22
- HTML: https://affpapa.org/nevibecode/mcp/mcp-zenml

## Что делает

Сервер подключается к ZenML API и отдаёт агенту набор инструментов. В компактном профиле их 16: семь общих (`zenml_describe_resources`, `zenml_list_resources`, `zenml_get_resource`, `zenml_create_resource`, `zenml_update_resource`, `zenml_delete_resource`, `zenml_action_resource`) плюс точечные — диагностика установки, активные пользователь и проект, запуск пайплайна, логи и код шагов, логи деплоймента, открытие дашборда запуска и графика активности.

Регистрация и право на запись настраиваются отдельно. `ZENML_MCP_WRITE_POLICY=read_only` убирает из обнаружения четыре инструмента изменения и `trigger_pipeline`, а также схемы create, update, delete и action. Старое `ZENML_MCP_READ_ONLY=true` ещё принимается, неверное значение политики откатывается в режим только чтения. Неверный `ZENML_MCP_PROFILE` останавливает запуск с ошибкой конфигурации.

Версия 2.0.0 требует MCP Python SDK 2.2.0 и ZenML 0.96.4. Компактный профиль стал умолчанием, и это ломает обнаружение у клиентов, которые зовут инструменты по старым именам вроде `list_pipeline_runs` — на время переезда ставьте `ZENML_MCP_PROFILE=legacy`. Профиль `legacy` не расширяет поддержку на более старые версии сервера ZenML. Мутации различают исходы `completed`, `accepted` и `unknown`, и повтор после возможного попадания в ZenML сервер не делает: сначала сверьтесь по ответу.

## Требования
- Нужно: Docker
- Переменные окружения: `ZENML_STORE_URL`, `ZENML_STORE_API_KEY`, `ZENML_MCP_PROFILE`, `ZENML_MCP_WRITE_POLICY` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env ZENML_STORE_URL=<ZENML_STORE_URL> --env ZENML_STORE_API_KEY=<ZENML_STORE_API_KEY> --env ZENML_MCP_PROFILE=<ZENML_MCP_PROFILE> --env ZENML_MCP_WRITE_POLICY=<ZENML_MCP_WRITE_POLICY> --transport stdio mcp-zenml -- 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
```
Вместо <…> подставьте свои значения

### Codex

**Командой платформы**
```bash
codex mcp add mcp-zenml --env ZENML_STORE_URL=<ZENML_STORE_URL> --env ZENML_STORE_API_KEY=<ZENML_STORE_API_KEY> --env ZENML_MCP_PROFILE=<ZENML_MCP_PROFILE> --env 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
```
Вместо <…> подставьте свои значения

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "mcp-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>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "mcp-zenml": {
            "type": "stdio",
            "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>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e ZENML_STORE_URL=<ZENML_STORE_URL> -e ZENML_STORE_API_KEY=<ZENML_STORE_API_KEY> -e ZENML_MCP_PROFILE=<ZENML_MCP_PROFILE> -e ZENML_MCP_WRITE_POLICY=<ZENML_MCP_WRITE_POLICY> mcp-zenml 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
```
Вместо <…> подставьте свои значения

## Когда брать
- посмотреть статус и историю запусков пайплайна из IDE
- прочитать логи и код конкретного шага
- создать или обновить ресурс ZenML по UUID
- запустить пайплайн по снапшоту
- открыть дашборд запуска и график активности

## Примеры запросов агенту
- Покажи последние запуски пайплайна и их статусы
- Вытащи логи шага из упавшего запуска
- Запусти пайплайн по последнему снапшоту

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
