ZenML
официальныйВзаимодействуйте с вашими MLOps и LLMOps пайплайнами через ваш ZenML MCP сервер
Что можно делать с ZenML MCP?
- Inspect ZenML resources — Ask to list or describe pipelines, stacks, models, or deployments via
zenml_list_resourcesandzenml_describe_resources. - Trigger pipeline runs — Request a new run from a snapshot or template using
trigger_pipelinewith a name or ID. - Fetch run details and logs — Retrieve step logs, deployment logs, or step code with
get_step_logs,get_deployment_logs, orget_step_code. - Diagnose setup issues — Run
diagnose_zenml_setupto troubleshoot server connectivity or configuration problems. - Open interactive dashboards — Launch the pipeline runs dashboard or activity chart via
open_pipeline_run_dashboardoropen_run_activity_chart. - Manage resources safely — Create, update, or delete resources like projects or stacks using
zenml_create_resource,zenml_update_resource, orzenml_delete_resource.
Документация
MCP-сервер для ZenML
Этот проект реализует сервер Model Context Protocol (MCP) для взаимодействия с API ZenML.

Что такое MCP?
Model Context Protocol (MCP) — это открытый протокол, который стандартизирует способ предоставления контекста большим языковым моделям (LLM). Он работает как «USB-C порт для AI-приложений» — предоставляя стандартизированный способ подключения AI-моделей к различным источникам данных и инструментам.
MCP следует архитектуре «клиент-сервер», где:
- MCP-хосты: программы, такие как Claude Desktop или IDE, которые хотят получать данные через MCP
- 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_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)
Примечание: get_deployment_logs возвращает ограниченный вывод (по умолчанию 100 строк, максимум 1000, ограничено 100 КБ) и требует установки соответствующей интеграции развертывателя.
Быстрая настройка через панель управления (рекомендуется)
Самый простой способ настроить ZenML MCP-сервер — через страницу Настройки 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-серверы могут предоставлять непосредственно в AI-клиенты. Они отображаются в песочницах 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-реббиндинга; они не аутентифицируют вызывающих.
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 и релизов также запускает свежий OSS-сервер ZenML 0.97.0 на адресе loopback и выполняет сохраненные CRUD-операции и проверки изоляции проектов с одинаковыми именами. Сервер использует временную конфигурацию и базу данных, которые удаляются при завершении задания; никакие переменные окружения репозитория, self-hosted раннер или учетные данные 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"
}
}
}
}
Есть четыре фиктивных значения, которые вам нужно заменить:
- путь к вашему локально установленному
uv(путь, указанный выше, — это место, где он был бы на Mac, если бы вы установили его черезbrew) - путь к файлу
zenml_server.py(это файл, который будет запущен, когда вы подключитесь к MCP-серверу). Этот файл находится внутри этого репозитория в корне. Вам нужно указать точный полный путь к этому файлу. - URL сервера ZenML (это URL вашего сервера ZenML. Вы можете найти его
в облачном интерфейсе ZenML). Он будет выглядеть примерно как
https://d534d987a-zenml.cloudinfra.zenml.io. - API-ключ сервера ZenML (это API-ключ для вашего сервера ZenML. Вы можете найти его в облачном интерфейсе ZenML или прочитать эти документы о том, как его создать. Для целей сервера ZenML MCP мы рекомендуем использовать сервисный аккаунт.)
Вы можете свободно изменить способ запуска файла Python MCP-сервера, но использование
uv будет, вероятно, самым простым вариантом, поскольку он обрабатывает установку окружения и
зависимостей за вас.
Установка для использования с Claude Desktop
Быстрая альтернатива: Используйте страницу настроек MCP в вашей панели управления ZenML (Settings → MCP), чтобы получить предварительно настроенные инструкции по установке и глубокие ссылки для Claude Desktop.
Вам потребуется установить последнюю версию Claude Desktop.
Вы можете просто открыть меню настроек и перетащить файл 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)
Загрузите последний multi-arch образ:
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 в корне репозитория использует среду выполнения UV MCPB 0.4.
Хост устанавливает закрепленные зависимости 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 о Desktop Extensions (DXT) и соответствующие рекомендации по упаковке MCP-пакетов в их документации: https://www.anthropic.com/engineering/desktop-extensions
Опубликовано в реестре Anthropic MCP
Этот MCP-сервер опубликован в официальном реестре Anthropic MCP и доступен для обнаружения совместимыми хостами. При каждом тегированном релизе наш CI обновляет запись в реестре через CLI mcp-publisher реестра с использованием GitHub OIDC, поэтому вы можете установить или обнаружить ZenML MCP Server напрямую везде, где поддерживается реестр (например, в каталоге расширений Claude Desktop).
- Всегда актуально: запись в реестре обновляется при каждом релизе из
manifest.jsonиserver.jsonтегированного коммита. - Альтернативные пути установки: вы по-прежнему можете установить локально через упакованный пакет
.mcpb(см. выше) или запустить Docker-образ.
Узнайте больше о реестре здесь:
- Anthropic MCP Registry (сообщество репозитория): https://github.com/modelcontextprotocol/registry