jasonjgardner/blockbench-mcp-project/blockbench-modeling
Claude Code and agent skill by jasonjgardner/blockbench-mcp-project
- community
Checking that the SKILL.md file is still in the repository.
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.
Install
npx vskill@latest install jasonjgardner/blockbench-mcp-project/blockbench-modelingSKILL.md
Blockbench Modeling
Build 3D models using cubes and meshes in Blockbench.
Plan the Shape and Target
Before a new model or substantial geometry redesign, resolve the user's appearance/accuracy, performance, or balanced preference through Blockbench use. Follow appearance and performance planning to set a working element/face budget and choose which details belong in geometry, UV tiles, or PBR. Prototype and count one repeated section before multiplying it; braces, infills, foot plates, and fasteners should not automatically become separate cubes.
Spend faces on silhouette, parallax, and deformation. Delete faces no required view or pose reveals, since real-time meshes need not be watertight. Let parts intersect instead of stitching edge loops around the joint, and float thin detail planes instead of cutting detail in. Keep geometry for recesses and openings whose depth must change as the camera moves. See real-time asset planning sections 4–6 for per-target budgets and face-removal rules.
Use format and delivery guidance 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.
When resizing or duplicating textured geometry at a different size, re-evaluate the face UV spans rather than blindly retaining the source rectangle. Follow UV scale and distortion guidance for side/end proportions, final scale transforms, and shared-material density. Correct mapping within the chosen geometry budget; additional cubes are not the default remedy for texture stretching.
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 | Mesh point-list cutting is unsupported through MCP | |
knife_cut_cube | Headless Knife tool for cubes: split at positions along one axis | |
slice_cubes_to_block_grid | Cut cubes at Bedrock block boundaries and regroup per block | |
inspect_block_bounds | Check cubes/groups against the 30×30×30 oversized block limits |
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
Bedrock Poles, Cylinders, and Tubes
For round primitives in Bedrock cube models, read Bedrock primitive construction. It derives polygon side widths and shared-pivot rotations for solid and hollow shapes, following the Shape Generator plugin's octagon and 16-sided constructions. Choose facets within the appearance/performance budget, distinguish flat-to-flat from corner diameter, and verify overlapping end faces and UV scale. create_cylinder creates a mesh; use calculated place_cube batches when the target requires cubes.
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 mesh Knife tool depends on interactive pointer state, so knife_tool returns an unsupported-operation error for point lists. For a scripted mesh 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.
Cubes can be cut headlessly. knife_cut_cube mirrors Blockbench's Knife on cubes: each cut plane is perpendicular to one axis, the original keeps the lower piece, new pieces get unique names (pole_2, pole_3), and face UVs are shared proportionally. One undo entry covers all cuts.
Oversized Bedrock Blocks
A Bedrock custom block's geometry must fit a 30×30×30 box whose center may sit at most 7 units from the block center, which Blockbench enforces as x/z within ±22 and y within -14…30 (Microsoft's page states the limit more loosely: https://learn.microsoft.com/minecraft/creator/documents/customblockoversized). Larger models must be divided into per-block sections.
inspect_block_boundsreports model, group, and cube extents against those limits, the block cell each cube sits in, and the grid cut positions that would split it.slice_cubes_to_block_gridcuts every cube where it crosses a block boundary (x/z boundaries at ±8, ±24, …; y at 0, 16, 32, …) and, by default, moves the pieces into one group per block cell (bottom,top,right_top_front,top2, …) pivoted at that block's origin. Cubes rotated about the other two axes are left uncut and listed inskipped_rotated.- Export each cell group as its own block geometry, or slice manually with
knife_cut_cubewhen the automatic grid is not what the model needs.
Organization
Create Group Hierarchy
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/blockbench-modeling/SKILL.md
Popularity
- Repository stars
- 4
- Repository forks
- 1
- 7-day trend score
- 8
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 21 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/jasonjgardner/blockbench-mcp-project/blockbench-modeling)