blender-mcp
Provides 175 tools for controlling Blender across 25 domains including objects, materials, shader nodes, geometry nodes, modifiers, animation, rigging, physics, compositing, and more, enabling AI agents to interact with Blender scenes programmatically.
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 Create a cube and add a material with a blue color"
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.
Control Blender from Claude (or any MCP-compatible AI) using the Model Context Protocol. BlenderMCP connects to your running Blender instance over a local TCP socket — your machine, your scenes, your assets.
Unlike existing Blender MCP projects that rely on execute_blender_code as a catch-all, this project provides dedicated, typed tools for every major Blender subsystem: objects, materials, shader nodes, geometry nodes, modifiers, animation, rigging, physics, compositing, and more.
Status
All 175 tools implemented and integration-tested against Blender 4.2.5 LTS. Full handler coverage across all 25 domains.
Related MCP server: Blender MCP Server
Requirements
Python 3.10+
uv (recommended) or pip
Blender 4.0+ (for the addon)
Quick Start
# Clone and install
git clone https://github.com/kleer001/blender-mcp
cd blender-mcp
uv sync
# Run with mock Blender (no Blender needed)
uv run blender-mcp --mock
# Run against a real Blender instance
uv run blender-mcpBlender Addon Setup
Copy the
blender_addon/directory to your Blender addons path, or symlink itEnable Blender MCP in Blender → Edit → Preferences → Add-ons
In the 3D Viewport sidebar (N panel), find the MCP tab and click Start Server
Start the MCP server:
uv run blender-mcp
Claude Code
The .mcp.json in the repo root auto-configures Claude Code. Just run claude from the project directory.
Claude Desktop
{
"mcpServers": {
"blender-mcp": {
"command": "uv",
"args": ["run", "--directory", "/path/to/blender-mcp", "blender-mcp"]
}
}
}Architecture
AI Client (Claude, Cursor, ChatGPT)
│ MCP Protocol (stdio)
▼
MCP Server (src/blendermcp/)
│ TCP Socket (localhost:9334)
▼
Blender Addon (blender_addon/)
│ bpy API (main thread via timer queue)
▼
BlenderMCP Server — FastMCP-based, runs as a separate process, communicates via stdio
Blender Addon — TCP server inside Blender, dispatches commands to handlers on the main thread via
bpy.app.timersConnection — JSON over TCP with newline framing, exponential backoff reconnection
Available Tools (175)
Domain | Count | Tools |
Scene | 6 |
|
Objects | 12 |
|
Materials | 8 |
|
Shader Nodes | 12 |
|
Geometry Nodes | 10 |
|
Modifiers | 8 |
|
Animation | 10 |
|
Rigging | 10 |
|
Constraints | 6 |
|
Lighting | 7 |
|
Camera | 6 |
|
Mesh Editing | 8 |
|
Curves | 5 |
|
Physics | 10 |
|
Particles | 6 |
|
Compositing | 8 |
|
Sculpting | 4 |
|
Grease Pencil | 6 |
|
Textures & UV | 6 |
|
Viewport | 6 |
|
Rendering | 6 |
|
Collections | 5 |
|
Import/Export | 4 |
|
Code Execution | 2 |
|
Batch Operations | 4 |
|
Development
# Install with dev dependencies
uv sync
# Run tests (unit, no Blender needed)
uv run pytest tests/ --ignore=tests/integration -v
# Run integration tests (requires Blender at /opt/blender-4.2/blender)
uv run pytest tests/integration/ -v -m integration
# Run with mock (no Blender needed)
uv run blender-mcp --mock --debug
# Lint
uv run ruff check src/ tests/License
MIT
Available Tools
175 toolsadd_boneB
Add a bone to an armature. Head and tail are 3D positions.
Inputs: head (required), name (required), tail (required), object (required), +1 more. Returns: object
add_bone_constraintC
Add a constraint to a pose bone. Types: IK, COPY_ROTATION, COPY_LOCATION, LIMIT_ROTATION.
Inputs: bone (required), type (required), object (required), name. Returns: object
add_constraintC
Add a constraint. Types: COPY_LOCATION, COPY_ROTATION, COPY_SCALE, TRACK_TO, DAMPED_TRACK, LOCKED_TRACK, LIMIT_LOCATION, LIMIT_ROTATION, LIMIT_SCALE, IK, CHILD_OF, FLOOR, FOLLOW_PATH, CLAMP_TO.
Inputs: type (required), object (required), bone, name. Returns: object
add_gp_layerC
Add a layer to a grease pencil object.
Inputs: name (required), object (required). Returns: object
add_gp_modifierB
Add a GP modifier. Types: GP_THICK, GP_NOISE, GP_SMOOTH, GP_SUBDIV, GP_TINT, GP_OPACITY.
Inputs: type (required), object (required), name. Returns: object
add_modifierA
Add a modifier to an object. Common types: SUBSURF, BOOLEAN, ARRAY, MIRROR, SOLIDIFY, BEVEL, DECIMATE, SMOOTH, SHRINKWRAP, ARMATURE, CURVE, LATTICE.
Inputs: type (required), object (required), name. Returns: object
add_node_group_instanceC
Add an instance of an existing node group to a material.
Inputs: material (required), group_name (required), location. Returns: object
add_particle_systemB
Add a particle system. Types: EMITTER, HAIR.
Inputs: object (required), name, type. Returns: object
add_physicsC
Add a physics simulation. Types: RIGID_BODY, CLOTH, FLUID, SOFT_BODY, COLLISION.
Inputs: type (required), object (required). Returns: object
apply_modifierADestructive
Apply a modifier, baking it into the mesh. Requires Object Mode. Irreversible.
Inputs: object (required), modifier (required). Returns: object
apply_sculpt_maskC
Convert sculpt mask to a vertex group.
Inputs: object (required), vertex_group. Returns: object
apply_transformA
Apply (freeze) the object's transforms to mesh data. Resets the applied transforms to identity.
Inputs: name (required), scale, location, rotation. Returns: object
assign_materialA
Assign a material to an object. If slot is specified, replaces that slot; otherwise appends a new slot.
Inputs: object (required), material (required), slot. Returns: object
assign_vertex_weightsC
Assign vertex weights to a bone's vertex group.
Inputs: bone (required), object (required), vertices (required), weight. Returns: object
bake_particlesC
Bake particle simulation.
Inputs: object (required), system. Returns: object
bake_physicsC
Bake physics simulation. Long-running operation.
Inputs: object. Returns: object
batch_deleteADestructive
Delete multiple objects at once. Confirm required.
Inputs: objects (required), confirm. Returns: object
batch_set_propertyC
Set the same property on multiple objects at once.
Inputs: value (required), objects (required), property (required). Returns: object
camera_look_atB
Point a camera at a target object or world location.
Inputs: camera (required), target, location. Returns: object
capture_viewportARead-only
Capture a screenshot of the 3D viewport to a file. Returns the file path.
Inputs: filepath. Returns: object
clear_animationADestructive
Remove all animation data (keyframes, actions) from an object. Irreversible.
Inputs: object (required). Returns: object
clear_parentA
Clear an object's parent, keeping its world transform.
Inputs: name (required). Returns: object
connect_comp_nodesD
Connect compositor nodes.
Inputs: to_node (required), to_input (required), from_node (required), from_output (required). Returns: object
connect_geonodesC
Connect nodes in a geometry node tree.
Inputs: object (required), to_node (required), modifier (required), to_input (required), +2 more. Returns: object
connect_shader_nodesB
Connect an output socket to an input socket. Sockets can be specified by name or index.
Inputs: to_node (required), material (required), to_input (required), from_node (required), +1 more. Returns: object
convert_to_meshADestructive
Convert a curve object to a mesh. Loses curve editability.
Inputs: object (required). Returns: object
copy_modifiersB
Copy all modifiers from source object to target object.
Inputs: source (required), target (required). Returns: object
create_armatureB
Create an armature with an initial bone.
Inputs: name, location. Returns: object
create_cameraB
Create a camera with specified focal length.
Inputs: name, location, focal_length. Returns: object
create_collectionB
Create a new collection, optionally under a parent collection.
Inputs: name (required), parent. Returns: object
create_comp_nodeB
Add a compositor node. Common types: CompositorNodeRLayers, CompositorNodeComposite, CompositorNodeViewer, CompositorNodeMixRGB, CompositorNodeBlur, CompositorNodeGlare, CompositorNodeColorBalance, CompositorNodeBrightContrast, CompositorNodeHueSat.
Inputs: type (required), name, location. Returns: object
create_curveB
Create a curve object. Types: BEZIER, NURBS, POLY (path).
Inputs: name, type, location. Returns: object
create_geonodeB
Add a node to a geometry node tree. Common types: GeometryNodeMeshGrid, GeometryNodeMeshCube, GeometryNodeSetPosition, GeometryNodeTransform, GeometryNodeJoinGeometry, GeometryNodeInstanceOnPoints, GeometryNodeDistributePointsOnFaces.
Inputs: type (required), object (required), modifier (required), name, +1 more. Returns: object
create_geonodes_modifierC
Add a geometry nodes modifier. Creates a new tree or uses an existing one.
Inputs: object (required), name, tree_name. Returns: object
create_gp_strokeB
Create a stroke from point list. Each point: {co: [x,y,z], pressure: float, strength: float}.
Inputs: layer (required), object (required), points (required), frame. Returns: object
create_grease_pencilD
Create a grease pencil object.
Inputs: name, location. Returns: object
create_hdri_worldA
Set up HDRI environment lighting from an image file.
Inputs: filepath (required), strength. Returns: object
create_lightB
Create a light. Types: POINT, SUN, SPOT, AREA.
Inputs: name, type, color, energy, +1 more. Returns: object
create_light_rigB
Create a three-point lighting setup (key, fill, rim). Optionally aimed at a target object.
Inputs: target, key_energy, rim_energy, fill_energy. Returns: object
create_materialB
Create a new Principled BSDF material. base_color is [R, G, B, A] (0-1 range).
Inputs: name, metallic, roughness, base_color. Returns: object
create_node_groupC
Create a node group from selected nodes.
Inputs: nodes (required), material (required), name. Returns: object
create_objectA
Create a new object. Types: CUBE, SPHERE, CYLINDER, CONE, TORUS, PLANE, CIRCLE, GRID, MONKEY, UV_SPHERE, ICO_SPHERE, EMPTY. Returns the actual name assigned (may differ if name already exists).
Inputs: name, type, location. Returns: object
create_shader_nodeB
Add a shader node to a material. Common types: ShaderNodeBsdfPrincipled, ShaderNodeTexImage, ShaderNodeTexNoise, ShaderNodeMixRGB, ShaderNodeBump, ShaderNodeNormalMap, ShaderNodeMapping, ShaderNodeTexCoord, ShaderNodeValToRGB, ShaderNodeMath.
Inputs: type (required), material (required), name, location. Returns: object
create_uv_mapC
Add a UV map to a mesh object.
Inputs: object (required), name. Returns: object
create_vertex_groupA
Create a vertex group, optionally assigning vertices with a weight.
Inputs: name (required), object (required), weight, vertices. Returns: object
delete_collectionADestructive
Delete a collection. Objects in it become orphaned. Confirm required.
Inputs: name (required), confirm. Returns: object
delete_comp_nodeC
Remove a compositor node.
Inputs: node (required). Returns: object
delete_geonodeC
Remove a node from a geometry node tree.
Inputs: node (required), object (required), modifier (required). Returns: object
delete_keyframeC
Delete a keyframe at a specific frame.
Inputs: frame (required), object (required), data_path (required), index. Returns: object
delete_materialADestructive
Delete a material. Confirm required. Removes from all object slots.
Inputs: name (required), confirm. Returns: object
delete_objectADestructive
Delete an object by name. Confirm required.
Inputs: name (required), confirm. Returns: object
delete_shader_nodeB
Remove a node from a material's node tree.
Inputs: node (required), material (required). Returns: object
disconnect_geonodeB
Disconnect an input on a geometry node.
Inputs: node (required), input (required), object (required), modifier (required). Returns: object
disconnect_shader_nodeC
Disconnect an input socket on a node.
Inputs: node (required), input (required), material (required). Returns: object
duplicate_materialB
Duplicate a material. Returns the new material name.
Inputs: name (required), new_name. Returns: object
duplicate_objectB
Duplicate an object. If linked=True, the copy shares mesh data with the original.
Inputs: name (required), linked, new_name. Returns: object
enable_compositorA
Enable the compositor (use_nodes=True on scene).
Inputs: no named parameters. Returns: object
enter_sculpt_modeB
Switch an object to sculpt mode.
Inputs: object (required). Returns: object
evaluate_expressionARead-only
Evaluate a Python expression inside Blender and return the result. Safe for read-only queries like 'len(bpy.data.objects)' or 'bpy.context.mode'.
Inputs: expression (required). Returns: object
execute_pythonADestructive
Execute Python code inside Blender. Dangerous patterns are blocked by default. Use this only when no dedicated tool exists for the operation. Confirm required.
Inputs: code (required), confirm. Returns: object
export_fileB
Export the scene to a file. Format is auto-detected from extension if not specified.
Inputs: filepath (required), format. Returns: object
export_selectionB
Export only selected objects to a file.
Inputs: filepath (required), format. Returns: object
find_error_objectsARead-only
Find objects with issues: missing textures, broken modifiers, invalid references.
Inputs: no named parameters. Returns: object
find_objectsARead-only
Search for objects by name pattern (glob), type, material, or collection.
Inputs: type, material, collection, name_pattern. Returns: object
frame_allA
Frame the viewport to show all objects (Home key).
Inputs: no named parameters. Returns: object
frame_selectedA
Frame the viewport to show selected objects (Numpad .).
Inputs: no named parameters. Returns: object
free_physics_bakeBDestructive
Free baked physics simulation data. Irreversible.
Inputs: object. Returns: object
get_action_infoARead-only
Get info about an action: frame range, channels, keyframe count.
Inputs: name (required). Returns: object
get_armature_infoARead-only
Get armature info: bone hierarchy, bone count.
Inputs: object (required). Returns: object
get_bone_infoARead-only
Get bone info: head, tail, roll, parent, children, constraints.
Inputs: bone (required), object (required). Returns: object
get_compositor_treeARead-only
Get the compositor node tree structure.
Inputs: no named parameters. Returns: object
get_curve_infoARead-only
Get curve info: spline count, point count, dimensions, bevel settings.
Inputs: object (required). Returns: object
get_geonode_inputCRead-only
Get a geometry node input's current value.
Inputs: node (required), input (required), object (required), modifier (required). Returns: object
get_geonodes_treeBRead-only
Get the geometry node tree structure: nodes, links, inputs.
Inputs: object (required), modifier. Returns: object
get_gp_infoBRead-only
Get grease pencil info: layers, frames, stroke count.
Inputs: object (required). Returns: object
get_keyframesARead-only
Get keyframes on an object, optionally filtered to a specific data_path (e.g., 'location', 'rotation_euler').
Inputs: object (required), data_path. Returns: object
get_material_infoARead-only
Get material settings: base color, metallic, roughness, node tree summary.
Inputs: name (required). Returns: object
get_mesh_infoARead-only
Get mesh info: vertex/edge/face count, UV maps, vertex groups, has_custom_normals.
Inputs: object (required). Returns: object
get_node_inputCRead-only
Get a node input's current default value.
Inputs: node (required), input (required), material (required). Returns: object
get_node_treeARead-only
Get the full shader node tree: nodes, links, input values.
Inputs: material (required). Returns: object
get_object_infoARead-only
Get detailed info about an object: type, transforms, modifiers, materials, parent, collections.
Inputs: name (required). Returns: object
get_particle_infoCRead-only
Get particle system settings.
Inputs: object (required), system. Returns: object
get_physics_infoBRead-only
Get physics settings on an object.
Inputs: object (required). Returns: object
get_render_settingsARead-only
Get render settings: engine, resolution, samples, output path, file format.
Inputs: no named parameters. Returns: object
get_scene_infoARead-only
Get current scene metadata: name, frame range, FPS, render engine, object/material counts.
Inputs: no named parameters. Returns: object
get_uv_mapsBRead-only
Get UV maps on a mesh object.
Inputs: object (required). Returns: object
get_vertex_groupsARead-only
Get vertex groups on a mesh with member counts.
Inputs: object (required). Returns: object
get_verticesARead-only
Get vertex positions. Optionally filter by vertex group. Limited to avoid huge payloads.
Inputs: object (required), group, limit. Returns: object
get_viewport_infoARead-only
Get viewport settings: shading mode, overlays, camera, clip distances.
Inputs: no named parameters. Returns: object
get_world_infoARead-only
Get current world/environment shader settings.
Inputs: no named parameters. Returns: object
import_fileA
Import a file into the scene. Supported formats: FBX, OBJ, GLTF/GLB, USD, Alembic, STL, PLY, SVG, DAE. Format is auto-detected from extension if not specified.
Inputs: filepath (required), format. Returns: object
join_meshesADestructive
Join multiple mesh objects into one. The first object becomes the active/target. Destroys source objects.
Inputs: objects (required). Returns: object
layout_node_treeC
Auto-arrange nodes in a material's node tree.
Inputs: material (required). Returns: object
list_actionsARead-only
List all actions in the blend file.
Inputs: no named parameters. Returns: object
list_bone_constraintsBRead-only
List constraints on a pose bone.
Inputs: bone (required), object (required). Returns: object
list_camerasARead-only
List all cameras with their settings.
Inputs: no named parameters. Returns: object
list_collectionsARead-only
List all collections with child counts, object counts, and visibility.
Inputs: no named parameters. Returns: object
list_comp_node_typesARead-only
List available compositor node types.
Inputs: no named parameters. Returns: object
list_constraintsBRead-only
List constraints on an object or pose bone.
Inputs: object (required), bone. Returns: object
list_geonode_typesARead-only
List available geometry node types for the current Blender version.
Inputs: no named parameters. Returns: object
list_imagesARead-only
List all images in the blend file.
Inputs: no named parameters. Returns: object
list_lightsARead-only
List all lights in the scene with type and settings.
Inputs: no named parameters. Returns: object
list_materialsARead-only
List all materials in the blend file with user counts.
Inputs: no named parameters. Returns: object
list_modifiersARead-only
List all modifiers on an object with their type and settings.
Inputs: object (required). Returns: object
list_objectsARead-only
List all objects in the scene. Optionally filter by type (MESH, CAMERA, LIGHT, EMPTY, etc.).
Inputs: type. Returns: object
list_render_enginesARead-only
List available render engines.
Inputs: no named parameters. Returns: object
list_shader_node_typesARead-only
List available shader node types.
Inputs: no named parameters. Returns: object
list_supported_formatsARead-only
List supported import and export file formats.
Inputs: no named parameters. Returns: object
load_fileADestructive
Load a .blend file. This replaces the current scene — confirm to proceed.
Inputs: filepath (required), confirm. Returns: object
load_imageB
Load an image from file into the blend file.
Inputs: filepath (required), name. Returns: object
move_modifierB
Move a modifier up or down in the stack. Direction: UP or DOWN.
Inputs: object (required), modifier (required), direction (required). Returns: object
move_to_collectionA
Move an object to a collection (removes from current collections).
Inputs: object (required), collection (required). Returns: object
pack_imagesA
Pack all external images into the blend file.
Inputs: no named parameters. Returns: object
parent_mesh_to_armatureC
Parent a mesh to an armature. Mode: AUTOMATIC (auto weights), EMPTY (no weights).
Inputs: mesh (required), armature (required), mode. Returns: object
pingARead-only
Check if the Blender addon is reachable and return version info.
Inputs: no named parameters. Returns: object
playback_controlA
Control animation playback: PLAY, PAUSE, STOP.
Inputs: action (required). Returns: object
remeshC
Remesh an object. Modes: VOXEL, QUAD (quadriflow).
Inputs: object (required), mode, voxel_size. Returns: object
remove_constraintB
Remove a constraint by name.
Inputs: object (required), constraint (required), bone. Returns: object
remove_materialA
Remove a material slot from an object by slot index.
Inputs: object (required), slot. Returns: object
remove_modifierB
Remove a modifier from an object by name.
Inputs: object (required), modifier (required). Returns: object
remove_particle_systemC
Remove a particle system by name.
Inputs: name (required), object (required). Returns: object
remove_physicsC
Remove physics from an object.
Inputs: type (required), object (required). Returns: object
rename_objectA
Rename an object. Returns the actual name assigned (may be auto-incremented).
Inputs: name (required), new_name (required). Returns: object
render_animationA
Render the full animation frame range. This is a long-running operation.
Inputs: no named parameters. Returns: object
render_imageA
Render the current frame to an image file. Uses scene output path if filepath not specified.
Inputs: filepath. Returns: object
render_viewportB
Render the viewport (OpenGL render) to a file.
Inputs: filepath. Returns: object
reorder_constraintB
Move a constraint up or down. Direction: UP or DOWN.
Inputs: object (required), direction (required), constraint (required), bone. Returns: object
save_fileA
Save the current scene. If filepath is provided, save-as to that path.
Inputs: filepath. Returns: object
select_objectsA
Select objects by name list, glob pattern, or type. Deselects others by default.
Inputs: type, names, pattern, deselect_others. Returns: object
separate_meshB
Separate mesh into multiple objects. Modes: LOOSE (by loose parts), MATERIAL (by material), SELECTED.
Inputs: object (required), mode. Returns: object
set_active_cameraAIdempotent
Set the active scene camera.
Inputs: name (required). Returns: object
set_bone_propertyBIdempotent
Set a bone property: roll, envelope_distance, head, tail, use_connect.
Inputs: bone (required), value (required), object (required), property (required). Returns: object
set_camera_propertyBIdempotent
Set camera property: focal_length, sensor_width, clip_start, clip_end, dof_use, dof_focus_distance, dof_aperture_fstop.
Inputs: name (required), value (required), property (required). Returns: object
set_collection_visibilityAIdempotent
Set collection visibility in viewport and/or render.
Inputs: name (required), render, viewport. Returns: object
set_comp_node_inputCIdempotent
Set a compositor node input value.
Inputs: node (required), input (required), value (required). Returns: object
set_constraint_influenceBIdempotent
Set constraint influence (0.0 to 1.0).
Inputs: object (required), influence (required), constraint (required), bone. Returns: object
set_constraint_propertyCIdempotent
Set a constraint property. Common: target, subtarget, influence, axis.
Inputs: value (required), object (required), property (required), constraint (required), +1 more. Returns: object
set_curve_pointsA
Set control point positions on a spline. Each entry: {co: [x,y,z], handle_left: [x,y,z], handle_right: [x,y,z]} for Bezier, or {co: [x,y,z,w]} for NURBS/Poly.
Inputs: object (required), points (required), spline_index (required). Returns: object
set_curve_propertyBIdempotent
Set curve property: bevel_depth, bevel_resolution, extrude, dimensions (2D/3D), resolution_u, fill_mode.
Inputs: value (required), object (required), property (required). Returns: object
set_frameCIdempotent
Set the current frame.
Inputs: frame (required). Returns: object
set_frame_rangeCIdempotent
Set the scene frame range (start and/or end frame).
Inputs: end, start. Returns: object
set_geonode_inputCIdempotent
Set a geometry node input's default value.
Inputs: node (required), input (required), value (required), object (required), +1 more. Returns: object
set_geonodes_inputAIdempotent
Set a modifier-level input (Group Input interface value).
Inputs: value (required), object (required), modifier (required), input_name (required). Returns: object
set_gp_layer_propertyAIdempotent
Set a GP layer property: color, opacity, thickness, use_lights.
Inputs: layer (required), value (required), object (required), property (required). Returns: object
set_interpolationAIdempotent
Set keyframe interpolation for all keyframes on a channel. Types: BEZIER, LINEAR, CONSTANT.
Inputs: object (required), data_path (required), interpolation. Returns: object
set_keyframeC
Insert a keyframe on an object property at a specific frame. Use index for individual channels (0=X, 1=Y, 2=Z), or -1 for all channels.
Inputs: frame (required), object (required), data_path (required), index, +1 more. Returns: object
set_keyframesA
Batch insert multiple keyframes. Each entry: {frame: int, value: float|list}. More efficient than calling set_keyframe repeatedly.
Inputs: object (required), data_path (required), keyframes (required). Returns: object
set_light_propertyAIdempotent
Set a light property: energy, color, shadow_soft_size, spot_size, spot_blend, use_shadow, size (area light).
Inputs: name (required), value (required), property (required). Returns: object
set_material_propertyAIdempotent
Set a Principled BSDF property. Properties: base_color, metallic, roughness, specular, transmission, emission_color, emission_strength, alpha, normal_strength.
Inputs: value (required), material (required), property (required). Returns: object
set_modifier_propertyBIdempotent
Set a modifier property. Property names are Blender API names (e.g., 'levels' for SUBSURF, 'count' for ARRAY, 'operation' for BOOLEAN).
Inputs: value (required), object (required), modifier (required), property (required). Returns: object
set_node_inputBIdempotent
Set a node input's default value (color, float, vector).
Inputs: node (required), input (required), value (required), material (required). Returns: object
set_node_positionCIdempotent
Set a node's position in the editor.
Inputs: node (required), location (required), material (required). Returns: object
set_originB
Set an object's origin point. Types: ORIGIN_GEOMETRY, ORIGIN_CENTER_OF_MASS, ORIGIN_CENTER_OF_VOLUME, ORIGIN_CURSOR, GEOMETRY_ORIGIN.
Inputs: name (required), type. Returns: object
set_parentC
Set parent-child relationship between objects.
Inputs: child (required), parent (required). Returns: object
set_particle_propertyAIdempotent
Set a particle system property: count, lifetime, emit_from, physics_type, size.
Inputs: value (required), object (required), system (required), property (required). Returns: object
set_physics_propertyAIdempotent
Set a physics property. E.g., type=RIGID_BODY, property=mass, value=5.0.
Inputs: type (required), value (required), object (required), property (required). Returns: object
set_playback_rangeCIdempotent
Set the preview/playback range.
Inputs: end (required), start (required). Returns: object
set_pose_bone_transformAIdempotent
Set a pose bone's transform (location and/or rotation in pose space).
Inputs: bone (required), object (required), location, rotation. Returns: object
set_render_settingsCIdempotent
Configure render settings. Engine: CYCLES, BLENDER_EEVEE_NEXT, BLENDER_WORKBENCH. File format: PNG, JPEG, EXR, TIFF. Color mode: BW, RGB, RGBA.
Inputs: engine, samples, filepath, color_mode, +5 more. Returns: object
set_sculpt_brushCIdempotent
Set the active sculpt brush and settings. Brushes: DRAW, CLAY, CLAY_STRIPS, INFLATE, GRAB, SMOOTH, FLATTEN, PINCH, CREASE, SCRAPE.
Inputs: brush (required), radius, strength. Returns: object
set_smooth_shadingAIdempotent
Set shading mode. smooth=True for smooth shading, False for flat. auto_smooth uses angle threshold (radians).
Inputs: object (required), angle, smooth, auto_smooth. Returns: object
set_transformAIdempotent
Set an object's location, rotation (radians), and/or scale.
Inputs: name (required), scale, location, rotation. Returns: object
setup_basic_compositeB
Template: Create Render Layers -> Composite + Viewer setup.
Inputs: no named parameters. Returns: object
setup_camera_dofB
Configure depth of field on a camera. Focus on an object or at a specific distance.
Inputs: camera (required), fstop, focus_object, focus_distance. Returns: object
setup_cloth_simB
Template: Set up cloth simulation with optional pinning vertex group.
Inputs: object (required), pin_group. Returns: object
setup_fluid_domainB
Template: Set up fluid simulation with domain and optional emitter.
Inputs: domain (required), emitter. Returns: object
setup_hairC
Template: Set up hair particles with children and physics.
Inputs: object (required), count, length. Returns: object
setup_rigid_body_worldC
Configure the rigid body world and collection.
Inputs: collection. Returns: object
setup_softbodyC
Template: Set up softbody simulation.
Inputs: object (required). Returns: object
set_verticesA
Set vertex positions. Each entry: {index: int, co: [x, y, z]}.
Inputs: object (required), vertices (required). Returns: object
set_viewport_cameraAIdempotent
Set the active camera for the viewport. Pass camera object name, or None for default.
Inputs: camera. Returns: object
set_viewport_shadingAIdempotent
Set viewport shading mode: WIREFRAME, SOLID, MATERIAL, RENDERED.
Inputs: mode (required). Returns: object
set_world_propertyBIdempotent
Set world/environment property: color, strength.
Inputs: value (required), property (required). Returns: object
smart_uv_projectB
Auto UV unwrap using smart project. Angle limit in radians (default ~66 degrees).
Inputs: object (required), angle_limit. Returns: object
toggle_modifier_visibilityBIdempotent
Toggle modifier visibility in viewport and/or render.
Inputs: object (required), modifier (required), render, viewport. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 175 tools
The vast majority of tools target distinct domains (objects, materials, cameras, modifiers, nodes, etc.) with clear action-resource pairs. However, a few tools like execute_python vs evaluate_expression and set_frame_range vs set_playback_range could cause confusion, though descriptions clarify their intents.
Tool names overwhelmingly follow a verb_noun snake_case pattern (list_objects, create_material, set_transform, delete_object), making navigation predictable. Minor deviations include 'ping', 'remesh', 'playback_control' and the adjective-initial 'smart_uv_project', which break strict consistency but remain readable.
With 175 tools, this server is drastically over-scaled for any agent to effectively choose from, far exceeding the 50+ threshold for extreme mismatch. Even for a comprehensive application like Blender, the tool surface should be partitioned into several smaller, purpose-specific servers.
The server covers an impressively wide range of Blender functionality, including objects, materials, lighting, animation, physics, nodes, armatures, and particles. However, notable lifecycle gaps exist, such as no mode-switching tool, no rename/material/action/image operations, no action deletion, and no way to delete UV maps or vertex groups, forcing reliance on escape hatches like execute_python.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Generate game-ready 3D models, textures, and audio from natural language, over MCP.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Make games with AI: one MCP server that connects your agent to Unity, Unreal and Godot editors.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA server that integrates Blender with local AI models via the Model Context Protocol, allowing users to control Blender using natural language prompts for 3D modeling tasks.123MIT
- AlicenseNot gradedqualityCmaintenanceTransforms Blender into an MCP server with 50+ tools for AI-driven 3D workflows, enabling complete control over objects, materials, animations, physics simulations, and rendering through natural language commands.45MIT
- AlicenseBqualityDmaintenanceAn MCP server that enables AI models to directly control Blender for 3D modeling, scene manipulation, and material management through natural language. It supports advanced workflows including Python code execution, viewport visualization, and integration with external asset libraries like Poly Haven and Hyper3D.221MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables AI agents to control Blender through natural language for 3D scene creation, animation, and rendering. It provides over 550 actions and direct Python execution via a bridge to a live local Blender session.7MIT