ZenML
официальныйВзаимодействуйте с вашими MLOps и LLMOps пайплайнами через ваш ZenML MCP сервер
Что можно делать с ZenML MCP?
- Обнаружение схем ресурсов — Перед выполнением запроса узнайте, какие типы ресурсов и операции поддерживаются, с помощью
zenml_describe_resources. - Список ресурсов и фильтрация — Просматривайте запуски пайплайнов, развёртывания, снимки или модели с проверенными фильтрами и постраничной выдачей через
zenml_list_resources. - Просмотр отдельного ресурса — Получайте ресурс по идентификатору, указывая родительский ресурс и область проекта, если это требуется, с помощью
zenml_get_resource. - Запуск пайплайна — Запускайте выполнение на основе снимка, готового к запуску, при необходимости переопределяя параметры шагов, с помощью
trigger_pipeline. - Просмотр журналов и кода шагов — Получайте журналы шагов с ограничением объёма (используйте
tailдля просмотра последних записей) или исходный код шагов с помощьюget_step_logsиget_step_code. - Диагностика настройки — Запустите
diagnose_zenml_setup, чтобы получить структурированный результат диагностики даже при отсутствии ZenML SDK или переменных окружения.
Документация
MCP-сервер для ZenML
Этот проект реализует сервер Model Context Protocol (MCP) для взаимодействия с API ZenML.

