Blender MCP
oficialUn servidor MCP (Model Context Protocol) ligero para Blender. Ofrece una interfaz de lenguaje natural con la API de Python de Blender, mejorando el acceso a la documentación y permitiendo a los usuarios explorar y comprender configuraciones complejas.
¿Qué puedes hacer con Blender MCP?
- Análisis de rendimiento de la escena — Pide a tu IA que analice la escena abierta de Blender e identifique objetos con recuentos de polígonos altos en relación con su tamaño en pantalla, como la detección de valores atípicos en el ejemplo del aula.
- Renombrado de bloques de datos — Haz que el asistente corrija errores tipográficos o sugiera nombres descriptivos para todos los bloques de datos del archivo actual, aplicando los cambios solo después de tu aprobación.
- Consultas de escena en lenguaje natural — Haz preguntas sobre relaciones entre objetos, como "¿Qué objetos están usando el material 'pebbles'?" o identifica el objeto con mayor recuento de polígonos en la escena.
- Documentación de nodos de geometría — Solicita una explicación de la configuración principal de nodos de geometría, con documentación de marcos en línea y un bloque de datos de texto que resuma el análisis.
- Depuración de escena — Obtén ayuda para solucionar problemas como mallas con escala no uniforme, normales incorrectas u objetos que no se deforman correctamente con armaduras.
Documentación
Un servidor MCP (Model Context Protocol) ligero para Blender. Ofrece una interfaz de lenguaje natural con la API de Python de Blender, mejorando el acceso a la documentación y permitiendo a los usuarios explorar y comprender configuraciones complejas.
Para detalles técnicos y documentación sobre la arquitectura, consulta el código fuente.
[!warning] Advertencia Advertencia de seguridad
El servidor MCP ejecutará código generado por LLM en Blender sin ninguna protección para evitar que tus datos sean eliminados o enviados a una ubicación remota. Para mantener tus datos seguros, se recomienda usar una máquina virtual o un sistema sin acceso a información sensible.
Instalación
Blender no tiene ninguna funcionalidad integrada para conectarse a LLMs.
Para que Blender se conecte con LLMs, se deben descargar, instalar y ejecutar manualmente tres herramientas externas.
Complemento
Para interactuar con tu sesión de Blender, necesitas instalar un complemento específico para la integración del servidor MCP.
…o descargar e instalar desde disco
Si arrastras y sueltas en Blender deberás hacerlo dos veces. Primero para agregar el repositorio de Blender Lab, y segundo para instalar el complemento en sí. Este método te permite recibir notificaciones de actualización cada vez que haya una nueva versión de este complemento.
Cliente LLM
Los servidores MCP siguen un estándar bien definido y son compatibles con una gran variedad de clientes. Sigue la documentación de LLama.cpp o instala un cliente LLM de tu preferencia.
Servidor MCP
Hay diferentes formas de instalar el servidor MCP según las capacidades de tu cliente LLM.
- Paquete MCP: Para clientes más nuevos que admitan archivos
.mcpb, descarga el último paquete desde la página de versiones. Llama.cpp aún no lo admite. - Servidor MCP: Para instalar desde el código fuente, consulta la documentación de Llama.cpp o las instrucciones de configuración.
Ejecución
Una vez que tengas tu servidor MCP configurado dentro de tu cliente LLM, puedes comenzar a explorar tus escenas de Blender.

Interfaz web de llama.cpp ejecutando el servidor blender-mcp.
Ejemplo 1: Análisis de escena
MCP se puede usar para analizar programáticamente la escena en busca de cuellos de botella de rendimiento. Por ejemplo, el archivo de demostración Classroom:

Archivo de demostración Classroom.
Esta escena es uno de los archivos de referencia de Blender. La razón por la que esos archivos están en la referencia es porque son una buena representación de archivos de producción reales creados por artistas. Y no es sorpresa que pueda contener objetos propensos a optimizarse.
Si bien verificar el recuento de polígonos suele ser suficiente, es aún más interesante graficar el número de polígonos según su tamaño en el render final. Esto se puede obtener con el siguiente prompt.
Analyze the scene and list the outliers: objects with highest polygon count but smaller size from the camera point of view.
Los datos resultantes graficados muestran claramente dos objetos que se destacan del resto: alphabet y coat 1:

