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 . # 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 .#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: Blender Universal & Token-Efficient MCP Server
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 .
just test # unit + integration (Blender tests skipped)
just test-blender # includes real renders
just lint # project-check fast: format/lint, types, unittest, native outputs, sources
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).
The flake provides native packages, development shells, formatters and checks for
x86_64-linux and aarch64-linux. Fast checks evaluate both systems without
building them. Full checks build the package and render the Blender smoke scene
on the machine's native system; ARM64 execution needs an ARM64 machine or builder.
The project-check input is pinned to the shared runner that supports both systems.
Flake commands and Direnv use Git-index files. Stage authorized new source files
before evaluation. nix/source.nix keeps the manifest, README, license and regular
Python files in src/ and tests/, including the scripts Blender loads at runtime.
Caches, job state, symlinks and special files are excluded. project-check fast
checks the actual package inventory and verifies that synthetic runtime files
leave the source store path unchanged while Python edits change it.
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Blender-as-a-service for agents: search 3D assets, run Blender Python, or brief the studio agent.
Cloud 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
Blender and GLB/FBX/USD/STL rendered on cloud GPUs for AI agents: product shots, turntables, MP4
Create and manage cinematic AI video renders through the Future Video Studio Agent API.
Related MCP Servers
- 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
- FlicenseAqualityCmaintenanceEnables AI agents to inspect and drive Blender scenes directly, either through a live editor bridge on port 8190 or automatically via headless background CLI when Blender is closed. Provides token-efficient tools for scene outlining, object creation and modification, modifiers, materials, rendering, asset export, and arbitrary bpy script execution.11-
- AlicenseAqualityAmaintenanceCloud GPU rendering for Blender, built for AI agents. Preview .blend files or bpy scripts, estimate render time, and render images, animation frames, or MP4 videos without a local GPU. Connect via MCP (OAuth) with Claude, ChatGPT, Codex, or Cursor: https://render.janction.jp/mcp. Get ¥100 in credits without a card, plus ¥400 after card registration. Then ¥0.1 per GPU-second.138,297 PyPIMIT
- FlicenseNot gradedqualityAmaintenanceEnables AI agents to inspect and modify live Blender scenes, manage objects and materials, render images, retrieve PolyHaven assets, and send prompts to configurable local or OpenAI-compatible LLM backends.-