Blender Copilot MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BLENDER_HOST | No | Blender addon TCP host | localhost |
| BLENDER_PORT | No | Blender addon TCP port | 9876 |
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 complete scene information including all objects, camera, render settings, and frame range. Returns object names, types, locations, vertex/face counts for meshes, and scene metadata. |
| get_object_infoA | Get detailed information about a specific object by name. Returns location, rotation, scale, materials, modifiers, constraints, vertex/edge/face counts, bounding box, and parent/child hierarchy. |
| analyze_sceneA | Analyze the entire scene for statistics and potential issues. Returns total vertex/face/triangle counts, object type breakdown, material count, top objects by triangle count, and issues like non-uniform scale, missing materials, n-gons. |
| get_viewport_screenshotA | Capture a screenshot of the 3D viewport. Returns the file path to the saved image. Uses OpenGL render for speed. Useful for visual verification of scene state. |
| create_objectA | Create a 3D primitive object in the scene. Types: CUBE, SPHERE, UV_SPHERE, ICO_SPHERE, CYLINDER, CONE, TORUS, PLANE, CIRCLE, GRID, MONKEY, EMPTY, CAMERA, LIGHT, POINT_LIGHT, SUN_LIGHT, SPOT_LIGHT, AREA_LIGHT. Location is [x, y, z]. Rotation is in degrees [x, y, z]. Scale is [x, y, z]. |
| create_curveB | Create a curve from a list of control points. Each point is [x, y, z] (or [x, y, z, w] for NURBS). Types: BEZIER, NURBS, POLY. Set bevel_depth > 0 for tubular curves. Set close=True for closed loops. Fill modes: FULL, BACK, FRONT, NONE. |
| create_textB | Create a 3D text object. Set extrude > 0 for 3D text depth. Set bevel_depth > 0 for beveled edges. Rotation in degrees. Alignment options: LEFT, CENTER, RIGHT for X; TOP, CENTER, BOTTOM for Y. |
| create_armatureA | Create an armature (skeleton) with bones for rigging. Each bone dict: {"name": "BoneName", "head": [x,y,z], "tail": [x,y,z], "parent": "ParentBone"}. Parent is optional. Bones are created in edit mode then switched back to object mode. |
| translate_objectA | Move an object. If relative=True (default), adds to current position. If relative=False, sets absolute position. Units are Blender units (meters). |
| rotate_objectB | Rotate an object. Values are in degrees by default. If relative=True, adds to current rotation. |
| scale_objectB | Scale an object. Set uniform to scale equally on all axes. If relative=True, multiplies current scale. If False, sets absolute scale. |
| apply_transformA | Apply (freeze) the object's transforms, resetting them to identity. Essential before export or after non-uniform scaling. |
| snap_to_groundA | Snap an object's lowest point to Z=0 (the ground plane). Useful for placing objects on a floor or surface. |
| origin_setB | Set the origin point of an object. Types: ORIGIN_GEOMETRY (center of geometry), ORIGIN_CENTER_OF_MASS, ORIGIN_CENTER_OF_VOLUME, ORIGIN_CURSOR, GEOMETRY_ORIGIN. |
| duplicate_objectA | Duplicate an object. If linked=True, shares mesh data (instance). If linked=False (default), creates an independent copy. |
| delete_objectB | Delete an object from the scene by name. |
| select_objectA | Select an object and make it active. If add=False (default), deselects all others first. |
| set_parentB | Set parent-child relationship. If keep_transform=True, child maintains its world position. |
| clear_parentA | Remove parent from an object. If keep_transform=True, object stays in place. |
| set_visibilityB | Set viewport and render visibility of an object. |
| get_hierarchyA | Get the parent-child hierarchy tree. If name is given, returns that object's subtree. If no name, returns all root objects and their children. |
| rename_objectA | Rename an object. Blender may append .001 if the name already exists. |
| undoA | Undo the last operation in Blender. |
| redoB | Redo the last undone operation in Blender. |
| boolean_operationB | Perform a boolean operation between two mesh objects. Operations: DIFFERENCE (subtract), UNION (add), INTERSECT (overlap only). If apply=True, the modifier is applied and the cutter is removed. |
| join_objectsB | Join multiple objects into one. All objects are merged into the first one in the list. |
| separate_objectA | Separate an object into multiple objects. Modes: LOOSE (by loose parts), MATERIAL (by material), SELECTED (by selection). |
| subdivideA | Subdivide all faces of a mesh. Cuts = number of subdivision levels. Smooth > 0 applies smoothing to subdivided vertices. |
| extrude_facesB | Extrude all faces of a mesh along their normals by the given offset distance. |
| bevel_edgesB | Bevel all edges of a mesh. Width controls bevel size, segments controls smoothness. |
| inset_facesC | Inset all faces of a mesh. Thickness controls inset distance, depth controls push in/out. |
| shade_smoothB | Set smooth or flat shading on an object. smooth=True for smooth, False for flat. |
| decimateB | Reduce mesh polygon count. Ratio 0.5 = reduce to 50% of original faces. Lower ratio = more reduction. Applies modifier immediately. |
| remeshB | Remesh an object to create clean, uniform topology. Modes: VOXEL (uniform voxels), SMOOTH, SHARP, BLOCKS. Smaller voxel_size = higher detail but more polygons. |
| merge_by_distanceA | Merge vertices that are closer than the threshold distance. Useful for cleaning up duplicate vertices after boolean operations. |
| flip_normalsA | Flip all face normals of a mesh. Useful when faces appear inside-out. |
| fill_holesC | Automatically detect and fill holes in a mesh by selecting non-manifold edges and filling. |
| bridge_edge_loopsA | Bridge two selected edge loops to create connecting faces. The object must have exactly two edge loops selected in edit mode. |
| add_modifierC | Add a modifier to an object. Common types: SUBSURF, MIRROR, ARRAY, SOLIDIFY, BEVEL, BOOLEAN, SHRINKWRAP, REMESH, DECIMATE, SMOOTH, CAST, WAVE, DISPLACE, LATTICE. Properties dict sets modifier attributes, e.g. {"levels": 2} for SUBSURF. |
| apply_modifierC | Apply a modifier to permanently bake its effect into the mesh geometry. |
| remove_modifierC | Remove a modifier from an object without applying it. |
| create_arrayB | Create a linear array of an object. Count = number of copies. Offset is [x, y, z]. If use_relative=True, offset is relative to object size. Example: offset=[1,0,0] with relative = one object-width apart on X. |
| create_circular_arrayB | Create a circular array using an empty as rotation pivot. Count = number of copies around the circle. Axis: X, Y, or Z. Radius offsets the object from the pivot center. |
| set_materialA | Set PBR material properties on an object using Principled BSDF. base_color: [R,G,B] or [R,G,B,A] (0-1 range). metallic: 0=dielectric, 1=metal. roughness: 0=mirror, 1=diffuse. transmission: 0=opaque, 1=glass. emission_color + emission_strength for glowing materials. |
| create_glassC | Apply a glass/transparent material to an object. IOR: 1.0=air, 1.33=water, 1.45=glass, 1.52=window glass, 2.42=diamond. |
| create_metalB | Apply a metallic material to an object. Default is silver-ish. Color examples: gold=[1.0,0.76,0.33], copper=[0.72,0.45,0.2], steel=[0.8,0.8,0.8]. |
| create_emissionB | Apply an emissive (glowing) material to an object. Color is [R,G,B,A]. Strength controls brightness (10+ for visible glow in Cycles). |
| list_materialsA | List all materials in the scene with their base color and user count. |
| batch_assign_materialA | Assign the same material to multiple objects at once. Provide either a color [R,G,B] to create a new material, or material_name to use existing. |
| set_world_colorA | Set the world background to a solid color. Color is [R,G,B] (0-1 range). Strength controls brightness. Good for studio-style renders. |
| set_world_hdriA | Set an HDRI image as the world environment for realistic lighting. Provide the full file path to an .hdr or .exr file. |
| set_sky_textureC | Set a procedural Nishita sky texture for realistic outdoor lighting. sun_elevation: degrees above horizon. sun_rotation: compass direction. turbidity: atmospheric haze (2=clear, 10=hazy). |
| set_fogA | Add volumetric fog to the world. Density controls thickness. Color is [R,G,B] for emission tint. Requires Cycles or EEVEE for volume rendering. |
| set_cameraB | Configure the scene camera. Location is [x,y,z]. Rotation in degrees [x,y,z]. focal_length in mm (35=normal, 85=portrait, 200=telephoto). target: object name to point at. depth_of_field: {"enabled": true, "aperture": 2.8, "focus_object": "name", "focus_distance": 5.0}. |
| setup_studio_lightingA | Set up professional studio lighting. Removes existing lights and creates a new setup. Styles: THREE_POINT (key/fill/rim), REMBRANDT (dramatic), SOFT_BOX (even, soft), or default SUN lighting for outdoor scenes. |
| add_lightB | Add a light to the scene. Types: POINT, SUN, SPOT, AREA. Energy in watts. Color is [R,G,B]. Size controls shadow softness (AREA/POINT). Rotation in degrees (for SPOT/AREA directional lights). |
| render_imageB | Render the scene to an image file. Format is auto-detected from extension (.png, .jpg, .exr, .hdr, .bmp, .tiff). Engine: CYCLES, BLENDER_EEVEE_NEXT. Samples controls quality (more = better but slower). |
| configure_renderA | Configure render settings without rendering. Engine: CYCLES, BLENDER_EEVEE_NEXT. Resolution is [width, height]. denoise=True enables AI denoising in Cycles. transparent_bg=True for transparent background. color_management can set view_transform, look, exposure, gamma. |
| export_sceneC | Export the scene or selected objects to a file. Formats: glTF/GLB (web/game), OBJ, FBX (game engines), STL (3D printing), USD/USDC/USDA (VFX), PLY (point clouds). Creates directories as needed. |
| create_collectionB | Create a new collection (like a folder for organizing objects). Optionally nest it under a parent collection. |
| move_to_collectionC | Move an object to a different collection. Removes from current collection(s). |
| list_collectionsA | List all collections in the scene as a tree with their objects. |
| set_collection_visibilityA | Set viewport and render visibility of a collection and all its objects. |
| add_constraintC | Add a constraint to an object. Common types: TRACK_TO (aim at target), COPY_LOCATION, COPY_ROTATION, COPY_SCALE, LIMIT_LOCATION, LIMIT_ROTATION, FOLLOW_PATH, CLAMP_TO, DAMPED_TRACK, LOCKED_TRACK. Properties dict sets constraint attributes. |
| remove_constraintC | Remove a constraint from an object by constraint name. |
| batch_transformA | Apply the same transform to multiple objects at once. Translate is [x,y,z], rotate is [x,y,z] in degrees, scale is [x,y,z]. If relative=True, transforms are additive/multiplicative. |
| batch_deleteC | Delete multiple objects at once by their names. |
| align_objectsB | Align multiple objects along an axis. Axis: X, Y, or Z. Align_to: CENTER (average), MIN (lowest), MAX (highest), CURSOR (3D cursor). |
| distribute_objectsA | Evenly distribute objects along an axis. If spacing is given, uses fixed spacing. If spacing is None, distributes evenly between first and last object. |
| center_objectsA | Move objects so their collective center is at the world origin. If no names given, centers all objects in the scene. |
| set_keyframeC | Insert a keyframe on an object property at a specific frame. data_path examples: "location", "rotation_euler", "scale", "hide_viewport". Value sets the property value at that frame (list for vectors, float for scalars). |
| set_animation_rangeB | Set the animation frame range and optionally the FPS. Standard FPS values: 24 (film), 25 (PAL), 30 (NTSC), 60 (smooth). |
| set_frameC | Set the current frame in the timeline. |
| clear_animationC | Remove all animation data from an object. |
| add_rigid_bodyB | Add rigid body physics to an object. Types: ACTIVE (affected by gravity), PASSIVE (static collider). collision_shape: BOX, SPHERE, CAPSULE, CYLINDER, CONE, CONVEX_HULL (default, fits shape), MESH (exact, slow). |
| add_clothC | Add cloth simulation to a mesh object. Quality controls simulation accuracy (1-10). Mass in kg. |
| add_particlesA | Add a particle system to an object. Types: EMITTER (emit over time), HAIR (static strands). Count = number of particles. Lifetime in frames. Velocity = emission speed. |
| bake_physicsC | Bake all physics simulations in the scene to cache. Must be baked before rendering physics simulations. |
| smart_uv_projectB | Automatically UV unwrap a mesh using Smart UV Project. angle_limit in degrees controls island splitting (66 is good default). island_margin adds padding between UV islands. |
| uv_unwrapB | UV unwrap a mesh using seam-based unwrapping. Methods: ANGLE_BASED (good default), CONFORMAL (preserves angles better). Margin adds padding between UV islands. |
| execute_codeA | Execute arbitrary Python code inside Blender. Has access to bpy, mathutils, math, os. Blocked imports: subprocess, shutil, socket, ctypes, multiprocessing, webbrowser. Store results in a variable named 'result' to return them. Use this for advanced operations not covered by other tools. |
| optimize_sceneA | Optimize the entire scene: remove orphan meshes/materials/images, and merge duplicate vertices on all meshes. Returns a log of all optimizations performed. |
| set_material_colorB | Set or create a simple color material on an object. color: [R,G,B] or [R,G,B,A] (0-1 range). |
| set_principled_bsdfC | Full control over Principled BSDF PBR shader. Only set the parameters you need. Colors as [R,G,B] or [R,G,B,A] 0.0-1.0. Scalars 0.0-1.0 except emission_strength and ior. |
| set_textureB | Apply a previously downloaded PolyHaven texture to an object. texture_id must have been downloaded first via download_polyhaven_asset. |
| get_polyhaven_statusA | Check if PolyHaven integration is enabled in Blender. PolyHaven provides free HDRIs, textures, and 3D models. |
| get_polyhaven_categoriesA | Get categories for a PolyHaven asset type. asset_type: hdris, textures, models, all. |
| search_polyhaven_assetsB | Search PolyHaven assets with optional filtering. asset_type: hdris, textures, models, all. categories: comma-separated list of categories to filter by. |
| download_polyhaven_assetB | Download and import a PolyHaven asset into Blender. asset_type: hdris, textures, models. resolution: 1k, 2k, 4k. file_format: hdr/exr for HDRIs, jpg/png for textures, gltf/fbx for models. |
| get_sketchfab_statusA | Check if Sketchfab integration is enabled in Blender. Sketchfab has a wide variety of realistic downloadable 3D models. |
| search_sketchfab_modelsC | Search Sketchfab for 3D models. query: search text. count: max results. downloadable: only downloadable models. |
| get_sketchfab_model_previewA | Get a preview thumbnail of a Sketchfab model by UID. Use before downloading to visually confirm the model. |
| download_sketchfab_modelC | Download and import a Sketchfab model. Scales to target_size (largest dimension in meters). Examples: chair=1.0, table=0.75, car=4.5, person=1.7, small object=0.1-0.3. |
| get_hyper3d_statusC | Check if Hyper3D Rodin integration is enabled. Generates 3D models from text or images. |
| generate_hyper3d_model_via_textB | Generate 3D model from text description using Hyper3D Rodin. text_prompt: English description. bbox_condition: optional [L,W,H] ratio. |
| generate_hyper3d_model_via_imagesA | Generate 3D model from images using Hyper3D Rodin. Provide either input_image_paths (local) or input_image_urls (remote), not both. bbox_condition: optional [L,W,H] ratio. |
| poll_rodin_job_statusA | Poll Hyper3D Rodin generation status. Task is done when all statuses are 'Done'. Provide subscription_key (MAIN_SITE) or request_id (FAL_AI) from the generate step. |
| import_generated_assetA | Import a Hyper3D Rodin generated asset after generation completes. name: object name in scene. Provide task_uuid (MAIN_SITE) or request_id (FAL_AI). |
| get_hunyuan3d_statusC | Check if Hunyuan3D integration is enabled. Generates 3D models from text or images. |
| generate_hunyuan3d_modelB | Generate 3D model using Hunyuan3D from text and/or image. text_prompt: English/Chinese description. input_image_url: local or remote image URL. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| asset_creation_strategy | 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/dwgx/blender-copilot'
If you have feedback or need assistance with the MCP directory API, please join our Discord server