mcpField
K
KILN

KILN

Local
kiln3d.devMedia & Design0Updated today

About KILN

KILN turns text-based shape descriptions into stylised 3D game assets for developers and agents. It can mesh, paint, rig and animate models, then export glTF files and Godot scenes, with linting and image previews.

Key features

  1. 01Text-based model notation
  2. 02Mesh, paint, rig and animate
  3. 03Build glTF and Godot scenes
  4. 04Lint models and render previews
  5. 05Create terrain and scatter foliage
  6. 06Import CC0 assets

Use cases

  1. 01Draft stylised characters from text
  2. 02Check model errors and preview poses
  3. 03Build game terrain and foliage
  4. 04Prepare assets for Godot or other engines

MCP support

KILN includes a local MCP server that exposes project tools through CLI JSON results and returns previews as images. Godot verification and engine rendering can be enabled with `--allow-godot`.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"lukasgolino-kiln": {
"command": "uvx",
"args": [
"kiln-gen"
]
}
}
}
Run commanduvx kiln-gen

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypikiln-gen0.23.0

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

KILN — Keyed Implicit Language & Notation

KILN turns text into smooth stylised 3D game models. An AI agent (or you) writes a model as a list of simple shapes that blend into each other like clay; KILN meshes them, paints them from a palette, rigs and animates them, and builds .glb files and Godot scenes. It's the 3D sibling of PAGAN (pixel art as text): Claude can't draw, but it can write, and KILN makes the writing into art. No paid generators, no GPU, no Blender.

Website: https://kiln3d.dev/ (live 3D demo, docs). Sister libraries: PAGAN (pixel art) and SEGAN (audio).

The demo models in Godot

name: pilot
class: character
parts:
  - capsule: { from: [0, 0.32, 0], to: [0, 0.74, 0], radius: 0.3 }    # the bean body
    color: red
    material: plastic
  - capsule: { from: [0.3, 0.6, 0], to: [0.42, 0.38, 0.08], radius: 0.08 }
    id: arm_l
    mirror: x
    mirror_id: arm_r
    blend: 0.04                                                    # melts into the body
    color: red
    material: plastic
  - sphere: { at: [0.1, 0.84, 0.23], radius: 0.1 }                  # big googly eyes
    mirror: x
    color: white
    material: plastic
rig:
  arm_l: { pivot: [0.3, 0.6, 0] }
skin: soft
animations:
  walk: { fps: 12, cycle: { type: waddle } }

Status: 0.9, pre-1.0: notation, smooth and hard-surface meshing, painting (patterns, decals, palette atlas), rigs, soft and rigid skins, clip retargeting (humanoids, or any skeleton with a joint map), animations, effects, terrains (heightfields with splat layers), foliage scattering, five styles, previews, Godot export, lint, CC0 imports, a template library, a Claude skill and an MCP server. Bugs and requests: GitHub issues.

One model, any style

A project picks a style: how shapes become meshes (smooth or faceted), triangle budgets, material presets and the look kit (lighting, tonemapping, outlines). The same model text below is soft toy (Dear Passengers, Fall Guys), low poly and toon. Make your own from inspiration images.

The same models in soft_toy, low_poly and toon

Terrains

A model with terrain: is ground for a level: hills, ridges, plateaus, noise and paths combined in order, painted with up to four palette colours by slope, height, nearness to paths and noise. It builds into chunked LOD meshes, a splat map and a Godot scene with collision (examples/terrain).

A 256 m terrain from above and from four sides

Foliage

A model with scatter: places other models many times over a terrain, another model's top or a flat area: density, spacing, slope / height / noise / splat-layer / path rules, random turn, scale, lean and tint. KILN rolls every instance at build time into a JSON file and a Godot scene of MultiMeshes with LODs (examples/terrain: meadow, moss).

Trees, bushes, boulders, flowers and grass over the valley, and grass on a boulder

Install

Requires Python 3.11+.

pip install kiln-gen      # the package is kiln-gen on PyPI; the command and the import are `kiln`
kiln --version

Faster builds of big models: kiln-gen[fast] (numba). Its output differs from the plain install in the last float digits, so a game pins one or the other in its requirements.

