{"id":"43edbadb-32b0-48c9-bc35-f6c40fd841ac","slug":"schematic-ai-studio","kind":"mcp","name":"Schematic-Ai-Studio","summary":"A generative Minecraft Schematic Tool","owner":"gamerover98","repoUrl":"https://github.com/gamerover98/Schematic-Ai-Studio","license":"Apache-2.0","licenseTier":"permissive","trust":"community","stars":6,"match":null,"fewStars":false,"format":"mcp","createdAt":"2026-08-04T11:06:57.000Z","addedAt":"2026-10-21T17:50:09.390Z","logoUrl":"https://avatars.githubusercontent.com/u/9408687?u=f6e67bfff21d8229e4490128ff1db2f9cb5456a1&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["utilities"],"tags":[],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-25T16:55:16.433Z","sample":false,"url":"https://conduits.dev/tools/schematic-ai-studio","language":"TypeScript","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"<div align=\"center\">\n   <h1>Schematic AI Studio</h1>\n   <img src=\"images/logo.png\" alt=\"\" width=\"160\" height=\"160\">\n   <p><em>An AI-assisted 3D editor for Minecraft schematics. Free, and staying free.</em></p>\n   <a href=\"https://github.com/gamerover98/Schematic-Ai-Studio/actions/workflows/build.yml\">\n      <img src=\"https://github.com/gamerover98/Schematic-Ai-Studio/actions/workflows/build.yml/badge.svg\" alt=\"Build\">\n   </a>\n   <img src=\"https://img.shields.io/badge/Electron-desktop-47848F\" alt=\"Electron\">\n   <img src=\"https://img.shields.io/badge/TypeScript-strict-3178C6\" alt=\"TypeScript\">\n   <img src=\"https://img.shields.io/badge/MCP-server-6E44FF\" alt=\"MCP server\">\n   <img src=\"https://img.shields.io/github/license/gamerover98/Schematic-Ai-Studio\" alt=\"License\">\n   <br>\n   <img src=\"images/001.png\" alt=\"Schematic AI Studio\"/>\n   <p>\n   <b>Open a build and start editing it! You can do this by hand,\n      or just say what you want in your natural language!</b>\n   </p>\n</div>\n\nThe AI works on the schematic itself, not on a description of it.\nEverything it does is a normal editor action, so one request is one \n`Ctrl`+`Z`. It can also build a structure from nothing, which is how\nthe project started. It reads and writes five kinds of schematic-type \nfiles and converts between all of them. \n\n**It is a desktop app**: _one installer and nothing else to set up_.\n</br>Download the latest version from the\n[releases page](https://github.com/gamerover98/Schematic-AI-Studio/releases).\n\n---\n\n<div align=\"center\">\n  <table>\n    <tr>\n      <td style=\"text-align: center;\">\n        <p>\n          <h1>Why?</h1>\n          <b>Alternatives cost a lot of money and give you very little</b>.\n          <br><br>\n        </p>\n        <blockquote>\n          Search for \"<i>AI Minecraft schematic generator</i>\" and you will find websites and\n          tools that ask for a subscription just to produce a structure; this project is\n          the opposite of that offer!<br><br>\n          <strong style=\"color: #2f8f3f\">Schematic AI Studio is, and always will be, completely free and open-source.</strong><br><br>\n          No subscription, no credits, no paid tier, no account for self-hosted.<br>\n          100% open source under the Apache 2.0 license, and it is for any Minecraft player who wants it.\n        </blockquote>\n      </td>\n      <td valign=\"middle\" align=\"center\">\n        <img src=\"images/002.png\" alt=\"ParadiseLand WorldEdit schematic\"/>\n      </td>\n    </tr>\n    <tr>\n    <td style=\"text-align: center;\">\n      <p>\n        <b>Schematic AI Studio started as a tool for one project.</b>\n        <br/>\n        The early versions were cut to fit a specific need.\n        <br>\n        <br>\n        <a href=\"https://www.spigotmc.org/resources/paradiseland%E2%AD%90skyland-world-generator%E2%AD%90-1-8-8-1-21-1.28056/\">\n          <b>ParadiseLand - The Aether generator for Spigot/Paper <img src=\"https://static.spigotmc.org/img/spigot.png\" width=\"16\" alt=\"spigotmc.org\"></b>\n        </a>\n      </p>\n    </td>\n    <td>\n      <img src=\"images/003.png\" alt=\"ParadiseLand WorldEdit schematic\"/>\n    </td>\n    </tr>\n  </table>\n</div>\n\n---\n\n## Two ways to use it\n\n### 1. MCP server — recommended\n\nThe app can share its editor with another program over MCP. That other program\ncan be **Claude Code, Antigravity, Codex, LM Studio**, or anything else that\nspeaks MCP. It edits the schematic you already have open, using the same tools\nand the same undo history. You watch the build change on screen, and your\n<kbd>Ctrl</kbd>+<kbd>Z</kbd> still takes it back.\n\n**This is the recommended way, for a simple reason: it costs you nothing\nextra.** It uses the AI subscription you already pay for, instead of buying API\ntokens on top of it. If you already have Claude Code or a similar tool, you have\neverything you need.\n\nThere is a second reason. The AI on the other side is usually stronger than what\nyou reach through an API key. But it cannot do the parts this app is for. It\ncannot read and write the file formats. It cannot place a block with the right\nstate and the right connections to its neighbours. And it cannot draw the result\nso you can see it. That is the work the app does for it.\n\nTurn it on in **Settings → MCP server**. It only listens on your own computer,\nand it asks for a token.\n\n| | |\n|---|---|\n| Default port | `4571`. Use `0` to let the system pick any free port, which is what a second copy of the app needs. |\n| Authentication | A token. It is hidden by default, and you can copy it or create a new one. |\n| Folder it may touch | The server cannot open, save or delete anything outside this folder. Empty means the output folder. |\n| Deleting files | Off by default. Even when it is on, files go to the recycle bin. |\n| Tools | 36 in total: 11 shared with the in-app chat, and 25 that only MCP has. |\n\nThe settings page shows two ready-to-paste commands. This one is for a client\nthat speaks MCP over HTTP:\n\n```bash\nclaude mcp add --transport http schematic <url> --header \"Authorization: Bearer <token>\"\n```\n\nAnd this one is for a client that only speaks stdio. A small bridge ships with\nthe app for that case:\n\n```bash\nclaude mcp add schematic -- node \"<path to resources/mcp-bridge.mjs>\"\n```\n\nThe bridge needs no arguments and no setup. It finds the running app by itself,\nwhich is also why the port can be `0`. It exists because stdio works the other\nway round: the client starts the server, and a server that has just started has\nno schematic open. The whole point here is the file you are looking at right\nnow, so the bridge simply passes everything to the app that already has it.\n\n### 2. Standard mode — the built-in chat\n\nThis is much better than it was in BuilderGPT. It no longer only generates.\nIt **edits the schematic you have open**: it looks at the build through tools\nand changes it directly. It streams while it thinks, shows every tool call as it\nhappens, and keeps a separate conversation for each schematic. One request is\none undo step. If nothing is open, your message goes to the generator instead,\nand that is how you build a schematic from a single sentence.\n\n**This mode needs an API model that you pay for per token.** That is exactly why\nMCP is recommended above.\n\n| Provider | Notes |\n|---|---|\n| **OpenAI** | API key required |\n| **Google Gemini** | API key required |\n| **OpenCode** | Many of its models are **free and need no key at all**. The rest are paid. |\n| **Custom (OpenAI Compatible)** | Any endpoint that follows the OpenAI API |\n\nThat last row is the interesting one, because **it is how you run models on your\nown computer**. Point the base URL at **LM Studio**, at Ollama's\nOpenAI-compatible server, or at anything else that offers\n`/v1/chat/completions`. Everything then runs locally, at no cost, and nothing\nleaves your machine.\n\nAPI keys are encrypted by your operating system's keychain. There is no `.env`\nfile and no plain text on disk, and the keys are never sent back to the window.\nThe window itself cannot open any network connection at all: its security policy\nsets `connect-src 'none'`, and every HTTP request is made by the main process.\n\n---\n\n## Formats & compatibility\n\nFive kinds of file, all read and all written. The converter turns any of them\ninto any other, without opening either file.\n\n| | MCEdit `.schematic` | Sponge v2 `.schem` | Sponge v3 `.schem` | Litematica `.litematic` | Function `.mcfunction` |\n|---|---|---|---|---|---|\n| **Game versions** | ✅ 1.8.8 – 1.12.2. 🚧 Works above 1.13, but loses detail. | ✅ 1.13+ | ✅ 1.13+ | ✅ **1.13.2+**. One release later than the others, see below. | ✅ 1.13+ |\n| **BlockData** (1.13+ states) | 🚧 Approximate. The base block is written, and the loss is listed by name. | ✅ Full | ✅ Full | ✅ Full | ✅ Written as `id[state=value]` |\n| **MaterialData** (old `ID:DATA`) | ✅ This is the format's own model | ❌ Uses 1.13+ block names, which did not exist before | ❌ Same | ❌ Same | ❌ Same |\n| **ItemData** (chest contents, sign text, NBT) | ✅ Kept as it was | ✅ Kept as it was | ✅ Kept as it was | ✅ Kept as it was | ✅ Written inside the `setblock` command |\n| **Entities** | ✅ | ✅ | ✅ | ✅ | ❌ Not written. `summon` is a different command, so the count is reported instead. |\n| **WorldEdit paste anchor** | ✅ `WEOffsetX/Y/Z` | ✅ `Metadata.WEOffsetX/Y/Z` | ✅ `Offset` | ❌ The format has no such idea. The loss is reported. | ✅ Kept for free by `~ ~ ~` |\n| **World origin** | ✅ `WEOriginX/Y/Z` | ✅ `Offset` | ✅ `Metadata.WorldEdit.Origin` | ❌ Reported as lost | 🚧 Read from absolute coordinates, but not written |\n| **DataVersion** | ❌ The format has no such tag | 🚧 Optional. Left out when there is none. | 🚧 Optional | ✅ **Required.** The file cannot be written without one. | ❌ Commands carry no version |\n| **Other metadata** | ❌ The format has nowhere to keep it | ✅ Kept as it was | ✅ Kept as it was | ✅ Kept, with five fields recalculated | ❌ Nothing to keep |\n| **Unknown blocks** | ❌ The save fails and names the blocks | ✅ | ✅ | ✅ | ✅ |\n\n**Legend** — ✅ supported · 🚧 partly supported, with a limit · ❌ the format\ncannot store it\n\n### Three things the table cannot show\n\n**The two newest formats start at different game versions.** A `.mcfunction`\nneeds `setblock <pos> <block>` with modern block names, and that is **1.13**.\nA `.litematic` needs the Litematica mod not to convert it when it opens, and the\nmod converts every file below DataVersion 1631. So its first version is\n**1.13.2**. A `.litematic` marked as 1.13 does not fail. It opens in the mod\nwith the wrong blocks, which is worse. The app refuses to write one and explains\nwhy.\n\n**A `.mcfunction` is not really a schematic file.** It has no metadata, no\nanchor tag, no version and no NBT. It is only a list of commands, and\n`setblock` and `fill` happen to be enough to describe a build. When you open\none, you get a Sponge v3 document with **no file path**, so Save asks you where\nto put it instead of writing a Sponge file over your commands. Rows of identical\nblocks become one `fill`, and that is what makes the format usable: a real build\nof 259,072 cells came out as **10,877 commands instead of 259,072**. This\nmatters, because the game stops reading a function after 65,536 commands and\ndoes not tell you.\n\n**\"Changed\" and \"missing\" are different answers.** A *degraded* block is still\nin the file, just approximate. A *dropped* item is simply not there. Both are\nlisted by name after every save and every conversion. A loss that nobody tells\nyou about is the exact problem this project tries to avoid.\n\n### Converting\n\nConverting is its own action, not a trick. It never touches the file you have\nopen, so you do not lose your work. It **never overwrites**: if a file with that\nname already exists, it is renamed with a timestamp first. And it **never crops**\nthe build, because a conversion should describe the same schematic, only in\nanother format.\n\nOne thing is worth knowing before it surprises you. A `.mcfunction` cannot\nbecome a `.litematic` unless you choose a Minecraft version, because commands\ncarry no version and Litematica always needs one. The converter says so and\noffers you the list.\n\n---\n\n## Running from source\n\nYou need [Node.js](https://nodejs.org/) 20 or newer. Dependencies install\nthemselves the first time you run it.\n\n| | Windows | Linux / macOS |\n|---|---|---|\n| Start (dev, hot reload) | `scripts\\start.ps1` | `scripts/start.sh` |\n| Build | `scripts\\build.ps1` | `scripts/build.sh` |\n| Build an installer | `scripts\\build.ps1 -Package win` | `scripts/build.sh --package linux` |\n| Run all checks | `scripts\\check.ps1` | `scripts/check.sh` |\n\nBuilds go to `out/`, and installers to `release/`. The npm scripts\n(`npm run dev`, `npm run build`, `npm run package:win`, and so on) work directly\ntoo. `check.sh` runs the type checker and all seventeen test suites, and it does\nnot stop at the first failure, because that would hide how much else is broken.\n\nThere are **no native dependencies**. The sandbox is QuickJS compiled to\nWebAssembly, so the same build runs everywhere and there is nothing to compile.\n\n### Which editor\n\nThis project was written with **IntelliJ IDEA**, and the `.run/` folder holds\nits run configurations. You do not need it. Everything here is plain Node,\nTypeScript and Svelte, so **Visual Studio Code**, WebStorm, Neovim or any other\neditor works just as well. Nothing in the build depends on the editor you use.\n\n---\n\n## A note on benchmarking AI models\n\nSchematic AI Studio is not only a tool for building. It also turns out to be a\nvery honest **test of how well a model understands 3D space**, because the\nresult is a building you can walk around and look at. Text can sound correct\nwhile being wrong; a structure cannot. A model with no real picture of the space\nin its head cannot hide it here. The roof floats, the stairs face a wall, or the\nsecond floor has no way to reach it.\n\nI have tested several models myself, both free and paid, and the differences are\nlarge. They show up in the finished build, but also in the way each model\n*thinks* about the problem. **Gemini 3.1 Pro with high thinking**, used through\nAntigravity over MCP, stood out at once for both speed and quality.\n\nTry it yourself. Open the app fresh, connect your AI tool over MCP, and give it\nexactly this:\n\n> Using the connected `schematic-ai-studio` MCP server, generate a Minecraft\n> schematic within the Schematic AI Studio editor. Create a Sponge v3 schematic\n> with dimensions 16x32x16 for Minecraft 26.2 and save the file as\n> `benchmark.schem`.\n>\n> Build a two-story birch wood village house with a cobblestone floor and\n> transparent glass block windows. The cobblestone floor should be slightly\n> elevated. Place birch wood stairs in front of the double entrance doors. On\n> the ground floor, include a bed, a chest, and a fireplace with a chimney\n> extending through the roof. On the second floor, add another chest and\n> colorful mosaic carpets. Connect the two floors using a ladder. Add an open\n> balcony on the second floor. Ensure there is both interior and exterior\n> lighting (exterior lights should be attached to the exterior walls).\n\nIt asks for a lot at the same time. Two floors have to line up. A chimney has to\npass through a roof that the model is also building. A ladder has to connect two\nspaces at once. And the lights have to go on the *outside* of the walls. Very\nfew models get all of it right.\n\n---\n\n## Contributing\n\nContributions are welcome. Please follow these steps.\n\n1. **Open an issue first.** Describe the feature you want or the bug you found,\n   before you write any code. This avoids work that goes in the wrong direction,\n   and it gives us a place to agree on what the change should do.\n2. **Work on your own fork.** Create a branch there and commit your work to it.\n3. **Open a pull request** and link it to the issue.\n4. **I will review it as quickly as I can.**\n\nA few rules that make review easier:\n\n- **Write in English**, everywhere: issues, pull requests, commit messages, code\n  comments and any documentation you touch.\n- **Using AI is fine, and even encouraged.** [Claude Code](https://claude.com/claude-code)\n  is the recommended tool, and this project is built to work well with it: the\n  `CLAUDE.md` file in the repository explains the rules the code follows and why.\n- **Check the work yourself before you send it.** Read every line you are asking\n  someone else to accept, run `scripts/check.sh`, and make sure the app still\n  starts. You are responsible for your pull request, whether or not an AI wrote\n  part of it.\n\n---\n\n## Credits\n\nThis project is built on the work of other people.\n\n- **[CyniaAI/BuilderGPT](https://github.com/CyniaAI/BuilderGPT)** — the original\n  Python/Streamlit version that this desktop app comes from. The generation\n  approach and the prompt design come from that project.\n- **[MCBench](https://mcbench.ai)** — BuilderGPT's JavaScript way of describing\n  a build, and parts of its prompting approach, are inspired by MCBench. The\n  JavaScript parsing and integration code here was written separately.\n- **[Faithful](https://faithfulpack.net/)** — the 64x resource pack included to\n  texture the 3D view, used under its own licence.\n- **[PrismarineJS/minecraft-data](https://github.com/PrismarineJS/minecraft-data)**\n  (MIT) — the table of old block ids used to read legacy MCEdit files.\n- **[misode/mcmeta](https://github.com/misode/mcmeta)** — the block registry\n  behind the block list, the block states and the placement defaults.\n- **[minecraft.wiki](https://minecraft.wiki)** — command syntax, block models,\n  block state meanings and DataVersion history. All of it is copied into this\n  repository by hand, never downloaded while the app runs.\n- **[maruohon/litematica](https://github.com/maruohon/litematica)** and\n  **[litemapy](https://github.com/SmylerMC/litemapy)** — the sources for the\n  `.litematic` version history and its data packing.\n- **[models.dev](https://models.dev)** — the OpenCode model catalogue that\n  provides pricing and capability data.\n- **[ChatGPT](https://chatgpt.com)** — the application icon was generated with\n  it.\n\nAnd the libraries it is made of: [Electron](https://www.electronjs.org/),\n[Svelte](https://svelte.dev/), [Three.js](https://threejs.org/),\n[prismarine-nbt](https://github.com/PrismarineJS/prismarine-nbt),\n[quickjs-emscripten](https://github.com/justjake/quickjs-emscripten),\nthe [Vercel AI SDK](https://sdk.vercel.ai/),\n[@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/typescript-sdk),\n[marked](https://marked.js.org/), [DOMPurify](https://github.com/cure53/DOMPurify),\n[pngjs](https://github.com/lukeapage/pngjs) and\n[adm-zip](https://github.com/cthackers/adm-zip).\n\nMinecraft is a trademark of Mojang Studios. This project is not affiliated with,\nendorsed by, or connected to Mojang Studios or Microsoft.\n\n## License\n\nApache License 2.0. See [LICENSE](LICENSE).\n"}