Blender Finisher
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NIUA_BLENDER_MCP_ALLOW_PYTHON | No | Set to '1' to enable the system.execute_python tool. Off by default. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| anim-timelineA | Report scene timeline range, current frame, and frame rate |
| anim-set_timelineB | Set scene timeline range, current frame, and frame rate |
| anim-set_frameB | Set the current scene frame (playhead) |
| anim-insert_keyframeB | Insert a keyframe on an object property at a frame |
| anim-delete_keyframeB | Delete a keyframe on an object property at a frame |
| anim-set_interpolationA | Set interpolation for all keyframes on an object's f-curves |
| anim-list_actionsA | List the actions in the file (read-only) |
| anim-reportA | Animation report for an object: frame range, f-curve count (read-only) |
| anim-keyframesC | Detailed f-curve and keyframe report for an object |
| api-reportC | Report live Blender API operator/type metadata surface |
| api-searchB | Search live Blender API operators and RNA types |
| app-infoB | Report Blender runtime, active file, dirty state, scene, workspace, and render engine |
| app-file_newB | Empty the scene in-place (keeps the live bridge); force is required if dirty |
| app-file_openA | Open an existing .blend file by absolute path; force is required if current file is dirty |
| app-file_saveA | Save the current file, or save to an absolute path if the file is unsaved |
| app-file_save_asA | Save the current file to a new absolute path and make it active |
| app-file_save_copyA | Save a copy of the current file without changing the active file path |
| app-file_revertA | Reload the current file from disk; force is always required |
| app-undoB | Run Blender undo for the active session |
| app-redoB | Run Blender redo for the active session |
| app-workspacesA | List workspaces and report the active workspace |
| app-workspace_setC | Switch the active window to a named workspace |
| app-addonsA | List available Blender add-ons with enabled and loaded state |
| app-addon_enableC | Enable an installed Blender add-on module |
| app-addon_disableB | Disable an installed Blender add-on module |
| app-preferences_summaryB | Report safe high-level user preference values |
| app-preferences_saveA | Save current Blender user preferences |
| capabilities-domainsA | List the craft domains and how many operations each exposes |
| capabilities-searchA | Search ALL of Blender for a capability by keyword, ranked (start here) |
| capabilities-describeA | Get the full typed parameter schema for one operation before calling it |
| capabilities-invokeC | Run any Blender operator with args validated against its schema (undo-safe) |
| capabilities-toolsA | Navigate THIS server's tools: no args -> domain map; {domain} -> its tools; {name} -> one schema |
| constraints-listC | List object or pose-bone constraints |
| constraints-addC | Add an object or pose-bone constraint |
| constraints-removeB | Remove a named object or pose-bone constraint |
| constraints-reportB | Report live RNA properties for object or pose-bone constraints |
| constraints-setC | Set one RNA property on an object or pose-bone constraint |
| context-infoB | Report active object, selected objects, mode, mesh select mode, and available areas |
| context-areasA | List available editor areas for context overrides |
| context-set_activeC | Set the active object and optionally select it |
| context-select_objectsC | Update object selection by comma-separated object names |
| context-select_allA | Select, deselect, or invert selection for all scene objects |
| context-mode_setB | Switch Blender interaction mode, optionally activating an object first |
| context-mesh_select_modeC | Set mesh edit selection mode |
| context-poll_operatorC | Check whether a Blender operator polls in the current or proposed context |
| feedback-topologyA | Render a topology overlay: n-gons red, tris orange, quads grey, plus wireframe |
| feedback-uvC | Render a UV checker eye and return structured UV analytics |
| feedback-orientationC | Render a normal/backface orientation eye and return orientation analytics |
| feedback-wire_shadedC | Render shaded material view with real wire geometry overlay and quality analytics |
| feedback-lookdevC | Render a material-shaded lookdev turntable and return quality analytics |
| feedback-captureB | Render one view (named or the live scene camera) to a PNG the agent can see |
| feedback-capture_viewsC | Render a multi-angle preset (the anti-blob) as several images |
| feedback-silhouetteB | Flat silhouette from preset angles + proportion/symmetry — the form eye. |
| feedback-turntableC | Orbit the object/scene and return a sequence of images |
| geometry-create_curveC | Create a curve primitive |
| geometry-set_bezier_splineC | Replace a curve's spline with bezier control points; the modeling curve |
| geometry-reportC | Report non-mesh geometry object data |
| geometry-create_textC | Create a text object |
| geometry-create_surfaceD | Create a NURBS surface primitive |
| geometry-create_metaballC | Create a metaball primitive |
| geometry-create_grease_pencilC | Create a grease pencil object |
| geometry-set_curveD | Set curve-like geometry data fields |
| geometry-set_textC | Set text object fields |
| geometry-convert_to_meshB | Convert a non-mesh geometry object to a mesh |
| geometry_nodes-create_modifierB | Create a Geometry Nodes modifier with Blender's default node group |
| geometry_nodes-reportC | Report a Geometry Nodes modifier and its node group |
| geometry_nodes-add_nodeB | Add a node to a Geometry Nodes modifier group |
| geometry_nodes-linkC | Create a link between two Geometry Nodes sockets |
| info-reportB | Report Info editor areas and available report operators |
| info-messagesC | Return Info editor report messages when exposed by Blender RNA |
| rna-describeA | Describe a Blender operator or type via RNA (e.g. 'op:mesh.bevel', 'type:Object') |
| rna-searchA | Search the live Blender API for operators/types matching a query, ranked by relevance |
| io-importB | Import a mesh/scene file; format inferred from the extension by default |
| io-exportA | Export the scene or selected objects; format can be inferred from the path |
| io-prepare_assetB | Optionally apply transforms on one object, then export just that object |
| lattice-createC | Create a lattice object |
| lattice-reportB | Report lattice object, data, and point state |
| lattice-setD | Set one RNA property on lattice data |
| lattice-point_setB | Set one lattice point's deformed coordinate |
| lightprobe-createC | Create a light probe object |
| lightprobe-listB | List light probe objects |
| lightprobe-reportC | Report live RNA properties for a light probe |
| lightprobe-setC | Set one RNA property on a light probe data-block |
| mesh-extrudeC | Extrude the selected region and translate it |
| mesh-bevelC | Bevel the selected edges/vertices |
| mesh-insetB | Inset the selected faces |
| mesh-subdivideC | Subdivide the selected edges/faces |
| mesh-recalc_normalsC | Recalculate the mesh normals consistently |
| mesh-selection_reportC | Report selected vertices, edges, and faces |
| mesh-select_allC | Select, deselect, invert, or toggle all mesh elements |
| mesh-select_by_indexC | Select mesh elements by zero-based index |
| mesh-deleteC | Delete selected mesh elements |
| mesh-dissolveC | Dissolve selected mesh elements |
| mesh-mergeC | Merge selected vertices |
| mesh-remove_doublesC | Merge duplicate vertices |
| mesh-tris_to_quadsC | Convert selected triangles to quads |
| mesh-quads_to_trisC | Convert selected faces to triangles |
| mesh-fillC | Fill selected edges |
| mesh-edge_face_addD | Create an edge or face from selected elements |
| mesh-shade_smoothA | Toggle smooth/flat shading on the object |
| mesh-reportC | Analytic topology report for a mesh (read-only) |
| modifiers-typesA | List modifier types supported by the running Blender |
| modifiers-addC | Add a modifier to an object's stack |
| modifiers-setC | Set a property on an existing modifier |
| modifiers-set_visibilityC | Set common modifier stack visibility flags |
| modifiers-moveC | Move a modifier to a stack index |
| modifiers-copyB | Copy a modifier in the stack |
| modifiers-applyC | Apply (bake) a modifier into the mesh |
| modifiers-removeB | Remove a modifier from the stack without applying it |
| modifiers-listA | List the modifier stack of an object (read-only) |
| object-createC | Create a common mesh primitive or empty |
| object-duplicateD | Duplicate an object |
| object-deleteC | Delete one or more objects |
| object-renameC | Rename an object |
| object-transform_setC | Set an object's transform fields |
| object-transform_applyD | Apply an object's transform |
| object-origin_setC | Set an object's origin |
| object-transform_getC | Read an object's transform state |
| object-boundsA | Read an object's local and world bounds |
| object-bake_transferB | Bake high->low detail (normal/AO) from a source mesh into a target mesh's maps |
| object-shrinkwrapA | Snap a mesh's vertices onto a target object's surface via a SHRINKWRAP modifier |
| outliner-treeA | Return the logical scene tree: scenes, view layers, collections, objects, and hierarchy |
| outliner-describeC | Describe one object, collection, scene, or view layer by name |
| outliner-findB | Search objects, collections, scenes, and view layers by name |
| outliner-orphansB | List zero-user datablocks in high-value Outliner categories |
| outliner-collection_createB | Create a collection under the scene root or a named parent collection |
| outliner-collection_renameC | Rename a collection |
| outliner-collection_deleteB | Delete a collection; force is required when it contains objects or child collections |
| outliner-object_linkA | Link an object into a collection without removing existing collection membership |
| outliner-object_unlinkB | Unlink an object from a collection; force is required if it is the final collection |
| outliner-object_moveC | Move an object to exactly one target collection |
| outliner-parent_setA | Set an object's parent, preserving world transform by default |
| outliner-parent_clearA | Clear an object's parent, preserving world transform by default |
| outliner-visibility_setB | Set object-level viewport/render/selectability restrictions |
| outliner-collection_visibility_setA | Set collection-level viewport/render/selectability restrictions |
| outliner-view_layersA | List view layers and their layer-collection restriction trees |
| outliner-view_layer_createC | Create a view layer |
| outliner-view_layer_deleteA | Delete a view layer; force is required and the last layer cannot be deleted |
| outliner-layer_collection_setC | Set view-layer collection restrictions for one collection |
| outliner-orphans_purgeB | Purge orphan datablocks; force is always required |
| particles-systemsB | List particle systems on an object |
| particles-addC | Add a particle system to an object |
| particles-removeB | Remove a named particle system from an object |
| particles-reportB | Report live RNA properties for one or all particle systems |
| particles-setC | Set one RNA property on a particle system or its settings |
| physics-reportB | Report all physics stacks on an object |
| physics-addB | Add a physics stack to an object |
| physics-removeC | Remove a physics stack from an object |
| physics-setB | Set one RNA property on a physics stack |
| physics-field_reportB | Report an object's force field settings |
| physics-field_setC | Set one RNA property on an object's force field |
| pointcloud-listB | List point cloud objects and data-blocks |
| pointcloud-reportC | Report live RNA properties for a point cloud |
| pointcloud-setB | Set one writable RNA property on a point cloud data-block |
| pointcloud-attributesC | List point cloud geometry attributes and color attributes |
| asset_class-listA | List Layer 2 game-asset class profiles |
| asset_class-describeB | Describe one Layer 2 game-asset class profile |
| feedback-qualityC | Objective quality metrics for a mesh: topology, UVs, orientation, symmetry, proportion, scale, engine/material readiness (read-only) |
| feedback-critiqueB | One observe call to judge a model: multi-angle images + mesh/UV report bundled |
| feedback-capture_intakeC | Record the do-no-harm baseline: fixed-frame ortho alpha silhouettes + bbox + a session checkpoint |
| feedback-preservationB | Do-no-harm metric: mean/min silhouette IoU of current form vs the stored intake baseline + bbox delta (read-only, no revert) |
| feedback-readinessB | Objective game-ready scorecard: fraction of all objective gates passed, order-free + deduped (no judge, no images) |
| io-profile_validateB | Validate an object against a parameterized export profile without exporting |
| object-lod_createC | Create a decimated LOD duplicate using a generic Asset_LOD# naming convention |
| object-collision_proxy_createB | Create a simple collision proxy around an object's bounds using a generic Asset_COL naming convention |
| object-collision_hulls_createB | Create split box collision hulls across an object's bounds using generic Asset_COL_## names |
| object-retopoA | Retopologize a mesh to a face budget (voxel+decimate, or decimate-only when voxel is unsafe) |
| project-reportB | Report active or detected Blender project state and project editor areas |
| project-filesB | List files for the active or detected Blender project |
| project-settingsC | Report project preferences, active project fields, and project.toml data |
| properties-reportC | Report all live RNA properties for any stable Properties path target |
| properties-object_reportC | Report all live RNA properties for an object, its data, modifiers, and custom props |
| properties-getA | Read a stable Properties path such as object:Cube/location or object:Cube/idprops/foo |
| properties-setB | Set a stable Properties path; value is JSON-encoded |
| properties-unsetA | Unset a custom property or resettable RNA property by stable Properties path |
| camera-createA | Create a camera and optionally make it the active scene camera |
| camera-listB | List scene cameras and active camera |
| camera-reportA | Report one camera, defaulting to the active scene camera |
| camera-setC | Set common camera data properties |
| camera-set_activeB | Set the active scene camera |
| light-createC | Create a light object |
| light-listC | List scene lights |
| light-reportB | Report one light, or all scene lights if omitted |
| light-setD | Set common light data properties |
| render-settingsA | Report active render settings |
| render-set_settingsC | Set common render settings |
| render-stillB | Render a still image to disk, restoring prior scene settings after |
| world-reportB | Report scene world color and background strength |
| world-setB | Set scene world color and/or background strength |
| compositor-enableB | Enable or disable scene compositor nodes |
| compositor-reportB | Report scene compositor node tree |
| compositor-add_nodeC | Add a node to the scene compositor node tree |
| compositor-linkC | Link two compositor node sockets |
| rig-add_armatureA | Create a new armature (skeleton) object |
| rig-add_boneB | Add an edit bone to an armature (head/tail in armature-local space) |
| rig-set_bone_transformB | Set an existing bone's head and/or tail position |
| rig-parent_with_auto_weightsA | Parent a mesh to an armature with automatic skinning weights |
| rig-list_bonesA | List an armature's bones with head/tail positions (read-only) |
| rig-reportB | Report rest bones, pose bones, constraints, and child meshes |
| rig-pose_reportB | Report pose bone transforms and constraints |
| rig-set_pose_boneB | Set a pose bone's location, Euler rotation, and/or scale |
| rig-clear_poseA | Clear all pose bone transforms back to rest values |
| rig-constraintsA | List pose bone constraints on one bone or the whole armature |
| rig-constraint_addC | Add a pose bone constraint |
| rig-constraint_removeC | Remove a named pose bone constraint |
| rig-vertex_groupsA | List mesh vertex groups and assigned vertex weights |
| rig-vertex_group_createD | Create a mesh vertex group |
| rig-assign_weightsB | Assign vertex weights to a named vertex group by vertex index |
| rna-call_operatorC | Run any bpy.ops operator, with args validated against its RNA |
| rna-set_propertyC | Set a data property by path under bpy.data (value is JSON-encoded) |
| rna-get_propertyA | Read a data property by path under bpy.data (read-only) |
| scene-infoA | Summarize the current scene (objects, materials) |
| scene-create_objectC | Create a primitive object in the scene |
| scene-set_transformC | Set an object's location/rotation/scale |
| script-reportB | Report script-space operators, preferences, paths, and editor areas |
| script-pathsA | List Blender script search paths and configured script directories |
| script-run_fileA | Run a Python file through Blender's script operator when Python execution is trusted |
| script-reloadB | Reload Blender scripts when Python execution is trusted |
| sequencer-reportB | Report sequence strips in the active scene |
| sequencer-strip_addC | Add a sequence strip |
| sequencer-strip_removeA | Remove a sequence strip by name |
| sequencer-strip_setB | Set one RNA property on a sequence strip |
| sequencer-modifiersB | List strip modifiers on a sequence strip |
| sequencer-modifier_addC | Add a strip modifier to a sequence strip |
| sequencer-modifier_setC | Set one RNA property on a strip modifier |
| sequencer-modifier_removeB | Remove a strip modifier |
| session-checkpointB | Snapshot an object's mesh data + transform so an edit can be rolled back |
| session-revertB | Restore an object from a checkpoint (most recent if no label); one undo step |
| session-list_checkpointsA | List stored checkpoints for an object, or all objects (read-only) |
| shaderfx-listA | List shader effects on a Grease Pencil object |
| shaderfx-typesB | List shader effect types supported by the running Blender |
| shaderfx-addB | Add a shader effect to a Grease Pencil object's stack |
| shaderfx-removeC | Remove a named shader effect |
| shaderfx-reportB | Report live RNA properties for one or all shader effects |
| shaderfx-setC | Set one RNA property on a shader effect |
| shading-create_materialC | Create a new node-based material |
| shading-set_principledB | Set Principled BSDF parameters on a material |
| shading-assign_materialA | Assign a material to an object (creates it if missing) |
| shading-add_image_textureB | Wire an image-texture node to a Principled BSDF target |
| shading-prepare_pbr_mapsB | Create node-based PBR image slots for BASE_COLOR, NORMAL, ROUGHNESS, AO, and CAVITY |
| shading-reportB | Report a material, object material slots, and shader node tree |
| shading-add_nodeB | Add a shader node to a material node tree |
| shading-link_nodesB | Link two shader node sockets |
| shading-set_node_inputB | Set a shader node input default value from JSON |
| shading-list_materialsA | List materials in the file (read-only) |
| speaker-createC | Create a speaker object |
| speaker-listB | List speaker objects |
| speaker-reportC | Report live RNA properties for a speaker |
| speaker-setC | Set one writable RNA property on a speaker data-block |
| spreadsheet-reportC | Report spreadsheet editor state and object table shape |
| spreadsheet-columnsA | List spreadsheet columns derived from object geometry attributes |
| spreadsheet-rowsB | Return paginated spreadsheet rows derived from object geometry attributes |
| statusbar-reportC | Report Status Bar context and scene statistics |
| system-execute_pythonA | Run Python inside Blender; returns captured stdout and a 'result' variable if set |
| system-healthC | Bridge health: Blender version, open .blend, queue depth, last-error ring buffer |
| system-operationsA | List in-flight and recent operations with progress (works even while the main thread is busy) |
| system-cancelA | Request cooperative cancellation of a queued/running operation (takes effect at the operation's next check), by id from system.operations |
| text-listC | List Text data-blocks |
| text-createC | Create a Text data-block |
| text-openC | Open a text file into a Text data-block |
| text-readC | Read a Text data-block |
| text-writeB | Replace a Text data-block body |
| text-appendC | Append to a Text data-block body |
| text-saveC | Save a Text data-block to disk |
| text-removeC | Remove a Text data-block |
| textures-loadC | Load an image datablock from disk |
| textures-listB | List image datablocks |
| textures-reportC | Report one image datablock |
| tool-activeC | Report the active workspace tool for an editor/mode |
| tool-setC | Switch the active workspace tool by idname |
| tool-settingsC | Report active tool and live ToolSettings RNA properties |
| tool-setting_getC | Read one ToolSettings path |
| tool-setting_setC | Set one ToolSettings path |
| topbar-reportB | Report active topbar context, workspace, scene, and search capability |
| topbar-command_searchB | Search Blender commands exposed through bpy.ops without opening modal UI |
| tracking-reportB | Report MovieClip and tracking state |
| tracking-clip_loadC | Load a movie clip or image sequence source |
| tracking-clipsA | List loaded movie clips |
| tracking-marker_reportC | Report markers for each track in a clip |
| tracking-track_reportC | Report tracks for a clip |
| ui-stateB | Report Blender UI availability, active window, and foreground-only capability flags |
| ui-windowsA | List Blender windows, screens, workspaces, areas, regions, and UI geometry |
| ui-operator_pollA | Check whether a Blender operator polls in an explicit editor area context |
| ui-operator_invokeB | Run any Blender operator with explicit editor area context and undo-safe dispatch |
| ui-screenshotB | Capture Blender's UI screenshot when screen.screenshot is available |
| ui-redrawC | Request a Blender UI redraw when wm.redraw_timer is available |
| uv-layersC | List UV layers and active UV layer |
| uv-layer_createC | Create a UV layer |
| uv-layer_set_activeB | Set the active UV layer by name |
| uv-layer_deleteB | Delete a UV layer by name |
| uv-seamsC | Report seam edge indices |
| uv-set_seamsC | Set, add, remove, or clear seam edge flags |
| uv-export_layoutC | Export the mesh UV layout as an image file |
| uv-smart_unwrapC | Smart UV project the selected faces (angle-based auto seams) |
| uv-unwrapC | Unwrap the selected faces along existing seams |
| uv-cube_projectB | Cube-project the selected faces onto the UV map |
| uv-sphere_projectB | Sphere-project the selected faces onto the UV map |
| uv-pack_islandsB | Pack the UV islands to fit the [0,1] UV space |
| uv-average_islands_scaleC | Average the texel density / scale of all UV islands |
| uv-reportA | Analytic UV report for a mesh: layers, has_uvs, island count (read-only) |
| volume-create_emptyC | Create an empty volume object |
| volume-importB | Import an OpenVDB volume file |
| volume-listB | List volume objects and data-blocks |
| volume-reportC | Report live RNA properties for a volume |
| volume-setC | Set one writable RNA property on a volume data-block or nested settings object |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| refine_mesh | Scaffold the iterative refinement loop: checkpoint -> edit -> feedback.critique (images + quality) -> judge -> keep or session.revert -> repeat until quality targets are met. |
| inspect | Guide a read-only assessment (scene.info -> feedback.critique -> feedback.quality) before proposing any edits. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/OhaoTech/niua-blender-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server