Что такое MCP?
Model Context Protocol (MCP) — это открытый протокол, стандартизирующий способы предоставления контекста большим языковым моделям (LLM) приложениями. Он работает как «порт USB-C для приложений ИИ» — предоставляет стандартизированный способ подключения моделей ИИ к различным источникам данных и инструментам.
MCP использует архитектуру клиент-сервер, в которой:
- Хосты MCP: программы, например Claude Desktop или IDE, которым нужен доступ к данным через MCP
- Клиенты MCP: клиенты протокола, поддерживающие соединения 1:1 с серверами
- Серверы MCP: легковесные программы, предоставляющие определенные возможности через стандартизированный протокол
- Локальные источники данных: файлы, базы данных и службы на вашем компьютере, к которым серверы MCP могут безопасно обращаться
- Удаленные службы: внешние системы, доступные через интернет, к которым могут подключаться серверы MCP
Что такое ZenML?
ZenML — это платформа с открытым исходным кодом для создания и управления конвейерами ML и ИИ. Она предоставляет единый интерфейс для управления данными, моделями и экспериментами.
Дополнительные сведения см. на сайте 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_setupget_active_userиget_active_projecttrigger_pipelineget_step_logs,get_step_codeиget_deployment_logsopen_pipeline_run_dashboardиopen_run_activity_chart
get_step_logs возвращает не более 50,000 записей, начиная с самых старых, с флагом
possibly_truncated, а также note, указывающий, какие записи отсутствуют и
почему. Передайте tail, чтобы получить только самые новые записи. На серверах ZenML 0.97+ выполняется постраничное чтение из хранилища журналов; в версии 0.96 используется старый конечный адрес с одним запросом.
Используйте ZENML_MCP_PROFILE=legacy, если существующий клиент по-прежнему зависит от старых
имен, специфичных для сущностей, например list_pipeline_runs. Это сохраняет
проверенный слой совместимости имен инструментов и схем для ZenML 0.97.0. Он
не добавляет поддержку более старых версий сервера ZenML. Используйте его только
во время миграции: устаревшие формы ответов могут раскрывать больше операционных метаданных, чем компактные инструменты, хотя сервер исключает из обоих профилей конфигурацию с учетными данными и другие конфиденциальные поля.
Регистрация и доступ на запись не зависят друг от друга:
| Профиль | Политика | Доступные инструменты |
|---|---|---|
compact | read_write | 16 |
compact | read_only | 11 |
legacy | read_write | 57 |
legacy | read_only | 52 |
Установите ZENML_MCP_WRITE_POLICY=read_only, чтобы удалить все четыре универсальных инструмента изменения
и trigger_pipeline из обнаружения и диспетчеризации MCP. Обнаружение ресурсов также
не включает схемы создания, обновления, удаления и действий. Настройка
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. Для
принятого или неизвестного результата следуйте инструкциям по сверке в ответе,
прежде чем решать, повторять ли вызов. Используйте именованный запрос чтения, если он
доступен. Создание вебхука и ротация секрета могут однократно вернуть новый секрет
подписи; последующие чтения его не показывают. В схемах удаления указано,
архивирует ли операция метаданные, удаляет ли метаданные, выводит ли из эксплуатации
активный ресурс или может удалить сохраненные данные артефакта.
Первый выпуск 2.0 охватывает обычные операции с проектами, стеками и компонентами,
вариантами, службами, конвейерами и запусками, снимками и шаблонами,
развертываниями, артефактами и версиями, моделями и версиями, тегами, коннекторами,
репозиториями кода, вебхуками, триггерами, условиями ожидания и вызовами хуков.
Пользователи, расписания, типы коннекторов служб, секреты и запросы ресурсов доступны
только для чтения, как показано в zenml_describe_resources. Не поддерживаются администрирование
плоскости управления ZenML Cloud, администрирование Resource Manager, управление
пользователями и учетными данными, CRUD операций со значениями секретов, вход в
коннекторы и их проверка, необработанные события вебхуков, а также агрегированные
инструменты отладки и анализа происхождения данных.
Начните универсальный рабочий процесс с обнаружения точной схемы, а затем вызовите ее:
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 сохраняются API CRUD для шаблонов запусков. Для новых рабочих
процессов предпочтительны снимки. Удобное создание конвейеров и параметр запуска
на основе шаблона объявлены устаревшими. В устаревшем профиле get_run_template и
list_run_templates остаются доступными для существующих клиентов.
Устаревший входной параметр tag по-прежнему присутствует в list_run_templates для совместимости схемы,
но в ZenML 0.97.0 нет эквивалентного фильтра на стороне сервера. Ненулевое значение
отклоняется до вызова SDK. Фильтрация снимков по тегам по-прежнему доступна.
Миграция: шаблоны запусков → снимки
Почему произошло изменение? Снимки заменили шаблоны запусков в качестве предпочтительного исполняемого артефакта конвейера в ZenML. SDK версии 0.97.0 по-прежнему поддерживает 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)
Чтобы переопределить параметры при запуске исполняемого снимка, передайте конфигурацию запуска ZenML (сам снимок при этом не изменяется):
trigger_pipeline(
snapshot_name_or_id="my-snapshot",
run_configuration={
"steps": {"train": {"parameters": {"learning_rate": 0.01}}},
"enable_cache": False,
},
)
Для статических снимков переопределяйте параметры шагов, как показано выше. Переопределения
run_configuration={"parameters": {...}} верхнего уровня задают параметры функции конвейера
и поддерживаются только для динамических снимков; ZenML отклоняет их для статических снимков.
Примечание: get_deployment_logs возвращает ограниченный объем данных (по умолчанию 100 строк, максимум 1000, не более 100KB) и требует установленной соответствующей интеграции развертывателя.
Быстрая настройка через панель управления (рекомендуется)
Самый простой способ настроить сервер MCP ZenML — воспользоваться страницей Настройки MCP на панели управления ZenML.

