Blender AI MCP
Servidor MCP modular + complemento de Blender para modelado 3D impulsado por IA.
Documentación
blender-ai-mcp
Un servidor MCP con forma de producción para Blender.
blender-ai-mcp permite que Claude, ChatGPT, Codex y otros clientes MCP controlen Blender a través de una API de herramientas estable en lugar de generación ad-hoc de Python. El resultado es una superficie más segura, más pequeña y más fiable para trabajo de modelado real: enrutamiento orientado a objetivos, herramientas públicas seleccionadas, inspección determinista y verificación que no depende de suposiciones.
Por Qué Existe Esto
La mayoría de las configuraciones de "IA + Blender" todavía piden al modelo que escriba scripts bpy en bruto. Eso se rompe exactamente donde el trabajo de producción se pone interesante:
- Las APIs de Blender cambian entre versiones.
- Los operadores sensibles al contexto fallan cuando el objeto activo, el modo o la selección son incorrectos.
- Los scripts en bruto dan una retroalimentación débil cuando algo sale mal.
- La visión puede describir un resultado, pero no se puede confiar en ella como autoridad final.
blender-ai-mcp adopta el enfoque opuesto: tratar el control de Blender como una superficie de producto, no como una proeza de generación de código.
Por Qué Este Servidor MCP en Lugar de Python en Bruto
- Contratos estables sobre síntesis de scripts. El modelo llama a herramientas con parámetros validados en lugar de improvisar código de Blender.
- Orquestación orientada a objetivos. Las sesiones guiadas normales comienzan desde
router_set_goal(...), para que el sistema sepa qué está intentando construir el modelo antes de empezar a llamar a acciones de bajo nivel. - Superficie pública pequeña. El perfil
llm-guidedpredeterminado expone una capa de arranque diminuta y orientada a la búsqueda en lugar de inundar al modelo con todo el inventario del runtime. - Verificación basada en la verdad. Las herramientas de inspección, medición y aserción determinan qué es realmente cierto en Blender.
- Límites de ejecución seguros. El addon de Blender ejecuta operaciones en el hilo principal de Blender mientras el servidor MCP maneja el enrutamiento, la validación, el descubrimiento y las respuestas estructuradas.
El Enfoque de Producto
La idea de negocio formalizada en TASK-113 es simple:
- Las herramientas atómicas son el sustrato de implementación. Se mantienen pequeñas, precisas y mayormente ocultas de la superficie pública normal.
- Las herramientas macro son la capa preferida orientada a LLM para trabajo significativo del tamaño de una tarea.
- Las herramientas de flujo de trabajo son herramientas de proceso de múltiples pasos acotadas con informes explícitos, no endpoints abiertos de "haz lo que sea".
- La orquestación orientada a objetivos mantiene las sesiones ancladas a una intención activa en lugar de hacer que el modelo redescubra el contexto en cada turno.
- La visión asiste en la interpretación, mientras que la medición determinista y las aserciones proporcionan la capa de verdad final.
- Los runtimes de visión conectables ahora cubren MLX local más rutas externas de OpenRouter y Google AI Studio / Gemini, con perfiles de contrato externos específicos por familia de modelos para el comportamiento de prompt/esquema/parser.
Esto es lo que convierte el proyecto de "herramientas de Blender expuestas a través de MCP" en un producto de control de IA utilizable para pipelines de modelado.
Superficie Pública Guiada por LLM
llm-guided es la superficie predeterminada orientada a producción. Es intencionalmente pequeña, orientada a la búsqueda y diseñada alrededor de sesiones conscientes de objetivos.
Flujo guiado normal:
router_set_goal(...)browse_workflows,search_toolsocall_tool- usar herramientas agrupadas/públicas como
check_scene,inspect_sceneoconfigure_scene - verificar con inspección más
scene_measure_*yscene_assert_*
Regla de prompting:
- usar los recursos de la biblioteca de prompts en _docs/_PROMPTS/README.md como las instrucciones operativas guiadas canónicas
- cuando un cliente se desvía, anteponer
guided_session_startcomo estabilizador genérico orientado a la búsqueda - si una herramienta no está ya directamente visible en la superficie/fase actual, usar
search_tools(...)antes decall_tool(...)
Cuando una intención de modelado acotada coincide, la capa de trabajo pública predeterminada debería ser la capa macro:
macro_cutout_recesspara huecos, aberturas y recortes impulsados por cortadoresmacro_relative_layoutpara disposición de piezas con alineación/colocación/hueco de contactomacro_attach_part_to_surfacepara asentar una pieza sobre la superficie/cuerpo de otro objetomacro_align_part_with_contactpara ajustes de reparación mínimos en pares que casi encajanmacro_place_symmetry_pairpara colocación/corrección de pares reflejados alrededor de un plano de espejo explícitomacro_place_supported_pairpara colocación/corrección de pares reflejados contra una superficie de soporte compartidamacro_cleanup_part_intersectionspara limpieza acotada de solapamientos por pares sin resolución de colisiones de forma libremacro_adjust_relative_proportionpara reparación acotada de proporciones entre objetos relacionadosmacro_adjust_segment_chain_arcpara ajuste acotado de arcos en cadenas de segmentos ordenadosmacro_finish_formpara acabado con bisel/subdivisión/solidificar impulsado por ajustes preestablecidosreference_imagespara ingesta de referencias con alcance de objetivo antes de comparación visual acotadareference_guided_creature_buildcomo recurso de prompt nativo para trabajo genérico de criaturas por etapas enllm-guidedrecommended_promptsahora puede dirigir sesiones guiadas orientadas a criaturas hacia esa ruta de prompt usando contexto activo de objetivo/sesiónguided_reference_readinessenrouter_set_goal,router_get_statusy payloads de comparación/iteración de referencias por etapas para que los clientes puedan ver si el trabajo por etapas impulsado por referencias está realmente listoreference_compare_stage_checkpointpara comparación determinista de etapas multi-vista contra referencias adjuntas durante trabajo iterativo manualreference_iterate_stage_checkpointpara un bucle de corrección por etapas consciente de la sesión que recuerda el enfoque previo, puede escalar a inspección/validación cuando la misma corrección se repite, y ahora puede apuntar a un objeto, muchos objetos, una colección o la silueta ensamblada completa- la comparación/iteración de etapas ahora también expone métricas deterministas
silhouette_analysis,action_hintstipados y un marcador de posiciónpart_segmentationsolo de asesoramiento que permanece deshabilitado a menos que se habilite explícitamente un sidecar separado scene_scope_graphpara un artefacto estructural explícito de solo lectura con pistas de rol de ancla/núcleo/accesorioscene_relation_graphpara un artefacto explícito de relación de pares de solo lectura derivado de la capa de verdad actualscene_view_diagnosticspara un artefacto explícito de espacio de vista de solo lectura con extensión proyectada, cobertura de encuadre, centrado y veredictos visible/parcial/ocluido/fuera de encuadre para cámaras nombradas oUSER_PERSPECTIVE- esas herramientas de diagnóstico de grafo espacial/vista ahora forman parte del conjunto de soporte
llm-guidedvisible predeterminado para que el modelo pueda mantener una capa explícita de orientación 3D disponible en lugar de inferir el estado espacial solo a partir de nombres, capturas de pantalla o payloads de bucle parciales
Superficie de arranque guiada actual:
router_set_goalrouter_get_statusbrowse_workflowsreference_imagesscene_scope_graphscene_relation_graphscene_view_diagnosticssearch_toolscall_tool- herramientas de puente de prompt opcionales cuando
MCP_PROMPTS_AS_TOOLS_ENABLED=true:list_promptsget_prompt
Los clientes capaces de prompts deberían preferir los prompts MCP nativos. El puente de prompts es una capa de compatibilidad para clientes solo de herramientas y se puede deshabilitar para perfiles Streamable HTTP que ya consumen componentes de prompt nativos.
Ruta de preparación de utilidades guiadas actual:
- la búsqueda de arranque/planificación ahora puede alcanzar:
scene_get_viewportscene_clean_scene
- estas acciones de utilidad permanecen acotadas y no reabren la superficie heredada completa
- el envoltorio canónico de descubrimiento guiado es
call_tool(name=..., arguments=...) - la forma canónica del argumento de limpieza en
llm-guidedeskeep_lights_and_cameras; los flags divididos antiguos son solo de compatibilidad y no deberían usarse como la forma pública documentada reference_images(action="attach", source_path=...)es una referencia por llamada; las formas tipo lote ahora fallan con guía de recuperación guiada en lugar de ruido de esquema en brutocollection_manage(action=..., collection_name=...)sigue siendo la forma pública canónica; elnameheredado es solo un alias de compatibilidad estrechomodeling_create_primitive(...)sigue limitado aprimitive_type,radius/size,location,rotationynameopcional; los atajos no soportados comoscale,segments,rings,subdivisionsocollection_nameen tiempo primitivo ahora fallan con guía accionable tanto en rutas guiadas directas como proxy- los objetivos de construcción deberían seguir comenzando desde
router_set_goal(...), pero las solicitudes de captura de pantalla / viewport / restablecimiento de escena deberían usar la ruta de utilidades guiadas en su lugar - si el estado de escena obsoleto se descubre solo después de entrar en la superficie de construcción guiada,
scene_clean_scene(...)también está disponible allí como una vía de recuperación acotada; la limpieza antes del objetivo sigue siendo la ruta preferida - la limpieza en fase de construcción todavía está permitida cuando se necesita recuperación
Alias públicos actuales en llm-guided:
| Herramienta interna | Nombre público llm-guided | Cambios de argumentos públicos |
|---|---|---|
scene_context | check_scene | action -> query |
scene_inspect | inspect_scene | object_name -> target_object |
scene_configure | configure_scene | settings -> config |
workflow_catalog | browse_workflows | workflow_name -> name, query -> search_query |
Por qué importa:
- el perfil guiado comienza desde un conjunto de arranque visible compacto en lugar del catálogo completo
- las herramientas agrupadas/públicas siguen siendo fáciles de descubrir
- las herramientas atómicas ocultas permanecen disponibles como infraestructura, no como el modelo mental público predeterminado
- las familias especializadas se mantienen fuera de la capa de entrada guiada normal hasta que la superficie macro sea más amplia
Fundamentos Atómicos y Documentación
El README.md raíz intencionalmente ya no es el catálogo completo de herramientas.
El inventario detallado de herramientas y la documentación de familias atómicas deberían permanecer en docs, no en la portada. Esa es la estructura correcta a largo plazo después de TASK-113.
Usa estos docs según lo que necesites:
- Política de Capas de Herramientas
- Política canónica para
atomic / macro / workflow, herramientas atómicas ocultas, uso orientado a objetivos y límites de visión/aserción.
- Política canónica para
- Documentación del Servidor MCP
- Perfiles de superficie, alias guiados, contratos versionados y guía de runtime/plataforma.
- Ejemplos de Configuración de Cliente MCP
- Ejemplos de configuración de cliente MCP local listos para pegar para superficies guiadas/manuales más variantes de visión MLX, OpenRouter y Gemini.
- Documentación de la Capa de Visión
- Runtimes/backends, paquetes de captura, imágenes de referencia, notas de integración de visión macro/flujo de trabajo y paquetes de evaluación de viewport reales rastreados en el repositorio tanto para vista de usuario directa como para capturas de perspectiva de cámara fija.
- Guía LLM v2
- Documento de estrategia para una capa de inteligencia espacial tipada, estado de relaciones compacto y traspasos de siguiente paso acotados para operación guiada.
- Informe Breve de Investigación de Inteligencia Espacial
- Traspaso de investigación externa para razonamiento espacial LLM/VLM, razonamiento multi-vista y planificación consciente de geometría.
- Propuesta de Mejora de Inteligencia Espacial
- Propuesta de mejora impulsada por investigación para grafos de escena, notación de relaciones simbólicas y opciones de bibliotecas de geometría de soporte.
- Resumen de Herramientas Disponibles
- Inventario completo y visión general de herramientas agrupadas/públicas.
- Índice de Arquitectura de Herramientas
- Mapa orientado a mantenedores de las familias de herramientas debajo de la superficie MCP.
Si quieres ver las familias atómicas sobre las que está construido el servidor, empieza aquí:
- Arquitectura de Herramientas de Escena
- Arquitectura de Herramientas de Modelado
- Arquitectura de Herramientas de Malla
- Arquitectura de Herramientas Mega
Interpretación recomendada:
- mantener
/_docs/TOOLS/como el mapa de arquitectura atómica/agrupada orientado a mantenedores - mantener
README.mdorientado al producto y compacto - mantener
/_docs/AVAILABLE_TOOLS_SUMMARY.mdcomo el inventario del runtime
Notas del Proveedor
Versión corta actual:
- Valor predeterminado local:
mlx_localcon una ruta de modelo de clase Qwen VL 4B; la línea base validada actual del repositorio esmlx-community/Qwen3-VL-4B-Instruct-4bit - Candidato de comparación iterativa externa: OpenRouter con
x-ai/grok-4.20-multi-agent - Ruta de comparación externa de la familia Google: Los modelos de la familia Google alojados en OpenRouter, junto con Google AI Studio / Gemini, ahora comparten el mismo contrato de comparación por etapas restringido a través del enrutamiento resuelto de
vision_contract_profile
Nota sobre el runtime de visión externa:
VISION_EXTERNAL_PROVIDERselecciona la rama de transporte/proveedorVISION_EXTERNAL_CONTRACT_PROFILEopcionalmente anula el contrato de prompt/esquema/parser para flujos de comparación externa- cuando la anulación no está definida, el runtime empareja automáticamente IDs de modelos de la familia Google como
gemma/gemini/learnlm, y luego recurre a los valores predeterminados del proveedor
Tabla detallada por proveedor:
Arquitectura
El sistema está dividido a propósito:
- Servidor MCP (
server/): Superficie FastMCP, definiciones de herramientas públicas, transformaciones, descubrimiento y contratos de respuesta. - Enrutador (
server/router/): interpretación de objetivos, política de seguridad/corrección, coincidencia de flujos de trabajo, contexto de sesión y comportamiento de ejecución guiada. - Complemento de Blender (
blender_addon/): ejecución real debpy, manejadores RPC y programación de operaciones seguras para el hilo principal de Blender.
La comunicación ocurre mediante JSON-RPC sobre sockets TCP.
Más detalles:
- ARCHITECTURE.md
- Documentación del enrutador
- Límites de responsabilidad del runtime
- Documentación del complemento
Línea base del contrato estructurado
El servidor está moviendo superficies críticas hacia cargas útiles legibles por máquina en lugar de cadenas JSON con mucho texto.
La línea base actual del contrato estructurado incluye:
macro_cutout_recessmacro_finish_formmacro_attach_part_to_surfacemacro_align_part_with_contactmacro_place_supported_pairmacro_cleanup_part_intersectionsmacro_relative_layoutscene_createscene_configuremesh_selectmesh_select_targetedmesh_inspectscene_snapshot_statescene_compare_snapshotscene_measure_distancescene_measure_dimensionsscene_measure_gapscene_measure_alignmentscene_measure_overlapscene_assert_contactscene_assert_dimensionsscene_assert_containmentscene_assert_symmetryscene_assert_proportionrouter_set_goalrouter_get_statusworkflow_catalog
Eso es importante para la automatización, la auditoría y la futura composición de macros/flujos de trabajo.
Semántica de la verdad de contacto
Para verificaciones sensibles al contacto en formas curvas o redondeadas, la capa de verdad ahora distingue:
- semántica de contacto/separación de superficie de malla cuando hay una ruta acotada con conocimiento de malla disponible
- semántica de respaldo de bbox cuando una ruta con conocimiento de malla no está disponible
Eso significa que un par puede mostrar contacto de bbox mientras la relación medida principal
permanece como separated si las superficies de malla reales aún tienen una separación visible. El
seguimiento guiado de verdad híbrida ahora lleva esa distinción en los resúmenes orientados al operador
en lugar de colapsarla en una afirmación genérica de "contacto aprobado/fallido".
Cuando la ruta con conocimiento de malla encuentra una superposición real, la relación medida principal también
permanece como overlapping, por lo que el rechazo por superposición en scene_assert_contact(...) aún
funciona como una condición de verdad separada en lugar de colapsar en contacto simple.
Flujo de aclaración estructurado
La superficie guiada admite el manejo de entradas faltantes como parte del contrato del producto, no como una ocurrencia tardía.
- La aclaración primero con el modelo es el valor predeterminado para
router_set_goal(...)enllm-guided: los parámetros de flujo de trabajo faltantes devuelven una carga útil tipada deneeds_inputal modelo externo primero. - Cargas útiles de respaldo tipadas mantienen el mismo flujo utilizable en clientes solo de herramientas o de compatibilidad.
- La aclaración humana/nativa está reservada para políticas posteriores/de respaldo en lugar del primer paso predeterminado de la ejecución del flujo de trabajo.
router_set_goal(...)puede solicitar opciones restringidas, booleanos, enumeraciones o confirmación del flujo de trabajo.partial answerssobreviven entre turnos de seguimiento.- Los conflictos de importación de
workflow_catalogreutilizan el mismo modelo de aclaración.
Contrato de transferencia guiada
La superficie guiada ahora trata el respaldo del flujo de trabajo como un contrato tipado explícito en lugar de un efecto secundario de fase oculto en texto.
router_set_goal(...)devuelveguided_handoffen rutas de continuación acotadas comocontinuation_mode="guided_manual_build"ycontinuation_mode="guided_utility".guided_handoffnombra eltarget_phase,direct_tools,supporting_toolsydiscovery_toolspara el siguiente paso enllm-guided.workflow_import_recommendedpermanece comoFalseen estas rutas de respaldo a menos que el usuario solicite explícitamente el comportamiento de importación/creación del flujo de trabajo.router_get_status(...)preserva elguided_handoffactivo en los diagnósticos de sesión para que los clientes puedan recuperar la ruta de continuación prevista.
Estado del flujo guiado controlado por el servidor
La superficie guiada ahora lleva un contrato explícito legible por máquina de guided_flow_state
además de guided_handoff.
router_set_goal(...),router_get_status(...),reference_compare_stage_checkpoint(...)yreference_iterate_stage_checkpoint(...)pueden exponerguided_flow_statepara la sesión activa dellm-guidedguided_flow_stateinforma:flow_iddomain_profilecurrent_stepcompleted_stepsactive_target_scopespatial_scope_fingerprintspatial_state_versionspatial_state_stalelast_spatial_check_versionspatial_refresh_requiredrequired_checksnext_actionsblocked_familiesallowed_familiesallowed_rolescompleted_rolesmissing_rolesrequired_role_groupsrequired_promptspreferred_promptsstep_status
- las superposiciones de dominio actuales son:
genericcreaturebuilding
- las sesiones tempranas de construcción guiada ahora comienzan desde una fase de contexto espacial escalonada por pasos en lugar de exponer toda la superficie de construcción de inmediato
scene_scope_graph(...)vincula el alcance objetivo guiado activo cuando no existe ningún alcance activo todavía; las comprobaciones de actualización espacial deben seguir usando ese alcance objetivo ya vinculado en lugar de re-vincular a un conjunto de objetos diferente- las comprobaciones de vista no relacionadas, como
scene_view_diagnostics(target_object="Camera", ...), no satisfacen por sí solas una comprobación espacial de criatura/edificio - si hay imágenes de referencia adjuntas para el objetivo guiado activo, trátalas como la entrada de fundamentación principal antes de decidir las primeras masas de cuerpo/cabeza/cola y el silueta aproximada
- usa nombres de objetos semánticos completos como
Body,Head,Tail,ForeLeg_LyHindLeg_Ren lugar de abreviaturas opacas comoForeL/HindR, porque las heurísticas guiadas de costura/rol son más confiables con nombres legibles - en
llm-guided, el servidor ahora puede advertir sobre nombres débiles sensibles al rol y bloquear nombres de marcador claramente opacos comoSphere/Objectcuando se usan como nombres de partes semánticas - no llames a
scene_scope_graph(...),scene_relation_graph(...)oscene_view_diagnostics(...)sin un alcance explícito y asumas que eso significa "inspeccionar toda la escena" - durante una compuerta espacial guiada activa o un re-armado de actualización espacial, los tres ayudantes espaciales deben tratarse como herramientas de alcance explícito, no como sondas de toda la escena
- esos ayudantes espaciales de solo lectura fijados siguen siendo invocables
mientras estén visibles en
llm-guided; el bloqueo de familia guiada no debe rechazarscene_scope_graph(...),scene_relation_graph(...)oscene_view_diagnostics(...)simplemente porque elallowed_familiesdel paso de construcción actual omitespatial_context - fuera de esa compuerta guiada, los constructores de gráficos de
alcance/relación aún requieren un
target_object,target_objectsocollection_nameexplícito; una llamada desnuda ahora falla en lugar de devolver silenciosamente un alcancescenevacío - los alcances de marcador predeterminados como un
Cubeestándar o la raíz genéricaCollectionya no se tratan como vinculaciones significativas de objetivo/conjunto de trabajo guiado por sí solos - pero para la decisión de arranque anterior de "¿esta escena ya no está
vacía?", el
Cubeestándar de Blender más los ayudantes estándar de cámara/luz aún ingresan a la ruta de arranque del conjunto de trabajo primario de escena vacía - esta decisión de no vacío es intencionalmente ligera en nombres después del
inicio: los bloqueos aproximados reales de múltiples objetos con nombres de
primitivas predeterminados como
CubeoSphereaún cuentan como geometría existente, mientras que las escenas solo de ayudantes aún pueden ingresar abootstrap_primary_workset - los alcances guiados explícitos ahora se vinculan desde la intención del
llamador en lugar de heurísticas de nombres, por lo que los objetos reales
nombrados como
Cube,SphereoSunfloweraún pueden convertirse en el conjunto de trabajo guiado activo cuando el operador los apunta - después de cambios de escena de material como
scene_clean_scene(...),scene_duplicate_object(...),scene_rename_object(...),modeling_create_primitive(...),modeling_transform_object(...),modeling_join_objects(...),modeling_separate_object(...)o macros acotadas de adjunto/alineación, el runtime guiado puede marcar la capa espacial como obsoleta y re-armar las comprobaciones requeridas - esa misma actualización de estado sucio ahora reaplica la visibilidad de
FastMCP inmediatamente, por lo que los clientes ven las herramientas de
soporte espacial requeridas tan pronto como
spatial_refresh_requiredse persiste - en Streamable HTTP, los finalizadores de estado sucio y visibilidad guiados deben completarse antes de que la respuesta de la herramienta activa regrese; las herramientas síncronas enrutadas que mutan el estado de la escena difieren esos finalizadores al envoltorio asíncrono de MCP en lugar de programar escrituras de estado de sesión separadas
- los envoltorios asíncronos y los ayudantes de modelado asíncronos nativos mantienen la ejecución de RPC/enrutador síncrono bloqueante en un hilo de trabajo; solo los finalizadores guiados se ejecutan de vuelta en el bucle de eventos antes de que la respuesta de Streamable HTTP se complete
- los ayudantes de macros sucias asíncronas como
macro_cutout_recess(...)ymacro_finish_form(...)usan la ruta de ruta asíncrona esperada para que la visibilidad se reaplique antes de que la respuesta de Streamable HTTP se complete - los ayudantes espaciales asíncronos como
scene_scope_graph(...),scene_relation_graph(...)yscene_view_diagnostics(...)enrutan sus lecturas de gráficos/diagnósticos respaldados por Blender fuera del bucle de eventos antes de registrar la finalización de la comprobación espacial guiada - los finalizadores de identidad guiada asíncronos como la validación exitosa
de
scene_rename_object(...)también mantienen las búsquedas de escena respaldadas por Blender fuera del bucle de eventos antes de actualizar el registro de partes guiado - las herramientas de modelado asíncronas nativas que consumen un informe de
ejecución del enrutador aún deben mostrar
advertencias de
guided_naminga través del contexto MCP activo; de lo contrario, los nombres semánticos débiles pueden perder sus pistas de corrección orientadas al modelo en Streamable HTTP - los finalizadores de modelado y limpieza asíncronos nativos derivan
mutaciones de escena exitosas de
report.stepsestructurado, no del texto de ruta heredado renderizado; las rutas corregidas de múltiples pasos prefijan líneas heredadas y no son una fuente confiable para decisiones de estado sucio guiado o registro de roles - el registro de roles guiado asíncrono reaplica la visibilidad de FastMCP
después de que el
guided_flow_stateavanzado final se persiste, por lo quelist_tools()refleja el nuevo paso guiado antes de que la respuesta de Streamable HTTP se complete - las variantes de herramientas públicas asíncronas deben preservar los docstrings públicos originales, especialmente para ayudantes espaciales y de modelado guiados visibles cuyas descripciones enseñan argumentos de alcance requeridos, orden de flujo de trabajo y restricciones de argumentos
- cuando el enrutador corrige una llamada exitosa de
modeling_transform_object(...)a otro nombre de objeto válido, el estado sucio espacial guiado y el seguimiento de roles guiado usan el nombre de objeto transformado devuelto por el paso de modelado final, no el nombre original proporcionado por el llamador - las herramientas de edición de malla guiadas como
mesh_extrude_region(...),mesh_loop_cut(...)ymesh_bevel(...)ahora se asignan a la familiasecondary_parts, por lo que se bloquean durante las compuertas de contexto espacial y re-armar las comprobaciones espaciales después de ediciones de geometría exitosas - cuando una de esas comprobaciones espaciales requeridas se completa y avanza el flujo guiado, el servidor ahora reaplica la visibilidad de FastMCP inmediatamente en lugar de esperar una actualización de estado/búsqueda posterior
- los pares de relación de soporte/simetría ahora preservan las anotaciones de
soporte y simetría incluso cuando comparten la misma clave
(from_object, to_object)que un par de objetivo primario genérico, por lo que los planificadores guiados posteriores aún ven semánticas de soporte/simetría en lugar de solo un borde genérico - los gráficos de relación que incluyen costuras de criatura requeridas aún
agregan pares de respaldo
primary_to_otherpara objetos no de costura en el alcance solicitado, por lo que los objetos no clasificados no desaparecen de los diagnósticos guiados mixtos - los pares de soporte/simetría saludables ya no cuentan como fallidos solo
porque sus centros difieren o no son pares de contacto literales; solo los
veredictos de soporte/simetría
unsupported/asymmetriccuentan como fallas allí - cuando
guided_flow_state.spatial_refresh_required == true, tratanext_actions=["refresh_spatial_context"]como estado de servidor autoritativo, no como prosa de asesoramiento; actualiza conscene_scope_graph(...)contra el alcance objetivo ya vinculado primero, luego vuelve a ejecutar las comprobaciones espaciales requeridas restantes en ese mismo alcance scene_view_diagnostics(...)solo cuenta para la compuerta espacial guiada cuando devuelve evidencia real de espacio de vista disponible; una sonda sin cabeza/no disponible permanece de solo lectura y no satisface la comprobación requerida por sí sola- si la comparación/iteración de etapas encuentra problemas importantes
mientras la porción de rol/conjunto de trabajo guiado actual aún está
incompleta, el gobernador ahora puede mantener la sesión en continuación de
construcción acotada en lugar de escalar demasiado temprano a
inspect_validate - cuando esa retención de etapa incompleta devuelve
loop_disposition="continue_build", elguided_flow_statepersistido permanece en el mismo paso actual y no marca la porción de rol incompleta como completada; sigue siguiendomissing_rolesantes de confiar en la visibilidad de etapas posteriores - esta retención de etapa incompleta también se aplica cuando la iteración de
etapas no tiene
correction_focusoaction_hints; un resultado de comparación sin acción no debe avanzar una construcción guiada con roles faltantes requeridos afinish_or_stop - después de que el flujo alcanza un paso posterior como
place_secondary_parts, el servidor aún puede mantener las masas primarias faltantes disponibles cuando son parte del mismo conjunto de trabajo acotado, en lugar de forzar una ejecución de ardilla/edificio a abandonar una masa central incompleta inmediatamente - para costuras de bloqueo de criatura,
intersectingaún puede ser aceptable para la colocación de oreja/cabeza o hocico/cabeza incrustadas, perofloating_gapen cabeza/cuerpo, cola/cuerpo o extremidad/cuerpo sigue siendo accionable - si una familia de herramientas necesaria está oculta/bloqueada por flujo,
inspecciona
router_get_status().guided_flow_state, completa losrequired_checkslistados y siguenext_actionsen lugar de adivinar nombres de herramientas ocultas encall_tool(...) - si un objetivo guiado explícito permaneció en una ruta manual/sin coincidencia, un flujo de trabajo sugerido por patrón fuerte aún puede expandirse; lo que permanece suprimido en ese estado es la ruta de reapertura heurística de menor confianza
- las búsquedas de nombres de herramientas exactas en la superficie guiada ahora están formadas para devolver un conjunto de resultados más ajustado y más pequeño en lugar de inundar el modelo con una carga útil expandida completa para búsquedas simples
- para pasos de construcción sensibles al rol, trata
allowed_rolesymissing_rolescomo parte del contrato de ejecución, no como prosa de asesoramiento - las operaciones de mantenimiento/conjunto de trabajo como
collection_manage(...)deben permanecer disponibles para objetos ya creados incluso cuando su rol semántico se registró en un paso anterior - el refinamiento acotado de un objeto primario ya registrado puede seguir siendo posible después de que la sesión avance al siguiente paso; los pasos posteriores no están destinados a congelar todas las masas anteriores por completo
- usa
guided_register_part(object_name=..., role=...)como la forma canónica de decirle al servidor qué parte semántica representa un objeto; las sugerencias opcionales deguided_role=...en las herramientas de construcción son solo de conveniencia - los valores opcionales de
role_group=...deben coincidir con el mapa de roles de dominio del servidor; los llamadores no pueden reclasificarbody_core,head_masso llamadas mutantes similares sensibles al rol comoutilityu otra familia para eludir la compuerta de fase guiada actual guided_register_part(...)ahora valida que el objeto de Blender nombrado realmente exista antes de que pueda contar para la finalización de roles guiados; los errores tipográficos no crean roles completados por sí solos- si la validación de objetos guiados no puede leer la escena de Blender en
absoluto,
guided_register_part(...)ahora falla claramente en lugar de mutar el estado de sesión guiado desde un nombre de objeto no verificado - los nombres de objetivo explícitos pasados a
scene_scope_graph(...)/ rutas de construcción de alcance ahora siguen la misma regla de validación de verdad de Blender antes de que el alcance guiado pueda vincularse - esas sugerencias opcionales de
guided_role=...solo se auto-registran cuando ya existe un flujo guiado activo; fuera de un flujo guiado activo no crean estado de rol persistente por sí solos - una llamada de creación fallida ahora permanece no mutante para el estado de
rol guiado también: si
modeling_create_primitive(...)devuelve una cadena de falla, el rol solicitado no se auto-registra solo porque se proporcionó unnamesemántico - en
modeling_create_primitive(...),guided_role=...ahora también requiere unnamesemántico explícito; la creación guiada no permite Blender auto-generado nombres que se convierten en registros de partes semánticas - cuando el enrutador antepone pasos correctivos como
scene_set_mode(...), las llamadas exitosas de creación/transformación guiadas aún registran el rol resultante contra el paso de modelado final en lugar de descartar el registro de conveniencia solo porque la llamada se volvió de varios pasos - el registro de conveniencia de rol guiado ahora también maneja nombres de objeto válidos
que contienen apóstrofes, como
King's Crown, en lugar de truncar el nombre de objeto almacenado - el análisis de éxito en tiempo de ejecución guiado también trata los apóstrofes dentro de nombres de objeto entre comillas como parte del nombre del objeto para los resultados de creación/transformación/renombrado/unión, de modo que el marcado de estado obsoleto y la sincronización del registro guiado aún se ejecutan después de mutaciones exitosas
- los nombres de pares canónicos como
ForeLeg_L,ForeLeg_RyForeLegPairahora cuentan como nombres semánticos fuertes paraforeleg_pair/hindleg_pairen lugar de advertir o bloquear bajo la política de nombres más estricta - en
modeling_create_primitive(...), el auto-registro de rol guiado ahora se vincula al nombre de objeto realmente creado devuelto por Blender, de modo que el estado del rol permanece alineado incluso cuando Blender auto-numera un nombre predeterminado comoCube.001o usa un nombre de objeto predeterminado diferente comoSuzanne - en
modeling_transform_object(...), el auto-registro de rol guiado ahora se vincula al nombre de objeto transformado real devuelto por el paso enrutado final, de modo que la identidad de objeto corregida por el enrutador aún rearma las comprobaciones espaciales y actualiza el estado del rol para el objeto que realmente cambió - las llamadas exitosas de
scene_rename_object(...)ahora mantienen el registro de partes guiado alineado con el objeto de Blender renombrado, de modo que las transformaciones sensibles al rol posteriores aún recuperan el rol registrado sin re-registro manual - las llamadas exitosas de
scene_rename_object(...)también rearman las comprobaciones espaciales guiadas, porque la huella de alcance objetivo vinculada se basa en el nombre - las llamadas exitosas de
scene_duplicate_object(...)también rearman las comprobaciones espaciales guiadas, porque la duplicación cambia los hechos visibles de relación entre conjunto de trabajo y alcance - los resultados de mutación de cadena simple fallidos como
Object 'Missing' not foundahora permanecen no mutantes para el estado de sesión guiado; no rearman comprobaciones espaciales ni reescriben el registro de rol guiado solo porque el envoltorio devolvió una cadena scene_clean_scene(...)ahora limpia el registro de partes guiado y devuelve el flujo guiado abootstrap_primary_workseten lugar de arrastrar partes completadas hacia adelante en una escena vacía- iniciar un objetivo guiado diferente en la misma sesión ahora restablece el registro de partes guiado para ese nuevo flujo en lugar de arrastrar roles completados desde el objeto anterior
- los cambios destructivos de identidad/topología como
modeling_join_objects(...)omodeling_separate_object(...)ahora eliminan los registros de partes guiados obsoletos; vuelva a registrar explícitamente el/los objeto(s) resultante(s) si aún deben contar para la finalización del rol guiado - esos mismos cambios destructivos de topología también rearman las comprobaciones espaciales guiadas, porque los hechos de alcance/vista capturados previamente ya no son confiables después de que los objetos se fusionaron o dividieron
- para artefactos de captura/visión de macros,
macro_attach_part_to_surface(...)ahora actualiza su paquete de captura posterior a la acción después del empujón adicional de superficie de malla, de modo que las imágenes adjuntas y el resumen de verdad describen la pose final asentada en lugar de la pose intermedia previa al empujón - los informes de macros enrutados pueden ser
partialy aún llevar unerror; los adaptadores MCP preservan ese informe estructurado, incluyendoactions_taken, objetos modificados, recomendaciones de verificación, datos de captura/verdad y orientación de seguimiento, en lugar de forzarlo a un sobre vacío de error - si el sidecar de segmentación opcional está habilitado en la configuración de tiempo de ejecución pero aún no
se ha ejecutado en la ruta de comparación actual, las respuestas de comparación/iteración por etapas ahora
informan
part_segmentation.status="unavailable"en lugar de permanecer silenciosamente endisabled - si el servidor advierte o bloquea el nombre guiado, renombre o cree el objeto usando uno de los nombres semánticos sugeridos en lugar de reintentar la misma abreviatura débil
- el nombre guiado y la inferencia de rol espacial guiado ahora usan coincidencias de estilo de límite de token
en lugar de coincidencias de subcadena crudas, de modo que nombres como
HeartoTruthBodyAnchorHeadno se conviertan en roles semánticos accidentales de oreja/cuerpo/cabeza - los
required prompt bundleypreferred prompt bundlenombrados enguided_flow_stateson nombres de activos de prompt, no un reemplazo para el flujo impulsado por el servidor; los prompts apoyan el flujo, no se convierten en el flujo
Preparación de Referencias Guiadas
El trabajo por etapas guiado por referencias ahora tiene un contrato de preparación explícito en lugar de suposiciones de orden ocultas.
router_set_goal(...)yrouter_get_status(...)exponenguided_reference_readiness.- el payload reporta
attached_reference_count,pending_reference_count,compare_ready,iterate_ready, además deblocking_reasonynext_actionlegibles por máquina reference_images(action="attach", source_path=...)puede permanecer pendiente hasta que la sesión de objetivo guiado esté realmente lista, y luego adoptarse automáticamente- si el mismo objetivo ya tiene referencias activas y se preparan nuevas durante
needs_input, las referencias preparadas permanecen separadas de las referencias de objetivo ya activas hasta que la preparación regrese - si una sesión lista aún tiene referencias pendientes explícitas para otro objetivo,
reference_images(action="list"| "remove"| "clear", ...)ahora trata ese conjunto visible fusionado de manera consistente en lugar de dejar registros pendientes rotos reference_compare_stage_checkpoint(...)yreference_iterate_stage_checkpoint(...)ahora fallan rápidamente cuando la sesión no está lista, y devuelven el mismo payloadguided_reference_readiness- si
reference_iterate_stage_checkpoint(...)devuelveloop_disposition="inspect_validate", detén el modelado de forma libre y cambia a inspect/measure/assert inmediatamente - si devuelve
loop_disposition="continue_build"mientrasguided_flow_state.missing_rolesaún no está vacío, continúa con el segmento de rol actual; el servidor mantiene intencionalmente el paso guiado en su lugar en lugar de avanzar a la siguiente etapa, incluso cuando el resultado de la comparación no produjo sugerencias de corrección accionables router_set_goal(..., gate_proposal={...})puede aceptar una propuesta de compuerta opcional derivada del modelo o de referencias para el objetivo guiado activo. El servidor la normaliza enactive_gate_plan, inicia cada compuerta comopendingy devuelvegate_intake_result.policy_warningspara nombres de herramientas ocultas descartadas, tipos de compuerta no admitidos, instrucciones crudas de Blender/Python, evidencia de referencia/percepción requerida no disponible en la superficie de ingreso en el momento del objetivo, o afirmaciones de finalización proporcionadas por el cliente, comopassed.router_get_status(...),router_set_goal(...)y los payloads de comparación/iteración de referencias preparadas pueden exponeractive_gate_plan; las fuentes de puntos de control LLM,reference_understanding, silueta, segmentación, clasificación y VLM pueden proponer o respaldar compuertas, pero la evidencia de escena/espacial/malla y de afirmación sigue siendo la autoridad de verdad para el estado de aprobado/fallido.- los payloads de comparación/iteración de referencias preparadas también proyectan el plan de compuertas activo en los niveles superiores
gate_statuses,completion_blockers,next_gate_actionsyrecommended_bounded_tools, para que los clientes no necesiten inferir la ruta de reparación inmediata a partir de la forma anidada del plan. scene_relation_graph(...)actualiza el primer segmento de compuerta determinista pararequired_part,attachment_seam,support_contactysymmetry_paircon referencias de evidencia autorizadas, razones de estado, bloqueadores de finalización y sugerencias limitadas de herramientas de reparación; las mutaciones posteriores de la escena guiada marcan los estados respaldados por verificadores afectados comostalea través de la ruta de ensuciamiento espacial existente.- los bloqueadores de compuertas activos reducen la visibilidad/búsqueda guiada hacia las herramientas de verificación y reparación existentes; una compuerta de costura fallida debería llevar a herramientas de reparación de relation graph/measure/assert/macro, no a un catálogo amplio o a un reinicio del objetivo.
- los
completion_blockersno resueltos en las respuestas de iteración preparadas ahora también empujanloop_disposition="inspect_validate"incluso cuando el bucle de comparación no repitió el mismo enfoque de corrección solo visual. - si la comparación preparada se degrada pero aún existen hallazgos de verdad deterministas sólidos, usa el mismo traspaso de inspect/measure/assert en lugar de improvisar otra corrección grande de forma libre
- los traspasos de iteración en etapa de error que se mueven a
inspect_validateofinish_or_stoptambién reaplican la visibilidad guiada antes de regresar - para comparación/iteración preparada,
goal_overrideya no es un sustituto de sesión; usa una sesión de objetivo guiado activa en su lugar - para capturas preparadas de colección o de múltiples objetos, el enfoque de captura ahora recae en el objetivo principal del alcance de destino ensamblado cuando no se proporciona un
target_objectexplícito - las métricas de silueta deterministas prefieren la captura de objetivo/enfoque para el
target_viewsolicitado, no la captura amplia decontext_wide reference_compare_current_view(..., persist_view=True, view_name=..., orbit_horizontal=..., zoom_factor=...)mantiene la vista de usuario capturada y no reproduce esos mismos ajustes de vista una segunda vez durante los diagnósticos de vista compacta
Diagnósticos de Sesión
Los payloads guiados/de tiempo de ejecución ahora exponen metadatos explícitos de sesión MCP:
router_set_goal(...)incluyesession_idytransportrouter_get_status(...)incluyesession_idytransportreference_compare_stage_checkpoint(...)incluyesession_idytransportreference_iterate_stage_checkpoint(...)incluyesession_idytransport
Guía actual del tiempo de ejecución:
- el HTTP stateful
streamablees el transporte recomendado para ejecuciones guiadas más largas y para depurar flujos de referencia / punto de control conscientes de la sesión - el reciente endurecimiento de la sesión guiada eliminó la ruta conocida de contabilidad del enrutador que podía sobrescribir el estado de la sesión de objetivo/referencia activa durante la ejecución de herramientas enrutadas
- si investigas un incidente futuro de pérdida de estado, compara primero
session_idytransportpara distinguir:- reconexiones de transporte/sesión
- reinicios de objetivo a nivel de aplicación
- bloqueadores normales de preparación guiada, como objetivo o referencias faltantes
Línea Base de Asistentes de Muestreo del Lado del Servidor
El servidor MCP ahora tiene una capa de asistente analítico acotada dentro de una solicitud activa.
Casos de uso actuales:
assistant_summaryopcional en rutas con mucha inspección, comoscene_snapshot_state,scene_compare_snapshot,scene_get_hierarchy,scene_get_bounding_boxyscene_get_origin_inforepair_suggestionacotado enrouter_set_goal,router_get_statusyworkflow_catalog
Estados terminales explícitos del asistente:
successunavailablemasked_errorrejected_by_policy
La regla es estricta: los asistentes pueden ayudar a resumir o sugerir, pero no anulan la verdad de la escena ni la política del enrutador.
Línea Base de Superficie Versionada
La evolución de la superficie pública está versionada explícitamente:
| Perfil de superficie | Línea de contrato predeterminada |
|---|---|
legacy-manual | legacy-v1 |
legacy-flat | legacy-v1 |
llm-guided | llm-guided-v2 |
Nota de compatibilidad:
llm-guided-v1sigue siendo seleccionable como línea de reversiónworkflow_catalog,scene_contextyscene_inspectparticipan en la historia de evolución de superficie guiada
Decisión del Modo Código
Líneas base de benchmark actuales:
legacy-flatllm-guidedcode-mode-pilot
Decisión actual:
- Decisión de Go: mantener
code-mode-pilotcomo una superficie experimental de solo lectura - No hacer del Modo Código la ruta predeterminada para trabajos de Blender con muchas escrituras o destructivos para la geometría
Matriz de Soporte
- Blender: probado en Blender 5.0 en la cobertura E2E; el mínimo del addon sigue siendo Blender 4.0+ sobre una base de mejor esfuerzo.
- Python: 3.11+
- Runtime de tareas FastMCP: fastmcp 3.2.4 + pydocket 0.19.x
- Extra de sandbox del Modo Código: pydantic-monty 0.0.11
- SO: macOS / Windows / Linux
- Memoria: las características semánticas del enrutador dependen de un modelo LaBSE local y de la infraestructura vectorial relacionada
Inicio Rápido
1. Instala el addon de Blender
- Descarga
blender_ai_mcp.zipdesde la página de Releases o constrúyelo localmente conpython scripts/build_addon.py. - Abre Blender -> Editar -> Preferencias -> Complementos.
- Haz clic en Instalar... y selecciona el archivo zip.
- Habilita el addon. Inicia el servidor RPC local de Blender en el puerto
8765.
2. Ejecuta el servidor MCP en el perfil guiado
Valores predeterminados recomendados:
ROUTER_ENABLED=trueMCP_SURFACE_PROFILE=llm-guided- mapea
/tmpsi quieres salidas de imagen/archivo visibles para el host
Ejemplo de comando Docker:
docker run -i --rm \
-v /tmp:/tmp \
-e BLENDER_AI_TMP_INTERNAL_DIR=/tmp \
-e BLENDER_AI_TMP_EXTERNAL_DIR=/tmp \
-e ROUTER_ENABLED=true \
-e MCP_SURFACE_PROFILE=llm-guided \
-e BLENDER_RPC_HOST=host.docker.internal \
ghcr.io/patrykiti/blender-ai-mcp:latest
docker run --rm \
-p 8000:8000 \
-v /tmp:/tmp \
-e BLENDER_AI_TMP_INTERNAL_DIR=/tmp \
-e BLENDER_AI_TMP_EXTERNAL_DIR=/tmp \
-e ROUTER_ENABLED=true \
-e MCP_SURFACE_PROFILE=llm-guided \
-e MCP_TRANSPORT_MODE=streamable \
-e MCP_HTTP_HOST=0.0.0.0 \
-e MCP_HTTP_PORT=8000 \
-e MCP_STREAMABLE_HTTP_PATH=/mcp \
-e MCP_PROMPTS_AS_TOOLS_ENABLED=false \
-e BLENDER_RPC_HOST=host.docker.internal \
ghcr.io/patrykiti/blender-ai-mcp:latest
Ejemplo de configuración genérica de cliente MCP:
{
"mcpServers": {
"blender-ai-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v", "/tmp:/tmp",
"-e", "BLENDER_AI_TMP_INTERNAL_DIR=/tmp",
"-e", "BLENDER_AI_TMP_EXTERNAL_DIR=/tmp",
"-e", "ROUTER_ENABLED=true",
"-e", "MCP_SURFACE_PROFILE=llm-guided",
"-e", "BLENDER_RPC_HOST=host.docker.internal",
"ghcr.io/patrykiti/blender-ai-mcp:latest"
]
}
}
}
Notas de red:
- macOS / Windows: usa
host.docker.internal - Linux: prefiere
--network hostconBLENDER_RPC_HOST=127.0.0.1 MCP_TRANSPORT_MODE=stdiomantiene el modo MCP actual de subproceso/stdioMCP_TRANSPORT_MODE=streamableinicia un servidor MCP HTTP Streamable con estadoMCP_PROMPTS_AS_TOOLS_ENABLED=falsedesactiva el puente de prompts compatible con herramientas para clientes capaces de prompts; los prompts nativos de MCP siguen disponibles
Para ejemplos más amplios de perfil/configuración, usa:
- Documentación del servidor MCP
- Ejemplos de configuración de cliente MCP
.env.examplepara el conjunto completo de variables de runtime/configuración rastreadas
Pruebas
Pruebas unitarias:
PYTHONPATH=. poetry run pytest tests/unit/ -v
Recuento de colección de unidades:
poetry run pytest tests/unit --collect-only
Pruebas E2E:
python3 scripts/run_e2e_tests.py
Recuento de colección E2E:
poetry run pytest tests/e2e --collect-only
Pre-commit:
poetry run pre-commit install --hook-type pre-commit --hook-type pre-push
poetry run pre-commit run --all-files
Más detalles:
Mapa de Documentación
- Arquitectura
- Documentación del servidor MCP
- Documentación de la capa de visión
- Documentación del enrutador
- Límites de responsabilidad del enrutador
- Documentación del addon
- Guía LLM v2
- Resumen de investigación de inteligencia espacial
- Propuesta de actualización de inteligencia espacial
- Resumen de herramientas disponibles
- Índice de arquitectura de herramientas
- Prompts
- Tareas
Contribuciones
Lee CONTRIBUTING.md antes de abrir un PR. El repositorio aplica límites de Arquitectura Limpia, Python tipado, reglas de metadatos del enrutador y validación de pre-commit.
Comunidad y Soporte
Si blender-ai-mcp es útil en tu flujo de trabajo, considera patrocinar su desarrollo a largo plazo.
El patrocinio ayuda a financiar el mantenimiento, la documentación, las pruebas y el trabajo de confiabilidad de alto nivel que hace que este repositorio sea diferente de la generación de código de Blender en bruto: enrutamiento orientado a objetivos, herramientas seleccionadas, verificación determinista y soporte de flujos de trabajo con forma de producción.
Autor
Patryk Ciechański
- GitHub: PatrykIti
Licencia
Este proyecto está licenciado bajo la Apache License 2.0.
Ver: