Blender MCP Ultra
Provides comprehensive control of Blender, including scene and object management, modeling, mesh editing, materials, lighting, cameras, animation, rendering, viewport feedback, sculpting, UV editing, physics, geometry nodes, curves, armatures, collections, and file import/export.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Blender MCP Ultra Create a low-poly tree and render it from the front camera"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Blender MCP Ultra
205 tools. 37 modules. Complete Blender control via MCP.
A production-grade Model Context Protocol (MCP) server that gives AI agents full control of Blender. Create, animate, light, render, and sculpt — all through structured tools, no scripts needed.
Features
205 structured tools across 37 modules — every tool does one thing well
Zero
execute_blender_codeneeded for most workflows — structured tools are faster, safer, and save tokensWizard tools — one call creates a complete scene (product shots, interiors, characters, environments)
Batch tools — operate on hundreds of objects in a single call
Works with any LLM — optimized for weak models (GPT-3.5, Haiku, Flash) via compact tool grouping
Blender 5.2+ compatible — tested with EEVEE Next and Cycles
Related MCP server: Blender MCP
Installation
MCP Server (for AI agents)
pip install blender-mcp-ultra
# or with uv
uv pip install blender-mcp-ultraBlender Addon
# Deploy addon to Blender
python deploy.py
# or manually copy addon/ to your Blender scripts/addons directoryEnable the addon in Blender Preferences → Add-ons → search "Blender MCP Ultra".
Quick Start
# From your MCP client (opencode, Claude, etc.)
from blender_mcp_ultra import BlenderMCPServer
server = BlenderMCPServer()
server.connect() # Auto-starts Blender addon on port 9876
# Create a product shot in one call
server.call("wizard_product_shot", {
"product_type": "sphere",
"product_color": [0.8, 0.2, 0.2],
"render": True,
"samples": 32
})
# Or build scenes tool-by-tool
server.call("create_object", {"object_type": "MESH", "name": "MyMesh"})
server.call("create_material", {"name": "RedMetal", "color": [0.8, 0.1, 0.1], "metallic": 0.9})
server.call("assign_material", {"object_name": "MyMesh", "material_name": "RedMetal"})
server.call("setup_studio_3point", {"key_energy": 18, "fill_energy": 8, "rim_energy": 35})
server.call("create_turntable_animation", {"object_name": "MyMesh", "frames": 250})
server.call("render_image", {"samples": 64})Tool Groups
Grouped tools save tokens by doing one specific job well. Each group is independent — animation tools don't import sculpting, material tools don't import physics.
Group | Tools | Use For |
Turntable |
| Rotation animations |
Studio Camera |
| Camera for any subject |
Studio Lighting |
| 3-point lighting |
Material Config |
| Screen/glass/body materials |
Constraints |
| Object constraints (27 types) |
Shape Keys |
| Morph targets |
NLA |
| Non-linear animation |
Markers |
| Timeline markers |
Vertex Colors |
| Per-vertex color data |
Custom Properties |
| User-defined metadata |
World/Compositor |
| Sky textures, post-processing |
Lattice/Paint |
| Deformation, painting |
Library/Normals |
| External assets, custom normals |
Batch |
| Multiple objects |
Wizard |
| Complete scenes |
All 205 Commands by Domain
Objects (11)
create_object delete_object duplicate_object join_objects parent_objects rename_object select_objects set_object_visibility set_origin shade_object convert_object
Transforms (8)
move_object rotate_object scale_object set_object_transform get_local_transforms align_object apply_transform snap_to_cursor
Modifiers (14)
add_modifier remove_modifier apply_modifier configure_modifier reorder_modifier bevel_edges boolean_operation extrude_faces inset_faces loop_cut merge_vertices subdivide_mesh flip_normals recalculate_normals
Mesh Editing (10)
edit_mesh_vertices edit_mesh_edges edit_mesh_faces create_vertex_group assign_vertex_group smooth_vertices tri_to_quad limited_dissolve separate_by_loose separate_by_material
Mesh Quality (5)
analyze_mesh_quality get_mesh_statistics check_production_readiness find_duplicates fix_mesh_defects
Materials (10)
create_material delete_material assign_material set_material_property create_procedural_material add_shader_node set_shader_node_value connect_shader_nodes apply_image_texture list_materials
Material Config (4)
configure_display_material configure_glass_material configure_body_material reassign_material_slot
Lights (5)
create_light configure_light setup_hdri_lighting setup_studio_lighting list_lights
Studio Lighting (3)
setup_studio_3point set_studio_world create_studio_floor
Camera (5)
create_camera configure_camera setup_camera_track_to setup_turntable_camera set_camera_to_view
Studio Camera (2)
setup_studio_camera set_camera_framing
Animation (8)
set_keyframe delete_keyframe set_interpolation set_animation_range set_fps go_to_frame create_walk_cycle setup_subdivision_animation
Turntable (3)
create_turntable_animation set_animation_cyclic set_bezier_easing
Constraints (2)
add_object_constraint remove_object_constraint
Shape Keys (3)
add_shape_key set_shape_key_value remove_shape_key
NLA (2)
add_nla_track add_nla_strip
Markers (2)
add_marker remove_marker
Vertex Colors (2)
add_color_attribute set_vertex_color
Custom Properties (2)
set_custom_property get_custom_property
World & Compositor (2)
setup_world_sky_texture setup_compositor
Lattice (2)
create_lattice apply_lattice_deform
Weight/Vertex Paint (2)
enter_weight_paint enter_vertex_paint
Library & Normals (2)
link_blend_data set_custom_normals
Scene (5)
get_scene_info list_objects get_object_info create_scene set_scene_property
Viewport (4)
get_viewport_info set_viewport_shading set_viewport_camera toggle_overlays
Viewport Enhanced (3)
get_viewport_screenshot get_viewport_screenshot_comparison get_render_preview
Sculpting (6)
configure_sculpt_brush enter_sculpt_mode exit_sculpt_mode set_sculpt_symmetry configure_dyntopo remesh_sculpt
UV (6)
uv_smart_project uv_unwrap uv_pack_islands uv_project_from_view uv_select_island get_uv_info
Physics (7)
add_rigid_body add_cloth_physics add_fluid_physics add_particle_system add_force_field bake_physics delete_physics
Geometry Nodes (4)
add_geometry_nodes_modifier add_geometry_node connect_geometry_nodes create_procedural_distribution
Curves (5)
create_curve create_text_object edit_curve_points set_curve_fill convert_curve_to_mesh
Armature (6)
create_armature add_bone create_humanoid_rig add_bone_constraint setup_ik_chain parent_bone_to_object
Collections (5)
create_collection delete_collection move_to_collection set_collection_visibility list_collections
File I/O (5)
import_file export_file export_fbx export_glb export_obj
Procedural (4)
create_terrain create_tree create_rock create_particle_field
Batch (11)
batch_create_objects batch_delete_objects batch_transform batch_add_modifiers batch_material_preset batch_rename batch_parent batch_visibility batch_select batch_set_origin execute_sequence
Rendering (4)
render_image render_animation render_preview configure_render
Multi-Scene (8)
list_open_scenes open_blend_file save_blend_file new_scene switch_scene delete_scene merge_blend_file get_scene_diff
Code Execution (2)
execute_blender_code run_operator
Wizards (11)
wizard_product_shot wizard_archviz_interior wizard_character_basemesh wizard_environment wizard_studio_render wizard_uv_unwrap_all wizard_scene_optimize wizard_material_preset wizard_quick_scene wizard_turntable wizard_batch_materials
Architecture
opencode ──MCP stdio──▶ blender_mcp_ultra.server ──WebSocket 9876──▶ Blender addonAI agent calls MCP tool via stdio
MCP server serializes command and sends via WebSocket to Blender
Blender addon queues command on main thread
Handler executes the Blender API call
Result returned through the same path
Development
# Install dependencies
pip install -e ".[dev]"
# Run MCP server (standalone test)
blender-mcp-ultra
# Run Blender with addon
blender --python blender_startup.py
# Run tests
pytest tests/
# Lint
ruff check src/License
MIT
Available Tools
209 toolsadd_boneA
Add a bone to an armature.
Args: armature_name: Target armature. bone_name: Name for the bone. head: [x, y, z] bone head position. tail: [x, y, z] bone tail position. parent_bone: Parent bone name (for hierarchy).
Inputs: bone_name (required), armature_name (required), head, tail, +1 more.
add_bone_constraintB
Add a constraint to a bone.
Args: armature_name: Target armature. bone_name: Bone to constrain. constraint_type: TRACK_TO, COPY_LOCATION, COPY_ROTATION, IK, etc. target_name: Target object for the constraint.
Inputs: bone_name (required), armature_name (required), target_name, constraint_type.
add_cloth_physicsB
Add cloth simulation to an object.
Args: object_name: Target object. quality_steps: Simulation quality (1-20). mass: Cloth mass density. tension: Structural tension. compression: Structural compression.
Inputs: object_name (required), mass, tension, compression, +1 more.
add_color_attributeB
Add a color attribute (vertex color layer) to a mesh.
Args: object_name: Target mesh object. name: Name for the color attribute. domain: CORNER (per-loop) or POINT (per-vertex). data_type: BYTE_COLOR (0-1 byte) or FLOAT_COLOR (0-1 float).
Inputs: object_name (required), name, domain, data_type.
add_fluid_physicsC
Add fluid simulation to an object.
Args: object_name: Target object. domain_type: DOMAIN, EFFERENT, FLOW, or COLLISION. fluid_type: LIQUID or GAS.
Inputs: object_name (required), fluid_type, domain_type.
add_force_fieldC
Add a force field effect.
Args: name: Force field name. field_type: FORCE, WIND, VORTEX, MAGNET, CHARGE, LENARD_JONES, TURBULENCE, etc. location: [x, y, z] position. strength: Field strength. flow: Field flow.
Inputs: flow, name, location, strength, +1 more.
add_geometry_nodeC
Add a node to a geometry node tree.
Args: node_group_name: Node group name. node_type: Node type (e.g., 'MeshPrimitiveCube', 'InstanceOnPoints', 'SetPosition'). location: [x, y] position in the node editor.
Inputs: node_type (required), node_group_name (required), location.
add_geometry_nodes_modifierC
Add a geometry nodes modifier to an object.
Args: object_name: Target object. node_group_name: Name for the node group.
Inputs: object_name (required), node_group_name.
add_markerA
Add a timeline marker for animation notes or camera binding.
Args: name: Marker name. frame: Frame number for the marker. camera_name: Camera to bind to this marker (optional).
Inputs: name, frame, camera_name.
add_modifierB
Add a modifier to an object.
Args: object_name: Target object. modifier_type: SUBSURF, MIRROR, SOLIDIFY, BOOLEAN, BEVEL, ARRAY, etc. name: Optional modifier name. params: Optional modifier settings dict (e.g. {'levels': 2, 'render_levels': 3} for SUBSURF, {'width': 0.002, 'segments': 4} for BEVEL).
Inputs: object_name (required), modifier_type (required), name, params.
add_nla_stripB
Add an animation clip (strip) to an NLA track.
Args: object_name: Target object. track_name: NLA track to add the strip to. action_name: Action (animation clip) to use. name: Custom name for the strip. start_frame: Frame where the strip starts. scale: Time scale for the strip. repeat: Number of times to repeat. blend_type: REPLACE, ADD, SUBTRACT, MULTIPLY.
Inputs: track_name (required), action_name (required), object_name (required), name, +4 more.
add_nla_trackC
Add an NLA track to an object for layering animation clips.
Args: object_name: Target object with animation data. name: Name for the new track.
Inputs: object_name (required), name.
add_object_constraintB
Add a constraint to an object.
Common types: COPY_LOCATION, COPY_ROTATION, COPY_SCALE, TRACK_TO, FOLLOW_PATH, CHILD_OF, LIMIT_LOCATION, LIMIT_ROTATION, LIMIT_SCALE, TRANSFORM, CLAMP_TO, DAMPED_TRACK_TO, IK, PUSH_PULL,Stretch To.
Args: object_name: Target object. constraint_type: Constraint type (e.g. 'COPY_LOCATION'). name: Custom name for the constraint. target_name: Target object for the constraint. subtarget: Sub-target (bone name for armature targets). settings: Dict of constraint properties to set.
Inputs: object_name (required), constraint_type (required), name, settings, +2 more.
add_particle_systemB
Add a particle system to an object.
Args: object_name: Target object. particle_type: EMITTER, HAIR, or STATIC_HAIR. count: Number of particles. lifetime: Particle lifetime in frames. frame_start: Start frame. frame_end: End frame.
Inputs: object_name (required), count, lifetime, frame_end, +2 more.
add_rigid_bodyA
Add rigid body physics to an object.
Args: object_name: Target object. body_type: ACTIVE (dynamic) or PASSIVE (static/kinematic). mass: Mass in kg. friction: Surface friction (0-1). restitution: Bounciness (0-1).
Inputs: object_name (required), mass, friction, body_type, +1 more.
add_shader_nodeA
Add a shader node to a material's node tree.
Args: material_name: Target material. node_type: Shader node type (e.g., 'TEX_NOISE', 'TEX_VORONOI', 'MIXRGB', 'VALUE'). location: [x, y] position in the node editor. name: Optional node label.
Inputs: node_type (required), material_name (required), name, location.
add_shape_keyB
Add a shape key (morph target) to a mesh object.
Automatically creates the Basis key if none exists.
Args: object_name: Target mesh object. name: Name for the new shape key. from_mix: Create from current mesh state.
Inputs: object_name (required), name, from_mix.
align_objectA
Align one object's transform to another.
Args: name: Object to align. target: Reference object. align_location: Match position. align_rotation: Match rotation. align_scale: Match scale.
Inputs: name (required), target (required), align_scale, align_location, +1 more.
analyze_mesh_qualityA
Analyze mesh for defects: non-manifold edges, loose vertices, zero-area faces, duplicate vertices, wire edges, and twisted faces.
Returns a structured defect report with counts and affected element indices.
Inputs: object_name (required).
apply_image_textureC
Apply an image texture to an object.
Args: object_name: Target object. image_path: Path to the image file. material_name: Optional existing material to add texture to.
Inputs: image_path (required), object_name (required), material_name.
apply_lattice_deformA
Apply lattice modifier to bake deformation into mesh.
Args: object_name: Target object with lattice modifier. modifier_name: Name of the lattice modifier.
Inputs: object_name (required), modifier_name.
apply_modifierC
Apply (bake) a modifier into the mesh.
Args: object_name: Target object. modifier_name: Name of the modifier to apply.
Inputs: object_name (required), modifier_name (required).
apply_transformA
Apply (bake) transforms — resets values to identity while keeping world position.
Args: name: Object name. location: Apply location. rotation: Apply rotation. scale: Apply scale.
Inputs: name (required), scale, location, rotation.
assign_materialC
Assign a material to an object's material slot.
Args: object_name: Target object. material_name: Material to assign. slot: Material slot index.
Inputs: object_name (required), material_name (required), slot.
assign_vertex_groupA
Assign vertices to a vertex group with a specific weight.
Args: object_name: Target object. group_name: Vertex group name. vertices: Vertex indices to assign. weight: Weight value (0.0 - 1.0).
Inputs: vertices (required), group_name (required), object_name (required), weight.
auto_scene_reportB
Full scene analysis with quality metrics in compact format.
Returns: poly count, material count, lighting setup, camera info, bounding box, and quality issues (non-manifold, ngons, etc.) All in a single compact response.
Inputs: no named parameters.
bake_physicsA
Bake physics simulation for an object.
Args: object_name: Object with physics. frame_start: First frame to bake. frame_end: Last frame to bake.
Inputs: object_name (required), frame_end, frame_start.
batch_add_modifiersA
Add the same modifier to multiple objects in one call.
Args: object_names: List of object names. modifier_type: Modifier type (SUBSURF, MIRROR, BEVEL, etc.) settings: Optional settings dict to apply to each modifier.
Inputs: object_names (required), modifier_type (required), settings.
batch_create_objectsC
Create multiple objects in one call.
Each object: {"type": "MESH", "name": "Obj", "location": [x,y,z], "scale": [sx,sy,sz]}
Args: objects: List of object definitions.
Inputs: objects (required).
batch_delete_objectsB
Delete multiple objects in one call.
Args: names: List of object names to delete.
Inputs: names (required).
batch_material_presetB
Apply material presets to multiple objects in one call.
Each entry: {"object": "name", "preset": "metal", "color": [r,g,b]}
Args: assignments: List of material preset assignments.
Inputs: assignments (required).
batch_parentC
Set parent-child relationships for multiple pairs in one call.
Each entry: {"child": "name", "parent": "name", "keep_transform": true}
Args: parentings: List of parenting dicts.
Inputs: parentings (required).
batch_renameA
Rename multiple objects in one call.
Each entry: {"old": "OldName", "new": "NewName"}
Args: renames: List of rename dicts.
Inputs: renames (required).
batch_selectA
Select multiple groups of objects in one call.
Each group: {"replace": true, "names": ["Obj1", "Obj2"]} Useful for material assignment workflows.
Args: groups: List of selection groups.
Inputs: groups (required).
batch_set_originB
Set origins for multiple objects in one call.
Each entry: {"name": "Obj", "origin_type": "GEOMETRY"}
Args: origins: List of origin dicts.
Inputs: origins (required).
batch_transformB
Apply transforms to multiple objects in one call.
Each entry: {"name": "Obj", "location": [x,y,z], "rotation": [rx,ry,rz], "scale": [sx,sy,sz]} Only provided channels are modified per object.
Args: transforms: List of transform dicts.
Inputs: transforms (required).
batch_visibilityC
Set visibility for multiple objects in one call.
Each entry: {"name": "Obj", "visible": true, "hide_render": false}
Args: visibilities: List of visibility dicts.
Inputs: visibilities (required).
bevel_edgesB
Bevel selected edges of a mesh.
Args: object_name: Object name. width: Bevel width. segments: Number of segments (1 = flat bevel).
Inputs: object_name (required), width, segments.
boolean_operationB
Perform a boolean operation between two objects.
Args: object_name: Object to modify. target_name: Object to use as boolean operand. operation: UNION, INTERSECT, or DIFFERENCE.
Inputs: object_name (required), target_name (required), operation.
check_production_readinessA
Full production readiness audit: manifold geometry, UV maps, materials, naming conventions, origin alignment. Returns a score 0-100 with detailed breakdown.
Inputs: object_name (required).
configure_body_materialB
Configure a solid body/casing material.
Works for product casings, furniture surfaces, architectural elements, or any solid opaque surface.
Args: material_name: Name of the body material. color: RGB base color (0-1). roughness: Surface roughness. metallic: Metallic value. 0.0 = dielectric, 1.0 = metal.
Inputs: color, metallic, roughness, material_name.
configure_cameraC
Configure camera optical properties.
Args: name: Camera object name. lens: Focal length in mm. depth_of_field: Enable depth of field. fstop: Aperture f-stop. focus_distance: Focus distance. clip_start: Near clip. clip_end: Far clip.
Inputs: name (required), lens, fstop, clip_end, +3 more.
configure_display_materialA
Configure a display/emissive material for any scene.
Sets dark base color, low roughness, and optional emission. Works for phone screens, monitors, TVs, control panels, HUDs, or any emissive surface.
Args: material_name: Name of the material to configure. color: RGB base color (0-1). Default: near-black. roughness: Surface roughness. 0.03 = mirror-like. emission_color: RGB emission color. emission_strength: Emission intensity. 0 = off, 1+ = glowing.
Inputs: color, roughness, material_name, emission_color, +1 more.
configure_dyntopoB
Configure dynamic topology (dyntopo) for sculpting.
Args: enabled: Enable/disable dyntopo. detail_size: Detail size (smaller = more detail). resolution: RELATIVE, ABSOLUTE, or BRUSH.
Inputs: enabled, resolution, detail_size.
configure_glass_materialB
Configure glass/transparent material for EEVEE.
Works for windows, lenses, screens, bottles, or any transparent surface.
Args: material_name: Name of the glass material. transmission: Transmission weight (0-1). 0.95 = fully glass-like. ior: Index of refraction. 1.52 = standard glass. roughness: Surface roughness. 0.0 = perfect mirror.
Inputs: ior, roughness, transmission, material_name.
configure_lightA
Configure an existing light's properties.
Args: name: Light object name. energy: Power in watts. color: [R, G, B] light color. radius: Soft shadow radius. spot_angle: Spot cone angle in radians (spot lights only). shadow_soft_size: Shadow soft size.
Inputs: name (required), color, energy, radius, +2 more.
configure_modifierC
Configure settings of an existing modifier.
Args: object_name: Target object. modifier_name: Name of the modifier to configure. settings: Dict of setting_name: value pairs.
Inputs: settings (required), object_name (required), modifier_name (required).
configure_renderA
Configure render engine, GPU, samples, resolution, etc.
Args: engine: Render engine (CYCLES, BLENDER_EEVEE, BLENDER_WORKBENCH). samples: Number of samples for Cycles. device: "GPU" or "CPU" for Cycles device. denoising: Enable/disable denoising. max_bounces: Max light bounces for Cycles. resolution_x: Output width. resolution_y: Output height.
Inputs: device, engine, samples, denoising, +3 more.
configure_sculpt_brushB
Configure the active sculpt brush.
Args: brush_name: Draw, Clay, Crease, Inflate, Grab, Smooth, etc. size: Brush radius. strength: Brush strength (0-1). auto_masking: Enable auto masking.
Inputs: size, strength, brush_name, auto_masking.
connect_geometry_nodesC
Connect two nodes in a geometry node tree.
Args: node_group_name: Node group name. from_node: Source node name. from_socket: Source socket name. to_node: Target node name. to_socket: Target socket name.
Inputs: to_node (required), from_node (required), to_socket (required), from_socket (required), +1 more.
connect_shader_nodesA
Connect two shader nodes in a material's node tree.
Args: material_name: Target material. from_node: Source node name/label. from_socket: Source socket name. to_node: Target node name/label. to_socket: Target socket name.
Inputs: to_node (required), from_node (required), to_socket (required), from_socket (required), +1 more.
convert_curve_to_meshB
Convert a curve object to a mesh.
Args: curve_name: Curve to convert. name: Name for the new mesh. Empty = auto.
Inputs: curve_name (required), name.
convert_objectC
Convert an object to a different type (e.g., curve to mesh).
Args: name: Object name. target_type: Target type (MESH, CURVE, SURFACE, etc.).
Inputs: name (required), target_type.
create_armatureC
Create a new armature object.
Args: name: Armature name. location: [x, y, z] position.
Inputs: name, location.
create_cameraB
Create a camera with optical settings.
Args: name: Camera name. location: [x, y, z] position. rotation: [x, y, z] Euler rotation. lens: Focal length in mm. sensor_width: Sensor width in mm. clip_start: Near clipping distance. clip_end: Far clipping distance.
Inputs: lens, name, clip_end, location, +3 more.
create_collectionB
Create a new collection.
Args: name: Collection name. parent: Parent collection name (empty = root).
Inputs: name (required), parent.
create_curveA
Create a curve object.
Args: name: Curve name. curve_type: BEZIER, NURBS, or POLY. points: List of [x, y, z] control points. location: [x, y, z] position. bevel_depth: Curve bevel depth (thickness). bevel_resolution: Bevel resolution. fill: FULL, HALF, or NONE.
Inputs: fill, name, points, location, +3 more.
create_humanoid_rigB
Create a basic humanoid armature with spine, arms, and legs.
Args: armature_name: Name for the armature. location: [x, y, z] position.
Inputs: location, armature_name.
create_latticeC
Create a lattice for free-form mesh deformation.
Optionally binds to a target object via Lattice modifier.
Args: name: Name for the lattice. location: [x, y, z] position. points_u: Control points in U direction. points_v: Control points in V direction. points_w: Control points in W direction. target_object: Object to apply lattice modifier to (optional).
Inputs: name, location, points_u, points_v, +2 more.
create_lightB
Create a light source.
Args: name: Light name. light_type: POINT, SUN, SPOT, or AREA. location: [x, y, z] position. energy: Light power in watts. color: [R, G, B] light color. radius: Soft shadow radius.
Inputs: name, color, energy, radius, +2 more.
create_materialA
Create a new Principled BSDF material.
Args: name: Material name. color: [R, G, B, A] base color (0-1). metallic: Metallic value (0-1). roughness: Roughness value (0-1).
Inputs: name, color, metallic, roughness.
create_objectB
Create a new object of any type with optional transform.
Args: object_type: MESH, CURVE, SURFACE, META, TEXT, ARMATURE, LATTICE, EMPTY, CAMERA, LIGHT, etc. name: Name for the new object. location: [x, y, z] world position. rotation: [x, y, z] Euler rotation in radians. scale: [x, y, z] scale factors.
Inputs: name, scale, location, rotation, +1 more.
create_particle_fieldB
Generate a field of scattered particles/objects.
Args: name: Object name. count: Number of particles. size: Field size. particle_size: Individual particle size. seed: Random seed.
Inputs: name, seed, size, count, +1 more.
create_procedural_distributionA
Set up points-on-faces distribution via geometry nodes.
Args: object_name: Target object to distribute on. instance_object: Object to instance on each point. Empty = just points. count: Number of instances. distribution: RANDOM, POISSON_DISK, or GRID. seed: Random seed.
Inputs: object_name (required), seed, count, distribution, +1 more.
create_procedural_materialA
Create a complete procedural material with node graph in one call.
Creates coordinate mapping, texture node, color ramp, and Principled BSDF.
Args: name: Material name. pattern: NOISE, VORONOI, MUSGRAVE, WAVY, MAGIC, checker, marble, wood, cloud, gradient, veins, plasma. color1: First color [R, G, B]. color2: Second color [R, G, B]. scale: Texture scale. detail: Texture detail level. roughness: Surface roughness.
Inputs: name, scale, color1, color2, +3 more.
create_rockA
Generate a procedural rock.
Args: name: Object name. size: Rock size. detail: Surface detail level (0-1). roughness: Surface roughness. seed: Random seed.
Inputs: name, seed, size, detail, +1 more.
create_sceneB
Create a new scene.
Args: name: Name for the new scene. copy_current: If True, copy the current scene's settings.
Inputs: name, copy_current.
create_studio_floorA
Create a ground plane for studio scenes.
Works as a floor for products, characters, or any standing object. Dark matte by default, configurable color and roughness.
Args: color: RGB floor color (0-1). Default: near-black. roughness: Surface roughness. 0.3 = subtle reflection. size: Floor size in meters. height: Floor Z position. name: Name for the floor object.
Inputs: name, size, color, height, +1 more.
create_terrainB
Generate a procedural terrain mesh.
Args: name: Object name. size: Grid size. subdivisions: Number of subdivisions. height: Maximum height. seed: Random seed. noise_scale: Noise scale factor.
Inputs: name, seed, size, height, +2 more.
create_text_objectC
Create a text object with formatting.
Args: name: Object name. text: The text content. location: [x, y, z] position. size: Font size. extrude: Text depth. font_path: Path to a .ttf/.otf font file.
Inputs: name, size, text, extrude, +2 more.
create_treeA
Generate a procedural tree with trunk, branches, and leaves.
Args: name: Object name. trunk_height: Height of the trunk. trunk_radius: Radius of the trunk. branch_levels: Number of branching levels. leaves_per_branch: Leaves per branch. seed: Random seed.
Inputs: name, seed, trunk_height, trunk_radius, +2 more.
create_turntable_animationA
Create a 360-degree turntable rotation animation on an object.
Works for products, characters, environments, anything. Sets keyframes at frame 1 and frame N with full rotation. Applies bezier easing (AUTO_CLAMPED handles) for smooth ease in/out. Optionally adds cyclic modifier for seamless looping.
Args: object_name: Object to animate. frames: Total frames for one full rotation. axis: Rotation axis (X, Y, or Z). cyclic: Whether to make the animation loop.
Inputs: object_name (required), axis, cyclic, frames.
create_vertex_groupC
Create a new vertex group on a mesh object.
Args: object_name: Target object. group_name: Name for the vertex group.
Inputs: group_name (required), object_name (required).
create_walk_cycleB
Create a simple walk/bounce cycle animation.
Args: object_name: Target object. frames_per_cycle: Frames for one full cycle. amplitude: Bounce height.
Inputs: object_name (required), amplitude, frames_per_cycle.
delete_collectionA
Delete a collection.
Args: name: Collection name. keep_objects: If True, move objects to the scene collection first.
Inputs: name (required), keep_objects.
delete_keyframeA
Delete keyframes at a specific frame or all keyframes.
Args: object_name: Target object. frame: Frame to delete (None = all keyframes).
Inputs: object_name (required), frame.
delete_materialC
Remove material from an object's slot.
Args: object_name: Target object. slot: Material slot index.
Inputs: object_name (required), slot.
delete_objectB
Delete an object by name.
Args: name: Name of the object to delete.
Inputs: name (required).
delete_physicsC
Remove all physics from an object.
Args: object_name: Target object.
Inputs: object_name (required).
delete_sceneC
Delete a scene from the current .blend file.
Args: scene_name: Name of the scene to delete.
Inputs: scene_name (required).
duplicate_objectC
Duplicate an object with all its data.
Args: name: Name of the object to duplicate. new_name: Optional name for the duplicate.
Inputs: name (required), new_name.
edit_curve_pointsA
Add or remove curve control points.
Args: curve_name: Curve object name. action: add, remove, or move. points: [x, y, z] for add/move actions. index: Point index for remove/move (-1 = last).
Inputs: curve_name (required), index, action, points.
edit_mesh_edgesC
Edit mesh edges.
Args: object_name: Target mesh object. action: select, deselect, mark_seam, clear_seam, mark_sharp, crease. edges: List of edge indices (None = selected).
Inputs: object_name (required), edges, action.
edit_mesh_facesB
Edit mesh faces.
Args: object_name: Target mesh object. action: select, deselect, delete, fill, grid_fill, triangulate, poke. faces: List of face indices (None = selected).
Inputs: object_name (required), faces, action.
edit_mesh_verticesB
Edit mesh vertices at the element level.
Args: object_name: Target mesh object. action: move, delete, smooth, or collapse. vertices: List of vertex indices to operate on (None = selected). offset: [x, y, z] offset for move action.
Inputs: object_name (required), action, offset, vertices.
enter_sculpt_modeB
Enter sculpt mode on an object.
Args: object_name: Object to sculpt. Empty = active object.
Inputs: object_name.
enter_vertex_paintB
Enter vertex paint mode.
Args: object_name: Object to paint (empty = active object).
Inputs: object_name.
enter_weight_paintA
Enter weight paint mode for rigging.
Args: object_name: Object to paint (empty = active object).
Inputs: object_name.
execute_blender_codeA
Execute arbitrary Python code in Blender with full bpy access.
WARNING: This runs unvalidated code. Use structured tools when possible. Code is executed in a sandboxed environment with restricted builtins.
Args: code: Python code to execute. Has access to 'bpy' and 'bmesh'.
Inputs: code (required).
execute_sequenceB
Execute a sequence of Blender commands in one call.
Each command: {"type": "create_object", "params": {...}} Commands are executed in order on the Blender main thread. This is the most powerful batch tool — it chains any operations.
Args: commands: List of command dicts with type and params.
Inputs: commands (required).
exit_sculpt_modeA
Exit sculpt mode and return to object mode.
Inputs: no named parameters.
export_fbxA
Export to FBX format with common settings.
Args: filepath: Output path. selected_only: Only export selected. apply_scale: Apply scale transforms. mesh_smooth_type: OFF, FACE, or EDGE. path_mode: AUTO, ABSOLUTE, RELATIVE, MATCH, STRIP, COPY.
Inputs: filepath (required), path_mode, apply_scale, selected_only, +1 more.
export_fileB
Export objects to a 3D model file.
Args: filepath: Output file path. file_type: FBX, OBJ, GLTF, GLB, STL, USD, PLY, ABC, etc. selected_only: Only export selected objects.
Inputs: filepath (required), file_type, selected_only.
export_glbB
Export to glTF binary (GLB) format.
Args: filepath: Output path. selected_only: Only export selected. export_materials: Include materials.
Inputs: filepath (required), selected_only, export_materials.
export_objC
Export to OBJ format.
Args: filepath: Output path. selected_only: Only export selected. export_materials: Include MTL file.
Inputs: filepath (required), selected_only, export_materials.
extrude_facesB
Extrude selected faces of a mesh object (must be in edit mode).
Args: object_name: Object name. distance: Extrusion distance (0 for manual manipulation).
Inputs: object_name (required), distance.
find_duplicatesB
Find duplicate vertices within a distance threshold.
Args: object_name: Target object. distance: Distance threshold for duplicate detection.
Inputs: object_name (required), distance.
fix_mesh_defectsC
Automatically fix common mesh defects.
Args: object_name: Target object. fix_manifold: Fix non-manifold geometry. merge_distance: Distance for merging duplicate vertices.
Inputs: object_name (required), fix_manifold, merge_distance.
flip_normalsC
Flip normals of selected faces.
Args: object_name: Object name.
Inputs: object_name (required).
get_custom_propertyC
Read a custom property from an object or bone.
Args: object_name: Target object. bone_name: Target bone. armature_name: Armature containing the bone. property_name: Name of the custom property.
Inputs: bone_name, object_name, armature_name, property_name.
get_local_transformsC
Get the local (parent-relative) transforms of an object.
Args: name: Object name.
Inputs: name (required).
get_mesh_statisticsC
Get detailed mesh statistics: vertex/edge/face counts, triangle count, ngon count, volume, surface area, bounding box dimensions.
Inputs: object_name (required).
get_object_infoB
Get detailed information about a specific object: transforms, mesh stats, materials, modifiers, constraints, vertex groups, and shape keys.
Args: name: Name of the object to inspect.
Inputs: name (required).
get_render_previewA
Quick low-sample render preview for fast iteration.
Args: width: Preview width. height: Preview height. samples: Number of render samples (lower = faster, less quality).
Inputs: width, height, samples.
get_scene_diffA
Compare two scenes and list differences.
Args: filepath_a: First .blend file (current if empty). filepath_b: Second .blend file (must be specified).
Inputs: filepath_a, filepath_b.
get_scene_for_modelA
Get scene info tailored to the model's context size.
Args: complexity: compact (~200 tokens for weak models), standard (~500 tokens for most models), detailed (~2000 tokens for large models).
Inputs: complexity.
get_scene_infoA
Get comprehensive scene information: objects, hierarchy, frame range, render settings.
Returns scene name, active object, object count with type breakdown, full object list with transforms, collection hierarchy, and render config.
Inputs: no named parameters.
get_scene_summaryA
Get an ultra-compact scene summary (~200 tokens) for weak LLMs.
Returns: object count, types, materials, camera, lights, render engine. Designed to fit in small context windows while providing actionable info.
Inputs: no named parameters.
get_uv_infoC
Get UV mapping information: island count, UV bounds, stretch stats.
Args: object_name: Target object.
Inputs: object_name (required).
get_viewport_infoA
Get current viewport state: active camera, shading mode, view matrix, cursor position.
Inputs: no named parameters.
get_viewport_screenshotA
Take a high-quality viewport screenshot using GPU offscreen rendering.
Args: filepath: Path to save the PNG. If empty, returns base64 only. width: Output width in pixels. height: Output height in pixels. include_overlays: Include viewport overlays (grid, outlines, etc.). camera_view: Render from the active camera's perspective. render_engine: Override render engine ('BLENDER_EEVEE', 'BLENDER_CYCLES', 'BLENDER_WORKBENCH').
Inputs: width, height, filepath, camera_view, +2 more.
get_viewport_screenshot_comparisonA
Take two viewport screenshots: one from user view, one from camera view.
Useful for verifying scene composition and camera framing.
Returns: user_view: Base64 PNG from the user's current viewport perspective. camera_view: Base64 PNG from the active camera's perspective.
Inputs: width, height.
go_to_frameC
Jump to a specific frame in the timeline.
Args: frame: Frame number.
Inputs: frame.
import_fileB
Import a 3D model file.
Args: filepath: Path to the file to import. file_type: FBX, OBJ, GLTF, GLB, STL, USD, PLY, ABC, etc. (auto-detected from extension if empty).
Inputs: filepath (required), file_type.
inset_facesC
Inset selected faces of a mesh.
Args: object_name: Object name. thickness: Inset thickness. use_boundary: Also inset boundary edges.
Inputs: object_name (required), thickness, use_boundary.
join_objectsB
Join multiple objects into a single mesh.
Args: names: List of object names to join. First object becomes the active.
Inputs: names (required).
limited_dissolveC
Dissolve geometry based on angle threshold.
Args: object_name: Target object. angle_limit: Angle threshold in radians.
Inputs: object_name (required), angle_limit.
link_blend_dataA
Link or append data from an external .blend file.
Args: filepath: Path to the .blend file. data_type: OBJECT, MESH, MATERIAL, ACTION, or NODE_GROUP. names: List of data block names to link. link: True = linked (updates with source), False = appended (independent copy).
Inputs: filepath (required), link, names, data_type.
list_collectionsA
List all collections with their objects and hierarchy.
Inputs: no named parameters.
list_lightsA
List all lights in the scene with their types, positions, and energy values.
Inputs: no named parameters.
list_materialsA
List all materials in the current blend file with their names and usage counts.
Inputs: no named parameters.
list_objectsA
List all objects in the scene with their types, locations, and visibility.
Args: object_type: Filter by type: ALL, MESH, CURVE, LIGHT, CAMERA, ARMATURE, EMPTY, etc. include_hidden: If True, include hidden objects. collection: Optional collection name to filter by.
Inputs: collection, object_type, include_hidden.
list_open_scenesA
List all currently open .blend files and their status.
Inputs: no named parameters.
loop_cutC
Add loop cuts to a mesh.
Args: object_name: Object name. number_cuts: Number of cuts. axis: X, Y, or Z axis.
Inputs: object_name (required), axis, number_cuts.
merge_blend_fileB
Merge objects from another .blend file into the current scene.
Args: filepath: Path to the .blend file to merge. merge_method: 'append' (linked), 'link', or 'import' (direct copy).
Inputs: filepath (required), merge_method.
merge_verticesC
Merge vertices by distance (remove doubles).
Args: object_name: Object name. distance: Merge distance threshold.
Inputs: object_name (required), distance.
move_objectA
Move an object by delta in world or local space.
Args: name: Object name. x, y, z: Translation delta. space: WORLD or LOCAL.
Inputs: name (required), x, y, z, +1 more.
move_to_collectionC
Move an object to a different collection.
Args: object_name: Object to move. collection_name: Target collection.
Inputs: object_name (required), collection_name (required).
new_sceneB
Create a new scene within the current .blend file.
Args: name: Scene name. If empty, auto-generates one. copy_settings: Copy settings from current scene.
Inputs: name, copy_settings.
open_blend_fileC
Open a .blend file.
Args: filepath: Path to the .blend file. use_scripts: Whether to load linked scripts.
Inputs: filepath (required), use_scripts.
parent_bone_to_objectA
Parent an object to a bone (for rigging).
Args: armature_name: Target armature. bone_name: Bone to parent to. object_name: Object to parent.
Inputs: bone_name (required), object_name (required), armature_name (required).
parent_objectsB
Set parent-child relationship between objects.
Args: child: Name of the child object. parent: Name of the parent object. keep_transform: If True, maintain the child's current world transform.
Inputs: child (required), parent (required), keep_transform.
reassign_material_slotA
Reassign all faces from one material slot to another.
Useful for replacing one material with another across the entire mesh.
Args: object_name: Target mesh object. from_slot: Source material slot index. to_slot: Destination material slot index.
Inputs: to_slot (required), from_slot (required), object_name (required).
recalculate_normalsB
Recalculate normals of a mesh.
Args: object_name: Object name. outside: If True, normals point outward.
Inputs: object_name (required), outside.
remesh_sculptB
Remesh the active object for sculpting.
Args: mode: VOXEL or SMOOTH. voxel_size: Voxel size for voxel remesh. smooth_iterations: Smooth iterations for smooth remesh.
Inputs: mode, voxel_size, smooth_iterations.
remove_markerA
Remove a timeline marker.
Args: marker_name: Name of the marker to remove.
Inputs: marker_name (required).
remove_modifierB
Remove a modifier from an object.
Args: object_name: Target object. modifier_name: Name of the modifier to remove.
Inputs: object_name (required), modifier_name (required).
remove_object_constraintB
Remove a constraint from an object.
Args: object_name: Target object. constraint_name: Name of the constraint to remove.
Inputs: object_name (required), constraint_name (required).
remove_shape_keyB
Remove a shape key from an object.
Args: object_name: Target mesh object. key_name: Name of the shape key to remove.
Inputs: key_name (required), object_name (required).
rename_objectB
Rename an object.
Args: name: Current name of the object. new_name: New name for the object.
Inputs: name (required), new_name (required).
render_animationC
Render an animation sequence.
Args: output_path: Output directory path. frame_start: First frame. frame_end: Last frame. engine: Render engine.
Inputs: engine, frame_end, frame_start, output_path.
render_imageB
Render the current scene to an image file.
Args: output_path: File path for the rendered image. If empty, uses temp file. resolution_x: Output width. resolution_y: Output height. samples: Render samples. engine: BLENDER_EEVEE, CYCLES, or BLENDER_WORKBENCH.
Inputs: engine, samples, output_path, resolution_x, +1 more.
render_previewB
Quick preview render for visual feedback loops.
Args: quality: LOW (320x240), MEDIUM (800x600), HIGH (1920x1080).
Inputs: quality.
reorder_modifierA
Move a modifier to a specific position in the stack.
Args: object_name: Target object. modifier_name: Modifier to move. new_index: Target position (0-based).
Inputs: new_index (required), object_name (required), modifier_name (required).
rotate_objectB
Rotate an object by delta radians in world or local space.
Args: name: Object name. x, y, z: Rotation delta in radians. space: WORLD or LOCAL.
Inputs: name (required), x, y, z, +1 more.
run_operatorB
Execute a bpy.ops operator by name.
Args: operator_name: Full operator name (e.g., 'mesh.primitive_cube_add'). params: Optional dict of operator parameters (e.g., {'size': 2, 'location': [0,0,0]}).
Inputs: operator_name (required), params.
save_blend_fileA
Save the current .blend file.
Args: filepath: Save path. If empty, saves to current location. copy: If True, save as copy (don't overwrite original).
Inputs: copy, filepath.
scale_objectA
Scale an object by factors, or set absolute scale.
Args: name: Object name. x, y, z: Scale factors (1.0 = no change). Used when scale is not given. scale: Optional [sx, sy, sz] — sets the scale absolutely instead of multiplying.
Inputs: name (required), x, y, z, +1 more.
select_objectsA
Select one or more objects by name.
Args: names: List of object names to select. replace: If True, deselect all others first.
Inputs: names (required), replace.
separate_by_looseC
Separate a mesh into disconnected parts.
Args: object_name: Object to separate.
Inputs: object_name (required).
separate_by_materialB
Separate a mesh object into parts by material assignment.
Args: object_name: Object to separate.
Inputs: object_name (required).
set_animation_cyclicB
Make an object's animation loop cyclically.
Args: object_name: Target object. cyclic: True to loop, False to stop.
Inputs: object_name (required), cyclic.
set_animation_rangeB
Set the animation playback range.
Args: start_frame: Start frame. end_frame: End frame. frame_step: Step between frames.
Inputs: end_frame, frame_step, start_frame.
set_bezier_easingA
Set bezier interpolation with auto-clamped handles on all keyframes.
Produces smooth ease-in and ease-out on every keyframe of the object.
Args: object_name: Target object.
Inputs: object_name (required).
set_camera_framingA
Adjust camera position relative to a target without recreating it.
Useful for re-framing or adjusting composition.
Args: camera_name: Camera to adjust. target_name: Object to frame. distance: New distance from target. height_offset: New height offset. angle_offset: New horizontal angle.
Inputs: distance, camera_name, target_name, angle_offset, +1 more.
set_camera_to_viewA
Position camera to frame the current viewport or a specific object.
Args: name: Camera name (empty = active camera). target_name: Object to frame (empty = all visible). distance: Distance from target.
Inputs: name, distance, target_name.
set_collection_visibilityC
Toggle collection visibility in viewport.
Args: collection_name: Collection name. visible: Show or hide.
Inputs: collection_name (required), visible.
set_curve_fillB
Set curve fill mode.
Args: curve_name: Curve object name. fill: FULL, HALF, or NONE.
Inputs: curve_name (required), fill.
set_custom_normalsB
Set custom split normals for precise shading control.
Args: object_name: Target mesh object. normals: List of [x, y, z] normal vectors (one per loop). angle: Auto-smooth angle in radians.
Inputs: object_name (required), angle, normals.
set_custom_propertyA
Set a custom property on an object or bone.
Custom properties store user-defined data — useful for rig controls, material parameters, animation drivers, or any metadata.
Args: object_name: Target object (or empty if using bone). bone_name: Target bone (with armature_name). armature_name: Armature containing the bone. property_name: Name of the custom property. value: Property value. min_value: Minimum allowed value. max_value: Maximum allowed value. description: Property description.
Inputs: value, bone_name, max_value, min_value, +4 more.
set_fpsB
Set the scene frame rate.
Args: fps: Frames per second (1-1000).
Inputs: fps.
set_interpolationB
Set keyframe interpolation mode for an object's animation.
Args: object_name: Target object. interpolation: CONSTANT, LINEAR, BEZIER, etc. easing: AUTO, EASE_IN, EASE_OUT, EASE_IN_OUT.
Inputs: object_name (required), easing, interpolation.
set_keyframeC
Insert keyframes for an object.
Args: object_name: Target object. frame: Frame number (None = current frame). location: Keyframe location. rotation: Keyframe rotation. scale: Keyframe scale. property_name: Optional custom property to keyframe.
Inputs: object_name (required), frame, scale, location, +2 more.
set_material_propertyB
Set a property on a material's Principled BSDF node.
Args: material_name: Target material. property_name: Node input name (e.g., 'Base Color', 'Metallic', 'Roughness'). value: The value to set.
Inputs: value (required), material_name (required), property_name (required).
set_object_transformA
Set world/local transform of an object. Only provided channels are modified.
Args: name: Object name. location: [x, y, z] position. rotation: [x, y, z] Euler rotation in radians. scale: [x, y, z] scale factors. space: WORLD or LOCAL coordinate space.
Inputs: name (required), scale, space, location, +1 more.
set_object_visibilityB
Set object viewport and/or render visibility.
Args: name: Object name. visible: Viewport visibility. hide_render: Render visibility.
Inputs: name (required), visible, hide_render.
set_originB
Set the origin of an object.
Args: name: Object name. origin_type: GEOMETRY, CURSOR, CENTER_OF_MASS, or CENTER_OF_VOLUME.
Inputs: name (required), origin_type.
set_scene_propertyB
Set a scene-level property (e.g., frame_start, frame_end, fps, render_engine).
Args: property_name: The property to set (e.g., 'frame_start', 'render_resolution_x'). value: The value to set.
Inputs: value (required), property_name (required).
set_sculpt_symmetryB
Configure sculpt symmetry settings.
Args: axis_x: Mirror on X axis. axis_y: Mirror on Y axis. axis_z: Mirror on Z axis. mirror: Enable mirroring.
Inputs: axis_x, axis_y, axis_z, mirror.
set_shader_node_valueB
Set the value of a shader node input.
Args: material_name: Target material. node_name: Node name/label. value: Value to set.
Inputs: value (required), node_name (required), material_name (required).
set_shape_key_valueB
Set the value of a shape key to control morphing.
Args: object_name: Target mesh object. key_name: Name of the shape key. value: Morph value (0.0 = base, 1.0 = full morph).
Inputs: key_name (required), object_name (required), value.
set_studio_worldC
Set world background for studio environment.
Args: strength: Background strength (0.1 = subtle, 1.0 = bright). color: RGB background color.
Inputs: color, strength.
setup_camera_track_toA
Make a camera always point at a target object (Track To constraint).
Args: camera_name: Camera to constrain. target_name: Object to track.
Inputs: camera_name (required), target_name (required).
setup_compositorC
Set up compositing nodes for post-processing.
Creates Render Layers → [custom nodes] → Composite + Viewer.
Args: nodes: List of node dicts: [{"type": "CompositorNodeGlare", "settings": {"glare_type": "FOG_GLOW"}}]
Inputs: nodes.
setup_hdri_lightingB
Set up HDRI environment lighting.
Args: hdri_path: Path to HDRI file. If empty, uses a default gradient. strength: Environment strength. rotation: Rotation in radians.
Inputs: rotation, strength, hdri_path.
setup_ik_chainC
Set up an IK (Inverse Kinematics) chain.
Args: armature_name: Target armature. chain_bones: List of bone names in the chain. pole_target: Pole target object name.
Inputs: chain_bones (required), armature_name (required), pole_target.
setup_studio_3pointA
Set up 3-point studio lighting (key, fill, rim).
Works for products, characters, environments, portraits. Removes existing lights and creates optimized area lights.
Args: key_energy: Key light power in watts. fill_energy: Fill light power (typically 1/3 of key). rim_energy: Rim/back light power (typically 1/2 of key). key_color: RGB key light color. fill_color: RGB fill light color. rim_color: RGB rim light color. key_position: [x,y,z] position for key light. fill_position: [x,y,z] position for fill light. rim_position: [x,y,z] position for rim light. remove_existing: Remove existing lights first.
Inputs: key_color, rim_color, fill_color, key_energy, +6 more.
setup_studio_cameraA
Set up camera for studio rendering of any subject.
Positions camera at 3/4 angle (front + side visible), slightly above eye level. Uses 85-100mm focal length for natural proportions. f/8 for full sharpness, f/2.8 for bokeh.
Works for products, characters, environments, portraits, anything.
Args: target_name: Object to point camera at (empty = world origin). camera_name: Name for the camera object. focal_length: Lens focal length in mm (85-100 recommended). fstop: Aperture f-stop (8-11 for full sharpness, 2.8 for bokeh). distance: Camera distance from target in meters. height_offset: Camera height above target (0 = eye level). angle_offset: Horizontal angle (0 = front, 1 = side).
Inputs: fstop, distance, camera_name, target_name, +3 more.
setup_studio_lightingC
Set up preset studio lighting configurations.
Args: style: STUDIO, PORTRAIT, PRODUCT, DRAMATIC, or SOFT. key_energy: Key light power.
Inputs: style, key_energy.
setup_subdivision_animationC
Animate a subdivision surface modifier's viewport levels.
Args: object_name: Target object. modifier_name: Name of the subdivision modifier. start_level: Starting subdivision level. end_level: Ending subdivision level. start_frame: Start frame. end_frame: End frame.
Inputs: object_name (required), end_frame, end_level, start_frame, +2 more.
setup_turntable_cameraB
Set up a turntable camera animation (360-degree orbit).
Args: name: Camera name. target: [x, y, z] point to orbit around. distance: Orbit radius. height: Camera height. frames: Number of frames for one revolution.
Inputs: name, frames, height, target, +1 more.
setup_world_sky_textureB
Set up a procedural sky texture in the world environment.
Args: sky_type: NISHITA (physical sky), PREETHAM, or HOSEK_WILKIE. strength: Background strength. sun_elevation: Sun angle above horizon in degrees. sun_rotation: Sun rotation around zenith in degrees. air_density: Air density (NISHITA only). dust_density: Dust density (NISHITA only). ozone_density: Ozone density (NISHITA only).
Inputs: sky_type, strength, air_density, dust_density, +3 more.
set_vertex_colorA
Set color on vertices/loops of a color attribute.
Args: object_name: Target mesh object. attribute_name: Name of the color attribute. color: RGBA color [R, G, B, A] (0-1). indices: Specific loop/vertex indices to color. None = all.
Inputs: object_name (required), color, indices, attribute_name.
set_viewport_cameraC
Set the active viewport camera.
Args: camera_name: Camera to use. Empty string = auto.
Inputs: camera_name.
set_viewport_shadingC
Set viewport shading mode.
Args: mode: WIREFRAME, SOLID, MATERIAL, or RENDERED.
Inputs: mode.
shade_objectC
Set shading mode for an object.
Args: name: Object name. shading: FLAT or SMOOTH.
Inputs: name (required), shading.
smooth_verticesB
Smooth selected vertices.
Args: object_name: Target object. factor: Smoothing factor (0-1). iterations: Number of smoothing iterations.
Inputs: object_name (required), factor, iterations.
snap_to_cursorC
Snap an object's origin to the 3D cursor or a specific location.
Args: name: Object name. cursor_location: Optional [x, y, z] to set cursor first.
Inputs: name (required), cursor_location.
subdivide_meshB
Subdivide selected mesh geometry.
Args: object_name: Object name. cuts: Number of subdivision cuts. smooth: Smooth factor (0-1).
Inputs: object_name (required), cuts, smooth.
suggest_next_stepA
Analyze the current scene and suggest the next logical step.
Returns 1-3 concrete suggestions based on what's in the scene, what's missing, and common 3D workflows. Helps weak models stay on track without requiring them to plan ahead.
Inputs: no named parameters.
switch_sceneC
Switch to a different scene within the current .blend file.
Args: scene_name: Name of the scene to switch to.
Inputs: scene_name (required).
toggle_overlaysA
Toggle viewport overlays (grid, axes, selection outlines).
Args: show: True to show overlays, False to hide.
Inputs: show.
tri_to_quadC
Convert triangles to quads.
Args: object_name: Target object. angle_limit: Angle limit in radians.
Inputs: object_name (required), angle_limit.
uv_pack_islandsB
Pack UV islands to fill the UV space efficiently.
Args: object_name: Target object. margin: Margin between islands. rotate: Allow islands to rotate.
Inputs: object_name (required), margin, rotate.
uv_project_from_viewC
Project UVs from the current view or a specific direction.
Args: object_name: Target object. aspect_ratio: [width, height] aspect ratio. direction: VIEW, TOP, FRONT, or SIDE.
Inputs: object_name (required), direction, aspect_ratio.
uv_select_islandC
Select a UV island by index.
Args: object_name: Target object. island_index: Island index to select.
Inputs: object_name (required), island_index.
uv_smart_projectC
Smart UV project unwrap.
Args: object_name: Target mesh object. angle_limit: Angle limit in degrees. island_margin: Margin between islands.
Inputs: object_name (required), angle_limit, island_margin.
uv_unwrapC
UV unwrap selected faces.
Args: object_name: Target object. method: ANGLE_BASED or CONFORMAL.
Inputs: object_name (required), method.
wizard_archviz_interiorA
Create a complete architectural interior room in one call.
Sets up: walls, floor, ceiling, windows, door, furniture, materials, lighting, camera, and render settings. Fully furnished.
Args: room_width: Room width in meters. room_depth: Room depth in meters. room_height: Ceiling height in meters. wall_color: [R, G, B] wall paint color. floor_color: [R, G, B] floor color (wood tone). style: modern, minimalist, industrial, cozy, or scandinavian. render: Whether to render (CPU-heavy). Keep False for scene building. samples: Render samples if render=True (16-32 for preview). output_path: Where to save the render.
Inputs: style, render, samples, room_depth, +5 more.
wizard_batch_materialsA
Assign materials to multiple objects in one call.
Each assignment: {"object": "name", "material": "mat_name", "color": [r,g,b]} Creates materials if they don't exist.
Args: assignments: List of assignment dicts with object, material, and optional color.
Inputs: assignments (required).
wizard_character_basemeshA
Create a character basemesh with rig in one call.
Full body with correct proportions, edge loops at joints, mirror modifier. Optional humanoid armature with IK.
Args: height: Character height in meters. Default: 1.75m (average human). style: humanoid, creature, robot, or cartoon. gender: male, female, or neutral. subdivisions: Subdivision surface levels (0-3). add_armature: Whether to add a basic humanoid armature. render: Whether to render (CPU-heavy). Keep False for scene building. samples: Render samples if render=True (16-32 for preview). output_path: Optional file to save the .blend.
Inputs: style, gender, height, render, +4 more.
wizard_environmentA
Create a complete natural environment in one call.
Generates: terrain, vegetation, sky, lighting, and camera.
Args: env_type: forest, desert, ocean, mountain, meadow, or city. time_of_day: day, sunset, night, or dawn. density: Vegetation/object density (0-1). terrain_size: Terrain dimensions in meters. render: Whether to render (CPU-heavy). Keep False for scene building. samples: Render samples if render=True (16-32 for preview). output_path: Optional file to save the .blend.
Inputs: render, density, samples, env_type, +3 more.
wizard_material_presetA
Apply a complete PBR material preset to an object in one call.
Pre-configured recipes for common materials with correct roughness, metallic, and subsurface values.
Args: object_name: Target object. preset: metal, chrome, gold, wood, glass, plastic, concrete, fabric, leather, rubber, ceramic, marble, skin, emissive. color: Override base color [R, G, B]. None = preset default.
Inputs: object_name (required), color, preset.
wizard_product_shotA
Create a complete product photography scene in one call.
Sets up: product object, backdrop, 3-point lighting, camera, materials, render settings, and renders a preview. One tool call = finished shot.
Args: product_type: cube, sphere, cylinder, cone, torus, or a .glb/.obj/.fbx path product_color: [R, G, B] base color (0-1). Default: white. background_color: [R, G, B] backdrop color. Default: light gray. render: Whether to render (CPU-heavy). Keep False for scene building. samples: Render samples if render=True (16-32 for preview). output_path: Where to save the render. Empty = temp file.
Inputs: render, samples, output_path, product_type, +2 more.
wizard_quick_sceneA
Build a scene from a natural language description in one call.
Parses the description and creates objects, materials, lighting, and camera to match. Works best with simple, clear descriptions.
Args: description: Plain English description of the scene. render: Whether to render (CPU-heavy). Keep False for scene building. samples: Render samples if render=True (16-32 for preview). output_path: Where to save the render.
Inputs: render, samples, description, output_path.
wizard_scene_optimizeA
Optimize the entire scene for export or rendering in one call.
Applies modifiers, removes doubles, fixes normals, decimates if needed.
Args: apply_modifiers: Apply all modifiers on all mesh objects. merge_by_distance: Merge distance for doubles removal. 0 = skip. remove_loose: Remove loose vertices/edges. recalculate_normals: Recalculate all normals outward. decimate_ratio: Decimation ratio (0 = skip, 0.5 = halve poly count).
Inputs: remove_loose, decimate_ratio, apply_modifiers, merge_by_distance, +1 more.
wizard_studio_renderA
Create a professional studio render setup in one call.
Complete scene: subject, backdrop, lighting rig, camera, render settings. Multiple style presets available.
Args: subject_type: cube, sphere, cylinder, torus, or a file path (.glb/.obj/.fbx) subject_color: [R, G, B] subject color. preset: studio, portrait, dramatic, soft, or rim. resolution: LOW (800x600), MEDIUM (1920x1080), HIGH (3840x2160). render: Whether to render (CPU-heavy). Keep False for setup only. samples: Render samples if render=True (16-32 for preview). output_path: Where to save the render.
Inputs: preset, render, samples, resolution, +3 more.
wizard_turntableA
Create a turntable animation around the scene or a specific object.
Sets up camera orbit, lighting, and renders if requested.
Args: target_object: Object to orbit around. Empty = world origin. frames: Number of frames for full rotation. height: Camera height above target. distance: Camera distance from target. render: Whether to render the animation. output_path: Output directory for rendered frames.
Inputs: frames, height, render, distance, +2 more.
wizard_uv_unwrap_allA
UV unwrap all mesh objects in the scene in one call.
Smart project or lightmap unwrap for every mesh, with island packing.
Args: method: smart or lightmap. margin: UV island margin (0-1). fix_islands: Auto-fix flipped and overlapping islands.
Inputs: margin, method, fix_islands.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 209 tools
With 209 tools, there are many overlapping capabilities such as multiple render/screenshot tools (get_render_preview, render_preview, get_viewport_screenshot, get_viewport_screenshot_comparison), multiple material configuration tools (create_material, wizard_material_preset, configure_display_material, etc.), and multiple transform tools (set_object_transform, move_object, rotate_object, scale_object). While descriptions are detailed, the sheer volume makes tool selection error-prone, and some tools are nearly identical in purpose.
Naming is largely consistent with a verb_noun pattern (e.g., create_object, delete_object, set_object_transform) and common prefixes like batch_, wizard_, setup_, and list_. A few outliers such as suggest_next_step and auto_scene_report break the pattern, but overall naming is predictable and follows clear conventions.
209 tools is far beyond the typical well-scoped server (3-15 tools). Even for a complex application like Blender, this is excessive and will overwhelm agents, making tool selection costly and error-prone. The count severely impacts usability and efficiency.
The server covers an extensive range of Blender functionality: object lifecycle, transforms, materials, lighting, camera, animation, physics, sculpting, UV, geometry nodes, modifiers, constraints, collections, importing/exporting, and rendering. There are few obvious gaps, and many wizards provide high-level workflows, ensuring agents have all necessary operations.
Maintenance
Related MCP Connectors
Blender-as-a-service for agents: search 3D assets, run Blender Python, or brief the studio agent.
Connect your AI assistant to Blender for 3D modeling, Geometry Nodes, materials, lighting, animation, rendering and export. Inspect real scenes and viewport images, refine the result and restore checkpoints. OAuth connects your chat to Blender Bridge Desktop on an online Windows 10/11 x64 computer running Blender 4.2+. The chat can run on another device. Requires an active Blender Bridge account; 7-day trial available. AI model access is separate.
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
Cloud Blender for AI agents: build, inspect, render and animate 3D scenes over remote MCP. Keep editable .blend projects and export GLB or STL. Make your first 3D asset free—30 compute minutes per UTC month, no credit card. First 100 eligible Free account owners to use all 30 minutes in one UTC month by December 31, 2026 UTC receive one calendar month of beta free: 4 compute hours per UTC month, 2 concurrent workers per deployment, 2 deployments, 2048×2048 renders at up to 256 samples, and 10 GiB storage. Existing usage counts toward the 4-hour allowance. Limited to 100 rewards; expires January 1, 2027 00:00 UTC. Free resumes afterward without an automatic charge. Examples, eligibility and terms: https://sceneplane.online/launch?utm_source=glama&utm_medium=directory&utm_campaign=first100
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to control Blender 3D software through natural language commands, supporting object creation, manipulation, materials, rendering, and scene management with 22 tools organized across 6 categories.-
- AlicenseBqualityBmaintenanceEnables AI assistants to control Blender 3D software through natural language, with tools for modeling, materials, animation, rendering, and rigging.3818MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to fully control Blender through 50+ tools for 3D modeling, animation, materials, and scene management via HTTP endpoints.-
- FlicenseNot gradedqualityAmaintenanceEnables AI agents to inspect and modify live Blender scenes, manage objects and materials, render images, retrieve PolyHaven assets, and send prompts to configurable local or OpenAI-compatible LLM backends.-