blender-lab-mcp-client
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| blender_scene_get_infoA | Get information about the current Blender scene including name, frame range, render engine, resolution, and object count. |
| blender_scene_list_objectsA | List all objects in the current Blender scene. Optionally filter by type (MESH, CAMERA, LIGHT, EMPTY, CURVE, etc.). |
| blender_object_get_transformA | Get the position, rotation, and scale of a Blender object by name. |
| blender_object_get_hierarchyA | Get the parent/child hierarchy of objects. If name is provided, returns the subtree for that object. Otherwise returns the full scene hierarchy. |
| blender_material_listA | List all materials in the Blender file. |
| blender_object_createC | Create a new mesh object in Blender. Supported types: cube, sphere, cylinder, plane, cone, torus. |
| blender_object_deleteC | Delete an object from the Blender scene by name. |
| blender_object_translateA | Move an object. Provide either 'location' for absolute positioning or 'offset' for relative movement. |
| blender_object_rotateA | Set the rotation of an object. Provide rotation as [x, y, z] angles. By default angles are in degrees. |
| blender_object_scaleB | Set the scale of an object. Provide scale as [x, y, z]. |
| blender_object_duplicateC | Duplicate an object in the Blender scene. Optionally provide a new name. |
| blender_material_createA | Create a new material. Optionally set an initial base color as [r, g, b] with values 0-1. |
| blender_material_assignB | Assign an existing material to an object. |
| blender_material_set_colorA | Set the base color of a material. Color is [r, g, b] with values 0-1. |
| blender_material_set_textureC | Set an image texture as the base color of a material. Provide the file path to the image. |
| blender_render_stillA | Render the current scene as a still image. Optionally set output path, resolution, and render engine (BLENDER_EEVEE, CYCLES, etc.). Use transport='bridge' for the live Blender add-on session, or transport='headless' with blend_file='/path/to/file.blend' to render in a separate background Blender process. |
| blender_render_animationA | Render an animation. Optionally set output path, frame range, and render engine. Use transport='bridge' for the live Blender add-on session, or transport='headless' with a blend_file to render in a separate background Blender process. |
| blender_export_gltfB | Export the scene as glTF/GLB. Provide the output file path. |
| blender_export_objB | Export the scene as OBJ. Provide the output file path. |
| blender_export_fbxB | Export the scene as FBX. Provide the output file path. |
| blender_history_undoA | Undo the last operation in Blender. |
| blender_history_redoA | Redo the last undone operation in Blender. |
| blender_python_execA | Execute a Python script in Blender's context synchronously. Provide either 'code' (inline Python string) or 'script_path' (path to a .py file), not both. The script has access to 'bpy', 'mathutils', and an 'args' dict with your supplied arguments. Set 'result' in the script to return a JSON-serializable value. Returns the result, captured stdout/stderr, and execution duration. Use transport='bridge' for the live Blender add-on session, or transport='headless' to run the script in a separate |
| blender_python_exec_asyncA | Start a long-running Python script in Blender asynchronously. Same parameters as blender_python_exec. Returns a job_id immediately. Use blender_job_status to poll for completion, and blender_job_cancel to abort. The script can check 'cancel_event.is_set()' to detect cancellation. Ideal for fluid baking, rigid body simulation, or heavy scene generation. Use transport='headless' to run the job in a separate background Blender process. |
| blender_job_statusA | Get the status of an async Blender job. Returns job_id, status (queued/running/succeeded/failed/cancelled), timestamps, result, stdout, stderr, and error. Poll this after starting a job with blender_python_exec_async. |
| blender_job_cancelA | Cancel a running or queued async Blender job. The job's cancel_event is set; scripts that check it will stop gracefully. |
| blender_job_listA | List known async Blender jobs with their IDs, statuses, and creation timestamps. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 27 tools
Each tool maps to a distinct Blender domain (scene, object, material, render, export, history, python, jobs) with clear action verbs. Even closely related tools like render_still vs render_animation and python_exec vs async are clearly differentiated by purpose and parameters.
All tools follow the exact pattern 'blender_<domain>_<action>' with snake_case throughout. Naming is perfectly consistent, making it easy to predict tool names and group functionality.
With 27 tools, the count is slightly on the heavier side but justified given the breadth of Blender capabilities covered (scene, objects, materials, rendering, exports, Python execution, async jobs, undo/redo). No redundant tools; each serves a distinct need.
The surface covers core scene management, object transforms, material handling, rendering, exports, and Python integration, which are the primary workflows. Minor gaps exist (e.g., creation of lights/cameras only via generic mesh creation, no modifier support), but agents can route around these via blender_python_exec.