Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_scene_infoA

Get full scene information including object tree, hierarchy, counts, frame range, fps, and render engine.

Returns a dict with scene name, object list with hierarchy, object type counts, frame range (start, end, current), fps, and active render engine.

set_scene_propertyB

Set a scene property such as frame_start, frame_end, frame_current, fps, unit_system, or render_engine.

Args: property: The scene property to set. Must be one of: frame_start, frame_end, frame_current, frame_step, fps, unit_system, render_engine, use_gravity, gravity. value: The value to set the property to. Type depends on the property.

Returns: Confirmation dict with the property name and new value.

list_scenesA

List all scenes in the current Blender file.

Returns a list of dicts, each containing the scene name and object count.

create_sceneB

Create a new scene.

Args: name: Name for the new scene.

Returns: Confirmation dict with the created scene name.

delete_sceneA

Delete a scene by name.

Args: name: Name of the scene to delete. Cannot delete the last remaining scene.

Returns: Confirmation dict.

suggest_extensionsA

Suggest helpful Blender extensions for a planned task.

Analyzes the task description and recommends free Blender extensions that could improve the workflow. Already-installed extensions are excluded.

Args: task_description: Description of the planned task. If empty, returns all extensions not currently installed.

Returns: Dict with 'suggestions' list of recommended extensions and 'installed' list of already-installed extension IDs.

create_objectA

Create a primitive object in the scene.

Args: type: Primitive type. One of: CUBE, SPHERE, UV_SPHERE, ICO_SPHERE, CYLINDER, CONE, TORUS, PLANE, CIRCLE, MONKEY, EMPTY. name: Optional name for the object. Auto-generated if empty. location: XYZ position as a 3-element list/tuple. Defaults to origin. rotation: XYZ Euler rotation in radians as a 3-element list/tuple. scale: XYZ scale as a 3-element list/tuple. Defaults to (1,1,1).

Returns: Dict with the created object's name, type, and location.

create_polygon_prismA

Create an N-sided regular prism (polygon-based cylinder).

Useful for hex sockets, octagonal columns, triangular prisms, or any straight-sided geometry where a 32-sided round cylinder is the wrong primitive. For a hex socket cutter on an M3 button-head screw, use sides=6.

Args: sides: Number of sides for the polygon base. Range: 3-64. radius: Circumscribed radius (center to vertex). Must be > 0. depth: Height of the prism along its Z axis. Must be > 0. name: Optional name for the object. Auto-generated if empty. location: XYZ position as a 3-element list/tuple. Defaults to origin. rotation: XYZ Euler rotation in radians as a 3-element list/tuple. scale: XYZ scale as a 3-element list/tuple. Defaults to (1,1,1).

Returns: Dict with the created object's name, type, location, and sides.

create_threaded_shaftA

Create a cylindrical shaft with helical external threads.

Produces a single mesh object — a threaded rod at the given diameter and length, with helical thread ridges following the specified pitch. Suitable for boolean-union onto a screw-head or direct use as a threaded fastener.

Thread geometry: a 60-degree V profile swept along a Z-axis helix via the Screw modifier.

Args: diameter: Major diameter of the shaft (outer thread peaks). Must be > 0. length: Axial length of the shaft (under-head length, like real fastener spec). Must be > 0. pitch: Distance between thread peaks along the axis. Must be > 0 and <= length. thread_depth: Radial depth of the thread (major radius - minor radius). If 0 (default), auto-computed as pitch * 0.54. segments: Rotational resolution of the helix (steps per revolution). Range: 3-256. Higher = smoother helix, more geometry. thread_runout: Smooth (unthreaded) region at the top of the shaft. Defaults to 0 (full-length threads) — gives the strongest print because threads under the head form a continuous stress path. Leaving a smooth runout creates a thin-walled neck at minor_r that snaps under torque in FDM prints. Pass a positive value only if a head's deep hex socket would otherwise reach thread peaks. name: Optional name for the object. Auto-generated if empty. location: XYZ position of the shaft base as a 3-element list/tuple.

Returns: Dict with the created object's name, diameter, length, pitch, and the number of thread iterations actually generated.

delete_objectB

Delete an object from the scene by name.

Args: name: Name of the object to delete.

Returns: Confirmation dict.

duplicate_objectA

Duplicate an object.

Args: name: Name of the object to duplicate. linked: If True, create a linked duplicate (shares mesh data). Defaults to False.

Returns: Dict with the new object's name.

rename_objectC

Rename an object.

Args: old_name: Current name of the object. new_name: New name for the object.

Returns: Dict with old and new names.

select_objectsA

Select objects by name.

Args: names: List of object names to select. deselect_others: If True, deselect all other objects first. Defaults to True.

Returns: Dict with list of selected object names.

get_object_infoA

Get detailed information about an object.

Args: name: Name of the object.

Returns: Dict with type, location, rotation, scale, modifiers, materials, parent, children, and visibility info.

list_objectsA

List all objects in the scene, optionally filtered by type.

Args: type_filter: Filter by object type (e.g., MESH, LIGHT, CAMERA, EMPTY). Empty string returns all objects.

Returns: List of dicts with object name, type, and location.

set_object_visibilityA

Set object visibility in viewport and/or render.

Args: name: Name of the object. visible: Whether the object should be visible. viewport: Apply visibility change to viewport. Defaults to True. render: Apply visibility change to render. Defaults to True.

Returns: Confirmation dict with visibility state.

parent_objectsB

Set parent-child relationship between two objects.

Args: child: Name of the child object. parent: Name of the parent object.

Returns: Confirmation dict.

join_objectsA

Join multiple mesh objects into one (keeps all geometry as-is).

This merges objects into a single datablock without modifying geometry. The meshes remain separate inside the object (no boolean merge).

TIP: If you want to truly fuse overlapping meshes into one solid shape, use booltool_auto_union instead — it performs a boolean union that merges the geometry and removes internal faces.

Args: names: List of object names to join. The first name becomes the active object.

Returns: Dict with the resulting joined object name.

set_originA

Set the origin point of an object.

Args: object_name: Name of the object. type: Origin type. One of: ORIGIN_GEOMETRY, ORIGIN_CURSOR, ORIGIN_CENTER_OF_MASS, ORIGIN_CENTER_OF_VOLUME, GEOMETRY_ORIGIN.

Returns: Confirmation dict.

convert_objectA

Convert an object to a different type.

Args: object_name: Name of the object to convert. target: Target type. One of: MESH, CURVE, SURFACE, META, FONT, CURVES, POINTCLOUD, GPENCIL.

Returns: Confirmation dict.

shade_auto_smoothA

Apply angle-based auto-smooth shading to an object.

Smooths faces only where the angle between adjacent face normals is below the given threshold, giving clean results on hard-surface models.

Args: object_name: Name of the mesh object. angle: Auto-smooth angle threshold in radians (0.0 to pi). Defaults to ~30 degrees (0.523599 rad).

Returns: Confirmation dict.

make_single_userB

Make an object's data single-user (unlink shared datablocks).

Args: object_name: Name of the object. object: Make the object single-user. Defaults to True. data: Make the object data (e.g., mesh) single-user. Defaults to True.

Returns: Confirmation dict.

set_locationA

Set the position of an object.

Args: name: Name of the object. location: XYZ position as a 3-element list/tuple.

Returns: Dict with the object name and new location.

set_rotationA

Set the rotation of an object.

Args: name: Name of the object. rotation: Rotation values. For EULER mode, XYZ angles in radians (3 elements). For QUATERNION mode, WXYZ values (4 elements). mode: Rotation mode, either EULER or QUATERNION. Defaults to EULER.

Returns: Dict with the object name and new rotation.

set_scaleA

Set the scale of an object.

Args: name: Name of the object. scale: XYZ scale as a 3-element list/tuple.

Returns: Dict with the object name and new scale.

apply_transformsA

Apply (freeze) transforms on an object, making current transforms the new basis.

Args: name: Name of the object. location: Apply location transform. Defaults to True. rotation: Apply rotation transform. Defaults to True. scale: Apply scale transform. Defaults to True.

Returns: Confirmation dict.

snap_to_gridB

Snap an object's location to the nearest grid point.

Args: name: Name of the object. grid_size: Size of the grid cells. Defaults to 1.0.

Returns: Dict with the object name and snapped location.

add_modifierA

Add a modifier to a mesh object (non-destructive workflow).

TIP: For BOOLEAN type, consider using booltool_auto_union/difference/intersect/slice instead — they apply the boolean immediately and handle cutter cleanup automatically. Only use add_modifier with BOOLEAN when you want a non-destructive modifier stack.

Args: object_name: Name of the object to add the modifier to. modifier_type: Type of modifier. Must be one of: SUBSURF, MIRROR, ARRAY, BEVEL, BOOLEAN, SOLIDIFY, DECIMATE, REMESH, WIREFRAME, SHRINKWRAP, SMOOTH, EDGE_SPLIT, TRIANGULATE, WEIGHTED_NORMAL, SIMPLE_DEFORM, LATTICE, CURVE, CAST, WAVE, DISPLACE, SCREW, SKIN, MASK, WELD, CORRECTIVE_SMOOTH, LAPLACIAN_SMOOTH, SURFACE_DEFORM, MESH_DEFORM, HOOK. name: Optional custom name for the modifier.

Returns: Confirmation dict with modifier details.

remove_modifierB

Remove a modifier from an object.

Args: object_name: Name of the object. modifier_name: Name of the modifier to remove.

Returns: Confirmation dict.

apply_modifierC

Apply a modifier to an object, making its effect permanent.

Args: object_name: Name of the object. modifier_name: Name of the modifier to apply.

Returns: Confirmation dict.

set_modifier_propertyB

Set a property on a modifier (e.g., levels, count, offset, angle).

Args: object_name: Name of the object. modifier_name: Name of the modifier. property: The modifier property to set (e.g., 'levels', 'count', 'width', 'segments', 'angle', 'offset', 'ratio', 'iterations'). value: The value to set.

Returns: Confirmation dict with updated property.

boolean_operationA

Perform a boolean operation between two objects using a modifier.

NOTE: For destructive booleans, prefer the booltool_auto_* tools instead (booltool_auto_union, booltool_auto_difference, booltool_auto_intersect, booltool_auto_slice). They handle selection and cutter cleanup automatically. Use this tool only when you need a non-destructive boolean modifier workflow.

Args: object_name: Name of the object to apply the boolean to. target_name: Name of the target/cutter object. operation: Boolean operation type. One of: UNION, DIFFERENCE, INTERSECT.

Returns: Confirmation dict with operation details.

subdivide_meshA

Subdivide a mesh.

Args: object_name: Name of the mesh object to subdivide. cuts: Number of cuts per edge. Range: 1-100.

Returns: Confirmation dict.

extrude_facesB

Extrude all faces of a mesh along their normals.

Args: object_name: Name of the mesh object. offset: Extrusion distance along face normals.

Returns: Confirmation dict.

bevel_edgesA

Bevel all edges of a mesh.

Args: object_name: Name of the mesh object. width: Bevel width. segments: Number of bevel segments. Range: 1-100.

Returns: Confirmation dict.

loop_cutA

Add loop cuts to a mesh object.

Args: object_name: Name of the mesh object. cuts: Number of loop cuts. Range: 1-100.

Returns: Confirmation dict.

set_smooth_shadingA

Set smooth or flat shading on an object.

TIP: For production use, prefer shade_auto_smooth which provides angle-based auto-smooth shading — it gives better results on hard-surface models by only smoothing faces within the angle threshold.

Args: object_name: Name of the mesh object. smooth: True for smooth shading, False for flat shading.

Returns: Confirmation dict.

merge_verticesA

Merge vertices by distance.

Args: object_name: Name of the mesh object. threshold: Maximum distance between vertices to merge. Range: 0.0-10.0.

Returns: Confirmation dict with number of removed vertices.

separate_meshC

Separate a mesh into parts.

Args: object_name: Name of the mesh object. type: Separation method. One of: SELECTED, MATERIAL, LOOSE.

Returns: Confirmation dict.

bridge_edge_loopsA

Bridge two edge loops to create connecting geometry.