Development: python3 -m venv .venv && .venv/bin/pip install -e ".[dev]", then pytest and mypy.

Quick start

kiln init my-game-art --style soft_toy    # kiln.toml, palette, BRIEF.md, STYLE.md, models/, styles/
cd my-game-art
kiln new model pilot --template bean      # a rigged bean character to edit
kiln lint                                 # errors and warnings with line numbers
kiln preview pilot                        # previews/pilot/turntable.png: 8 sides x 3 heights
kiln preview pilot --pose walk --closeup arm_l
kiln lineup                               # every model at one scale, with a 1 m bar
kiln build                                # build/models/pilot.glb + manifest.json

Every command takes --json and exits non-zero on errors. Previews render with KILN's own software renderer (no GPU, no display); kiln preview <model> --engine renders through Godot.

In Godot

kiln init inside a Godot project sets export = ["glb", "godot"] and output_dir to its assets/kiln; elsewhere set both by hand. Each model gets models/<name>.tscn (the glb with the style's materials: toon bands, outlines, rim light) and each style a look kit looks/<style>.tscn (sky, sun, tonemapper, SSAO, glow, colour grading).

add_child(load("res://assets/kiln/looks/soft_toy.tscn").instantiate())   # once per scene
var pilot: Node3D = load("res://assets/kiln/models/pilot.tscn").instantiate()
add_child(pilot)
pilot.get_node("AnimationPlayer").play("walk")

Humanoids can opt in to Godot's retargeting: godot_bonemap = true in kiln.toml writes a BoneMap on SkeletonProfileHumanoid per humanoid and sets it in the glb's .import, so clips made for the profile play on them. Godot then renames the skeleton's bones (hips -> Hips, upperleg_l -> LeftUpperLeg) and the skeleton node (%GeneralSkeleton): game code that names KILN's bones must change, so it's off by default and reversible.

kiln build --verify-godot loads everything in headless Godot and checks parts, animations and materials. manifest.json is the contract for any engine: files, sizes and bounds in metres, triangles, parts (pivots, parents, gameplay metadata), animations, variants, LODs and licences. examples/godot is a runnable Godot 4.7 project showing the demo models.

Other engines

The .glb files are plain glTF 2.0: Unity, Unreal, Bevy, three.js and Defold import them. Set export = ["glb"]. docs/engines.md has per-engine notes (axes, scale, vertex colours, palette textures, animations, LODs) and what's Godot-only (look kits, toon, outlines, rim light) with how to approximate it.

Using KILN with Claude

kiln skill install        # copies the skill to .claude/skills/kiln/

Then ask: "make a bean pilot for my airline game", "make the knight's helmet detachable", "add a siege tower", "make everything look more like these screenshots". The skill teaches the workflow: plan in metres, write parts, lint, LOOK at the previews, check the line-up, report.

From any agent (MCP)

claude mcp add kiln -- uvx kiln-gen mcp --project /path/to/art     # no install needed (uv); or `kiln mcp` after pip install

Other clients take the same command in their config:

{ "mcpServers": { "kiln": { "command": "uvx", "args": ["kiln-gen", "mcp", "--project", "/path/to/art"] } } }

KILN is listed in the MCP Registry as io.github.lukasgolino/kiln.

Tools return the CLI's JSON; previews come back as images. Add --allow-godot for Godot verification and engine renders.

Free asset packs

For things text does badly (dense foliage, realistic rocks), bring in CC0 models (Kenney, KayKit, Quaternius): kiln import tree.glb --licence CC0-1.0 --author Kenney --height 4. The build snaps their colours to your palette and applies your style, so they match; CREDITS.md lists authors. With Blender 4.x installed (blender on PATH or BLENDER=/path/to/blender), kiln import also takes .fbx, .blend and .obj and turns them into a glb; KILN itself never needs Blender.

KILN ships recipes for some CC0 packs (Kenney, KayKit, Quaternius): kiln pack add kaykit-adventurers mirrors one into a per-user cache (the only command that downloads), kiln pack search knight --lineup finds models by name and tags, and kiln pack import kaykit-adventurers knight --height 1.8 brings one in and records its files (pack, version, URL, sha256, licence) in kiln.lock, which kiln build checks.

License

Apache 2.0 — see LICENSE.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.