# Myrlin Forge MCP: use your Forge models from Claude, ChatGPT, Codex and other AI apps

Myrlin Forge MCP connects an AI app to a Myrlin Forge library of blocky 3D models for Hytale and Minecraft. The app can find your models, give you their Hytale and Minecraft files with the animations and effects you saved, and start new builds after you approve the price.

Server address: `https://api.myrlin.io/mcp` (Streamable HTTP). Server name in Claude Code and Codex: `myrlin-forge`. Environment variable for Codex: `MYRLIN_FORGE_API_KEY`. Authentication: an AI key as `Authorization: Bearer`, or an OAuth sign-in. Human version of this page: https://forge.myrlin.io/docs/mcp

## The server address

Every app uses the same address:

MCP server URL:

```
https://api.myrlin.io/mcp
```

Apps you use in a browser or on a phone sign in to Forge with your account. Coding tools such as Claude Code and Codex use an AI key, which you make in the **Link to your AI** panel on your [assets page](https://forge.myrlin.io/assets). Name the server `myrlin-forge` when you add it, so it does not clash with other servers.

## Claude (claude.ai, Claude Desktop, Claude mobile)

1. Open [Add Myrlin Forge to Claude](https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Myrlin%20Forge&connectorUrl=https%3A%2F%2Fapi.myrlin.io%2Fmcp), or go to **Customize**, then **Connectors**, then **Add custom connector**.
2. Name it `Myrlin Forge` and use the address above.
3. Click **Connect**, sign in to Forge, choose what Claude can use, and approve.

One connector covers claude.ai, Claude Desktop and the Claude mobile apps. Claude’s free plan allows one custom connector. On Team and Enterprise plans, an Owner has to add the connector for the organization first; members then connect it themselves.

> Menu names change from time to time. If you do not see these, look in the app’s settings for custom connectors.

## ChatGPT

1. In ChatGPT, open **Plugins**, choose the plus button, then **Add custom MCP server**, and create it as a plugin.
2. Name it `Myrlin Forge`, use the address above and choose OAuth.
3. Connect, sign in to Forge and approve.

> Note: Starting builds from ChatGPT needs a ChatGPT plan that allows actions from connected apps. Looking at your models and downloading them works on more plans.

## Claude Code

Make an AI key in the **Link to your AI** panel, then run:

terminal:

```
claude mcp add --transport http myrlin-forge https://api.myrlin.io/mcp --header "Authorization: Bearer <YOUR_FORGE_AI_KEY>" -s user
```

Or sign in without a key: add the server without the header, run `/mcp` in Claude Code, choose `myrlin-forge` and sign in to Forge.

terminal:

```
claude mcp add --transport http myrlin-forge https://api.myrlin.io/mcp -s user
```

## Codex

Keep the key in an environment variable, not in a file.

Windows (PowerShell or Command Prompt):

```
setx MYRLIN_FORGE_API_KEY <YOUR_FORGE_AI_KEY>
```

> Note: `setx` saves the variable for terminals you open afterwards. It does not change the terminal you ran it in, so Codex started there gets a 401. Open a new terminal before you start Codex. For the current PowerShell window only, set it directly:

PowerShell, this window only:

```
$env:MYRLIN_FORGE_API_KEY = "<YOUR_FORGE_AI_KEY>"
```

macOS and Linux:

```
export MYRLIN_FORGE_API_KEY=<YOUR_FORGE_AI_KEY>
```

Then add the server:

terminal:

```
codex mcp add myrlin-forge --url https://api.myrlin.io/mcp --bearer-token-env-var MYRLIN_FORGE_API_KEY
```

Or add it to `~/.codex/config.toml`. A longer tool timeout helps while a build is followed:

config.toml:

```
[mcp_servers.myrlin-forge]
url = "https://api.myrlin.io/mcp"
bearer_token_env_var = "MYRLIN_FORGE_API_KEY"
tool_timeout_sec = 120
```

To sign in instead of using a key, add the server without the variable and run `codex mcp login myrlin-forge`.

> Note: Codex’s default sandbox has no network access, so a download with `curl` fails there. Approve network access when Codex asks, or allow it for the workspace sandbox in `~/.codex/config.toml`:

config.toml:

```
[sandbox_workspace_write]
network_access = true
```

## Other MCP apps

Cursor, VS Code and other apps that take an HTTP MCP server: use the address above and send the header `Authorization: Bearer <YOUR_FORGE_AI_KEY>`. The server accepts an AI key or an OAuth sign-in, and nothing in a query string.

## What to ask

In a coding tool such as Claude Code or Codex, which can write files into your project:

- “Add my Forge model Frost Hydra to my Hytale server mod with its walk and attack animations.”
- “Add a frost breath effect to the Frost Hydra, then download the new Hytale pack into ./Server/mods.”
- “Give me the Minecraft package for my Frost Hydra that works without mods, and tell me where to put it.”
- “Wire the Frost Hydra into my Hytale plugin: copy the pack, register the model, and hook its attack clip to the attack state.”
- “Generate a blocky iron golem for Hytale with walk and attack animations. Quote it before building.”

In a chat app such as claude.ai or ChatGPT, which gives you links but cannot write into a folder on your computer:

- “List my Forge models that have animations and tell me which would fit a desert dungeon.”
- “Generate a blocky iron golem for Hytale with walk and attack animations. Quote it before building.”
- “Give me the Hytale pack download link for my Frost Hydra and tell me where to put it.”
- “Make the Ember Fox’s tail twice as long. Show me the price first, then give me the new version’s files for Blockbench.”

Name a model the way it appears in your library, or paste its asset id from its page.

## What the AI can do

| Tool | What it does | Costs credits |
| --- | --- | --- |
| `list_assets` | Lists your models and finds one by name. | No |
| `get_asset` | Shows a model’s versions, animation clips, effects and file links. | No |
| `download_package` | Makes a Hytale pack, a Minecraft package or the source files for Blockbench. Package links last 15 minutes. | No |
| `get_guide` | Explains where files go for Hytale, Minecraft and Blockbench, and how to write build prompts. | No |
| `check_credits` | Shows your balance, prices and limits. | No |
| `quote_model` | Prices a new model from a description. | No |
| `quote_edit, quote_animation, quote_effect` | Price a change, a new animation or a new effect for one of your models. | No |
| `confirm_spend` | Starts a quoted build. The only tool that spends credits. | Yes |
| `get_job` | Follows a build until it is delivered. | No |

The server also offers the four guides (`hytale`, `minecraft`, `blockbench`, `prompting`) as resources at `forge://guides/<topic>`, and a few ready-made prompts in Claude Code and claude.ai.

## Downloads and your project

The AI can give you a ready package for each game and, in a coding tool, put it in your project. What each package holds, where its files go, how to merge it into a Hytale or Minecraft project you already have, and how to rename the mod id are on the [integration page](https://forge.myrlin.io/docs/mcp/integrate).

| Game | `download_package` target | What you get |
| --- | --- | --- |
| Hytale | `hytale` | A drop-in pack: manifest, Common and Server folders, every saved animation clip and effect, and a README. What Hytale can play by itself is connected; the README says how each one plays and which are not connected. |
| Minecraft Java | `minecraft` | A resource pack for items and blocks, or a data pack plus resource pack for animated models without mods (the route tested in Minecraft 26.1). Java mod files, optionally under your mod id, are also offered but not yet tested in a game client. |
| Blockbench and other tools | `source` | The native files: the `.blockymodel`, its texture PNG, one `.blockyanim` per clip and one JSON per effect. |

## Credits and limits

Every build is quoted first. The AI has to tell you the price and use the exact quoted number when it starts the build, and AI apps ask for your approval before a tool that spends runs, unless you told them to always allow it. Builds use your normal Forge credits; buying credits stays on the [pricing page](https://forge.myrlin.io/pricing).

You can set a spending limit when you make a key or approve an app: credits per day, credits per build, or both. Leave it empty for no limit. You can also turn building off and keep the connection read-only. Change any of these later under **Settings** in the **Link to your AI** panel.

Free accounts can start 3 builds a day through AI. Keep building in Studio on forge.myrlin.io with your credits, or subscribe for unlimited AI builds. The count covers all your keys and connections and resets at midnight UTC.

## Keys, connections and safety

An AI key works only with Myrlin Forge MCP. It is shown once when you make it; Forge stores only a hash. Making a new key replaces the old one.

Your key and your linked apps are listed under **Link to your AI** in your account [Settings](https://forge.myrlin.io/settings), and in the Link to your AI panel on your [assets page](https://forge.myrlin.io/assets) (the library header, or any model). Revoke the key or remove an app there; it stops working at once. **Settings** there change what each one can see, whether it can build, and its spending limits.

The AI sees only your own account, and only the models you chose if you limited it. It cannot delete models, change your subscription or buy credits.

## If something does not work

- **The app says it is not signed in.** Remove the connector or server and add it again, or make a new AI key.
- **Codex gets a 401 right after `setx`.** The terminal you ran `setx` in does not have the variable yet. Open a new terminal, or use the PowerShell form above.
- **A download fails in Codex.** The default sandbox has no network. Approve network access or set `network_access = true`, as shown in the Codex section.
- **“Free accounts can start 3 builds a day through AI”.** Wait for the reset time the message gives (midnight UTC), keep building in Studio on forge.myrlin.io with your credits, or subscribe for unlimited AI builds.
- **A download link stopped working.** Links last 15 minutes. Ask the AI for the package again.
- **The model is missing.** If you limited the connection to some models, the others are hidden from it. Change it under Settings in Link to your AI (account Settings, or any model on your assets page).

# Putting a Forge model in your project

## Downloads per game

Call `download_package(asset_id, target, version?, options?)`. Without `version` it uses the model’s active version. The result has a `download_url`, an expiry and where the files go.

| Target | Link | Options | Contents |
| --- | --- | --- | --- |
| `hytale` | https://api.myrlin.io/mcp/files/<token>, valid 15 minutes | `kind`: character, creature, prop, block, weapon, item or vehicle (default: Forge picks from the model). `size`: `recommended` (Forge’s in-game size) or `as_built`. | A zip: `manifest.json`, `Common/`, `Server/`, a README. |
| `minecraft` | https://forge.myrlin.io/mcp/minecraft?t=<token>, valid 15 minutes | `namespace` (your mod id), `use_as` (item, block or entity), `use_with` (resource_pack, datapack or java_mod), `loader` (neoforge, fabric or forge), `minecraft_version`. | A zip with the files for the chosen setup, a README, a receipt (`conversion.json`) and the original files under `Source/`. |
| `source` | Signed file links, valid 1 hour | None. | The `.blockymodel`, the texture PNG, one `.blockyanim` per clip and one JSON per effect. |

Minecraft defaults, when no option is given: an animated model becomes the no-mod data pack, a model without clips becomes a resource pack item. `minecraft_version` defaults to 26.1 for resource packs and the data pack, and to 26.2 for a Java mod. A Java mod can use 26.2 or 1.21.11; 26.1 is for resource packs and the data pack only. `java_mod` with `use_as` entity gives GeckoLib files; with `use_as` item or block it gives item and block model files.

If a Minecraft package is too large for one download, the link answers 413 and the AI should fall back to `target: "source"`, or use the Minecraft button on the model’s page.

## Fetching a download

A coding tool downloads the link with `curl`. Quote the address, because it contains `?` and `&`:

macOS, Linux, Git Bash:

```
curl -L -o pack.zip "<download_url>"
```

Windows PowerShell (curl is an alias there, so name curl.exe):

```
curl.exe -L -o pack.zip "<download_url>"
```

- Links last 15 minutes. Ask for the package again when one has expired.
- Codex’s default sandbox has no network. Approve network access when asked, or set `[sandbox_workspace_write]` `network_access = true`. The hosts are `api.myrlin.io` (Hytale) and `forge.myrlin.io` (Minecraft).
- Chat apps such as claude.ai and ChatGPT cannot write files into your project. They give you the link and tell you where the files go.

## Hytale: what the pack holds

- `manifest.json`: group `io.myrlin.forge`, a pack id like `Myrlin_<Name>_<8 hex>`, and the server version it needs (0.6.0 or newer).
- `Common/`: the model, the texture and the animations, under `Common/<NPC|Blocks|Items>/Myrlin/<id>/`.
- `Server/`: the item, model, NPC and particle definitions, under `Server/.../Myrlin/...`.
- `Server/Languages/en-US/server.lang`: the display names the pack uses.
- A README with the Windows and Mac steps.

Every saved animation clip and effect is in the pack. A creature plays Idle while it stands; a Walk clip is connected, but walking around does not work in the game yet, so creatures stand where they are placed; clips named like the game’s own moments (Hurt, Death and others) play when that happens, and most other clips play now and then, about every 8 to 20 seconds. A Run clip is connected but not seen, because the pack does not make it run. Effects that stay on, or that can start now and then, are connected; the others are converted but not connected, and the README lists which. Not included: sounds and gameplay code.

Test status: checked on the Hytale server (the pack loads without errors) and in the Hytale 0.7.2 client with test packs (2026-10-16). Seen working: the pack loads, the model shows with its texture, Idle plays, a block animation plays, and a weapon’s held effect shows. Not working yet: walking around, a spinning-rotor block animation and a plain item’s held effect. Not yet tested in the client: the now-and-then animations and effects, the always-on effects, swing and block effects, and picking it from the creative inventory.

## Hytale: a server or a pack folder

1. Put the pack ZIP, still zipped, into the server’s `mods` folder. Hytale reads the ZIP as it is; do not unzip it. On your own computer the folder is `%APPDATA%\Hytale\UserData\Mods` on Windows or `~/Library/Application Support/Hytale/UserData/Mods` on Mac.
2. Restart the server. For a world on your own computer, turn the pack on in the world settings: Create World, the settings cog, tick the pack, Apply Settings; or right-click an existing world, Mods, tick it, Save world settings.
3. Type `/packs list` in the chat to check it loaded. Only the world host or server needs the pack.

A creature stands where it is placed; one with a Walk clip is set to stroll, but walking around does not work in the game yet. It never attacks, runs away or follows anyone. Attacking and running are gameplay you wire up.

## Hytale: a mod you develop

The simplest way is to leave the pack ZIP, still zipped, in the `mods` folder next to your mod, the same as for a server. Merge it into your mod only when you need one package.

1. Copy the contents of the pack’s `Common/` and `Server/` into your mod’s resources and keep the sub-folder paths.
2. Keep your own `manifest.json`. Take fields from the pack’s manifest only where you need them, and do not overwrite yours.
3. Language file: the pack has a complete `Server/Languages/en-US/server.lang`. Append its lines to your existing `server.lang`, skipping any key you already have. Never replace your file with the pack’s.
4. Keep the asset ids as they are, or rename them consistently in every file that names them: file names, the model, NPC and item definitions, and the animation sets.
5. Clip names: to use a clip with your own NPC role, put the clip names that `get_asset` lists for the model into your role’s animation sets. The names must match exactly.

## Minecraft: resource pack and data pack (no mods)

**Resource pack** (`use_with` resource_pack, for an item or a block):

1. In Minecraft Java, open Options, Resource Packs, Open Pack Folder.
2. Put the zip in that folder without unzipping it, then enable it.
3. In a world with commands on, run the `/give` command from the README or `commands.txt`.

**Animated model without mods** (`use_with` datapack): the zip holds a resource pack in `resourcepacks/` and a data pack in `datapacks/`, both as zip files.

1. Copy the resource pack zip into the `resourcepacks` folder and enable it.
2. Copy the data pack zip into your world’s `datapacks` folder, or add it on the Data Packs screen when you create the world. Run `/reload`.
3. Spawn the model with `/function <namespace>:<id>/spawn`. Play a clip with `/function <namespace>:<id>/play/<clip>`, and use `stop` and `remove` in the same place. The README lists the exact commands.

## Minecraft: a Java mod

**Not yet tested in a game client.** These Java mod files pass our file checks, but no one has loaded them in Minecraft yet. The no-mod package above is the route tested in Minecraft 26.1.

Ask for `use_with: "java_mod"`, your `loader`, and `namespace` set to your mod id. The zip is rooted so that its files land under `src/main/resources/assets/<your mod id>/`.

1. Copy the zip’s `src/main/resources/` into your mod project. Merge folders; the names do not collide with your own files unless you reuse an id.
2. Item and block models: `models/item/<id>.json`, `items/<id>.json`, `textures/item/<id>.png`. A block also gets `models/block/<id>.json` and `blockstates/<id>.json`. The models are 3D element models inside Minecraft’s -16 to 32 box.
3. Creatures use GeckoLib 5: `geckolib/models/entity/<id>.geo.json`, `textures/entity/<id>.png` and, when the model has clips, `geckolib/animations/entity/<id>.animation.json`. Use `<mod id>:<id>` with `DefaultedEntityGeoModel`, which adds the `entity/` folder itself.
4. Register the item, block or entity and its renderer in your code. The files are resources, not a compiled mod. For a creature, the README lists the animation keys (they are case-sensitive) to play in your animation controller.
5. Add a language entry yourself, for example `"item.<mod id>.<id>": "Frost Hydra"`. Language files, sounds and particle effects are not included for Minecraft yet.

## Minecraft: mod id and name changes

The namespace is your mod id. It uses lowercase letters a to z, digits and underscores, 1 to 64 characters, and cannot be `minecraft`. Pass it as `options.namespace` when you ask for the package, and every path becomes `assets/<mod id>/...` and every reference `<mod id>:...`.

If you already have files in the default `myrlin` namespace, rename them by hand:

1. Rename the folder `assets/myrlin/` to `assets/<mod id>/`.
2. In every JSON file under it (models, items, blockstates), change each `myrlin:` reference to `<mod id>:`. Do the same in any command you copied from the README.
3. Leave `Source/` and `conversion.json` alone; they record where the files came from.
4. The no-mod data pack also keeps a few shared scoreboard names that start with `myrlin_`. They are global names, not resource ids, and need no change.

Ids look like `asset_<32 hex characters>`. To give an item a readable id, rename `models/item/<id>.json`, `items/<id>.json` and `textures/item/<id>.png`, and change the id in every reference to match (the item model `<mod id>:item/<id>` and the texture path). A block also has `models/block/<id>.json` and `blockstates/<id>.json`; a GeckoLib creature has its model, texture and animation files named by the id.
