Ludo AI Game Assets
UnexploredGenerate game assets with AI: sprites, 3D models, animations, sound effects, music, and voices.
Install
mcp_config.json
{
"mcpServers": {
"ai-ludo-game-assets": {
"url": "https://mcp.ludo.ai/mcp",
"type": "streamable-http"
}
}
}Documentation
Ludo AI MCP Server
Generate game assets using AI through the Model Context Protocol (MCP).
Features
| Category | Capabilities |
|---|---|
| Images | Sprites, icons, screenshots, backgrounds, UI assets, textures, background removal |
| 3D Models | Convert 2D images to GLB models with PBR textures, auto-rig models (skeleton + skin weights, engine-ready joint naming), text-driven skeletal animation, retarget curated animation presets onto rigged models |
| Animation | Animated spritesheets from static sprites (4-64 frames), motion transfer from video or presets, spritesheet editing (re-prompt, outpaint, loop fixing) |
| Video | Generate short videos from images or reference images (1-15 seconds, varies by model), prompt-driven video editing, 2x upscaling |
| Audio | Sound effects, background music, character voices, TTS |
Quick Start
1. Get an API Key
Sign up at ludo.ai and get your API key from app.ludo.ai.
2. Configure Your MCP Client
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"ludo": {
"url": "https://mcp.ludo.ai/mcp",
"headers": {
"Authorization": "ApiKey YOUR_API_KEY"
}
}
}
}
Cursor
Add to your MCP settings in Cursor preferences:
{
"mcpServers": {
"ludo": {
"url": "https://mcp.ludo.ai/mcp",
"headers": {
"Authorization": "ApiKey YOUR_API_KEY"
}
}
}
}
Available Tools
Image Generation (createImage)
Generate sprites, icons, backgrounds, UI assets, and textures from a text prompt alone (no source image needed). To match the art style of an existing image use generateWithStyle, to modify an existing image use editImage, and to cut out a subject use removeBackground.
| Parameter | Required | Description |
|---|---|---|
prompt | Yes | Detailed description of the image |
image_type | Yes | sprite, icon, screenshot, art, asset, sprite-vfx, ui_asset, fixed_background, side_scrolling_background, texture, horizontal_tile, tile, item-icon, portrait, card-art, splash, 3d, generic |
art_style | No | 8-Bit, 16-Bit, 32-Bit, Hi-Bit, Low Poly, Stylized 3D, Voxel Art, Flat Design, Anime/Manga, Western Cartoon, Hand-Painted, Photorealistic 3D, Cel-Shaded, etc. |
perspective | No | Side-Scroll, Top-Down, Isometric, First-Person, Third-Person, 2.5D |
aspect_ratio | No | default, ar_1_1, ar_4_3, ar_16_9, ar_9_16 |
n | No | Number of variations (1-8, default: 1) |
request_id | No | Client-provided ID to retrieve results later |
Credits: 0.5 per image
Edit Image (editImage)
Modify an existing image using text instructions (smart editing).
| Parameter | Required | Description |
|---|---|---|
image | Yes | URL or base64-encoded image to edit |
prompt | Yes | Description of changes (e.g., "remove the background", "make it darker", "add clouds to the sky") |
reference_image | No | URL or base64 reference image for style/content guidance |
n | No | Number of variations (1-4, default: 1) |
request_id | No | Client-provided ID to retrieve results later |
Credits: 0.5 per image
Generate with Style (generateWithStyle)
Generate new content while maintaining the visual style of a reference image.
| Parameter | Required | Description |
|---|---|---|
style_image | Yes | URL or base64-encoded reference image for style matching |
prompt | Yes | Description of what to generate (e.g., "a warrior character", "a treasure chest") |
image_type | Yes | sprite, icon, screenshot, art, asset, sprite-vfx, ui_asset, fixed_background, texture, 3d, generic |
n | No | Number of variations (1-4, default: 1) |
request_id | No | Client-provided ID to retrieve results later |
Credits: 0.5 per image
Generate Pose (generatePose)
Generate a new pose for an existing sprite. Use this BEFORE animateSprite to get the best animation results - the starting pose should match your intended animation.
| Parameter | Required | Description |
|---|---|---|
image | Yes | URL or base64-encoded sprite image |
pose | Yes | Target pose: Idle (Front), Idle (Back), Idle (Left Facing), Idle (Right Facing), Walk (Left), Walk (Right), Run (Left), Run (Right), Crouching, Crawling, Sitting, Attack Ready, Jump Preparation, Defending / Blocking, Flying, Sleeping, or Other (with a free-text description) |
description | No | Additional instructions to guide pose generation |
n | No | Number of variations (1-4, default: 1) |
request_id | No | Client-provided ID to retrieve results later |
Returns: url, pose, motion_prompt
Example workflow:
- Generate a "Walk (Left)" pose with
generatePose - Use the returned
motion_promptdirectly inanimateSpritefor optimal animation results
Credits: 0.5 per image
Rotate Sprite (rotateSprite)
Rotate the camera view of an existing sprite to a new angle, keeping the same character and pose. Useful for generating turnaround / directional views of a sprite.
| Parameter | Required | Description |
|---|---|---|
image | Yes | URL or base64-encoded sprite image |
camera_rotation | Yes | Camera azimuth in degrees: 0 (front), 45 (front-right), 90 (right side), 135 (back-right), 180 (back), -135 (back-left), -90 (left side), -45 (front-left) |
camera_elevation | No | Camera tilt in degrees: 0 (eye-level), 30 (elevated), 60 (high-angle). Omit to keep the sprite's current elevation. |
n | No | Number of variations (1-4, default: 1) |
request_id | No | Client-provided ID to retrieve results later |
Returns: url, camera_rotation, camera_elevation
Credits: 0.5 per image
Remove Background (removeBackground)
Remove the background from a single image, returning the subject isolated on a transparent background. For broader edits (not just cutting out the subject), use editImage instead.
| Parameter | Required | Description |
|---|---|---|
image | Yes | URL or base64-encoded image |
crop | No | Trim the result to the subject's bounding box (default: false) |
creative_edit | No | Higher-quality output that may not match the input pixel-for-pixel (default: true) |
request_id | No | Client-provided ID to retrieve results later |
Returns: a single result with url (transparent PNG)
Credits: 0.5 per image
3D Model Generation (create3DModel)
Convert a 2D image to a 3D GLB model with textures.
| Parameter | Required | Description |
|---|---|---|
image | Yes | URL or base64-encoded image |
texture_type | No | pbr (default), simple, none |
texture_size | No | 1024, 2048 (default) |
target_num_faces | No | Triangle count 1,000-200,000 (default: 50,000) |
request_id | No | Client-provided ID to retrieve results later |
Returns: model_url (GLB file) + 4 snapshot images from different angles
Credits: 3 per model Processing time: 60-120 seconds
Rig 3D Model (rigModel)
Generate a skeleton and skin weights for an existing 3D model so it can be animated. Non-destructive to the geometry — it returns a new rigged GLB. Rig a model before using animate3DModel.
| Parameter | Required | Description |
|---|---|---|
model | Yes | URL or base64-encoded GLB to rig |
rig_type | No | Which skeleton to build: general (default, works for any asset), humanoid (anime-style characters, densest skeleton), game (classic game-character rig), or the pinned humanoid templates for two-armed, two-legged characters — humanoid_template (standard 22-joint skeleton with named joints, required for animate3DModelPreset) and humanoid_template_hands (52 joints, five fingers per hand) |
joint_naming | No | Bone naming convention for the identified joints: smpl (default), mixamo (Unity's humanoid auto-mapper), humanik (unprefixed names — Maya/MotionBuilder/FBX), unreal (UE mannequin), godot (SkeletonProfileHumanoid), rigify (Blender) or vroid (VRM). Purely a relabel — the skeleton is identical |
request_id | No | Optional client-provided identifier for this request |
Returns: model_url (rigged GLB — skeleton + skin weights baked in), rigged (true)
Credits: 1 per rig Processing time: 60-120 seconds
Animate 3D Model (animate3DModel)
Generate text-driven skeletal animations for an already-rigged 3D model (rig it first with rigModel). Animation quality is hit-or-miss, so several candidates are returned for you to choose from. Each candidate is a standalone animation-only GLB (skeleton + one clip, no mesh) plus an mp4 preview — pick the best one and fuse it onto your model in a game engine or three.js.
| Parameter | Required | Description |
|---|---|---|
model | Yes | URL or base64-encoded rigged GLB to animate (rig it first with rigModel) |
prompt | Yes | Desired motion (e.g., "walking", "swinging an axe", "waving hello") |
mode | No | Animation representation: rot_trans (default, per-bone rotation + translation, most faithful) or rot_only (rotation + root translation only — for retargeting to other skeletons / engine pipelines that ignore bone translation) |
num_variants | No | Number of candidate animations to generate (1-8, default: 4) |
loop | No | Return to the initial pose — each clip plays forward then mirrors back to the rest pose for a seamless loop (default: true). Best for one-way motions (crouch, punch, wave); reads oddly for cyclic gaits like walking |
augment_prompt | No | Rewrite the prompt into a detailed motion caption behind the scenes (default: true) |
request_id | No | Optional client-provided identifier for this request |
Returns: animations — an array of candidates, each with clip_name, glb_url (animation-only GLB), preview_url (mp4), mode, seed, motion, fit_rmse
Credits: 0.2 per generation (one charge returns all variants) Processing time: 60-120 seconds
Animate 3D Model from Preset (animate3DModelPreset)
Apply a curated animation preset to an already-rigged 3D model (retargeting). Unlike animate3DModel, the motion comes from a professionally curated clip library instead of a text prompt, so exactly one clip is returned. The model must have a humanoid-template rig — rig it with rig_type humanoid_template or humanoid_template_hands first. Only presets that expose a clip_url in listAnimationPresets can be applied.
| Parameter | Required | Description |
|---|---|---|
model | Yes | URL or base64-encoded rigged GLB (humanoid-template rig) |
preset_id | Yes | id of a preset from listAnimationPresets — only presets with a clip_url qualify |
crop_loop | No | Trim the animation to the span that loops seamlessly. Omit for Auto: cyclic motions (walk, idle) loop, one-shots (jump, cast) keep their full arc |
in_place | No | Remove the animation's net travel so the character moves on the spot — the treadmill clip a game engine expects, with the engine driving locomotion. Omit to follow crop_loop |
request_id | No | Optional client-provided identifier for this request |
Returns: animations — same envelope as animate3DModel, containing one clip with clip_name, preset_id, glb_url (animation-only GLB, joints named as on your model), preview_url (mp4), seed, motion, fit_rmse
Credits: 0.2 per retarget Processing time: 30-90 seconds
Sprite Animation (animateSprite)
Create animated spritesheets from static images.
| Parameter | Required | Description |
|---|---|---|
initial_image | Yes | URL or base64 of the starting frame |
motion_prompt | Yes | Animation description (e.g., "walking cycle", "idle breathing", "attack slash") |
image_type | No | sprite, sprite-vfx, ui_asset |
frames | No | 4, 9, 16, 25, 36 (default), 49, 64 |
frame_size | No | 32, 64, 96, 128, 192, 256 (default), 384, 0 (max resolution), -1 (AI 1.5× upscale), -9 (match input frame) |
loop | No | Seamless loop (default: true) |
crop | No | Crop frames to fit content; smaller spritesheets but inconsistent frame sizes |
margin_ratio_horizontal | No | Horizontal padding around the sprite as a ratio 0.0–1.0 (only used when margin_ratio_mode is manual). Useful for animations that extend sideways, e.g. sword slashes or punches |
margin_ratio_vertical | No | Vertical padding around the sprite as a ratio 0.0–1.0 (only used when margin_ratio_mode is manual). Useful for animations that extend up or down, e.g. jumps |
margin_ratio | No | Deprecated — uniform padding on both axes, equivalent to setting both per-axis params to the same value. Cannot be combined with the per-axis params (fails with 400) |
margin_ratio_mode | No | auto (default), manual, none |
augment_prompt | No | Augment the motion prompt behind the scenes (default: true) |
model | No | blitz (default; most reliable and predictable, can struggle with very short animations), forge (best for basic animations and relatively simple sprites), eagle (for complex motion or visually complex sprites), eagle-audio (same visuals as Eagle, plus audio generation). Legacy alias: standard→blitz |
duration | No | Depends on model — Blitz: 1.2–4s (1.2, 1.5, 2, 2.5, 3, 3.5, 4); Forge: 1–4s in 0.5 steps; Eagle / Eagle with Audio: 1–4s |
final_image | No | Ending frame for interpolation |
gif | No | Generate an animated GIF (default: false) |
individual_frames | No | Extract individual frame images (default: false) |
spritesheet_with_background | No | Also return the spritesheet with background intact, before background removal (default: false) |
request_id | No | Client-provided ID to retrieve results later |
Returns: spritesheet_url, video_url, gif_url, individual_frame_urls, spritesheet_with_background_url, individual_frame_with_background_urls, num_frames, num_cols, num_rows
Credits: Varies by duration and model, each with a 4-credit minimum — Forge: 1.5/sec, Blitz: 1.9/sec, Eagle: 2.6/sec, Eagle with Audio: 3.1/sec (e.g. Blitz 3s ≈ 5.7). Processing time: 30-90 seconds
Animation Presets (listAnimationPresets)
List available animation presets for use with motion transfer (transferMotion) and 3D retargeting (animate3DModelPreset). Returns preset animations, perspectives, and directions — no video URLs are exposed.
Returns:
animations— Array of presets withid,name,category,description,duration,preview_url, and — when the preset can be retargeted onto a rigged 3D model —clip_urlperspectives— Array withid,name,description(all animations support all perspectives)directions—["N", "NE", "E", "SE", "S", "SW", "W", "NW"](all animations support all directions)
Credits: Free
Motion Transfer (transferMotion)
Transfer motion from a video or animation preset onto a static sprite, producing an animated spritesheet.
| Parameter | Required | Description |
|---|---|---|
image | Yes | URL or base64-encoded sprite image |
video | No | URL of the video to use as motion source. You can use videos from the animateSprite endpoint or provide your own. Videos up to 4 seconds will produce better results. Either video or preset_id + perspective + direction must be provided. |
preset_id | No | ID of an animation preset to use instead of a video URL. Use the animation-presets endpoint to list available presets. When using a preset, perspective and direction are required. |
direction | No | Direction for the animation preset. When using a preset, direction is required. Values: N, NE, E, SE, S, SW, W, NW |
perspective | No | Perspective ID to use with the animation preset. When using a preset, perspective is required. |
frames | No | Number of frames in the output spritesheet |
frame_size | No | Size of each frame in pixels |
loop | No | Trim animation for seamless loop |
crop | No | Crop frames to fit content |
margin_ratio_horizontal | No | Horizontal padding around the sprite (0.0–1.0). Useful for animations that extend sideways, e.g. sword slashes or punches |
margin_ratio_vertical | No | Vertical padding around the sprite (0.0–1.0). Useful for animations that extend up or down, e.g. jumps |
margin_ratio | No | Deprecated — uniform padding on both axes (0.0–1.0, default 0.15 when no margin is given). Cannot be combined with the per-axis params (fails with 400) |
margin_ratio_mode | No | manual (default), none |
gif | No | Generate an animated GIF (default: false) |
individual_frames | No | Extract individual frame images (default: false) |
spritesheet_with_background | No | Also return the spritesheet with background intact, before background removal (default: false) |
model | No | tango (default) — most powerful for demanding use cases; forge — cost-effective for simple motion, works best with presets and matching poses |
duration | No | Animation length in seconds: 1–4 (default 1.5). If the reference video is longer, it is compressed to this duration |
request_id | No | Client-provided ID to retrieve results later |
Returns: spritesheet_url, video_url, gif_url, individual_frame_urls, spritesheet_with_background_url, individual_frame_with_background_urls, num_frames, num_cols, num_rows
Credits: Varies by duration and model, 4-credit minimum. Tango: 4 credits/sec (default 1.5s = 6, up to 16 at 4s); Forge: 2 credits/sec (1.5s = 4, up to 8 at 4s)
Edit Spritesheet (editSpritesheet)
Edit a spritesheet you previously generated: re-prompt its animation, outpaint beyond the frame, or repair a bad loop. Pass back the spritesheet_url you received from animateSprite, transferMotion, or an earlier edit — it must be a spritesheet you generated in the last 7 days (external URLs are not accepted).
| Parameter | Required | Description |
|---|---|---|
spritesheet_url | Yes | URL of a spritesheet you generated in the last 7 days |
edit_mode | No | prompt (default) — re-prompt the animation; outpaint — extend beyond the frame; fix_loop — repair a bad loop |
prompt | No | Edit instruction. Required for prompt mode, optional for outpaint, not accepted for fix_loop |
images | No | Up to 5 reference images (URL or base64) to guide the edit |
duration | No | Output length in seconds: 1–4. Defaults to the source spritesheet's duration |
model | No | forge (default) |
crop | No | Crop frames to fit content |
loop | No | Trim animation for seamless loop (default: true) |
frames | No | Frames in the output spritesheet: 4, 9, 16, 25, 36, 49, 64. Defaults to the source's frame count |
frame_size | No | Frame size in pixels: 32–384, or 0 for max resolution. Defaults to the source's frame size |
gif | No | Generate an animated GIF (default: false) |
individual_frames | No | Extract individual frame images (default: false) |
spritesheet_with_background | No | Also return the sprites |
Sourced from the repository README.
More in AI & Agents
- PonytailMakes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.109,599
- AgentsMulti-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity39,079
- Frontend SlidesCreate beautiful slides on the web using a coding agent's frontend skills28,060
- Agent Skills Search ServerSearch and discover Agent Skills from the skills.sh registry. Powered by HAPI MCP server.24,658
- Agency Agents Zh🎭 267 个即插即用的 AI 专家角色 — 支持 Hermes Agent/Claude Code/Cursor/Copilot 等 18 种工具,覆盖工程/设计/营销/金融等 20 个部门。含 52 个中国市场原创智能体(小红书/抖音/微信/飞书/钉钉等)。搭配编排器 agency-orchestrator,一句话即可让多位专家按 DAG 自动协作。19,868
- Watermarks RemoverStrip multi-vendor AI provenance marks: Unicode text hygiene, statistical rewrite hooks, and C2PA/metadata from PNG/JPEG/SVG/PDF/DOCX/HTML/MD17,822