mcpField
B
blockbench-mcp-overview

blockbench-mcp-overview

github.com/jasonjgardnerCreative & media261.1k installsUpdated 5w ago
Repository

About blockbench-mcp-overview

A guide for creators operating Blockbench through MCP, covering tool discovery, project inspection, and workflow selection. It also explains native armatures, format-specific operations, recovery, and export verification.

Key features

  1. 01Discover host, project, and tool capabilities
  2. 02Inspect model hierarchy, textures, and UVs
  3. 03Guide modeling, animation, and format-specific tasks
  4. 04Explain native armatures and weight inspection
  5. 05Provide recovery and export-check workflows

Use cases

  1. 01Check the active format and available tools before editing
  2. 02Find model elements and inspect existing assets
  3. 03Inspect native armatures and vertex weights
  4. 04Export a model and verify the result

MCP support

Guides clients in discovering tools, modes, resources, and format capabilities through the Blockbench MCP server, then using the relevant tools to inspect or edit projects.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/jasonjgardner/blockbench-mcp-project --skill blockbench-mcp-overview

After installing, type/blockbench-mcp-overviewin Claude Code to confirm it loaded.

Details

From the project README

Blockbench MCP Overview

For content changes, load blockbench-use first. The running server's tool list and schemas determine available operations; this source skill can describe tools newer than an installed bundle. Tool status and success text are not a substitute for result inspection.

Discover the Host and Workflow

get_capabilities: include_tools=true
# → blockbench, plugin, project, format, formats, tools, notes
list_modes
# → current_mode, modes[{id, available, selected, ...}]

project may be null. Use exact registered format IDs: Generic Model is normally free. Inspect a prospective format with get_capabilities: format_id="free" without switching projects. Detailed feature flags can be null (unknown); compact listings distinguish true flags and unknown flags. Installed plugin formats are supported through discovery rather than a fixed whitelist in these skills.

When a tool depends on editor state, use list_modes and set_mode: mode_id="<returned ID>", then refresh availability. Animate uses animate, not animation. Changing mode does not change project format.

WorkflowTools or guidance
Cubes, meshes and groupsModeling
Cube/mesh UVs, texture images, painting and layersTexturing
Group rigs, keyframes, curves and timelinesAnimation
Particle effects, locators and particle keyframes (create_particle_effect, add_locator, manage_particle_keyframes, export_particle_pack)Particles
Normal/height/MER channel materialsPBR materials
Generating normal/height/MER maps from a color texture (PyPBR or vgpu, Depth Anything)Albedo to normal
Hytale-specific formats, attachments and visibilityHytale
Native armatures and vertex weightsArmature section below
Java item/block display transformsDisplay section below
Bedrock block face material namesMaterial-instance section below
Undo history and file deliveryRecovery/export sections below

Inspection and IDs

Prefer find_elements_by_criteria and filter_by_material for targeted questions; use list_outline to understand a hierarchy. Read list_textures and list_materials before referring to existing assets. Names can collide, especially a group and its cube, so retain UUIDs.

place_mesh returns {meshes: [{name, uuid, vertex_keys, face_keys}]}. Component arrays follow input order. Other mesh creators and existing meshes can be inspected with get_mesh_info; its vertices and faces have independent next_offset values. Read to null before mutating. Positions and normals are mesh-local. Reinspect after topology changes or undo/redo. See the modeling skill for executable client-orchestration examples.

get_cube_uv: id="<cube UUID>" reads box/per-face mode, face UVs and effective texture dimensions. set_cube_uv edits those values with format checks. list_textures reports uv_size, bitmap_size, and frame_size; create_texture can set an explicit uv_width/uv_height pair in formats with per-texture UV sizing. Schemas and examples are in the texturing skill.

Resources include projects://{id}, nodes://{id}, textures://{id}, and Hytale-specific resources. Discover resource templates and concrete URIs from the live server instead of inventing IDs. Project exports can also return a live .bbmodel resource link.

A Small Model and Animation

This is tool-call pseudocode for a newly intended Bedrock entity. Confirm the format is registered and the project supports animation first.

