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: mcp-sketch
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
Checks whether generated Minecraft Bedrock content will actually load. Nine read-only tools.
Generate authentic pixel art - sprites, animations, and tilesets - from any MCP client
MCP server for visual regression testing: triage a PR's UI diffs from your coding agent.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables users to create UI flowcharts by generating visualizations of user interfaces and interactions through an easy-to-use API within MCP-compatible systems.179 npm11ISC
- AlicenseBqualityAmaintenanceLocal MCP server for parsing Sketch exported HTML zip archives and extracting design structure information.115 npm5MIT
- AlicenseNot gradedqualityDmaintenanceValidates Minecraft datapack JSON files (recipes, advancements, loot tables, etc.) against official Minecraft data formats using Spyglass.MIT
- AlicenseAqualityCmaintenanceLocal MCP server and CLI for Access layout files, rendered to SVG without Microsoft Access. Enables visual verification of form/report layout changes.3MIT