BlenderMCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BLENDER_HOST | No | Host for the Blender TCP socket | localhost |
| BLENDER_PORT | No | Port for the Blender TCP socket | 9876 |
| IMG_TO_3D_PORT | No | Port for the local TripoSR server | 7862 |
| IMG_TO_3D_DEVICE | No | cuda or cpu | auto |
| IMG_TO_3D_MODEL_DIR | No | Local weights path or HuggingFace hub ID | stabilityai/TripoSR |
Capabilities
Features and capabilities supported by this server
| 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 |
|---|---|
| get_scene_infoA | Get detailed information about the current Blender scene |
| get_object_infoC | Get detailed information about a specific object in the Blender scene. Parameters:
|
| get_viewport_screenshotA | Capture a screenshot of the current Blender 3D viewport. Parameters:
Returns the screenshot as an Image. |
| execute_blender_codeB | Execute arbitrary Python code in Blender. Make sure to do it step-by-step by breaking it into smaller chunks. Parameters:
|
| get_polyhaven_categoriesA | Get a list of categories for a specific asset type on Polyhaven. Parameters:
|
| search_polyhaven_assetsB | Search for assets on Polyhaven with optional filtering. Parameters:
Returns a list of matching assets with basic information. |
| download_polyhaven_assetA | Download and import a Polyhaven asset into Blender. Parameters:
Returns a message indicating success or failure. |
| set_textureB | Apply a previously downloaded Polyhaven texture to an object. Parameters:
Returns a message indicating success or failure. |
| get_polyhaven_statusA | Check if PolyHaven integration is enabled in Blender. Returns a message indicating whether PolyHaven features are available. |
| get_hyper3d_statusB | Check if Hyper3D Rodin integration is enabled in Blender. Returns a message indicating whether Hyper3D Rodin features are available. Don't emphasize the key type in the returned message, but sliently remember it. |
| get_sketchfab_statusA | Check if Sketchfab integration is enabled in Blender. Returns a message indicating whether Sketchfab features are available. |
| search_sketchfab_modelsA | Search for models on Sketchfab with optional filtering. Parameters:
Returns a formatted list of matching models. |
| get_sketchfab_model_previewA | Get a preview thumbnail of a Sketchfab model by its UID. Use this to visually confirm a model before downloading. Parameters:
Returns the model's thumbnail as an Image for visual confirmation. |
| download_sketchfab_modelA | Download and import a Sketchfab model by its UID. The model will be scaled so its largest dimension equals target_size. Parameters:
Returns a message with import details including object names, dimensions, and bounding box. The model must be downloadable and you must have proper access rights. |
| generate_hyper3d_model_via_textA | Generate 3D asset using Hyper3D by giving description of the desired asset, and import the asset into Blender. The 3D asset has built-in materials. The generated model has a normalized size, so re-scaling after generation can be useful. Parameters:
Returns a message indicating success or failure. |
| generate_hyper3d_model_via_imagesA | Generate 3D asset using Hyper3D by giving images of the wanted asset, and import the generated asset into Blender. The 3D asset has built-in materials. The generated model has a normalized size, so re-scaling after generation can be useful. Parameters:
Only one of {input_image_paths, input_image_urls} should be given at a time, depending on the Hyper3D Rodin's current mode. Returns a message indicating success or failure. |
| poll_rodin_job_statusA | Check if the Hyper3D Rodin generation task is completed. For Hyper3D Rodin mode MAIN_SITE: Parameters: - subscription_key: The subscription_key given in the generate model step. For Hyper3D Rodin mode FAL_AI: Parameters: - request_id: The request_id given in the generate model step. |
| import_generated_assetA | Import the asset generated by Hyper3D Rodin after the generation task is completed. Parameters:
Only give one of {task_uuid, request_id} based on the Hyper3D Rodin Mode! Return if the asset has been imported successfully. |
| get_hunyuan3d_statusA | Check if Hunyuan3D integration is enabled in Blender. Returns a message indicating whether Hunyuan3D features are available. Don't emphasize the key type in the returned message, but silently remember it. |
| generate_hunyuan3d_modelA | Generate 3D asset using Hunyuan3D by providing either text description, image reference, or both for the desired asset, and import the asset into Blender. The 3D asset has built-in materials. Parameters:
Returns:
|
| poll_hunyuan_job_statusA | Check if the Hunyuan3D generation task is completed. For Hunyuan3D: Parameters: - job_id: The job_id given in the generate model step. |
| import_generated_asset_hunyuanA | Import the asset generated by Hunyuan3D after the generation task is completed. Parameters:
Return if the asset has been imported successfully. |
| start_blenderA | Launch Blender as a managed subprocess. Parameters:
|
| close_blenderA | Close the Blender instance that was started with start_blender(). Parameters:
|
| get_blender_statusA | Report whether Blender is running, and whether the MCP addon is reachable. |
| capture_viewport_angleA | Capture the Blender 3D viewport from a named angle and return it as an image. Parameters:
|
| capture_contact_sheetA | Capture multiple viewport angles and stitch them into a single contact sheet image. Parameters:
Returns a single composited image with all requested angles labelled. |
| render_depth_mapA | Render a normalised depth map from the active camera using the Blender compositor Z-pass. Closer objects appear lighter. Parameters:
|
| store_reference_imageA | Store a local image file as a named reference for later comparison tools. Parameters:
|
| compare_reference_imageA | Capture the current viewport from a named angle and composite it side-by-side with a previously stored reference image. Parameters:
|
| diff_imagesA | Compare two images and produce a 3-panel composite: [Image A] | [Image B] | [Diff]. The diff panel desaturates the base image and paints changed regions in bright red, making differences immediately obvious. Parameters:
|
| move_objectA | Move an object to an absolute world-space position. |
| scale_objectC | Set the absolute scale of an object on each axis. |
| rotate_objectA | Set the Euler rotation of an object (degrees). Parameters:
|
| set_object_material_colorA | Set the Principled BSDF base colour of an object's material. Creates the material if one does not exist. Parameters:
|
| get_vertex_positionsA | Read vertex positions from a mesh object. Parameters:
Returns JSON with each vertex's index and [x, y, z] position. |
| set_vertex_positionA | Move a single vertex of a mesh object to a world-space position. Parameters:
|
| set_vertex_positionsA | Batch-update multiple vertex positions in a single call (much faster than calling set_vertex_position repeatedly for many vertices). Parameters:
|
| get_control_pointsA | Read the control points of a curve (BEZIER, POLY, or NURBS) object. For BEZIER curves returns: co, handle_left, handle_right, handle types. For POLY/NURBS curves returns: co (and weight for NURBS). Parameters:
|
| set_control_pointB | Move a curve control point and optionally adjust its bezier handles. Parameters:
|
| get_edgesA | Read edge data from a mesh: vertex pair, sharp flag, seam flag, crease, and bevel weight. Parameters:
|
| mark_sharp_edgesA | Mark edges as sharp (hard) or soft, controlling auto-smooth and the Edge Split modifier. Sharp edges appear as hard creases when smooth shading + auto-smooth is enabled. Soft (unsharp) edges blend smoothly with neighbouring faces. Parameters:
|
| set_edge_creaseB | Set subdivision crease weight on edges. Crease controls how the Subdivision Surface modifier handles edge sharpness: 0.0 = fully smooth (no crease), 1.0 = perfectly sharp crease. Values in between give progressively harder edges without going fully sharp. Parameters:
|
| set_edge_bevel_weightA | Set bevel weight on edges, used with the Bevel modifier (limit_method=WEIGHT). Only edges with weight > 0 will be bevelled when the modifier uses WEIGHT mode. This lets you selectively bevel specific edges without affecting the whole mesh. Typical workflow:
Parameters:
|
| get_facesA | Read face data from a mesh object. Parameters:
Returns JSON with each face's vertex_indices, normal, center, material_index, and area. |
| set_face_material_indexA | Assign a material slot to specific faces (for multi-material objects). Parameters:
|
| extrude_facesA | Extrude faces outward along their individual normals. Parameters:
|
| inset_facesB | Inset faces, creating a border ring of new polygons inside each face. Parameters:
|
| flip_normalsA | Flip face normals on a mesh (reverses which side is the outside). Parameters:
|
| merge_verticesA | Merge (weld) vertices that are within a distance threshold of each other. Equivalent to 'Merge by Distance' in Blender — useful for cleaning up imported meshes or fixing seams after boolean operations. Parameters:
|
| triangulate_meshA | Triangulate all faces of a mesh (convert quads/ngons to triangles). Useful before export to game engines or 3D printing. Parameters:
|
| subdivide_meshB | Subdivide all faces of a mesh (equivalent to Subdivide in Edit Mode). Parameters:
|
| apply_modifierA | Apply a named modifier on a mesh object, collapsing it into the mesh data. Parameters:
|
| get_mesh_statsB | Return detailed topology statistics for a mesh object. Parameters:
|
| create_cameraB | Add a new camera to the Blender scene. Parameters:
|
| set_active_cameraC | Set the active render camera to an existing camera object. Parameters:
|
| render_from_cameraA | Render a still from the specified (or active) camera. Parameters:
|
| render_all_camerasA | Render a still from every camera in the scene simultaneously and return a contact sheet with all results labelled by camera name. Parameters:
Returns a composited contact sheet image. Individual renders are also saved to output_dir so you can access them at full resolution. |
| find_objects_by_typeB | List all objects in the scene that match the given type. Parameters:
|
| measure_distanceA | Measure the Euclidean distance between the origins of two objects. Parameters:
|
| add_lightB | Add a light to the Blender scene. Parameters:
|
| set_world_backgroundA | Set the scene world background to a solid colour or an HDRI environment map. Parameters:
|
| add_3point_lightingA | Add a classic 3-point lighting rig (key, fill, back/rim) centred on a subject. Parameters:
|
| export_objectA | Export an object (or the full scene) to a 3D file. Parameters:
|
| import_fileB | Import a 3D file into the current Blender scene. Supports: .glb, .gltf, .fbx, .obj, .stl, .ply, .blend Parameters:
|
| save_blendA | Save the current Blender project as a .blend file. Parameters:
|
| load_blendA | Open a .blend file, replacing the current Blender scene. Unsaved changes to the current file will be lost — save first if needed. Parameters:
|
| add_primitiveA | Add a standard mesh primitive to the Blender scene. Parameters:
|
| delete_objectA | Delete an object from the scene and purge orphaned mesh/material data. Parameters:
|
| duplicate_objectA | Duplicate an object. Parameters:
|
| join_objectsB | Join multiple mesh objects into one. Parameters:
|
| separate_meshC | Separate a mesh object into multiple objects. Parameters:
|
| rename_objectB | Rename an object and its mesh data block. Parameters:
|
| set_originB | Set an object's origin point. Parameters:
|
| snap_to_groundA | Move an object so its lowest bounding-box point rests on the ground plane. Parameters:
|
| set_smooth_shadingA | Toggle smooth or flat shading on a mesh object. Parameters:
|
| parent_objectA | Parent one object to another, creating a hierarchy. Parameters:
|
| select_objectsA | Select or deselect objects by name list and/or type. Parameters:
|
| align_objectsA | Align multiple objects' origins along one axis. Parameters:
|
| create_materialA | Create (or replace) a PBR material using Principled BSDF. Parameters:
|
| assign_materialC | Assign an existing material to an object's material slot. Parameters:
|
| load_textureB | Load an image file and wire it into a material's texture slot. Parameters:
|
| add_modifierA | Add a modifier to an object with optional parameters. Parameters:
Returns the modifier name so you can reference it later with apply_modifier. |
| boolean_operationA | Perform a boolean operation between two mesh objects. Parameters:
|
| set_render_settingsB | Configure scene render settings. Parameters:
|
| add_keyframeA | Insert an animation keyframe on an object property. Parameters:
|
| set_frameC | Set the current scene frame (scrubs the timeline). Parameters:
|
| create_collectionA | Create a new collection for scene organisation. Parameters:
|
| move_to_collectionA | Move objects into a collection (removes them from all other collections). Parameters:
|
| load_img_to_3d_modelA | Start the local image-to-3D inference server (TripoSR). The server process is kept running until unload_img_to_3d_model() is called. Frees VRAM when unloaded — load only when you need it. Parameters:
|
| unload_img_to_3d_modelA | Stop the local image-to-3D server, freeing VRAM and memory. |
| generate_3d_from_imageA | Generate a 3D mesh (.glb) from a single image using the local TripoSR model. You must call load_img_to_3d_model() first. Parameters:
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| asset_creation_strategy | Defines the preferred strategy for creating assets in Blender |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/naab007/blender_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server