ascii-designer-mcp
Renders Blender 3D scenes as truecolor ASCII animations, supporting .blend sources and saving presets as .blend files. Pairs with the Blender Lab MCP server to build, animate, preview, and render custom scenes live in Blender.
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., "@ascii-designer-mcprender a 12-second looping planet wallpaper with the ice palette"
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.
ascii-designer-mcp
Official source: https://github.com/timfewi/ascii-designer-mcp
Render Blender 3D scenes as high quality truecolor ASCII animations, mainly seamlessly looping desktop wallpaper videos. Usable as a CLI and as an MCP server for coding agents; pairs with the Blender Lab MCP server for building custom scenes live in Blender.
source ─► passes (cached) ─► ASCII grid ─► outputs
preset / .blend: Blender 5.2 headless → beauty PNG + depth/normal EXR
video / image: ffmpeg decode
shape-aware glyphs, 3D edge lines, ink colour, loop-safe hysteresis
→ HEVC wallpaper, 4:4:4, H.264, lossless master, PNG, ANSI, ASCII MotionQuick start
nix develop path:. # or direnv; provides Blender 5.2, ffmpeg, font and checks
just status # Blender, ffmpeg encoders, font, cache
just presets # built-in scenes, parameters and palettes
just preview tunnel --frame 40 # one frame → PNG overview + 1:1 crop
just wallpaper planet # 12 s loop → ~/Videos/ascii-designer/planet.mp4
just render terrain --param style='"solid"' --style charset='"blocks"'
nix build path:.#default # packaged CLI: result/bin/ascii-designer-mcpPlay a rendered loop as a Wayland wallpaper, for example with mpvpaper; the
closed GOP makes loop-file=inf seamless and hwdec=auto-safe lets the GPU
decode the HEVC stream:
mpvpaper -o "no-audio loop-file=inf hwdec=auto-safe" '*' ~/Videos/ascii-designer/planet.mp4Related MCP server: ClaudeKit Blender MCP
How it looks good
One brightness model. Glyph density carries part of the brightness and the truecolor foreground carries the rest (
style.color_lightness, 0…1). Density is chroma-aware, so saturated blue or magenta surfaces stay dense.Calm fills, sharp structure. Flat cells use a short density ramp (
.:-=+*#%@); cells with real structure use the whole charset, matched by sub-cell shape against the font's average ink profile, with directional and gated contrast enhancement.3D edges. Relative log-depth steps and normal-angle creases from Blender's passes become oriented line glyphs (
| / \ - _) when they continue across cells. Isolated specks such as stars stay.or*.Ink colour. Each cell's colour is averaged under the chosen glyph's ink, not over the whole cell, so boundaries do not mix colours.
Stable and loopable. Hysteresis keeps glyphs from shimmering, and a warm-up runs until the state is a fixed point, so the loop seam cannot pop. Presets animate with drivers of
frameover exactly one period. Every render reports the seam:glyph_state_mismatchandscene_mean_abs_diff.Pixel-exact output. The default is 1920x1200 with 10x20 px cells (192x60 glyphs), all even-aligned for 4:2:0 chroma, at 36 fps (4 refreshes per frame on 144 Hz). Output is HEVC Main10 with a closed GOP of exactly one loop. Glyphs use hinted FreeType at the target size (CaskaydiaCove SemiBold by default), and block, sextant and Braille glyphs are drawn procedurally.
Spec
The CLI takes a spec file (TOML or JSON), inline JSON or a preset name plus flags; MCP tools take the same object.
seconds = 12
fps = 36
size = "1920x1200"
cell = "10x20"
engine = "eevee" # eevee | cycles | workbench
samples = 32
outputs = ["wallpaper", "png"] # wallpaper wallpaper444 h264 master png ansi asciimotion
output_dir = "~/Videos/ascii-designer"
[source] # exactly one of: preset | blend | video | image
preset = "planet"
params = { palette = "ice", moons = 2 }
[style]
charset = "symbols" # symbols | ascii | blocks | braille | custom:<chars>
edges = "auto" # auto (on for 3D sources) | on | off
color_lightness = 0.5 # 0: density carries brightness … 1: colour carries it
contrast = 1.8
hysteresis = 0.15
saturation = 1.15
background = "#000000" # "#rrggbb" | "tint:0.15" | "transparent" (PNG)
glow = 0.0 # phosphor bloom strengthframe_range = [start, end] and loop = true apply to .blend sources.
Relative paths resolve against the spec file.
Presets
Preset | Scene |
| Rotating (p,q) torus knot with rim lighting |
| Endless flight through glowing ring, hex or square segments |
| Ringed planet with continents, atmosphere, moons and stars |
| Synthwave flight over a looping mountain range (wire or solid) |
| Isometric grid of pillars in a travelling wave |
| Nested rings spinning around a glowing core |
| Rotating double helix |
| Spiral galaxy turning by one arm per loop |
| Liquid metaballs on periodic paths |
| Endless flight over a procedural skyline |
| Lorenz, Aizawa or Thomas attractor as a tube |
| Your logo image (PNG/JPG) as an embossed, double-sided 3D emblem that sways, floats or spins |
Palettes: synthwave, matrix, amber, ice, sunset, nord, toxic, mono.
The logo preset turns any image into a 3D emblem. The foreground comes from the
alpha channel or, for opaque images, from the distance to the border colour.
Brighter colour regions stand higher (relief), and the original colours are
used as texture:
just render logo --param 'image="/path/to/logo.png"' --param 'motion="spin"' --param 'palette="ice"'MCP surface
ascii-designer-mcp mcp serves stdio.
Tool | Purpose |
| Toolchain, encoders, font, cache size, recent jobs |
| Presets with parameter schemas, palettes, charsets, outputs |
| One frame as overview image + 1:1 crop image + PNG paths |
| Start the full render as a background job |
| Job progress, result (output paths, seam report) or cancel |
| Save a preset as |
With the Blender Lab MCP server
Build the scene. Use the Blender Lab MCP (
execute_blender_code) to build and animate a scene in the running Blender GUI. Animate with keyframes or simple-expression drivers; Python drivers are disabled when rendering (-Y).Save it with
bpy.ops.wm.save_as_mainfile(filepath="/abs/scene.blend").Iterate with
ascii_previewon{"source": {"blend": "/abs/scene.blend"}}.Render with
ascii_render. For seamless loops set"loop": trueand makeframe_end + 1equal toframe_start.
ascii_preset_to_blend gives you a starting point. Rendering always uses
--factory-startup, so user add-ons (including the MCP bridge on port 9876) do not
load in the render process.
ASCII Motion
The asciimotion output writes a session file that
ASCII Motion imports: the v1 session shape, which its
importer migrates to v2. Use it to hand-edit a clip or add ASCII Motion's
effects. Browser memory limits the size, so exports above 600k cells are refused;
use fewer columns or seconds. The wallpaper videos themselves do not need it.
Configuration
Variable | Default |
| CaskaydiaCove Nerd Font Mono SemiBold (set by the package) |
|
|
|
|
|
|
A 12 s loop at 1920x1200 takes about 1 s per frame in EEVEE, plus about 0.35 s
per frame for mapping and encoding. It caches about 2 GB of passes;
just cache-prune clears them. Restyling (charset, colours, contrast) reuses the
cached passes.
Development
nix develop path:.
just test # unit + integration (Blender tests skipped)
just test-blender # includes real renders
just lint # project-check fast: nixfmt, statix, deadnix, ruff, basedpyright, unittest
just verify # project-check full: nix flake check incl. Blender smoke renderLayout: src/ascii_designer/{spec,presets,service,cache,jobs,cli,mcp_server}.py,
raster/ (glyphs, mapper, edges, colours, compose, passes), output/ (ffmpeg,
grid, ansi, asciimotion), blender/ (runner and the scripts that run inside Blender,
Python 3.13).
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Render Blender scenes (.blend or bpy script) on JANCTION GPUs from AI agents: previews, frames, MP4.
1Cloud Blender for AI agents: build, inspect, render and animate 3D scenes over remote MCP. Keep editable .blend projects and export GLB or STL. Make your first 3D asset free—30 compute minutes per UTC month, no credit card. First 100 eligible Free account owners to use all 30 minutes in one UTC month by December 31, 2026 UTC receive one calendar month of beta free: 4 compute hours per UTC month, 2 concurrent workers per deployment, 2 deployments, 2048×2048 renders at up to 256 samples, and 10 GiB storage. Existing usage counts toward the 4-hour allowance. Limited to 100 rewards; expires January 1, 2027 00:00 UTC. Free resumes afterward without an automatic charge. Examples, eligibility and terms: https://sceneplane.online/launch?utm_source=glama&utm_medium=directory&utm_campaign=first100
Create and manage cinematic AI video renders through the Future Video Studio Agent API.
3D avatar/asset foundry: text/image -> rigged, validated, engine-ready GLB via x402.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to control Blender 3D software through natural language commands, supporting object creation, manipulation, materials, rendering, and scene management with 22 tools organized across 6 categories.-
- FlicenseAqualityDmaintenanceEnables comprehensive control of Blender 3D from Claude Desktop, offering 26 tools for object manipulation, scene management, and material editing. It supports asset integration from platforms like Poly Haven and allows for direct execution of custom Python scripts within the Blender environment.26-
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to fully control Blender through 50+ tools for 3D modeling, animation, materials, and scene management via HTTP endpoints.-
- AlicenseCqualityAmaintenanceEnables AI agents to control Blender through 150+ tools across 24 modules, including modeling, materials, lighting, animation, rendering, mesh quality analysis, and visual feedback, plus expert prompts and goal-first workflow management.209MIT