Análisis gráfico del recuento de polígonos por área de pantalla para la escena de demostración Classroom.
El objeto alphabet tiene 20k polígonos. Debido a su disposición plana, podría reemplazarse por una textura con pocas desventajas para el resultado final. El objeto coat 1 tiene 37k polígonos debido a su modificador Subsurf. Reducir el nivel de subdivisión podría aliviar la escena, si la memoria fuera el cuello de botella en tu sistema.

El alfabeto está al fondo de la escena y podría reemplazarse fácilmente por una textura. El abrigo también está lo suficientemente lejos como para simplificar su malla.
[!info] Información ¿Qué tan confiables son esos resultados?
El análisis inicial devuelto por el LLM solo consideró los modificadores que influyeron en la vista. El objeto
coat 1tiene un modificador Solidify que duplica su recuento de polígonos, convirtiéndolo en un valor atípico aún mayor. Y aunque esta escena no tenía Simplify habilitado, esta configuración también habría afectado el análisis final.
Ejemplo 2: Varios prompts
Estos son algunos de los otros casos de uso probados. Deberás pegar todo el contenido del “Prompt” para que funcionen. Como punto de partida, debes usar el archivo de demostración correspondiente. El éxito de la operación dependerá del modelo utilizado.
| Caso de uso | Prompt | Archivo de demostración | Resultado |
|---|---|---|---|
| Renombrado de bloques de datos: corregir errores tipográficos | 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 |
| Renombrado de bloques de datos: mejores nombres | 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, … |
| Consultar relaciones de datos usando lenguaje natural | Which objects are using the following material: pebbles | Scattering Pebbles | 7 objetos: GEO-pebble, GEO-pebble.001, GEO-pebble.002, GEO-pebble.003, GEO-pebble.004, GEO-pebble.005, GEO-pebble.006 |
| Depuración de escena | 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 con 4,096 caras. |
| Documentación de 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 marcos principales codificados por color + archivo de texto con explicación. |
Otros prompts aún por explorar:
- Traducir todos los bloques de datos de francés a inglés.
- Mi malla no está siendo deformada por mi armadura, ¿cómo puedo arreglarlo?
- Blender se está quedando sin memoria al renderizar esta escena, ¿cómo puedo optimizarla?
- Esta malla tiene artefactos de sombreado extraños, ¿cómo puedo arreglarlo?
- Encontrar objetos que tengan mallas con normales incorrectas.
- Revisar mi escena en busca de objetos de malla con transformaciones no uniformes.
- El video que exporté no se reproduce en mis navegadores web, ¿qué configuraciones debería cambiar?
- ¿Qué pinceles de esculpido debería usar para crear y detallar ramas de árboles?
- Configurar nodos de composición para guardar mi imagen tanto en SDR como en HDR.
- Verificar esta lista de verificación: las mallas deben ser manifold, todos los objetos deben tener materiales, los nombres deben seguir la convención, sin rutas absolutas, …
Renombrado de bloques de datos: corregir errores tipográficos
GRP-rocks → GRP-pebbles (la escena contiene solo objetos de guijarros, no rocas).
LGT-Lights → LGT-lights (mayúsculas inconsistentes).
Compositing Nodetree → Compositing Node Tree (Nodetree es un error de palabra compuesta).
Renombrado de bloques de datos: mejores nombres
Objetos:
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
Bloques de datos de luz:
Area→LGT-sun-keyArea.001→LGT-sun-fillArea.002→LGT-area-rim
Bloque de datos de cámara:
Camera→CAM-main
Texturas:
Texture→TEX-ground-cloudsTexture.001→TEX-ground-image
Escena y mundo:
World→WLD-environmentScene→SCN-main
Documentación de Geometry Nodes
Nuevos marcos creados:

Marcos de documentación agregados a la configuración de nodos de geometría.
Bloque de datos de texto:
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.