Select two edge loops on a mesh before calling this. The operation creates faces connecting the two loops, useful for connecting separate mesh parts, creating holes between surfaces, or building tube-like geometry.

Args: object_name: Name of the mesh object with selected edge loops. segments: Number of segments in the bridge. Range: 1-1000. profile_shape_factor: Shape of the bridge profile. Range: -1.0 to 1.0. 0.0 is straight, positive values bulge outward, negative inward.

Returns: Confirmation dict with bridge details.

create_materialC

Create a new material with a Principled BSDF shader node.

Args: name: Name for the new material.

Returns: Confirmation dict with the created material name.

assign_materialC

Assign a material to an object.

Args: object_name: Name of the target object. material_name: Name of the material to assign.

Returns: Confirmation dict.

set_material_colorB

Set the base color of a material's Principled BSDF node.

Args: material_name: Name of the material. color: RGBA color as a list of 4 floats (0.0-1.0). e.g. [1.0, 0.0, 0.0, 1.0] for red.

Returns: Confirmation dict.

set_material_propertyA

Set a property on a material's Principled BSDF node.

Args: material_name: Name of the material. property: Property to set. One of: metallic, roughness, specular_ior_level, emission_strength, alpha, transmission_weight, ior, coat_weight, coat_roughness, sheen_weight, sheen_roughness, anisotropic, anisotropic_rotation, subsurface_weight, emission_color. value: The value to set. Float for most properties, list for color properties.

Returns: Confirmation dict.

create_principled_materialA

Create a fully configured Principled BSDF material in one call.

Args: name: Name for the new material. color: Base color as RGBA list, default [0.8, 0.8, 0.8, 1.0]. metallic: Metallic value 0.0-1.0, default 0.0. roughness: Roughness value 0.0-1.0, default 0.5. specular: Specular IOR level 0.0-1.0, default 0.5. emission_strength: Emission strength, default 0.0. emission_color: Emission color as RGBA list, default [1.0, 1.0, 1.0, 1.0]. alpha: Alpha value 0.0-1.0, default 1.0. transmission: Transmission weight 0.0-1.0, default 0.0. ior: Index of refraction, default 1.45.

Returns: Confirmation dict with material name and all set properties.

add_texture_nodeA

Add an image texture node to a material and connect it to the Principled BSDF Base Color.

Args: material_name: Name of the material. image_path: Absolute path to the image file. Must exist on disk. label: Label for the texture node, default "Image Texture".

Returns: Confirmation dict.

set_material_blend_modeA

Set the blend mode of a material (EEVEE).

Args: material_name: Name of the material. mode: Blend mode. One of: OPAQUE, CLIP, HASHED, BLEND.

Returns: Confirmation dict.

list_materialsA

List all materials in the current Blender file.

Returns: List of dicts with material name and user count.

delete_materialC

Delete a material by name.

Args: material_name: Name of the material to delete.

Returns: Confirmation dict.

duplicate_materialB

Duplicate a material with a new name.

Args: material_name: Name of the material to duplicate. new_name: Name for the duplicated material.

Returns: Confirmation dict with the new material name.

add_shader_nodeA

Add a shader node to a material's node tree.

Args: material_name: Name of the material. node_type: Blender shader node type (e.g. ShaderNodeBsdfPrincipled). location: Node location as [x, y], default [0, 0].

Returns: Dict with material, node_name, and node_type.

connect_shader_nodesC

Connect two shader nodes in a material's node tree.

Args: material_name: Name of the material. from_node: Name of the source node. from_socket: Name of the output socket on the source node. to_node: Name of the destination node. to_socket: Name of the input socket on the destination node.

Returns: Confirmation dict.

disconnect_shader_nodesB

Disconnect all links from a specific socket on a shader node.

Args: material_name: Name of the material. node_name: Name of the node. socket_name: Name of the socket to disconnect. is_input: If True, disconnect an input socket; otherwise an output socket.

Returns: Confirmation dict.

remove_shader_nodeB

Remove a shader node from a material's node tree.

Args: material_name: Name of the material. node_name: Name of the node to remove.

Returns: Confirmation dict.

get_node_treeB

Get the full node tree of a material (all nodes and links).

