Blender MCP Server
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, not both. |
| 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_createB | Create a new material. Optionally set an initial base color as [r, g, b] or [r, g, b, a] with values 0-1. |
| blender_material_assignB | Assign an existing material to an object. |
| blender_material_set_colorB | Set the base color of a material. Color is [r, g, b] or [r, g, b, a] 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. Note: bridge jobs run on Blender's main thread, so the Blender UI is busy while they run. Use transport='headless' to run the job in a separate background Blender process instead. |
| 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 targets a distinct resource and action, with clear separation between scene, object, material, render, export, history, Python execution, and job management. Even potentially overlapping tools like blender_python_exec vs. blender_python_exec_async are explicitly differentiated by sync vs. async behavior.
All tools use the blender_ prefix and snake_case, with predictable domain/action naming. Minor ordering deviations exist (e.g., blender_render_still vs. blender_scene_get_info), but the overall pattern remains highly readable.
27 tools is slightly above the typical 3-15 range, but Blender is a broad domain and each tool covers a specific, useful operation. No tool feels redundant or trivial, though some consolidation (e.g., separate export formats) could reduce the count.
The surface covers core Blender automation: object creation/transform/duplication, material creation/assignment, rendering, export, history, and Python execution. Minor gaps like material deletion or scene save/load are not directly exposed, but the asynchronous Python execution tool can fill those gaps.