3D-ассеты через агента Установка: запуск, регистрация MCP и граница доверия
0%

Установка: запуск, регистрация MCP и граница доверия

Установка: запуск, регистрация MCP и граница доверия

Порядок такой: Blender → запускалка → регистрация у агента → проверка. Каждый шаг проверяется артефактом, а не ощущением.

1. Blender

Нужна обычная сборка с интерфейсом, версия 4.5 LTS или новее. Всё в этом треке проверено на 4.5.11 LTS. Сборка blender-headless не подойдёт по причинам из https://courses.digitable.life/post/3d-pipeline/01-how-it-works/.

blender --version

Если ставите распаковкой тарбола, положите куда удобно и запомните путь.

2. Запускалка

git clone https://github.com/digitable-lol/blender-mcp
cd blender-mcp

На сервере без монитора доставьте виртуальный дисплей:

sudo apt install xvfb

Запуск:

./run.sh start

Скрипт ищет Blender в $BLENDER, затем в PATH, затем в ~/opt/blender/blender. Свой путь передаётся переменной:

BLENDER=/opt/blender-4.5.11-linux-x64/blender ./run.sh start

Ожидаемый ответ — up on port 9876. Если вместо него таймаут, смотрите ./run.sh log: там stdout Blender целиком.

Полезная строка, которую печатает стартовый скрипт:

STARTUP: polyhaven=True telemetry=False running=True port=9876

Это не украшение, а самопроверка конфигурации. Она отвечает сразу на четыре вопроса: подключён ли бесплатный банк ассетов, выключена ли телеметрия, поднялся ли сервер и на том ли порту. Приучайтесь заканчивать любой стартовый скрипт такой строкой — она экономит часы.

3. Регистрация у агента

claude mcp add blender --scope user \
  -e DISABLE_TELEMETRY=1 -e BLENDER_MCP_DISABLE_TELEMETRY=1 -e MCP_DISABLE_TELEMETRY=1 \
  -- "$(command -v uvx)" blender-mcp@1.6.4

Три детали, каждая из которых кого-то уже подводила.

Абсолютный путь до uvx. Десктопное приложение не наследует PATH вашей интерактивной оболочки: .zshrc и .bashrc читает терминал, а не GUI-процесс, запущенный из дока. Команда, отлично работающая в терминале, из клиента превращается в command not found. Отсюда "$(command -v uvx)".

Пин версии. blender-mcp@1.6.4 — фиксированная версия. Без пина uvx подтянет свежайшую, и в один прекрасный день пайплайн изменится сам собой. На момент написания последняя — 1.8.0; набор намеренно остаётся на проверенной.

--scope user — сервер доступен из любого каталога, а не только из того, где регистрировали.

4. Телеметрия

Отдельный раздел, потому что тут неприятный сюрприз.

Оригинальный blender-mcp включает телеметрию по умолчанию, с обеих сторон. В аддоне telemetry_consent по умолчанию True; MCP-сервер, если не может достучаться до аддона, тоже предполагает согласие. Уезжают промпты, куски кода и скриншоты вьюпорта — на сторонний Supabase.

Это видно прямо в исходниках. Почти каждый инструмент принимает параметр user_prompt, и документация к нему говорит прямым текстом:

user_prompt: The original user prompt that led to this tool call (required for telemetry)

А исполнение кода обёрнуто декоратором, который забирает и сам код:

@rich_telemetry_tool("execute_blender_code", capture_code=True)

Речь не о счётчике запусков. Речь о ваших формулировках задач и вашем коде.

Выключается в двух независимых местах, и нужны оба:

  1. три переменные *_DISABLE_TELEMETRY=1 при регистрации — они гасят сборщик на стороне MCP-сервера;
  2. telemetry_consent = False в настройках аддона — это делает startup.py набора при каждом запуске.

С выключенной телеметрией параметр user_prompt становится безвредным: можно передавать, можно не передавать.

Практика на будущее: ставя стороннюю интеграцию, ищите в исходниках слово telemetry до первого запуска, а не после. Это дешевле любого разбирательства потом.

5. Граница доверия

Что вы на самом деле включаете, стоит понимать буквально.

Инструмент execute_blender_code исполняет произвольный Python — внутри Blender, но с правами вашего пользователя и полным доступом к файловой системе. Это не дыра в проекте, это его суть: без исполнения кода агент не сможет моделировать. Но обращаться с этим надо соответственно.

  • Сокет держите на localhost. Аутентификации у него нет — ни пароля, ни токена. Кто дотянулся до порта, тот исполняет код.
  • Не открывайте чужие .blend при подключённом MCP. Файл Blender может содержать автозапускаемые скрипты; сочетание с открытым сокетом — плохая идея.
  • Ключи API не кладите в .blend, в исходники аддона, в промпты и в репозиторий.
  • Смотрите, что уходит в рантайм. Сгенерированный код и экспортированные меши стоит просматривать перед тем, как они попадут в продукт.

Отдельно про генераторы моделей. Poly Haven (бесплатные HDRI, текстуры, модели) включён — ключа не требует и ничего о вас не сообщает. Hyper3D Rodin, Sketchfab и Hunyuan3D выключены: им нужны ключи и они отправляют ваши запросы наружу. Включать — осознанное решение с проверкой лицензии и потока данных, а не галочка по умолчанию.

6. Проверка

Финальный шаг — не «команда не выдала ошибку», а артефакт:

./run.sh status          # running on port 9876

Затем попросите агента снять скриншот вьюпорта. Картинка обязана прийти цветной. Если пришла равномерно чёрная — это не пустая сцена, это конкретная поломка, и ей посвящена https://courses.digitable.life/post/3d-pipeline/04-seeing/.

Дальше — https://courses.digitable.life/post/3d-pipeline/03-first-model/: первая модель.

Нашли неточность? Выделите фрагмент текста — рядом появится жучок.

Нужен разбор именно вашей ситуации?

Статья описывает общий случай. Если у вас частный — можно разобрать его отдельно, платно. А если не хватает целого материала, предложите тему: её оплачивают вскладчину, и она выходит открытой для всех.

Доска запросов
Дальше