Skip to main content
Glama

English | 中文

blender_mcp — a local blender-mcp

Drive your local Blender 5.2 LTS from Claude Code (or any MCP client) in plain language: 17 categories, 159 typed tools covering modeling, materials, node trees, lighting, animation, cameras, rendering, import/export, UV and baking, batch operations, assets, rigging, and one-shot workflows.

  • Platforms: macOS / Windows / Linux (all three tested)

  • Blender: 5.2 LTS (not compatible with 4.x)

  • Requirements: Python 3.11+, uv

  • License: MIT

Highlights

  • 159 typed tools: every tool has an explicit signature and description, so the model never has to guess the bpy API. execute_code is the escape hatch for arbitrary Python.

  • Fully local, zero-network add-on: the Blender add-on only listens on 127.0.0.1:9877 and never touches the network. Poly Haven / Sketchfab downloads happen in the MCP server process and are written to disk before the add-on imports them by path.

  • Readable errors: when an object / material / node / socket is not found, the error lists candidate names and is passed through to the model verbatim, so it can self-correct.

  • Undoable: every write is a Ctrl+Z step in Blender; undo / redo tools are available in GUI mode.

  • One-shot workflows: three-point lighting, studio scene, turntable animation, product render, material from a texture folder, surface scatter, game-asset export.

  • Offline API docs: get_api_docs("bpy.types.Object.location") looks up bpy documentation without going online.

  • Visual feedback: render_image / viewport_screenshot can return the image straight to the model.

Related MCP server: Blender MCP VXAI

Architecture