Args: material_name: Name of the material.

Returns: Dict with nodes list and links list.

set_shader_node_inputA

Set the default value of an unconnected input socket on a shader node.

This is how you dial in a procedural texture: Noise 'Scale' and 'Detail', Mapping 'Scale' and 'Rotation', a Principled BSDF 'Roughness', and so on. A socket that has a link into it ignores its default value, so disconnect it first if you want the default to take effect.

Args: material_name: Name of the material. node_name: Name of the node. socket: Socket name, or a zero-based index. Use the index when names are ambiguous — a Math node has two inputs both called 'Value'. value: A number, a boolean, or a 2-4 component list for vectors and colors (colors are RGBA).

Returns: Dict with the node, socket, and the value that was applied.

set_shader_node_propertyA

Set a node-level property (not a socket) on a shader node.

These are the dropdowns and checkboxes on the node body rather than its input sockets: Math 'operation', Mix 'blend_type', Voronoi 'feature' (use 'DISTANCE_TO_EDGE' for vein and crack patterns), Wave 'wave_type' and 'bands_direction', Noise 'noise_dimensions'.

Args: material_name: Name of the material. node_name: Name of the node. property: Property name. Must be one of the allowed node properties. value: String enum identifier, number, or boolean.

Returns: Dict with the node, property, and the value that was applied.

add_color_ramp_elementA

Add a colour stop to a ColorRamp (ShaderNodeValToRGB) node.

A new ramp starts with two stops, black at 0.0 and white at 1.0. Add stops to shape a gradient: fire needs dark red, orange, yellow, white bunched toward the top; rust needs a hard break between metal and oxide.

Args: material_name: Name of the material. node_name: Name of the ColorRamp node. position: Stop position along the ramp, 0.0 to 1.0. color: RGB or RGBA color, components 0.0 to 1.0. RGB gains alpha 1.0.

Returns: Dict with the new element's index, position, and color.

remove_color_ramp_elementA

Remove a colour stop from a ColorRamp node.

Blender requires at least one stop to remain; removing the last one fails.

Args: material_name: Name of the material. node_name: Name of the ColorRamp node. index: Zero-based index of the stop to remove.

Returns: Dict with the removed index and the remaining element count.

set_color_ramp_elementA

Move or recolor an existing ColorRamp stop.

At least one of position or color must be given. Moving a stop past a neighbour reorders the ramp, so indices may shift after this call — read the ramp back with get_color_ramp if you need certainty.

Args: material_name: Name of the material. node_name: Name of the ColorRamp node. index: Zero-based index of the stop to edit. position: New position, 0.0 to 1.0. Omit to leave unchanged. color: New RGB or RGBA color. Omit to leave unchanged.

Returns: Dict with the element's resulting position and color.

set_color_ramp_interpolationA

Set how a ColorRamp blends between its stops.

'CONSTANT' gives hard-edged bands with no blending, which is what turns a noise or voronoi texture into discrete regions: scale plates, cracked mud, stylised cel shading. 'EASE' and 'B_SPLINE' give softer falloff than 'LINEAR'. Set color_mode to 'HSV' to sweep through hues between two stops rather than blending through grey.

Args: material_name: Name of the material. node_name: Name of the ColorRamp node. interpolation: One of EASE, CARDINAL, LINEAR, B_SPLINE, CONSTANT. color_mode: Optional. One of RGB, HSV, HSL. Omit to leave unchanged.

Returns: Dict with the applied interpolation and color mode.

get_color_rampA

Read every stop on a ColorRamp node.

Use this before editing to learn the current indices and positions, since add and move operations reorder stops.

Args: material_name: Name of the material. node_name: Name of the ColorRamp node.

Returns: Dict with elements (index, position, color), interpolation, color_mode.

create_procedural_materialA

Build a complete procedural texture as a material, in one call.

Prefer this over hand-wiring texture nodes. It creates the full graph — coordinates, mapping, the pattern's texture nodes, a tuned colour ramp, and the Principled BSDF — and returns the node names so you can adjust anything afterwards with set_shader_node_input or the colour ramp tools.

Procedural beats image textures here: no files, no UV unwrap needed, and it stays sharp at any camera distance.

