Blender MCP
официальныйЛегковесный MCP-сервер для Blender. Предоставляет интерфейс на естественном языке для работы с Python API Blender, улучшает доступ к документации и позволяет пользователям изучать и понимать сложные настройки.
Что можно делать с Blender MCP?
- Анализ сцены — Попросите ассистента проанализировать открытую сцену Blender и выявить аномалии производительности, например объекты с высокой плотностью полигонов относительно их размера на экране.
- Переименование дата-блоков — Поручите ассистенту исправить опечатки или предложить описательные имена для всех дата-блоков в текущем файле, применяя изменения только после вашего одобрения.
- Запросы на естественном языке — Запрашивайте связи между объектами напрямую, например, какие объекты используют конкретный материал или какой объект имеет наибольшее количество полигонов в сцене.
- Документация по Geometry Nodes — Попросите ассистента объяснить сложную настройку Geometry Nodes, добавить встроенные рамки документации и создать текстовый дата-блок с полным анализом.
- Отладка сцены — Попросите ассистента диагностировать проблемы, такие как деформация меша, артефакты затенения или объекты с неравномерным масштабом в вашем текущем проекте.
Документация
Лёгкий MCP-сервер (Model Context Protocol) для Blender. Он предоставляет интерфейс на естественном языке для Python API Blender, улучшая доступ к документации и позволяя пользователям исследовать и понимать сложные настройки.
Технические детали и документацию по архитектуре смотрите в исходном коде.
[!warning] Предупреждение Предупреждение о безопасности
MCP-сервер будет выполнять сгенерированный LLM код в Blender без каких-либо защитных механизмов, предохраняющих ваши данные от удаления или отправки в удалённое расположение. Чтобы обезопасить свои данные, рекомендуется использовать виртуальную машину или систему без доступа к конфиденциальной информации.
Установка
В Blender нет встроенной функциональности для подключения к LLM.
Чтобы Blender мог подключаться к LLM, необходимо вручную загрузить, установить и запустить три внешних инструмента.
Аддон
Для взаимодействия с вашей сессией Blender необходимо установить специальный аддон для интеграции MCP-сервера.
…или скачайте и установите с диска
Если вы перетаскиваете файл в Blender, вам нужно сделать это дважды. Сначала для добавления репозитория Blender Lab, затем для установки самого аддона. Этот метод позволяет получать уведомления об обновлениях при выходе новой версии аддона.
LLM-клиент
MCP-серверы следуют хорошо определённому стандарту и совместимы с множеством клиентов. Следуйте документации LLama.cpp или установите LLM-клиент по вашему выбору.
MCP-сервер
Существуют разные способы установки MCP-сервера в зависимости от возможностей вашего LLM-клиента.
- MCP Bundle: Для новых клиентов, поддерживающих файлы
.mcpb, скачайте последний пакет со страницы релизов. Llama.cpp пока этого не поддерживает. - MCP Server: Для установки из исходного кода ознакомьтесь с документацией Llama.cpp или инструкциями по настройке.
Запуск
После настройки MCP-сервера в вашем LLM-клиенте вы можете начать исследовать свои сцены Blender.

Веб-интерфейс llama.cpp, запускающий blender-mcp сервер.
Пример 1: Анализ сцены
MCP можно использовать для программного анализа сцены на предмет узких мест производительности. Возьмём, например, демо-файл Classroom:

Демо-файл Classroom.
Эта сцена — один из файлов бенчмарка Blender. Эти файлы включены в бенчмарк, потому что они хорошо представляют реальные производственные файлы, созданные художниками. И неудивительно, что в них могут содержаться объекты, склонные к оптимизации.
Хотя проверки количества полигонов часто бывает достаточно, ещё интереснее построить график количества полигонов в зависимости от того, насколько крупно они отображаются в финальном рендере. Это можно получить с помощью следующего запроса.
Analyze the scene and list the outliers: objects with highest polygon count but smaller size from the camera point of view.
Построенные данные наглядно показывают два объекта, которые выделяются на фоне остальных: alphabet и coat 1:

Графический анализ количества полигонов на площадь экрана для демо-сцены classroom.
Объект alphabet имеет 20 тысяч полигонов. Из-за его плоского расположения его можно заменить текстурой с минимальным ущербом для конечного результата. Объект coat 1 имеет 37 тысяч полигонов из-за модификатора Subsurf. Снижение уровня подразделения могло бы облегчить сцену, если память является узким местом вашей системы.

