stonecut-blockbench-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| STONECUT_BB_PORT | No | Port on 127.0.0.1 the Stonecut Bridge plugin in Blockbench listens on. Must match the port set in the Blockbench plugin settings. | 38790 |
| STONECUT_BB_TIMEOUT_MS | No | How long the MCP server waits for Blockbench to answer a call, in milliseconds (default 3 minutes). | 180000 |
| STONECUT_BB_TOKEN_FILE | No | Path to the secret token file (32 random bytes, new every time the bridge starts) that every request must carry. Points elsewhere if the plugin's token file is in a different location. | .stonecut_blockbench_token in your home folder |
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": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pingA | Checks that Blockbench is open, the Stonecut Bridge plugin is listening and the token is right. Returns the plugin version. |
| statusA | Whether the GeckoLib plugin is installed, the allowed folders (output, assets), the open project (format, bones, cubes, textures, animations, and for Java models the display transforms) and every open tab with its edit count. Call this first. |
| new_projectA | Opens a new tab with an empty GeckoLib animated entity model (a Bedrock entity model if the GeckoLib Blockbench plugin is missing; the reply then has a warning). 16 units = 1 block; the model stands on y=0 and faces north (-Z). |
| open_modelA | Opens an existing Bedrock/GeckoLib .geo.json in a new tab (converted to GeckoLib format when that plugin is installed), optionally with its .animation.json and texture PNG. If the file is already open it switches to that tab instead. |
| close_tabA | Closes extra copies of a tab, keeping the first. A copy is closed only when it matches the kept tab (name, format, element and texture count) and has no edits, so no work is lost. |
| add_bonesA | Adds bones (groups). Only bones animate, so every GeckoLib cube goes in a bone. Start with one root bone, then body, head, legs... with pivots where the joints are. Names must be unique. Nothing is created if any entry is bad. |
| add_cubesA | Adds cubes. Give "from"+"to" or "origin"+"size". GeckoLib models use box UV: give each cube its own uv_offset so UV islands do not overlap. Java models may use "faces" for per-face UVs and need no bone. Nothing is created if any entry is bad. |
| texture_createA | Creates the project texture, or resizes it (the canvas grows or shrinks and old pixels stay at the top-left). Also sets the project UV size unless set_uv_size is false. |
| texture_fill_rectC | Fills a rectangle of the texture with one colour (or clears it). |
| texture_set_pixelsC | Sets single pixels: a list of [x, y, colour]. |
| texture_drawB | Draws a small picture from rows of characters, for example rows ["..ab..", ".abba."] with palette {"a": "#ff0000", "b": "#000000"}. Characters not in the palette are skipped. Each character covers scale x scale pixels. |
| texture_importC | Loads a PNG from the output or assets folder as the project texture. |
| add_animationB | Adds an animation, for example idle, walk or attack. Looping animations should end on the pose they start with. |
| add_keyframesB | Adds keyframe tracks to an animation: per bone and channel (rotation in degrees, position in units, scale as factors). |
| screenshotA | Renders the 3D preview from named views (or yaw/pitch in degrees) and returns the images; PNG files are also written to the output folder. The camera frames the model and is put back afterwards. "right" is the model's right side when it faces north. Give animation + time to see a pose. Screenshot often and check every side. |
| exportA | Writes the open project: geo (.geo.json, GeckoLib/Bedrock), animation (.animation.json with all animations), model (Java block/item .json with its display block, Java projects only) and texture (.png). Existing files are kept unless overwrite is true. |
| open_java_modelA | Opens a Java block/item model .json that has "elements" in a new tab. Its texture comes from "texture", a same-named PNG next to the model, or assets/textures/...; anything else shows blank. Parent models are not followed. If the file is already open it switches to that tab. |
| new_java_itemA | Opens a new tab with an empty Java block/item model, for example a weapon. Cubes need no bones. Optional display transforms, given directly or copied from a preset file. |
| display_getB | The display transforms of the open Java model: every set slot, or one slot. |
| display_setA | Sets display transforms (undoable). Give "display" for several slots, or "slot" with rotation/translation/scale, or a "preset" file. Fields you leave out keep their value unless replace is true. |
| display_screenshotA | Renders display slots as the Blockbench display editor shows them and returns the images (PNG files also go to the output folder). First person is uncropped by default so you see how much of the view the item takes; gui is the inventory square. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 21 tools
Most tools target a distinct resource+action: bones, cubes, animations, keyframes, textures, display transforms, screenshots, export. The only mild overlaps are the four project-creation openers (new_project, new_java_item, open_model, open_java_model) and the texture tools (create/import/set_pixels/draw/fill_rect), but the descriptions make the boundaries clear. screenshot vs display_screenshot is also well separated by purpose.
Consistent snake_case throughout, mostly verb_noun or resource_verb (add_bones, texture_fill_rect, display_set, open_java_model). Minor deviations are the single-word verbs ping, status, screenshot and export, which are still unambiguous. The texture_* and display_* prefixes group related tools predictably.
At 21 tools this is at the upper end, but the domain genuinely spans two model formats, texture painting, animation, display transforms and export, so nearly every tool earns its place. There is little redundancy; the count is heavy but not bloated.
The surface covers creation, opening, textures, animation, screenshots and export well, but it is add-only for geometry and animation: there is no way to move/resize/delete a cube or bone, remove a keyframe or animation, or read back texture pixels. An agent that makes a modeling mistake must restart the tab rather than fix it in place, which is a notable gap.