Call list_procedural_patterns() to see what each pattern looks like.

Args: name: Name for the new material. pattern: One of the supported patterns, e.g. 'fire', 'wood', 'veins'. scale: Feature size. Lower is bigger and broader, higher is finer and busier. 5.0 is a sensible default; try 1-3 for large forms and 20+ for fine detail. detail: Fractal octaves, 0-15. Higher adds finer sub-detail at the cost of render time. Applies to noise, cloud, wood, marble, plasma and fire. The cellular patterns (voronoi, veins, scales, sparks), stripes, weave and gradient have no detail socket and ignore it. distortion: Warps the pattern. Small values (0.5-2.0) make wood and marble look organic rather than machine-perfect. Applies to noise, cloud, stripes, wood, marble, plasma and fire. The cellular patterns, weave and gradient ignore it. roughness: Surface roughness 0-1 for the Principled BSDF. metallic: Metallic 0-1 for the Principled BSDF. colors: Optional list of RGB or RGBA colours for the ramp, in order. Omit to use the pattern's own tuned palette. banded: Use CONSTANT ramp interpolation, giving hard-edged bands instead of smooth blending. Turns noise into discrete regions: scale plates, cracked mud, cel shading. connect_to_bsdf: Wire the result into the Principled BSDF base colour so the material renders immediately. Set False to leave the pattern subtree unconnected for manual wiring.

Returns: Dict with the material name, the created node names, and ignored_params listing any arguments this pattern could not use.

create_raster_textureA

Generate an image texture for patterns shader nodes cannot express.

Use this only for patterns that place discrete marks. Shader nodes evaluate a function per point and have no way to say "draw a glyph here, then another over there", so runes need real pixels. Everything else should go through create_procedural_material, which stays sharp at any resolution.

The image is packed into the blend file. No file is written to disk.

Args: name: Name for the generated image datablock. pattern: A raster pattern. Currently 'runes'. size: Pixel width and height, up to 2048. Cost grows with the square. count: How many marks to stamp. 0 leaves a blank field. seed: Change for a different arrangement; the same seed always reproduces the same image. foreground: RGB or RGBA colour of the marks. background: RGB or RGBA colour behind them.

Returns: Dict with the image name, size, and mark count.

list_procedural_patternsA

List every procedural pattern with a description of what it looks like.

Read this before calling create_procedural_material so you pick a pattern that matches the surface you are trying to make.

Returns: Dict with the sorted pattern names and a description of each.

create_lightA

Create a new light in the scene.

Args: type: Light type. One of: POINT, SUN, SPOT, AREA. name: Optional name for the light. location: XYZ location as [x, y, z], default [0, 0, 0]. energy: Light energy/power, default 1000. color: RGB color as [r, g, b], default [1.0, 1.0, 1.0].

Returns: Confirmation dict with light name and properties.

set_light_propertyB

Set a property on a light object.

Args: name: Name of the light object. property: Property to set. One of: energy, color, shadow_soft_size, spot_size, spot_blend, area_size, area_size_y, use_shadow, angle, specular_factor, diffuse_factor, volume_factor. value: The value to set. Type depends on the property.

Returns: Confirmation dict.

set_world_backgroundA

Set the world background to a solid color or HDRI environment map.

Args: color: RGB color as [r, g, b] for solid background. Mutually exclusive with hdri_path. hdri_path: Absolute path to an HDRI image file. Mutually exclusive with color. strength: Background strength/intensity, default 1.0.

Returns: Confirmation dict.

create_light_rigA

Create a pre-built lighting rig (multiple lights arranged for common setups).

Args: type: Rig type. One of: THREE_POINT, STUDIO, RIM, OUTDOOR. target: Optional name of the object the rig should point at. intensity: Overall intensity of the lights, default 1000.

Returns: Confirmation dict with names of all created lights.

list_lightsA

List all light objects in the scene.

Returns: List of dicts with light name, type, energy, color, and location.

delete_lightA

Delete a light object from the scene.

Args: name: Name of the light object to delete.

Returns: Confirmation dict.

set_shadow_settingsB

Configure shadow settings for a light.