create_project: name="robot", format="bedrock"
add_group: name="body", origin=[0, 12, 0]
place_cube: elements=[{name: "torso_geo", from: [-4, 12, -2], to: [4, 24, 2]}], group="body"

create_texture: name="skin", width=64, height=64, fill_color="#808080", layer_name="base"
apply_texture: id="torso_geo", texture="skin", applyTo="all"

idle = create_animation: name="idle", animation_length=2, loop=true, bones={}
manage_keyframes: animation_id=idle.uuid, action="create", bone_name="body",
  channel="rotation", keyframes=[
    {time: 0, values: [0, 0, 0]},
    {time: 1, values: [0, 5, 0]},
    {time: 2, values: [0, 0, 0]}
  ]
animation_timeline: animation_id=idle.uuid, action="set_time", time=1
capture_screenshot

Bind idle.uuid to the returned value; it is not a literal tool argument. Inspect UVs before adding detailed texture art. A rest-pose screenshot alone does not verify motion.

Native Armatures

When the running format supports armature_rig, discover the native armature tools: list_armatures, get_armature, add_armature, list_armature_bones, get_armature_bone, add_armature_bone, and the update/remove operations. ArmatureBones and group-based BoneAnimators are different APIs; the general animation tools resolve groups.

For an existing mesh and armature, inspect get_mesh_info for runtime vertex keys and get_vertex_weights: mesh_id="<UUID>" for current weights. set_vertex_weights_batch takes bone_id, mesh_id, and weights: { "<vertex key>": 0.5 }; weights are 0–1. Inspect all contributing weights and deformation at joints after changes; setting one bone's values does not establish a correctly bound or normalized whole rig. Check exporter support for the native rig before promising a skinned runtime asset.

Java Display Transforms

For formats supporting display_mode:

get_display_transform: slot="gui"
set_display_transform: slot="gui", rotation=[30, 225, 0], scale=[0.75, 0.75, 0.75]
enter_display_mode: slot="gui"
capture_screenshot

Display transforms change exported data. Confirm the requested hand, inventory, ground or frame views with their corresponding slots; do not use a camera adjustment to imply those transforms were authored.

Bedrock Block Material Instances

In bedrock_block, get_face_material_instances reads and set_face_material_instance writes names mapped by the target's minecraft:material_instances component.

get_face_material_instances: cube_id="block_geo"
set_face_material_instance: cube_id="block_geo", faces=["up"], material_name="top"

The tools assign face names; they do not create the behavior-pack block components or resource-pack texture definitions. These material instances are separate from PBR texture groups and GPU instancing. Follow material-instance and texture delivery for multiple materials or cutout panels, and the appearance/performance plan before using textures to replace repeated geometry. Entities use client-entity/render-controller bindings rather than this block component. Inspect the geometry export and accompanying target configuration.

Recovery

save_checkpoint inserts a history marker. It does not save a file, preserve an existing redo branch, or make unrecorded script mutations undoable. Use get_undo_stack to locate the marker and count actual entries before undo: steps=N; a paint tool may create multiple native strokes. Preserve intervening user edits.

Use dedicated undo / redo rather than trigger_action for those operations. Direct risky_eval scripts must manage native undo aspects and failure cleanup for mutations. Prefer available dedicated tools and follow the session's existing authorization.

Export

list_export_formats
# Inspect available, has_compile, extension and belongs_to_current_format
export_model: codec_id="project", result_format="embedded"
export_model: codec_id="project", path="C:/models/robot.bbmodel", max_content_length=0

Use an authorized destination on the Blockbench host. Filesystem permission may be handled by the host. only_current_format=true filters the codec listing; use the full listing to discover other available compatible exports.

export_model invokes a codec's compile operation. It does not automatically run the codec's interactive export flow, write all external images, or export separate animation files. Inspect byte_length, output path, truncation and returned content/resource metadata. A truncated text/base64 preview is not a complete downloadable asset. Embedded results contain a complete file only when it fits the response limit.

Select format, dependencies and destination checks using format and delivery guidance. Reopen a copy or inspect the destination app when available; report verification limits accurately.

Comments

Markdown supported