blender-mcp-ultra
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BLENDER_HOST | No | Hostname of the Blender addon TCP socket. | localhost |
| BLENDER_PORT | No | Port of the Blender addon TCP socket. | 9876 |
| BLENDER_MCP_MODE | No | Transport mode for the MCP server: 'stdio' or 'sse'. | stdio |
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 |
|---|---|
| get_scene_infoB | Kondisi scene: jumlah objek, nama, tipe, lokasi. |
| execute_blender_codeA | Jalankan Python bebas di dalam Blender. Utamakan tool terstruktur; gunakan search_api_docs dulu untuk mencari API yang benar. |
| get_viewport_screenshotA | Tangkap viewport 3D ke PNG (memerlukan UI Blender). |
| search_api_docsA | Cari dokumentasi API Blender yang disertakan. Baca SEBELUM menulis kode. |
| get_python_api_docsA | Dokumentasi detail topik API Blender, mis. bpy.ops.mesh.primitive_cube_add. |
| snap_and_parentB | Snap obj_move ke obj_target dengan mencocokkan anchor 27-titik, lalu parent. |
| snap_to_anchorC | Pindahkan objek agar salah satu dari 27 anchor-nya cocok dengan anchor objek lain. |
| apply_symmetryC | Tambah modifier Mirror untuk simetri industri. |
| fix_normalsB | Hitung ulang normal mesh agar konsisten (memerlukan UI). |
| get_object_anchorsC | Kembalikan 27 titik anchor objek dalam ruang global. |
| get_model_blueprintA | Blueprint teknis lengkap mesh: topologi, fisika, dimensi, anchor. |
| get_spatial_visualB | Telemetri spasial ASCII scene untuk agen. |
| validate_geometryB | Laporan QC: tabrakan (BVH), z-fighting, objek mengambang. |
| get_scene_propertyC | Baca properti scene apa pun. |
| pingA | Pemeriksaan liveness terhadap Blender. |
| export_glbA | Export seluruh scene sebagai GLB. |
| jump_to_view3d_object_by_nameB | Frame viewport 3D ke sebuah objek (memerlukan UI). |
| create_objectB | Buat primitive dari nol: CUBE/PLANE/SPHERE/UVSPHERE/ICOSPHERE/CYLINDER/CONE/TORUS/MONKEY/GRID/CIRCLE/EMPTY. Aman di background. |
| get_object_infoB | Info satu objek: transform, topologi, material, modifier. |
| delete_objectA | Hapus objek berdasarkan nama. |
| transform_objectB | Pindah/putar/skala objek (absolut atau relatif). |
| duplicate_objectC | Duplikat objek (data dibagi). |
| select_objectD | Pilih satu objek. |
| add_modifierC | Tambah modifier: SUBSURF/BEVEL/BOOLEAN/ARRAY/MIRROR/SOLIDIFY/SCREW/WIREFRAME/DECIMATE/REMESH/WELD/DISPLACE/... Aman di background. |
| list_modifiersC | Daftar modifier pada objek. |
| remove_modifierB | Hapus modifier berdasarkan nama. |
| apply_modifiersB | Bakar semua modifier ke data mesh. |
| boolean_operationC | Boolean DIFFERENCE/UNION/INTERSECT antara dua mesh. |
| join_objectsC | Gabungkan beberapa objek mesh menjadi satu. |
| merge_by_distanceC | Hapus vertex ganda. |
| bevel_meshC | Bevel edge atau vertex dengan bmesh. |
| extrude_faceC | Extrude satu face sepanjang offset. |
| inset_faceC | Inset satu face. |
| solidify_meshC | Tambah ketebalan kulit (modifier Solidify). |
| clean_meshB | Hapus vertex ganda + geometri lepas. |
| create_textC | Buat objek teks 3D. |
| create_curveB | Buat kurva bezier/poly dari titik-titik. |
| create_screw_profileC | Lathe/screw kurva profil mengelilingi sumbu. |
| create_emptyB | Buat objek Empty (titik referensi/kontrol). |
| subdivide_meshC | Subdivide semua edge mesh (bmesh). |
| loop_cutC | Potong loop mesh sepanjang bidang (bmesh.bisect_plane). |
| apply_transformB | Bakar transform objek ke data mesh dan reset. |
| model_from_scratchA | Buat model dasar lengkap dari nol: primitive, skala, subdivision, bevel, dan smooth shading. |
| create_materialB | Buat material PBR (Principled BSDF): warna, roughness, metallic, emisi, IOR, alpha, transmission, blend mode. |
| assign_materialD | Tetapkan material ke objek. |
| list_materialsA | Daftar semua material di file. |
| set_colorB | Atur Base Color material aktif objek. |
| add_shader_nodeC | Tambah node shader: bsdf_principled/bsdf_diffuse/emission/tex_noise/tex_image/mix_shader/math/... |
| list_shader_nodesB | Daftar node shader di node tree material. |
| set_node_valueA | Atur nilai input node shader (mis. Roughness pada Principled BSDF). |
| connect_shader_nodesC | Hubungkan dua socket node shader. |
| remove_shader_nodeD | Hapus node shader. |
| create_image_textureC | Buat datablock gambar prosedural. |
| assign_image_textureB | Tambah node Image Texture dan hubungkan ke Base Color. |
| add_vertex_colorC | Tambah layer vertex color yang dicat satu warna. |
| set_emissionC | Buat material memancar (emissive). |
| set_transparencyC | Buat material transparan (alpha + metode blend). |
| colorize_from_scratchC | Sekali jalan: buat + tetapkan material PBR ke objek. |
| create_armatureC | Buat objek armature (opsional tulang akar). |
| add_boneA | Tambah tulang ke armature (edit mode; memerlukan UI di Blender asli). |
| remove_boneC | Hapus tulang. |
| list_bonesB | Daftar tulang armature. |
| rename_boneC | Ganti nama tulang. |
| add_vertex_groupC | Buat vertex group pada mesh. |
| assign_vertex_weightsC | Tetapkan bobot ke vertex group (indeks opsional = semua). |
| remove_vertex_groupD | Hapus vertex group. |
| add_constraintC | Tambah constraint (COPY_LOCATION/COPY_TRANSFORMS/TRACK_TO/IK/...). |
| setup_ik_chainC | Constraint IK pada pose bone dengan chain count dan pole target. |
| auto_rig_weightA | Parent mesh ke armature dengan bobot otomatis (memerlukan UI). |
| mirror_bonesC | Simetrikan tulang armature (memerlukan UI). |
| reset_poseC | Reset transform pose bone ke posisi istirahat. |
| pose_boneB | Atur transform pose bone (relatif secara default). |
| add_armature_modifierA | Tambah modifier Armature ke mesh tanpa weight painting (background-safe). |
| rig_from_scratchA | Buat armature dan rantai tulang dari nol lalu ikat ke mesh. Multi-tulang di background memerlukan bobot manual. |
| insert_keyframeC | Sisipkan keyframe (location/rotation_euler/scale/...) pada sebuah frame. |
| animate_locationC | Animasi objek dari A ke B antara dua frame. |
| animate_rotationC | Putar objek N putaran mengelilingi sumbu. |
| animate_scaleC | Animasi skala objek antara dua frame. |
| keyframe_animationC | Sisipkan keyframe di beberapa frame dengan nilai yang cocok. |
| set_render_rangeC | Atur rentang frame animasi. |
| set_frameC | Lompat timeline ke sebuah frame. |
| create_actionB | Buat datablock Action dan tetapkan ke objek. |
| list_actionsA | Daftar semua action di file. |
| set_keyframe_interpolationC | Atur interpolasi CONSTANT/LINEAR/BEZIER pada action objek. |
| add_shape_keyC | Tambah shape key (opsional di-keyframe). |
| list_shape_keysC | Daftar shape key mesh. |
| add_rigid_bodyC | Jadikan objek rigid body (memerlukan UI). |
| set_gravityC | Atur gravitasi scene. |
| clear_keyframesB | Hapus semua keyframe properti dari action objek ('all' = semua). |
| animate_from_scratchA | Bersihkan animasi lama lalu buat gerak lokasi/rotasi lengkap beserta rentang frame. |
| create_lightB | Buat cahaya POINT/SUN/SPOT/AREA. |
| setup_three_point_lightingC | Cahaya key + fill + rim mengelilingi bounding box objek. |
| create_cameraD | Buat kamera. |
| set_camera_targetC | Buat kamera melacak objek target. |
| set_camera_activeC | Jadikan kamera sebagai kamera aktif scene. |
| set_render_engineA | Atur engine render: CYCLES / EEVEE / WORKBENCH. |
| set_render_resolutionC | Atur resolusi render. |
| set_render_samplesB | Atur sample untuk engine aktif (Cycles/EEVEE). |
| set_cycles_deviceB | Atur device Cycles: CPU / GPU / OPTIX / CUDA / HIP / METAL. |
| render_frameC | Render frame saat ini (write_still). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| resource_scene_info |
TDQS
Scored across 148 tools
Many tools have overlapping purposes, e.g., solidify_mesh, add_wall_thickness, and add_modifier with SOLIDIFY; get_scene_info, get_scene_graph, and get_objects_summary all provide scene summaries. The distinction between create_object, model_from_scratch, and rig_from_scratch is also unclear, making it hard for an agent to pick the right operation.
Most tools follow a verb_noun pattern (create_object, list_materials, set_render_engine), but there are notable deviations like 'ping', 'measure', 'find_objects', 'array_object', and 'run_batch'. The mix of generic verbs (get, set, create, add, remove) is consistent, but compound phrases like 'setup_three_point_lighting' and 'colorize_from_scratch' break the pattern.
With 148 tools plus a registry of 228, the server is extremely over-scoped. This is far beyond the typical 3-15 tool range and even exceeds the 50+ threshold, making selection overwhelming and redundant. The count is clearly inappropriate for a coherent MCP server.
The tool surface covers a vast range of Blender operations: modeling, materials, lighting, animation, rigging, UV, geometry nodes, import/export, and scripting. The registry tools and run_batch provide a fallback for any missing operation. Minor gaps exist, such as no direct tool to delete a material or edit text content, but these are workaround-able via execute_blender_code or call_registry_tool.