Args: name: Name of the light object. use_shadow: Whether to enable shadows, default True. shadow_soft_size: Soft shadow radius, default 0.25.

Returns: Confirmation dict.

create_cameraA

Create a new camera in the scene.

Args: name: Name for the camera, default "Camera". location: XYZ location as [x, y, z], default [0, 0, 0]. rotation: XYZ Euler rotation in radians as [x, y, z], default [0, 0, 0]. lens: Focal length in mm, default 50.

Returns: Confirmation dict with camera name and properties.

set_camera_propertyB

Set a property on a camera.

Args: name: Name of the camera object. property: Property to set. One of: lens, clip_start, clip_end, sensor_width, sensor_height, dof.use_dof, dof.focus_distance, dof.aperture_fstop, ortho_scale, shift_x, shift_y, type, sensor_fit. value: The value to set.

Returns: Confirmation dict.

set_active_cameraB

Set the active scene camera.

Args: name: Name of the camera object to make active.

Returns: Confirmation dict.

point_camera_atA

Point a camera at an object or a specific location using a Track To constraint.

Args: camera_name: Name of the camera object. target: Name of the target object to point at. Mutually exclusive with location. location: XYZ location to point at as [x, y, z]. Mutually exclusive with target.

Returns: Confirmation dict.

capture_viewportB

Render the viewport to a file or return as base64.

Args: filepath: Optional absolute path for output image. If empty, returns base64-encoded image. width: Render width in pixels, default 1920. height: Render height in pixels, default 1080.

Returns: Dict with filepath or base64 image data.

set_camera_from_viewA

Match the active camera to the current 3D viewport view.

Returns: Confirmation dict with the camera's new location and rotation.

insert_keyframeA

Insert a keyframe on an object property at a specific frame.

Args: object_name: Name of the object. data_path: Property to keyframe. Must be one of: location, rotation_euler, rotation_quaternion, scale, or indexed variants like location[0]. frame: Frame number to insert the keyframe at. value: Optional value to set before inserting the keyframe.

Returns: Confirmation dict with keyframe details.

delete_keyframeA

Remove a keyframe from an object property at a specific frame.

Args: object_name: Name of the object. data_path: Property data path (e.g., location, rotation_euler, scale). frame: Frame number of the keyframe to remove.

Returns: Confirmation dict.

set_frameB

Set the current frame in the timeline.

Args: frame: Frame number to set as current.

Returns: Confirmation dict with the new current frame.

set_frame_rangeA

Set the start and end frames of the scene timeline.

Args: start: Start frame number. end: End frame number. Must be greater than start.

Returns: Confirmation dict with the new frame range.

set_interpolationA

Set the interpolation type for keyframes on a property.

Args: object_name: Name of the object. data_path: Property data path. interpolation: Interpolation type. One of: CONSTANT, LINEAR, BEZIER, SINE, QUAD, CUBIC, QUART, QUINT, EXPO, CIRC, BACK, BOUNCE, ELASTIC.

Returns: Confirmation dict.

create_animation_pathB

Make an object follow a path (curve) using a Follow Path constraint.

Args: object_name: Name of the object to animate along the path. path_object: Name of the curve object to use as the path.

Returns: Confirmation dict with constraint details.

list_keyframesB

List all keyframes on an object.

Args: object_name: Name of the object.

Returns: List of dicts with data_path, frame, and value for each keyframe.

clear_animationB

Remove all animation data from an object.

Args: object_name: Name of the object.

Returns: Confirmation dict.

set_render_engineA

Set the render engine.

Args: engine: Render engine to use. One of: BLENDER_EEVEE, CYCLES, BLENDER_WORKBENCH.

Returns: Confirmation dict with the active render engine.

set_render_resolutionA

Set the render resolution.

Args: width: Render width in pixels. Range: 1-8192. height: Render height in pixels. Range: 1-8192. percentage: Resolution percentage scale. Range: 1-100.

Returns: Confirmation dict with the new resolution settings.

set_render_samplesA

Set the number of render samples.

Args: samples: Number of samples. Range: 1-10000.

Returns: Confirmation dict with the new sample count.

set_output_formatA