Алфавит находится в задней части сцены и его легко можно заменить текстурой. Пальто также находится достаточно далеко, чтобы можно было упростить его сетку.
[!info] Информация Насколько надёжны эти результаты?
Первоначальный анализ, возвращённый LLM, учитывал только модификаторы, влияющие на вьюпорт. Объект
coat 1имеет модификатор Solidify, который удваивает количество его полигонов, делая его ещё более заметным выбросом. И хотя в этой сцене не был включён Simplify, эти настройки также повлияли бы на итоговый анализ.
Пример 2: Различные запросы
Вот некоторые другие протестированные варианты использования. Для их работы необходимо вставить весь «Prompt» целиком. В качестве отправной точки следует использовать соответствующий демо-файл. Успех операции будет зависеть от используемой модели.
| Вариант использования | Prompt | Демо-файл | Результат |
|---|---|---|---|
| Переименование блоков данных: исправление опечаток | With the current open Blender file fix the name of all the data-blocks to remove typos. Report back which data-blocks got fixed. | Scattering Pebbles | GRP-rocks → GRP-pebble, LGT-Lights → LGT-lights, Compositing Nodetree → Compositing Node Tree |
| Переименование блоков данных: лучшие имена | With the current open Blender file suggest descriptive names for all data-blocks, and apply if approved. | Scattering Pebbles | Camera → CAM-main, Area → LGT-sun-key, Area.001 → LGT-sun-fill, Area.002 → LGT-area-rim, GEO-pebble.001 → GEO-pebble-B, … |
| Запрос связей данных на естественном языке | Which objects are using the following material: pebbles | Scattering Pebbles | 7 объектов: GEO-pebble, GEO-pebble.001, GEO-pebble.002, GEO-pebble.003, GEO-pebble.004, GEO-pebble.005, GEO-pebble.006 |
| Отладка сцены | What is the object with the highest poly-count on this file? Ignore objects which are not linked to any scene. | Scattering Pebbles | GEO-ground с 4 096 гранями. |
| Документация Geometry Nodes | With the current open Blender file explain what the main geometry nodes setup is doing. Add inline documentation for it with frame elements. Create a Text data-block with the result of analysis. | Scattering Pebbles | 4 основных цветовых рамки + текстовый файл с пояснениями. |
Другие запросы, которые ещё предстоит изучить:
- Перевести все блоки данных с французского на английский.
- Моя сетка не деформируется арматурой, как это исправить?
- Blender не хватает памяти при рендере этой сцены, как её оптимизировать?
- У этой сетки странные артефакты затенения, как это исправить?
- Найти объекты с сетками, имеющими неправильные нормали.
- Проверить сцену на объекты с неравномерным масштабированием сетки.
- Экспортированное видео не воспроизводится в моих веб-браузерах, какие настройки следует изменить?
- Какие кисти для скульптинга использовать для создания и детализации ветвей деревьев?
- Настроить композитинг-ноды для сохранения изображения в форматах SDR и HDR.
- Проверить этот чек-лист: сетки должны быть замкнутыми, все объекты должны иметь материалы, имена должны соответствовать соглашению, никаких абсолютных путей, … Переименование блоков данных: исправление опечаток
GRP-rocks → GRP-pebbles (сцена содержит только объекты-камешки, а не скалы).
LGT-Lights → LGT-lights (непоследовательный регистр).
Compositing Nodetree → Compositing Node Tree (Nodetree — ошибка сложного слова).
Переименование блоков данных: лучшие имена
Объекты:
Camera→CAM-mainArea→LGT-sun-keyArea.001→LGT-sun-fillArea.002→LGT-area-rimGEO-pebble.001→GEO-pebble-BGEO-pebble.002→GEO-pebble-CGEO-pebble.003→GEO-pebble-DGEO-pebble.004→GEO-pebble-EGEO-pebble.005→GEO-pebble-FGEO-pebble.006→GEO-pebble-G
Блоки данных света:
Area→LGT-sun-keyArea.001→LGT-sun-fillArea.002→LGT-area-rim
Блок данных камеры:
Camera→CAM-main
Текстуры:
Texture→TEX-ground-cloudsTexture.001→TEX-ground-image
Сцена и мир:
World→WLD-environmentScene→SCN-mainДокументация Geometry Nodes
Созданные новые рамки:

Рамки документации, добавленные в настройку geometry nodes.
Текстовый блок данных:
GEOMETRY NODES ANALYSIS -- "Pebble Scattering Nodes"
Applied to object: GEO-ground | Modifier: Pebbles
========================================================
OVERVIEW
--------
This node group scatters three size categories of pebble meshes across
the faces of a ground mesh. Each category uses its own density mask
and a global Factor multiplier so that coverage can be art-directed
per-layer without touching the raw mask textures. The three resulting
instance layers are merged with the original ground geometry and sent
to the Group Output.
INPUTS (Group Interface)
------------------------
Geometry -- The ground mesh to scatter pebbles on.
Large Pebbles Mask -- Float mask (e.g. vertex colour / texture) that
defines WHERE large pebbles may appear.
Medium Pebbles Mask-- Float mask for medium pebble placement regions.
Small Pebbles Mask -- Float mask for small pebble placement regions.
Factor -- Global density multiplier shared by all three
lanes (appears three times in the interface,
one per lane).
NODE GRAPH -- LANE BY LANE
--------------------------
+- LARGE PEBBLES LANE -----------------------------------------------------+
| Source object : GEO-pebble |
| Group Input.001 |
| +- Geometry ------------------------> Distribute Points on Faces |
| +- Large Pebbles Mask ------------> Distribute Points on Faces |
| | (Density Factor socket) |
| +- Factor --> Math.003 (x) -------> Distribute Points on Faces |
| (Density Max socket) |
| Distribute Points on Faces ----------> Instance on Points |
| Object Info (GEO-pebble) -----------> Instance on Points (Instance) |
| Random Rotation.001 [-pi, +pi] -----> Instance on Points (Rotation) |
| Random Value [0.25 - 0.60] -------> Instance on Points (Scale) |
| Instance on Points ------------------> Join Geometry.003 |
+--------------------------------------------------------------------------+
+- MEDIUM PEBBLES LANE ----------------------------------------------------+
| Source object : GEO-pebble.004 |
| Group Input.002 |
| +- Geometry ------------------------> Distribute Points on Faces.001 |
| +- Medium Pebbles Mask -----------> Math.004 (x) --> Math.005 (x) |
| +- Factor ------------------------> Math.005 (x) |
| Math.005 output --------------> Distribute Points on Faces.001 |
| (Density socket) |
| Distribute Points on Faces.001 -----> Instance on Points.001 |
| Object Info.001 (GEO-pebble.004) --> Instance on Points.001 |
| Random Rotation.002 [-pi, +pi] ----> Instance on Points.001 |
| Random Value.002 [0.25 - 0.45] -----> Instance on Points.001 |
| Instance on Points.001 -------------> Join Geometry.003 |
+--------------------------------------------------------------------------+
+- SMALL PEBBLES LANE -----------------------------------------------------+
| Source object : GEO-pebble.002 |
| Group Input.003 |
| +- Geometry ------------------------> Distribute Points on Faces.002 |
| +- Small Pebbles Mask -----------> Math.006 (x) --> Math.007 (x) |
| +- Factor ------------------------> Math.006 (x) |
| Math.007 output --------------> Distribute Points on Faces.002 |
| (Density socket) |
| Distribute Points on Faces.002 -----> Instance on Points.002 |
| Object Info.002 (GEO-pebble.002) --> Instance on Points.002 |
| Random Rotation [-pi, +pi] ----> Instance on Points.002 |
| Random Value.003 [0.10 - 0.35] -----> Instance on Points.002 |
| Instance on Points.002 -------------> Join Geometry.003 |
+--------------------------------------------------------------------------+
+- MERGE & OUTPUT ---------------------------------------------------------+
| Group Input.004 |
| +- Geometry (pass-through) --------> Join Geometry.003 |
| Join Geometry.003 |
| (inputs: large instances + medium instances + |
| small instances + original ground geo) |
| +- Geometry -----------------------> Group Output |
+--------------------------------------------------------------------------+
SCALE RANGES (uniform, per lane)
---------------------------------
Large pebbles : 0.25 - 0.60
Medium pebbles : 0.25 - 0.45
Small pebbles : 0.10 - 0.35
ROTATION (all lanes)
---------------------
All three axes randomised independently over [-pi, +pi],
giving each pebble instance a fully random orientation.
DENSITY CONTROL PATTERN (Medium & Small lanes)
-----------------------------------------------
The mask value and the Factor are first multiplied together
(Math.004 / Math.006), then that product is multiplied again
by a second value (Math.005 / Math.007) before being fed into
the Density socket. This two-stage multiply gives a non-linear
response curve, making the density fall off more aggressively
near the mask edges.
The Large lane uses a different (single-stage) approach:
the Density Factor socket receives the mask directly, and the
Factor is only used to scale Density Max via Math.003.
NOTES & SUGGESTIONS
--------------------
* The node group has no Seed input exposed; adding one would allow
re-randomising all three layers simultaneously without touching
individual nodes.
* The Factor input currently appears three times (once per lane).
Merging them into a single shared socket would simplify the
modifier panel.
* Consider labelling the unlabelled Math nodes (Math.003-.007)
and Random Value nodes to aid future maintenance.