Agent Skills: Blockbench MCP Overview

Overview of the Blockbench MCP server tools, resources, and prompts. Use to understand the full MCP capability set, learn how tools work together, or when starting a new Blockbench project. Covers all domains (modeling, animation, texturing, PBR, UI, camera) and their MCP interfaces.

UncategorizedID: jasonjgardner/blockbench-mcp-project/blockbench-mcp-overview

Install this agent skill to your local

pnpm dlx add-skill https://github.com/jasonjgardner/blockbench-mcp-project/tree/HEAD/skills/blockbench-mcp-overview

Skill Files

Browse the full folder contents for blockbench-mcp-overview.

Download Skill

Loading file tree…

skills/blockbench-mcp-overview/SKILL.md

Skill Metadata

Name
blockbench-mcp-overview
Description
Overview of the Blockbench MCP server tools, resources, and prompts. Use to understand the full MCP capability set, learn how tools work together, or when starting a new Blockbench project. Covers all domains (modeling, animation, texturing, PBR, UI, camera) and their MCP interfaces.

Blockbench MCP Overview

Complete guide to the Blockbench MCP server for AI-assisted 3D modeling.

What is Blockbench MCP?

An MCP server that exposes Blockbench functionality to AI agents through:

  • Tools: Actions that create, modify, or query the 3D model
  • Resources: Read-only data endpoints for model information
  • Prompts: Reusable guidance for specific workflows

Tool Categories

| Domain | Tools | Purpose | |--------|-------|---------| | Animation | 7 | Keyframes, rigs, curves, timeline | | Camera | 3 | Screenshots, camera control | | Cubes | 2 | Cube creation and modification | | Elements | 5 | Groups, outliner, duplication | | Import | 1 | GeoJSON import | | Mesh | 11 | Spheres, cylinders, extrusion, vertices | | Paint | 12 | Brushes, fill, shapes, layers | | Texture | 13 | Textures, PBR materials | | UI | 4 | Actions, evaluation, dialogs | | UV | 3 | UV mapping | | Hytale | 12 | Hytale-specific (requires plugin) |

Resources

| Resource | URI Pattern | Data | |----------|-------------|------| | projects | projects://{id} | Project info, formats | | textures | textures://{id} | Texture metadata | | nodes | nodes://{id} | 3D node data | | hytale-format | hytale://format | Hytale format info | | hytale-attachments | hytale://attachments/{id} | Attachment collections | | hytale-pieces | hytale://pieces/{id} | Attachment pieces | | hytale-cubes | hytale://cubes/{id} | Hytale cube properties |

Prompts

| Prompt | Purpose | |--------|---------| | blockbench_native_apis | Blockbench v5.0 API security guide | | blockbench_code_eval_safety | Safe code evaluation patterns | | model_creation_strategy | Model creation guidance | | hytale_model_creation | Hytale modeling guide | | hytale_animation_workflow | Hytale animation guide | | hytale_attachments | Hytale attachments guide |

Quick Start Workflows

Create a Simple Model

# 1. Create project
create_project: name="my_model", format="bedrock"

# 2. Create texture
create_texture: name="skin", width=64, height=64

# 3. Add bone structure
add_group: name="root", origin=[0, 0, 0]
add_group: name="body", parent="root", origin=[0, 12, 0]

# 4. Add geometry
place_cube: elements=[{name: "torso", from: [-4, 12, -2], to: [4, 24, 2]}], group="body"

# 5. Apply texture
apply_texture: id="torso", texture="skin"

# 6. View result
capture_screenshot

Create and Animate

# 1. Build model (see above)

# 2. Create animation
create_animation: name="idle", animation_length=2.0, loop=true

# 3. Add keyframes
manage_keyframes: bone_name="body", channel="rotation",
  keyframes=[
    {time: 0, values: [0, 0, 0]},
    {time: 1.0, values: [0, 5, 0]},
    {time: 2.0, values: [0, 0, 0]}
  ]

# 4. Play animation
animation_timeline: action="play"

Paint a Texture

# 1. Create texture
create_texture: name="block", width=16, height=16, fill_color="#8B4513"

# 2. Add details
draw_shape_tool: shape="rectangle", start={x: 2, y: 2}, end={x: 14, y: 14}, color="#A0522D"
paint_with_brush: coordinates=[{x: 8, y: 8}], brush_settings={color: "#654321", size: 2}

# 3. View texture
get_texture: texture="block"

Tool Patterns

Information Gathering

list_outline            # View model hierarchy
list_textures           # View textures
list_materials          # View PBR materials
hytale_get_format_info  # View Hytale format (if active)

Modification Pattern

Most modification tools follow:

  1. Identify target by ID or name
  2. Specify changes
  3. Changes are recorded for undo

Screenshot Workflow

set_camera_angle: position=[0, 20, 50], rotation=[0, 0, 0], projection="perspective"
capture_screenshot      # 3D view only
capture_app_screenshot  # Entire Blockbench window

Evaluation (Advanced)

risky_eval: code="Cube.all.length"  # Query Blockbench directly
trigger_action: action="undo"       # Trigger Blockbench actions

Domain Integration

Model + Texture

# Create model
place_cube: elements=[{name: "block", from: [0,0,0], to: [16,16,16]}]

# Create texture
create_texture: name="block_tex", width=16, height=16

# Paint texture
paint_fill_tool: texture_id="block_tex", x=0, y=0, color="#00FF00", fill_mode="element"

# Apply
apply_texture: id="block", texture="block_tex"

Model + Animation

# Create bone hierarchy (important for animation)
add_group: name="root", origin=[0, 0, 0]
add_group: name="arm", parent="root", origin=[4, 12, 0]

# Add geometry to bones
place_cube: elements=[{name: "arm_geo", from: [0, 0, -1], to: [2, 10, 1]}], group="arm"

# Animate the bone
create_animation: name="wave", animation_length=1.0
manage_keyframes: bone_name="arm", channel="rotation",
  keyframes=[{time: 0, values: [0, 0, 0]}, {time: 0.5, values: [0, 0, 90]}]

PBR Material Workflow

# Create textures for each channel
create_texture: name="stone_color", width=16, height=16
create_texture: name="stone_normal", width=16, height=16, fill_color="#8080FF"
create_texture: name="stone_mer", width=16, height=16, fill_color=[0, 0, 200, 255]

# Create material
create_pbr_material: name="stone", textures={
  color: "stone_color",
  normal: "stone_normal",
  mer: "stone_mer"
}

# Configure
configure_material: material_id="stone", config={
  metalness_emissive_roughness: {metalness: 0, emissive: 0, roughness: 0.9}
}

Error Handling

Tools throw descriptive errors with suggestions:

  • Element not found: "Use list_outline tool to see available elements"
  • Texture not found: "Use list_textures tool to see available textures"
  • Invalid format: "Current project is not using a Hytale format"

Best Practices

  1. Query first: Use list_* tools to understand current state
  2. Build hierarchy: Create bone structure before geometry
  3. Set origins: Place group origins at pivot points for animation
  4. Name elements: Use descriptive names for easy reference
  5. Validate: Use hytale_validate_model for Hytale projects
  6. Screenshot: Capture progress with capture_screenshot

Tool Status

  • stable: Production-ready
  • experimental: Working but may change

Most tools are experimental but functional. Check tool annotations for current status.