Перейдите в раздел Настройки → MCP на панели управления ZenML, чтобы получить:
- Предварительно настроенные фрагменты для URL вашего сервера и учетных данных
- Установка одним щелчком через ссылки для поддерживаемых IDE
- Конфигурации для копирования и вставки для VS Code, Claude Desktop, Cursor, Claude Code, OpenAI Codex и других
- Варианты Docker и uv на ваш выбор
Пользователи ZenML Pro
На странице настроек MCP можно создать Personal Access Token (PAT) одним щелчком. Токен автоматически включается во все создаваемые фрагменты конфигурации.
Пользователи ZenML OSS
- Сначала создайте токен учетной записи службы в разделе Настройки → Учетные записи служб
- Вставьте токен на страницу настроек MCP
- Скопируйте созданную конфигурацию для своей IDE
Предпочитаете настроить вручную? См. подробные инструкции ниже.
Приложения MCP (экспериментальная функция)
Что такое приложения MCP? Приложения MCP — это интерактивные HTML-интерфейсы, которые серверы MCP могут напрямую предоставлять клиентам ИИ. Они отображаются в изолированных iframe и могут двунаправленно вызывать инструменты сервера. Полное описание см. в официальном объявлении.

Этот сервер включает два экспериментальных приложения MCP:
| Приложение | Инструмент | Описание |
|---|---|---|
| Панель запусков конвейеров | open_pipeline_run_dashboard | Интерактивная таблица последних запусков конвейеров с состоянием, сведениями о шагах и журналами |
| Диаграмма активности запусков | open_run_activity_chart | Столбчатая диаграмма активности запусков конвейеров за последние 30 дней с разбивкой по состояниям |

