blockbench-modeling
Create and edit 3D models in Blockbench using MCP tools. Use when building geometry with cubes, creating meshes, placing spheres/cylinders, editing vertices, extruding faces, or organizing models with groups. Covers both cube-based Minecraft modeling and freeform mesh editing.
By jasonjgardner · 903 installs
npx skills add jasonjgardner/blockbench-mcp-project --skill blockbench-modeling
Source repository · Upstream listing
Blockbench Modeling
Build 3D models using cubes and meshes in Blockbench.
Plan the Shape and Target
Use [format and delivery guidance](../blockbench use/references/formats and delivery.md) when selecting a format or exporting. Block out the silhouette and proportions before UV layout and surface detail. Match polygon density to visible shape or deformation needs; automatic subdivision is not a quality step by itself.
For articulated parts, create a hierarchy with pivots at joints and unique, consistent bone names. Group origins are pivots, not translations added to a cube's from / to coordinates. Place cube bounds in the model's rest coordinate space; the hierarchy applies rotations around those pivots. Mesh vertices are mesh local, as described below. Check overlapping surfaces for z fighting and preview moving parts for hidden gaps. See the official [modeling overview](https://blockbench.net/wiki/guides/blockbench overview tips/).
Available Tools
Cube Tools
Tool Purpose
place cube Create cubes with position, size, texture
modify cube Edit cube properties (position, rotation, UV, etc.)
get cube uv / set cube uv Inspect/edit box or per face cube UVs; see texturing skill
Mesh Tools
Tool Purpose
place mesh Create meshes with indexed faces; returns UUIDs and runtime geometry keys
get mesh info Inspect mesh local positions, faces, normals, selection, textures, and optional UVs
create sphere Create sphere mesh
create cylinder Create cylinder mesh
extrude mesh Extrude selected face regions; edge/vertex modes are unsupported
subdivide mesh Subdivide selected triangles/quads into cuts + 1 segments per edge
select mesh elements Select vertices/edges/faces
move mesh vertices Move selected vertices
delete mesh elements Remove geometry
merge mesh vertices Weld nearby vertices
create mesh face Create face from vertices
knife tool Interactive point list operation is unsupported through MCP
Element Tools
Tool Purpose
add group Create bone/group
list outline View model hierarchy
duplicate element Copy elements
rename element Rename elements
remove element Delete elements
find elements by criteria Query elements by name pattern, type, parent, size
select all of type Bulk select cubes, meshes, or groups
filter by material Find elements referencing a texture
Cube Modeling
place cube supports untextured blockout in the current source plugin; use get capabilities: include tools=true to identify the loaded build. A new texture can be created after the silhouette is established. Supplying a texture or group requires a valid existing reference. Use returned UUIDs for later edits; the literal group="root" or add group 's parent="root" means outliner root. Name a real root bone rig root , or use its UUID, to avoid that reserved target.
Place a Cube
Place Multiple Cubes
Modify Cube
Cube with Texture
Mesh Modeling
Check get capabilities before creating meshes. Use a registered format with format.features.meshes=true , normally free (Generic Model).
Create a Mesh and Retain Its IDs
The JavaScript examples below are client orchestration pseudocode: call(name, args) invokes that MCP tool and checks for isError . For JSON results, it returns structuredContent or the decoded JSON text; for plain text results, it returns the text unchanged. It is not code for risky eval . Variables such as panel.uuid and panel.face keys[0] must be replaced with their returned values in actual tool arguments, never sent as literal strings.
Input faces use zero based vertex indices . Returned vertex keys and face keys follow input order and hold the actual runtime keys. Later selection, face creation, and UV tools need those keys. A mesh name or UUID identifies the mesh, not its vertices or faces. Retain the UUID to avoid ambiguous names. After topology edits or undo/redo, inspect again before reusing component keys.
Inspect Geometry and Read Every Page
For primitives or existing meshes, obtain keys with get mesh info . Vertex items contain {key, position, selected} ; face items contain {key, vertices, normal, selected, texture} . Positions, bounds, and normals are mesh local , before origin, rotation, and parent transforms.
Each list has its own next offset ; null means complete. The default limit is 100, maximum 500 per list. Finish paging before mutating geometry because keys are sorted and edits can invalidate offsets. Inspection is read only and does not select components.
Create Sphere
Create Cylinder
Extrude Face
For the unrotated, capped cylinder created above, select all cap triangles facing local +Y:
Subdivide for Detail
Move Vertices
Continue from the panel creation example, before changing its topology:
Merge Close Vertices
Knife Cut
The host Knife tool depends on interactive pointer state, so knife tool returns an unsupported operation error for point lists. For a scripted cut, inspect with get mesh info , construct the intended replacement vertices/faces with place mesh , verify them, then replace the original geometry within the user's requested scope. Use Blockbench's interactive Knife tool when the user prefers to cut manually.
Organization
Create Group Hierarchy
Add Cubes to Groups
Duplicate Element
View Hierarchy
Selection & Filtering
Query the model without loading the full outline. These tools are read only except select all of type .
Find Elements by Criteria
Combine any of: regex name match, substring match, type, parent group scope, cube size bounds, selection scope.
Returns { count, truncated, matches: [{ uuid, name, type, parent }] } .
Select All of Type
Filter by Material
Find every cube or mesh that references a specific texture. For cubes, the exact face keys are returned.
Useful when refactoring textures: find all users before swapping or retiring a texture.
Common Patterns
Minecraft Character
This example assumes a cube format with a bone rig and a 32 unit tall rest pose. It does not prescribe a player skin template. The cube bounds already include their location in the character; the group pivot does not reposition them.
Smooth Organic Shape
Only subdivide when the requested shape needs the extra vertices. Subdivision adds topology; it does not by itself smooth the silhouette.
The predicate uses local Y, so 0 selects the upper half of this sphere even though its origin is at world Y=8. Use a predicate appropriate to the inspected geometry for other shapes.
Tips
Use list outline to see current model structure
Use find elements by criteria for targeted queries instead of filtering list outline results client side
Set group origins at joint/pivot points for animation
Use faces=true for size based cube UVs; inspect and arrange the UVs before detailed painting
Create bone hierarchy before adding geometry
duplicate element with an offset creates a translated copy, not a mirrored shape or mirrored UV layout
Mesh editing is more flexible but cubes are simpler for Minecraft style models
For a substantial rework, a save checkpoint history marker can help recovery; inspect actual history entries before undo