Set the render output format and optionally the output file path.

Args: format: Output format. One of: PNG, JPEG, OPEN_EXR, TIFF, BMP. filepath: Optional output file path. Must be an absolute path.

Returns: Confirmation dict with the new output settings.

render_imageA

Render the current scene to an image file.

Args: filepath: Output file path for the rendered image. Must be an absolute path with a valid image extension (.png, .jpg, .exr, .tiff, .bmp).

Returns: Confirmation dict with the output file path.

render_animationA

Render the animation sequence to image files.

Args: filepath: Output file path prefix for the rendered frames. Each frame will be saved with a frame number suffix. format: Output format. One of: PNG, JPEG, OPEN_EXR, TIFF, BMP.

Returns: Confirmation dict with output details.

set_eevee_light_pathA

Set EEVEE light path intensity controls (Blender 5.1+).

Controls how strongly different light bounce types contribute to the final image. Only applies when render engine is BLENDER_EEVEE.

Args: diffuse_intensity: Intensity multiplier for diffuse bounces. Range: 0.0-10.0. glossy_intensity: Intensity multiplier for glossy/specular bounces. Range: 0.0-10.0. transmission_intensity: Intensity multiplier for transmission bounces. Range: 0.0-10.0.

Returns: Dict with the current light path intensity values.

create_curveA

Create a new curve object.

Args: type: Curve type - BEZIER, NURBS, or PATH. name: Optional name for the curve object. location: 3D location as (x, y, z).

Returns: Dict with created curve name and type.

add_curve_pointA

Add a control point to an existing curve.

Args: curve_name: Name of the curve object to add a point to. location: 3D location for the new point as (x, y, z). handle_type: Handle type - AUTO, VECTOR, ALIGNED, or FREE.

Returns: Dict with curve name and new point count.

set_curve_propertyB

Set a property on a curve object.

Args: curve_name: Name of the curve object. property: Property to set - resolution_u, fill_mode, bevel_depth, bevel_resolution, extrude, twist_mode, or use_fill_caps. value: Value to set. Type depends on property.

Returns: Confirmation dict with property name and new value.

convert_curve_to_meshC

Convert a curve object to a mesh object.

Args: curve_name: Name of the curve object to convert.

Returns: Dict with the converted object name.

create_textA

Create a 3D text object.

Args: text: The text string to display. name: Optional name for the text object. location: 3D location as (x, y, z). size: Font size. font: Optional path to a font file. Uses default Blender font if empty.

Returns: Dict with created text object name.

switch_curve_directionB

Switch the direction of a curve's splines.

Args: curve_name: Name of the curve object.

Returns: Dict with confirmation of direction switch.

set_handle_typeA

Set the handle type for all control points of a curve.

Args: curve_name: Name of the curve object. handle_type: Handle type - AUTO, VECTOR, ALIGNED, or FREE_ALIGN.

Returns: Dict with confirmation of handle type change.

Prompts

Interactive templates invoked by user choice

NameDescription
blender_best_practicesBest practices for using Blender MCP tools effectively.
product_shot_setupSet up a professional product shot with studio lighting and camera.
character_base_meshCreate a base mesh for character modeling.
scene_cleanupClean up and organize the current Blender scene.
animation_turntableCreate a turntable animation of the selected object.
topology_best_practicesExpert guide on quad topology, edge flow, and modeling best practices.
scale_reference_guideReal-world scale references for common objects in Blender.
lighting_principlesLighting principles for professional 3D rendering.
studio_lighting_setupStep-by-step guide for professional studio lighting setup.
character_basemesh_workflowStep-by-step workflow for creating a character base mesh.
material_workflow_guideExpert guide on PBR material setup using Principled BSDF.
auto_critique_workflowGuide the LLM to automatically capture and critique its work after structural changes.

Resources

Contextual data attached and managed by the client

NameDescription
get_scene_resourceCurrent Blender scene information including objects, hierarchy, and settings.
get_objects_resourceList of all objects in the current Blender scene.
get_materials_resourceList of all materials in the current Blender file.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/HoldMyBeer-gg/blend-ai'

If you have feedback or need assistance with the MCP directory API, please join our Discord server