jsonui-render
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@jsonui-renderrender the inventory screen from my pack dump"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
jsonui-render-mcp
An MCP server that draws Minecraft Bedrock JSON UI screens, so a resource pack's layout can be looked at without a device.
It reads the pack you produced and Mojang's real UI files, expands @ inheritance and $variables,
and reports anything it does not implement instead of guessing.
Setup
pip install mcp pillowThen call the setup_samples tool once. It sparse-clones Mojang/bedrock-samples for the vanilla
UI definitions and textures. Nothing from Mojang is bundled here.
Environment:
Variable | Default | What |
|
| the clone above |
|
| a folder with |
Register it:
{
"mcpServers": {
"jsonui-render": {
"command": "python3",
"args": ["/path/to/jsonui-render-mcp/server.py"]
}
}
}Related MCP server: Datapack MCP Server
Tools
Tool | What |
| clone Mojang's UI files |
| the screens a pack dump defines |
| draw one, with the form's captions and icons |
| draw any control by name, including Mojang's own |
| hold the anchor rule to Mojang's dialogs |
The pack dump
render_screen reads a directory your build writes:
controls.json name -> control
screens.json [{name, width, height, body, title, background, marker}]
textures/*.png your own textures, flat
textures/nineslice.json name -> border, as an int or [l, t, r, b]Two things worth knowing
layerorders a sibling group and nothing wider. A screen-wide depth and an accumulating one both look plausible and both contradict a device. What a sibling is ordered by is its subtree's deepest layer, not the number on its own root: a plate whose recess carries 20 sits behind a figure whose panel carries nothing, and by their own numbers the recess would paint over it.The anchor rule is: the child's
anchor_topoint lands on the parent'sanchor_frompoint, then the offset applies.check_anchorsholds the renderer to it.
What it does not do yet
clips_childrenis honoured, but only where the window measures:fillandcommon.scrolling_panel's own internals are not modelled, so a scroll view port comes out nought by nought. Those are reported and drawn unclipped — the content appears at full height, over whatever is beneath it.Bindings other than a form's caption and texture.
%cmis read as the content size, not the largest child.Item pictures come from vanilla paths only.
A device is still ground truth. When the two disagree, this is wrong.
This server cannot be deployed
Maintenance
Related MCP Connectors
Write Polyxd UI documents, check them, and show them as real screens in any design-system pack.
Checks whether generated Minecraft Bedrock content will actually load. Nine read-only tools.
Browse, inspect and render Jetpack Compose Material 3 and Wear component catalogs.
Generate authentic pixel art - sprites, animations, and tilesets - from any MCP client
Related MCP Servers
- AlicenseBqualityAmaintenanceLocal MCP server for parsing Sketch exported HTML zip archives and extracting design structure information.123 npm5MIT
- AlicenseNot gradedqualityDmaintenanceValidates Minecraft datapack JSON files (recipes, advancements, loot tables, etc.) against official Minecraft data formats using Spyglass.MIT
- AlicenseNot gradedqualityCmaintenanceEnables reading, validating, and managing Minecraft resource packs, including structure checks, asset listing, pack comparison, and Modrinth queries.MIT
- AlicenseBqualityBmaintenanceEnables generating NBT structures, placing them in superflat worlds, capturing labeled screenshots, and exporting clean datapacks through MCP.131MIT