Эти приложения включены в качестве примеров для проверки концепции. Мы приветствуем отзывы и вклад в разработку новых приложений MCP. Эта новая функция пока находится на раннем этапе, и нам предстоит увидеть, как она будет развиваться. В будущем мы планируем обеспечить более полную поддержку.
Поддерживаемые клиенты
Для приложений MCP требуется транспорт Streamable HTTP (не stdio). В настоящее время приложения MCP поддерживают следующие клиенты:
- ✅ VS Code (Insiders Edition)
- ✅ Goose
- ✅ ChatGPT (скоро появится)
- ⚠️ Claude Desktop — по состоянию на конец января 2026 года приложения еще не отображаются.
- ⚠️ Claude.ai (веб-версия) — по состоянию на конец января 2026 года приложения еще не отображаются.
Примечание: На момент написания мы не смогли тщательно протестировать Claude Desktop или Claude.ai. Если возникнут проблемы, сообщите о них.
Запуск приложений MCP с Docker
Приложения MCP используют Streamable HTTP. Привяжите порт контейнера к loopback-интерфейсу и перед разрешением удаленного доступа разместите перед ним аутентифицированный обратный прокси или службу доступа с учетом идентификации. Проверка Host и Origin защищает от DNS-rebinding, но не аутентифицирует вызывающих.
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": []
}
- Попросите ИИ «открыть панель запусков конвейеров» или «показать диаграмму активности запусков»
Важные примечания:
- Требуется
ZENML_ACTIVE_PROJECT_ID— без него инструменты запусков конвейеров завершатся ошибкой «No project is currently set as active» --disable-dns-rebinding-protectionподходит только в том случае, если аутентифицированный прокси проверяет публичный хост, а порт контейнера доступен только через loopback- Ограничьте ключ API ZenML разрешениями, необходимыми MCP-клиенту; для клиентов, которым нужен только просмотр данных, используйте
ZENML_MCP_WRITE_POLICY=read_only
Тестирование и контроль качества
В этом проекте предусмотрено автоматизированное тестирование, которое помогает убедиться, что MCP-сервер продолжает работать:
- 🔄 Автоматические дымовые тесты: комплексный дымовой тест запускается каждые 3 дня с помощью GitHub Actions
- 🚨 Создание задач: при сбое тестов автоматически создаются задачи GitHub с подробной отладочной информацией
- ⚡ Быстрый CI: для быстрой установки зависимостей и тестирования используется UV с кэшированием
- 🧪 Ручное тестирование: дымовой тест можно запустить локально с помощью
uv run scripts/test_mcp_server.py server/zenml_server.py
Автоматизированные тесты проверяют:
- Подключение по протоколу MCP и рукопожатие
- Инициализацию сервера и обнаружение инструментов
- Базовую функциональность инструментов (если сервер ZenML доступен)
- Перечисление ресурсов и промптов
diagnose_zenml_setupвозвращает структурированную диагностику даже в ограниченных средах
CI без учётных данных проверяет каждый адаптер через протокол MCP. CI для PR и релизов также запускает новый сервер ZenML 0.97.0 OSS на loopback-адресе и проверяет сохранённые операции CRUD и изоляцию проектов с одинаковыми именами. Сервер использует временную конфигурацию и базу данных, которые удаляются при завершении задания; доступ к среде репозитория, self-hosted runner или учётные данные ZenML не требуются.
Локальный OSS-сервер ZenML отключает аутентификацию, а его SQL-хранилище не
поддерживает повторный запуск конвейеров или внешнюю инфраструктуру развёртывания.
Поэтому проверки ограниченного доступа и функции запуска, повторного запуска,
развёртывания, условий ожидания и запросов ресурсов остаются отдельными
необязательными этапами. Для них требуется ZENML_MCP_RESTRICTED_INTEGRATION=1 с
ZENML_MCP_RESTRICTED_API_KEY либо ZENML_MCP_ACTION_INTEGRATION=1 с
точными UUID одноразовых фикстур из ZENML_MCP_ACTION_FIXTURE соответственно. Пропуск
этапа из-за отсутствия разрешающего параметра не означает, что соответствующие
возможности прошли проверку. Оператор может задать ZENML_MCP_REQUIRE_COMPLETE_INTEGRATION=1, чтобы
превратить отсутствие разрешающего параметра в ошибку. Подготовка облачной
инфраструктуры никогда не входит в стандартный запуск тестов.
Отладка с помощью MCP Inspector
Для интерактивной отладки используйте MCP Inspector — веб-инструмент, позволяющий проверять инструменты 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
Откроется веб-интерфейс с уже заполненными учётными данными — просто нажмите Connect и перейдите на вкладку Tools, чтобы интерактивно проверить любой инструмент.
Более подробные инструкции по отладке см. в CLAUDE.md.
Конфиденциальность и аналитика
Сервер ZenML MCP собирает анонимную аналитику использования, чтобы помочь нам улучшить продукт.
Мы отслеживаем:
- Какие инструменты используются и как часто
- Частоту и типы ошибок (только тип ошибки, без сообщений)
- Основную информацию о среде (ОС, версия Python и запуск в Docker/CI)
- Длительность сеанса и закономерности использования инструментов
Мы НЕ собираем:
- URL сервера ZenML или ключ 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), чтобы сохранять постоянный анонимный идентификатор при перезапуске контейнера. Если не задать его и файловая система контейнера не сможет сохранять файл с идентификатором аналитики, сервер будет использовать детерминированный анонимный 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 для диагностики во время выполнения — он работает, даже если SDK ZenML не установлен или переменные среды отсутствуют.
Настройка вручную
Предварительные требования
Вам потребуется доступ к развёрнутому серверу ZenML. Если у вас его нет, можно зарегистрироваться для бесплатного пробного периода на ZenML Pro, и мы возьмём развёртывание на себя.
Совет: после получения доступа к серверу ZenML откройте страницу настроек MCP на панели управления — это самый простой способ настроить подключение.
Совместимость: текущая версия протестирована с ZenML 0.97.0. Если вы используете более старую версию ZenML, установите предыдущий выпуск этого MCP-сервера.
Вам также, вероятно, потребуется локально установить uv. Дополнительную информацию см.
в документации uv.
Рекомендуем установить его с помощью скрипта установки или через brew, если вы используете
Mac. (Технически он не обязателен, но упрощает установку и настройку.)
Также потребуется клонировать этот репозиторий в локальную папку:
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"
}
}
}
}
Если задан ZENML_STORE_API_KEY, MCP-сервер хранит учётные данные ZenML в памяти и не читает и не обновляет учётные данные, сохранённые в zenml login. Это относится к прямому запуску Python, расширениям MCPB и Docker. Подключения без ключа API по-прежнему могут использовать сохранённый вход в терминале. После изменения ключа API перезапустите MCP-сервер; новый чат сам по себе может повторно использовать уже работающий процесс сервера.
Необходимо заменить четыре фиктивных значения:
- путь к локально установленному
uv(указанный выше путь соответствует Mac, если программа установлена черезbrew) - путь к файлу
zenml_server.py(этот файл будет запускаться при подключении к MCP-серверу). Он находится в корне этого репозитория. Необходимо указать его полный точный путь. - URL сервера ZenML (URL вашего сервера ZenML. Его можно найти в интерфейсе ZenML Cloud). Он будет выглядеть примерно так:
https://d534d987a-zenml.cloudinfra.zenml.io. - ключ API сервера ZenML (ключ API вашего сервера ZenML. Его можно найти в интерфейсе ZenML Cloud или прочитать эту документацию, чтобы узнать, как его создать. Для сервера ZenML MCP рекомендуем использовать сервисную учётную запись.)
Вы можете изменить способ запуска файла Python MCP-сервера, но, вероятно, проще всего будет использовать
uv, поскольку он самостоятельно настраивает среду и устанавливает зависимости.
Установка для использования с Claude Desktop
Быстрый вариант: откройте страницу настроек MCP на панели управления ZenML (Settings → MCP), чтобы получить готовые инструкции по установке и ссылки для Claude Desktop.
Необходимо установить последнюю версию Claude Desktop.
Просто откройте меню Settings и перетащите файл mcp-zenml.mcpb из
корня этого репозитория в меню. Он проведёт вас через процесс установки и
настройки. Вам потребуется добавить URL сервера ZenML и ключ 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
Быстрый вариант: страница настроек MCP на панели управления ZenML (Settings → 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
Каноническая конфигурация MCP с использованием Docker
{
"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) — преемник Desktop Extensions (DXT) от Anthropic. Пакеты MCP объединяют целый MCP-сервер (включая зависимости) в один файл с удобной настройкой.
Примечание о переименовании: пакеты MCP заменяют прежний формат .dxt. Claude Desktop сохраняет обратную совместимость с существующими файлами .dxt, но теперь мы распространяем mcp-zenml.mcpb и рекомендуем использовать его в дальнейшем.
Файл mcp-zenml.mcpb в корне репозитория использует среду выполнения MCPB 0.4 UV.
Хост устанавливает закреплённые зависимости Python для текущей операционной
системы, поэтому один и тот же пакет работает в macOS, Windows и Linux без
встроенных платформозависимых нативных расширений. При первом разрешении
зависимостей пакета через UV требуется доступ к сети.
Сборки bundle повторно используют зафиксированный mcpb-uv.lock и разрешают граф зависимостей Python в автономном режиме. Список зависимостей bundle берётся из [project].dependencies в pyproject.toml. После изменения этого списка задайте 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
Этот MCP-сервер опубликован в официальном реестре Anthropic MCP и доступен для поиска совместимым хостам. При каждом выпуске с тегом наша CI обновляет запись в реестре с помощью CLI mcp-publisher и GitHub OIDC, поэтому вы можете устанавливать или находить ZenML MCP Server напрямую везде, где поддерживается реестр (например, в каталоге Extensions в Claude Desktop).
- Всегда актуальная версия: запись в реестре обновляется с каждым выпуском на основе
manifest.jsonиserver.jsonкоммита с тегом. - Альтернативные способы установки: вы по-прежнему можете установить пакет локально с помощью bundle
.mcpb(см. выше) или запустить образ Docker.
Подробнее о реестре:
- Реестр Anthropic MCP (репозиторий сообщества): https://github.com/modelcontextprotocol/registry