Claude Code ──stdio──▶ MCP server (src/blender_mcp_pro, Python 3.11+ managed by uv)
                            │  each tool: typed signature → {tool, params} JSON forward
                            ▼
                    127.0.0.1:9877 (4-byte length prefix + JSON frames, persistent connection)
                            │
                Blender 5.2 extension (addon/blender_mcp_pro, Blender's bundled Python 3.13)
                            │  daemon thread receives → main thread runs bpy serially → auto undo_push
                            ▼
                    handlers/<category>.py: the actual bpy code

Fat add-on, thin server: all bpy logic lives in the add-on; the server only validates parameters and forwards. Tool names match one-to-one on both sides and a parity test keeps them in sync.

Tool catalog (17 categories, 159 tools)

Full signatures are in docs/tools.md (generated by dump-tools).

Category

Count

Tools

Scene & Objects

16

get_scene_info list_objects get_object_info create_primitive delete_object duplicate_object set_transform rename_object set_parent set_visibility select_objects manage_collection join_objects apply_transforms set_origin set_custom_property

Materials

9

list_materials get_material_info create_material assign_material set_principled_inputs set_material_settings add_image_texture create_pbr_material delete_material

Shader Nodes

10

list_shader_nodes add_shader_node remove_shader_node set_node_input set_node_property link_nodes unlink_nodes set_color_ramp build_node_tree get_node_types

Lights

6

list_lights get_light_info create_light set_light point_light_at set_world_lighting

Modifiers

8

list_modifier_types list_modifiers get_modifier_settings add_modifier set_modifier remove_modifier apply_modifier move_modifier

Animation

15

get_animation_info set_frame_range set_current_frame insert_keyframe insert_keyframes_batch delete_keyframe list_keyframes set_interpolation add_fcurve_modifier assign_action nla_push_down add_nla_strip bake_animation list_shape_keys set_shape_key

Geometry Nodes

11

list_node_groups create_geometry_nodes get_node_tree add_geometry_node remove_geometry_node link_geometry_nodes unlink_geometry_nodes set_geometry_node_input add_group_socket set_gn_modifier_input build_geometry_node_tree

Camera

7

list_cameras get_camera_info create_camera set_camera set_active_camera point_camera_at frame_objects

Render

7

get_render_settings list_render_engines set_render_settings set_color_management render_image render_animation viewport_screenshot

Import / Export

5

import_file export_file append_from_blend save_blend open_blend

UV & Texture

10

list_uv_maps add_uv_map remove_uv_map unwrap_uv pack_uv_islands mark_seams create_image bake_texture save_image list_images

Batch

8

batch_transform batch_rename batch_apply_material batch_add_modifier batch_set_property batch_delete distribute_objects randomize_transform

Assets

8

polyhaven_categories polyhaven_search polyhaven_download sketchfab_search sketchfab_download list_asset_libraries search_local_assets import_local_asset

Rigging

12

create_armature list_bones add_bone set_bone remove_bone parent_to_armature add_bone_constraint set_pose reset_pose set_vertex_group_weights add_rigify_metarig generate_rigify_rig

Rig Diagnostics

7

check_rig check_bone_hierarchy check_bone_naming find_unweighted_vertices get_bone_influence list_constraint_issues normalize_weights

Utilities

13

execute_code get_blender_info get_api_docs undo redo purge_orphans set_units set_cursor measure_distance get_bounding_box ray_cast check_mesh mesh_cleanup

Workflows

7

setup_three_point_lighting setup_studio_scene turntable_animation quick_product_render material_from_texture_folder scatter_objects export_for_game

A few capabilities worth calling out:

  • Whole node trees in one call: build_node_tree / build_geometry_node_tree take nodes=[{type,name,location,inputs,properties}] and links=[...] and build the entire tree at once, with no per-node round trips.

  • PBR materials: create_pbr_material builds a material from a set of texture paths; material_from_texture_folder scans a folder and recognises basecolor / roughness / metallic / normal / height / ao by filename.

  • Import / export formats: obj / fbx / gltf / glb / usd / usda / usdc / stl / ply / abc / blend, detected by extension, with options passed straight to the Blender operator. export_for_game duplicates → applies modifiers → triangulates → scales → exports.

  • Assets: Poly Haven HDRIs are wired into world lighting after download, textures become PBR materials, models are imported directly. Sketchfab needs an API token. Local asset libraries can be searched by type / keyword and imported.

  • Rigging: build armatures from scratch, add constraints, pose, write vertex-group weights; Rigify metarigs (human / quadruped / cat / wolf / horse / shark / bird) and generation; check_rig checks zero-length bones, multiple roots, unweighted vertices, un-normalised weights, unapplied scale, missing constraint targets, and asymmetric naming in one pass.

  • Baking: bake_texture bakes DIFFUSE / NORMAL / AO / ROUGHNESS / EMIT / COMBINED and more with Cycles, including selected-to-active.

  • Camera framing: frame_objects backs the camera off along its current direction until the targets just fit; point_camera_at / point_light_at aim at an object or coordinate.

  • Geometry queries: ray_cast, measure_distance, get_bounding_box, check_mesh (non-manifold, loose vertices, degenerate faces, and so on).

Installation

Prerequisites: Blender 5.2 LTS and uv.

git clone <this repo> blender_mcp && cd blender_mcp
uv sync
uv run blender-mcp-pro install-addon

install-addon links addon/blender_mcp_pro into Blender's user extensions directory, then enables the extension with headless Blender and saves preferences.

Platform

Default Blender lookup

Extensions directory

Link type

macOS

/Applications/Blender.app

~/Library/Application Support/Blender/5.2/extensions/user_default

symlink

Windows

C:\Program Files\Blender Foundation\Blender 5.2\blender.exe

%APPDATA%\Blender Foundation\Blender\5.2\extensions\user_default

symlink; falls back to a directory junction when symlinks are not permitted (no admin needed)

Linux

blender on PATH, /usr/bin, /snap/bin

~/.config/blender/5.2/extensions/user_default

symlink

  • Blender installed elsewhere: set BLENDER_MCP_BLENDER=<blender executable> first; likewise BLENDER_MCP_EXT_DIR for the extensions directory.

  • Prefer a copy over a link: install-addon --copy (re-run after editing the add-on source).

  • If a GUI Blender is open during installation, it will overwrite the preferences with its in-memory copy on exit. Confirm once more in the running Blender: Edit ▸ Preferences ▸ Add-ons, search "MCP Pro", tick it.

  • Once enabled the server starts automatically. Press N in the 3D viewport; the "MCP Pro" panel shows status, manual Start / Stop, and the port.

Connect to Claude Code

claude mcp add --scope user blender-pro -- uv --directory <absolute repo path> run blender-mcp-pro serve
claude mcp list        # expect: blender-pro … Connected

Windows example:

claude mcp add --scope user blender-pro -- uv --directory C:\work\blender_mcp run blender-mcp-pro serve

Other MCP clients (Cursor, Claude Desktop, and so on) use the same stdio command: uv --directory <repo> run blender-mcp-pro serve.

Optional environment variables: BLENDER_MCP_HOST / BLENDER_MCP_PORT (default 127.0.0.1 / 9877), SKETCHFAB_API_TOKEN.

Uninstall

uv run blender-mcp-pro uninstall-addon
claude mcp remove blender-pro -s user

Usage examples

With a GUI Blender open, just tell Claude Code:

  • "What's in the scene?" → get_scene_info / list_objects

  • "Make a 2 m tall cylinder with a brushed-metal material" → create_primitive + create_material + set_principled_inputs

  • "Three-point light this object and render a 1080p product shot" → quick_product_render, or setup_three_point_lighting + frame_objects + render_image

  • "Grab a 2k indoor HDRI from Poly Haven for the environment" → polyhaven_search + polyhaven_download

  • "Turn the textures in textures/wood/ into a material and put it on the table" → material_from_texture_folder

  • "Add a Rigify humanoid rig to the character and check it" → add_rigify_metarig + generate_rigify_rig + check_rig

  • "Export the selection as a game-ready GLB" → export_for_game

  • "Build a blocky Gundam out of bmesh" → execute_code (any bpy script), then frame_objects + render_image to look at it

Conventions

  • Location / rotation / scale are [x, y, z]; rotation is an Euler in radians. Colours are [r, g, b] or [r, g, b, a] in 0–1.

  • Any tool that accepts objects takes a list of names, or {"pattern": "Cube*"} / {"collection": "Props"} / {"type": "MESH"} / {"selected": true}.

  • When an object / material / node / socket is not found, the error lists candidate names.

  • Every write is undoable with Ctrl+Z in Blender; read-only tools stay out of the undo stack.

  • Principled BSDF sockets use the 5.2 names: Base Color, Metallic, Roughness, IOR, Alpha, Emission Color, Emission Strength, Specular IOR Level, …

  • execute_code has bpy / bmesh / mathutils / Vector / math preloaded; return_var returns a variable.

  • Render and download caches live in ~/.cache/blender-mcp-pro/ (renders/ hdris/ textures/ models/ sketchfab/) and can be cleared at any time.

Development and testing

uv run pytest -q                                   # 154 tests; integration tests spawn headless Blender automatically
BLENDER_MCP_ONLINE_TESTS=1 uv run pytest tests/test_assets.py   # also runs the Poly Haven online tests
uv run blender-mcp-pro dump-tools > docs/tools.md  # regenerate the tool catalog
  • Three test layers: protocol unit tests (fake Blender), handler integration tests (headless Blender, --factory-startup), and MCP stdio end-to-end (real MCP client → server → headless Blender).

  • Changed the add-on: F3 → "Reload Scripts" in Blender (takes effect immediately with a symlink / junction install).

  • Changed the server: restart it from Claude Code with /mcp.

  • Adding a tool: @command("name") in addon/blender_mcp_pro/handlers/<category>.py plus @mcp.tool() in src/blender_mcp_pro/tools/<category>.py; tests/test_parity.py keeps the names in sync.

  • Handler modules must not call bpy at module top level (the parity test loads the add-on with a fake bpy); use it inside function bodies only.

Known limitations

  • viewport_screenshot and undo / redo need a GUI Blender; headless mode raises a clear error.

  • Whether EEVEE renders in headless mode depends on the GPU context; tests pin WORKBENCH. In the GUI both EEVEE and Cycles work.

  • Sketchfab downloads need an API token: Preferences ▸ Add-ons ▸ Blender MCP Pro, or the SKETCHFAB_API_TOKEN environment variable.

  • 5.2 LTS only; not compatible with 4.x.

  • The schemas of 159 tools take up some context; if it feels slow, trimming by category is a possible follow-up.

Documentation

The detailed docs are currently in Chinese.

License

MIT

Available Tools

159 tools
add_boneC

添加一根骨骼。

Inputs: head (required), name (required), tail (required), armature (required), +3 more.

add_bone_constraintC

给骨骼加约束(IK/COPY_ROTATION/COPY_LOCATION/TRACK_TO/DAMPED_TRACK/LIMIT_ROTATION/STRETCH_TO…)。settings 里 target 给对象名、subtarget 给骨骼名。

Inputs: bone (required), type (required), armature (required), settings.

add_fcurve_modifierC

给 fcurve 加修改器:CYCLES(循环)/NOISE/LIMITS/STEPPED/GENERATOR…;settings 为其属性。

Inputs: type (required), object (required), data_path (required), settings.

add_geometry_nodeC

添加几何节点。type 可省略前缀(MeshCube = GeometryNodeMeshCube;FunctionNode* 也可)。

Inputs: type (required), node_group (required), name, inputs, +2 more.

add_group_socketC

给节点组接口加插槽(暴露到修改器面板)。socket_type: Float/Int/Bool/Vector/Color/Object/Collection/Material/Geometry…

Inputs: name (required), node_group (required), in_out, default, +1 more.

add_image_textureC

加载贴图接到 Principled。target: Base Color/Roughness/Metallic/Normal(自动加 Normal Map)/Alpha/Emission Color/Height/AO。

Inputs: material (required), image_path (required), target, colorspace, +1 more.

add_modifierC

添加修改器(SUBSURF/BEVEL/ARRAY/MIRROR/SOLIDIFY/BOOLEAN/…共 83 种)。settings 键为 bpy 属性名,对象引用直接给对象名。

Inputs: type (required), object (required), name, settings.

add_nla_stripC

在 NLA 轨道上添加动作片段。

Inputs: action (required), object (required), frame_start (required), track, +1 more.

add_rigify_metarigA

添加 Rigify 元骨架:human/basic_human/basic_quadruped/cat/wolf/horse/shark/bird。

Inputs: name, type.

add_shader_nodeC

添加节点。type 可省略前缀(TexNoise = ShaderNodeTexNoise);inputs 按插槽名设值;properties 设节点属性(如 blend_type)。

Inputs: type (required), material (required), name, inputs, +2 more.

add_uv_mapD

新增 UV 层。

Inputs: object (required), name, set_active.

append_from_blendC

从 .blend 追加/链接一个数据块(objects/materials/collections/node_groups/actions/…)。

Inputs: name (required), path (required), datablock (required), link.

apply_modifierC

应用修改器到网格。

Inputs: object (required), modifier (required).

apply_transformsC

应用变换到网格数据(Ctrl+A)。

Inputs: objects (required), scale, location, rotation. Returns: result

assign_actionC

给对象指定动作(省略则新建)。

Inputs: object (required), action.

assign_materialB

把材质赋给对象的槽位(默认 0,不存在则新建)。

Inputs: object (required), material (required), slot.

bake_animationC

把约束/父级/NLA 的运动烘焙成逐帧关键帧。

Inputs: object (required), step, frame_end, frame_start, +2 more.

bake_textureB

Cycles 烘焙到贴图。bake_type: DIFFUSE/NORMAL/AO/ROUGHNESS/EMIT/COMBINED/…;无 UV 自动 smart project;output_path 保存 PNG。

Inputs: object (required), bake_type (required), size, image, +5 more.

batch_add_modifierD

批量加修改器。

Inputs: type (required), objects (required), settings.

batch_apply_materialD

批量赋材质。

Inputs: objects (required), material (required).

batch_deleteD

批量删除。

Inputs: objects (required).

batch_renameC

批量重命名:前缀/后缀/查找替换/编号。

Inputs: objects (required), find, prefix, suffix, +2 more.

batch_set_propertyC

批量设置任意属性路径(如 hide_render、data.use_auto_smooth、modifiers['Bevel'].width)。

Inputs: value (required), objects (required), data_path (required).

batch_transformD

批量变换(默认增量)。

Inputs: objects (required), scale, location, relative, +1 more.

build_geometry_node_treeC

一次性构建几何节点树(格式同 build_node_tree)。

Inputs: nodes (required), node_group (required), clear, links.

build_node_treeC

一次性建树:nodes=[{type,name?,location?,inputs?,properties?}],links=[{from_node,from_socket,to_node,to_socket}]。

Inputs: nodes (required), material (required), clear, links.

check_bone_hierarchyD

骨骼层级树、孤立骨、最大深度。

Inputs: armature (required).

check_bone_namingC

检查 .L/.R 对称命名:缺失镜像、不规范命名。

Inputs: armature (required), convention.

check_meshC

网格体检:顶点/边/面、三角/四边/ngon、非流形边、松散点、重复顶点。

Inputs: name (required).

check_rigC

骨架综合体检:零长骨、多根、deform 骨无顶点组、未权重/未归一顶点、未应用缩放、约束目标丢失、命名不对称。

Inputs: armature (required).

create_armatureB

新建骨架;bones=[{name, head, tail, parent?, roll?, connect?, deform?}] 一次建骨链。

Inputs: name, bones, location.

create_cameraC

新建相机。type: PERSP/ORTHO;lens 焦距 mm。

Inputs: lens, name, type, clip_end, +5 more.

create_geometry_nodesB

给对象新建一个几何节点修改器与节点组(含 Group Input→Output 直通)。

Inputs: object (required), group_name, modifier_name.

create_imageC

新建空白图像。

Inputs: name (required), alpha, color, width, +2 more.

create_lightB

新建灯光。type: POINT/SUN/SPOT/AREA;energy 瓦;radius 软阴影半径;size 面光尺寸;spot_size 弧度;target 指向对象或坐标。

Inputs: type (required), name, size, color, +7 more.

create_materialB

新建 Principled BSDF 材质;alpha<1 自动切 BLENDED;assign_to 直接赋给对象。

Inputs: name (required), ior, alpha, metallic, +5 more.

create_pbr_materialC

用一组贴图路径一次建好 PBR 材质。

Inputs: name (required), ao, height, normal, +4 more.

create_primitiveA

新建基础物体。type: cube/plane/uv_sphere/ico_sphere/cylinder/cone/torus/circle/monkey/empty/text。 size 用于 cube/plane/monkey;radius 用于球/柱/锥/环/圆;depth 用于柱/锥(torus 时为 minor_radius);segments 为分段数。

Inputs: type (required), name, size, text, +7 more.

delete_keyframeD

删除某帧的关键帧。

Inputs: frame (required), object (required), data_path (required), index.

delete_materialB

删除材质(或仅从对象上解除)。

Inputs: name (required), unlink_only.

delete_objectA

删除对象(名字列表或过滤器),可连带子物体。

Inputs: objects (required), delete_children.

distribute_objectsA

排列对象:LINE 沿 axis(默认 X) 等距;GRID 列沿 axis、行沿下一轴,columns 列;CIRCLE 以 axis(默认 Z) 为法线、半径 radius。

Inputs: objects (required), axis, mode, center, +3 more.

duplicate_objectC

复制对象;linked=true 共享网格数据;offset 为位置偏移。

Inputs: name (required), linked, offset, new_name.

execute_codeC

在 Blender 里执行任意 Python(预置 bpy/bmesh/mathutils/Vector/math)。返回 stdout;return_var 指定要取回的变量名。

Inputs: code (required), return_var.

export_fileD

导出到文件(同上格式)。objects 省略则导出全部。

Inputs: path (required), format, objects, options.

export_for_gameB

游戏资产导出:复制→应用修改器→三角化→缩放→导出 GLB/GLTF/FBX/OBJ,原对象不动。

Inputs: path (required), objects (required), up, scale, +4 more.

find_unweighted_verticesC

找出没有骨骼权重的顶点。

Inputs: object (required), threshold.

frame_objectsC

沿相机当前朝向后退到能框住这些对象的距离并对准它们。

Inputs: camera (required), objects (required), margin.

generate_rigify_rigC

由元骨架生成 Rigify 控制骨架。

Inputs: metarig (required).

get_animation_infoA

场景帧范围/fps/动作列表;给 object 时附带其 action、fcurve 摘要、NLA 轨道、形态键。

Inputs: object.

get_api_docsA

本地查 bpy API 文档。path 形如 bpy.types.Object / bpy.types.Object.location / bpy.ops.mesh.primitive_cube_add。

Inputs: path (required).

get_blender_infoB

Blender 版本、Python、当前文件、已启用插件、server 状态、Sketchfab token 是否已配置。

Inputs: no named parameters.

get_bone_influenceB

某顶点受哪些顶点组/骨骼影响及权重。

Inputs: object (required), vertex_index (required). Returns: result

get_bounding_boxD

合并包围盒:min/max/center/size。

Inputs: objects (required), world.

get_camera_infoC

相机详情(镜头、类型、裁剪、DOF、是否活动)。

Inputs: name (required).

get_light_infoC

灯光详情。

Inputs: name (required).

get_material_infoC

材质详情:Principled 主要输入值、贴图、渲染设置、使用者。

Inputs: name (required).

get_modifier_settingsC

某修改器的当前值与可设置属性表。

Inputs: object (required), modifier (required).

get_node_treeC

节点组全貌:节点、连线、接口(输入/输出插槽)与使用者。

Inputs: node_group (required).

get_node_typesA

枚举可用节点类型及其输入/输出插槽。tree: shader/geometry;filter 子串过滤。

Inputs: tree, filter. Returns: result

get_object_infoA

对象详情:变换、世界位置、父子、集合、修改器、约束、材质槽、网格统计、自定义属性。

Inputs: name (required).

get_render_settingsA

当前渲染设置(引擎、分辨率、采样、输出、色彩管理)。

Inputs: no named parameters.

get_scene_infoA

场景概况:名称、帧范围、fps、单位、活动物体/相机、选择、按类型计数、集合树。

Inputs: no named parameters.

import_fileC

导入文件(obj/fbx/gltf/glb/usd/usda/usdc/stl/ply/abc/blend,按后缀识别)。options 透传给导入算子。返回新增对象名。

Inputs: path (required), format, options, collection.

import_local_assetC

从本地资产库导入数据块(file 可指定库内 .blend 相对路径)。

Inputs: name (required), library (required), file, link, +1 more.

insert_keyframeA

插关键帧。data_path 如 location / rotation_euler / scale / hide_render / ["prop"];给 value 先赋值再打帧;index 指定分量。

Inputs: object (required), data_path (required), frame, index, +1 more.

insert_keyframes_batchC

批量打帧:keys=[{frame, location?, rotation?, scale?, <其他 data_path>?}]。

Inputs: keys (required), object (required).

join_objectsC

合并多个网格对象到 target(默认第一个)。

Inputs: objects (required), target.

list_asset_librariesA

Blender 偏好里配置的本地资产库。

Inputs: no named parameters. Returns: result

list_bonesA

列出骨骼(head/tail/父子/deform),pose=true 附带姿态变换与约束。

Inputs: armature (required), pose. Returns: result

list_camerasA

列出相机。

Inputs: no named parameters. Returns: result

list_constraint_issuesA

列出骨骼约束问题:目标缺失、subtarget 不存在、IK 链过长、被禁用、influence 为 0。

Inputs: armature (required). Returns: result

list_imagesB

列出图像数据块。

Inputs: no named parameters. Returns: result

list_keyframesC

列出 fcurve 与关键帧(帧、值、插值)。

Inputs: object (required), data_path. Returns: result

list_lightsB

列出灯光及参数。

Inputs: no named parameters. Returns: result

list_materialsA

列出材质及使用它的对象。

Inputs: used_only. Returns: result

list_modifiersB

列出对象上的修改器栈。

Inputs: object (required). Returns: result

list_modifier_typesC

列出全部修改器类型及各自可设置的属性(名称/类型/枚举/默认值)。

Inputs: filter. Returns: result

list_node_groupsB

列出节点组(type: GEOMETRY/SHADER)。

Inputs: type. Returns: result

list_objectsA

列出场景对象(可按类型 MESH/LIGHT/CAMERA…、集合、名字通配符、是否选中过滤)。

Inputs: type, pattern, selected, collection. Returns: result

list_render_enginesB

可用渲染引擎。

Inputs: no named parameters. Returns: result

list_shader_nodesA

列出材质节点树:每个节点的类型/位置/输入值/属性,以及全部连线。

Inputs: material (required).

list_shape_keysC

列出形态键。

Inputs: object (required). Returns: result

list_uv_mapsC

列出网格的 UV 层。

Inputs: object (required). Returns: result

manage_collectionC

集合管理。action: create/delete/move/link/unlink/rename。move 会把对象从其它集合移出。

Inputs: name (required), action (required), parent, objects, +1 more.

mark_seamsA

标记缝合边:按边索引,或从锐边生成;clear 先清空。

Inputs: object (required), clear, edges, from_sharp.

material_from_texture_folderC

扫描文件夹,按文件名识别 basecolor/roughness/metallic/normal/height/ao 贴图并建 PBR 材质。

Inputs: folder (required), name, assign_to.

measure_distanceC

两点距离;a/b 可为对象名或 [x,y,z]。

Inputs: a (required), b (required).

mesh_cleanupC

网格清理:重算法线、按距离合并顶点、溶解退化、平滑着色、按角度自动平滑(弧度)。

Inputs: name (required), inside, threshold, shade_smooth, +4 more.

move_modifierB

调整修改器顺序:给 index,或 direction UP/DOWN/TOP/BOTTOM。

Inputs: object (required), modifier (required), index, direction.

nla_push_downC

把当前动作推入 NLA 轨道。

Inputs: object (required).

normalize_weightsC

把每个顶点的权重归一化到 1(lock_active 保持活动组不变)。

Inputs: object (required), groups, lock_active.

open_blendC

打开 .blend 文件。

Inputs: path (required), load_ui.

pack_uv_islandsC

打包 UV 岛。

Inputs: object (required), margin, rotate.

parent_to_armatureC

把网格绑定到骨架。method: AUTOMATIC(自动权重)/ENVELOPE/EMPTY_GROUPS/DEFORM。

Inputs: objects (required), armature (required), method.

point_camera_atB

相机朝向对象或坐标;use_constraint 用 Track To 持续跟随。

Inputs: camera (required), target (required), use_constraint.

point_light_atA

让灯光指向对象或坐标;use_constraint 用 Track To 约束持续跟随。

Inputs: light (required), target (required), use_constraint.

polyhaven_categoriesB

Poly Haven 分类及数量。asset_type: hdris/textures/models。

Inputs: asset_type.

polyhaven_downloadA

下载 Poly Haven 资产并导入:HDRI→世界光;纹理→PBR 材质;模型→导入场景。resolution: 1k/2k/4k/8k。

Inputs: asset_id (required), asset_type (required), resolution, file_format.

purge_orphansA

清理无用户的孤儿数据块(材质、网格、图片…)。

Inputs: no named parameters.

quick_product_renderC

三点光 + 相机取景 + 透明背景,一步渲染产品图。

Inputs: object (required), output_path (required), engine, samples, +1 more.

randomize_transformB

随机化变换,各参数为 ± 范围;同 seed 结果可复现。

Inputs: objects (required), seed, scale, location, +2 more.

ray_castB

从 origin 沿 direction 发射线,返回命中对象/位置/法线/面索引。

Inputs: origin (required), direction (required), distance.

redoB

重做(Ctrl+Shift+Z)。

Inputs: no named parameters.

remove_boneC

删除骨骼。

Inputs: bone (required), armature (required).

remove_geometry_nodeB

删除几何节点。

Inputs: node (required), node_group (required).

remove_modifierC

删除修改器。

Inputs: object (required), modifier (required).

remove_shader_nodeD

删除节点。

Inputs: node (required), material (required).

remove_uv_mapC

删除 UV 层。

Inputs: name (required), object (required).

rename_objectC

重命名对象(默认连同其数据块)。

Inputs: name (required), new_name (required), rename_data.

render_animationC

渲染帧序列。output_path 可含 #### 帧号占位(如 /tmp/out/frame_####.png)。

Inputs: output_path (required), frame_end, frame_start.

render_imageB

渲染当前帧到文件(默认 ~/.cache/blender-mcp-pro/renders/),return_image 时回传缩略图。

Inputs: frame, output_path, return_image, max_preview_size.

reset_poseC

重置姿态到静止位。

Inputs: armature (required), bones.

save_blendB

保存当前文件(给 path 即另存为)。

Inputs: path, compress.

save_imageC

把 Blender 内的图像保存到磁盘。

Inputs: path (required), image (required), format.

scatter_objectsC

把 source 散布到 surface 表面。method: GEOMETRY_NODES(非破坏实例)或 COPIES(真实副本)。

Inputs: source (required), surface (required), seed, count, +3 more.

search_local_assetsC

搜索本地资产库里的数据块。type: objects/materials/node_groups/worlds/collections/meshes/actions。

Inputs: type, query, library, assets_only. Returns: result

select_objectsB

选择对象。mode: replace/add/remove;active 指定活动对象。

Inputs: objects (required), mode, active.

set_active_cameraC

设为场景活动相机。

Inputs: name (required).

set_boneC

修改骨骼(parent 传空字符串即清除父级)。

Inputs: bone (required), armature (required), head, roll, +5 more.

set_cameraD

修改相机参数。dof: {enabled, focus_object, focus_distance, fstop}。

Inputs: name (required), dof, lens, type, +5 more.

set_color_managementC

色彩管理:view_transform (AgX/Filmic/Standard…)、look、曝光、gamma。

Inputs: look, gamma, exposure, view_transform.

set_color_rampB

设置 Color Ramp:stops=[{position, color}],interpolation: LINEAR/EASE/CONSTANT/B_SPLINE/CARDINAL。

Inputs: node (required), stops (required), material (required), interpolation.

set_current_frameC

跳到某帧。

Inputs: frame (required).

set_cursorC

设置 3D 游标位置/旋转。

Inputs: location, rotation.

set_custom_propertyC

设置对象自定义属性;value 省略即删除该属性。

Inputs: key (required), name (required), value.

set_frame_rangeB

设置帧范围与 fps。

Inputs: end (required), start (required), fps.

set_geometry_node_inputB

设置几何节点输入插槽值。

Inputs: node (required), value (required), socket (required), node_group (required).

set_gn_modifier_inputC

设置几何节点修改器面板上的输入值(按接口名)。

Inputs: input (required), value (required), object (required), modifier (required).

set_interpolationC

设置关键帧插值:CONSTANT/LINEAR/BEZIER/SINE/QUAD/…;easing: AUTO/EASE_IN/EASE_OUT/EASE_IN_OUT。

Inputs: mode (required), object (required), easing, data_path, +1 more.

set_lightC

修改灯光参数。shape 用于面光 SQUARE/RECTANGLE/DISK/ELLIPSE;angle 用于太阳光。

Inputs: name (required), size, angle, color, +6 more.

set_material_settingsC

材质渲染设置。surface_render_method: DITHERED/BLENDED;displacement_method: BUMP/DISPLACEMENT/BOTH。

Inputs: material (required), pass_index, backface_culling, displacement_method, +1 more.

set_modifierC

修改修改器属性。

Inputs: object (required), modifier (required), settings (required).

set_node_inputC

设置某节点某输入插槽的值(插槽可用名字、索引或 'Name#2')。

Inputs: node (required), value (required), socket (required), material (required).

set_node_propertyC

设置节点属性(operation、blend_type、data_type、image=图片名或路径、node_tree=组名…)。

Inputs: node (required), value (required), material (required), property (required).

set_originC

设置原点。type: GEOMETRY/CURSOR/CENTER_OF_MASS/CENTER_OF_VOLUME/BOUNDS/GEOMETRY_TO_ORIGIN。

Inputs: name (required), type.

set_parentA

设置父子关系;parent 省略即清除父级。keep_transform 保持世界变换。

Inputs: child (required), parent, keep_transform.

set_poseA

设置姿态:bones={骨名: {location?, rotation_euler?|rotation_quaternion?, scale?}};keyframe 时打关键帧。

Inputs: bones (required), armature (required), frame, keyframe.

set_principled_inputsA

批量设置 Principled BSDF 输入。键用 5.2 插槽名:Base Color, Metallic, Roughness, IOR, Alpha, Emission Color, Emission Strength, Specular IOR Level, Subsurface Weight, Transmission Weight, Coat Weight, Sheen Weight…

Inputs: inputs (required), material (required).

set_render_settingsC

渲染设置。engine: BLENDER_EEVEE/CYCLES/BLENDER_WORKBENCH;engine_settings 透传到 scene.eevee / scene.cycles 属性。

Inputs: fps, engine, denoise, samples, +8 more.

set_shape_keyA

设置形态键值(不存在则创建,含 Basis);给 frame 则同时打关键帧。

Inputs: name (required), value (required), object (required), frame.

set_transformC

设置位置/旋转(弧度欧拉)/缩放;relative=true 时为增量(缩放为乘法)。

Inputs: name (required), scale, location, relative, +1 more.

set_unitsA

场景单位。system: METRIC/IMPERIAL/NONE;length_unit 如 METERS/CENTIMETERS;rotation_unit: DEGREES/RADIANS。

Inputs: system, length_unit, scale_length, rotation_unit.

setup_studio_sceneC

一键摄影棚:弧形背景板(或地面)、世界光/HDRI、三点光、相机取景。

Inputs: camera, ground, subject, backdrop, +1 more.

setup_three_point_lightingB

围绕目标布 Key/Fill/Rim 三盏面光并对准它;color_temp 为开尔文色温。

Inputs: target (required), height, distance, rim_ratio, +3 more.

set_vertex_group_weightsA

设置顶点组权重:weights=[[vertex_index, weight], …] 或 all=统一值;mode: REPLACE/ADD/SUBTRACT。组不存在则创建。

Inputs: group (required), object (required), all, mode, +1 more.

set_visibilityC

设置视口/渲染/可选中的隐藏状态。

Inputs: objects (required), hide_render, hide_select, hide_viewport.

set_world_lightingA

世界光:背景颜色/强度,或加载 HDRI(rotation 为 Mapping 旋转弧度)。

Inputs: color, rotation, strength, hdri_path.

sketchfab_downloadB

下载 Sketchfab 模型(glb)并导入。需要在插件偏好里填 Sketchfab API token(或环境变量 SKETCHFAB_API_TOKEN)。

Inputs: uid (required).

turntable_animationC

给对象做旋转展示动画(父级空物体绕 Z 线性旋转 + 循环),并让相机取景。

Inputs: object (required), camera, frames, revolutions.

undoA

撤销上一步(Ctrl+Z)。

Inputs: no named parameters.

unwrap_uvC

UV 展开。method: ANGLE_BASED/CONFORMAL/MINIMUM_STRETCH/SMART_PROJECT/CUBE/CYLINDER/SPHERE/LIGHTMAP。

Inputs: object (required), margin, method, uv_map, +1 more.

viewport_screenshotC

截取 3D 视口(需要 Blender GUI)。

Inputs: output_path, return_image.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.4/5.0

    Scored across 159 tools

    Disambiguation4/5

    Tools have specific names and descriptions that clearly distinguish their purposes, such as list_lights vs set_light vs create_light. While there are many tools, each targets a distinct operation or data type with minimal overlap.

    Naming Consistency3/5

    Most tools follow verb_noun with underscores, but there is a mix of prefixes (get_, list_, set_, create_, add_, remove_, check_, setup_, batch_) and some verbs are used inconsistently (e.g., list_* vs get_* for similar queries). The pattern is recognizable but not perfectly uniform.

    Tool Count1/5

    With 159 tools, the server has far more than the typical 3-15 range, exceeding even the 50+ threshold for extreme counts. This large number may overwhelm agents and suggests a need for consolidation or grouping.

    Completeness4/5

    The toolset covers a wide range of Blender functionality including objects, materials, nodes, lights, cameras, animation, modifiers, constraints, and asset management. While some niche areas like physics are not directly exposed, the execute_code tool fills gaps, making the coverage fairly complete.

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables natural language control of Blender 3D through MCP clients, allowing creation, modification, and manipulation of 3D models, animations, and scenes.
      301
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables any MCP client to drive Blender 5.2 LTS through natural language, with tools for scene inspection, object creation and transformation, material and modifier handling, rendering, viewport capture, and guarded Python execution.
      2
      MIT