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), keyframe animation through up to three fixed 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 |
| Jobs & History | Async job queue: submit, poll or long-poll, list and cancel jobs (queued jobs refund their credits), plus paginated generation history across the API and the web app |
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
Generation tools run on a job queue and return a job id immediately; the Returns field of each tool below describes the result you get back from getApiJob once the job succeeds. See How Generation Calls Work.
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 | Skeleton style prior: general (default, works for any asset), humanoid (anime-style characters, densest skeleton), game (classic game-character rig), or the pinned humanoid templates with named joints (required for animate3DModelPreset): humanoid_template (22 joints) and humanoid_template_hands (52 joints, five fingers per hand). The templates only suit two-armed, two-legged characters |
joint_naming | No | Bone naming convention for the identified joints: smpl (default), mixamo (Unity's humanoid auto-mapper), humanik (unprefixed names for 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; introductory price, 80% off the 1-credit list price) 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, the 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 (default), sprite-vfx, ui_asset |
frames | No | 4, 9, 16, 25, 36 (default), 49, 64 |
frame_size | No | 0 (default, max resolution), 32, 64, 96, 128, 192, 256, 384, -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 | Default 3s. 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. A model that does not offer 3s falls back to its shortest |
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. The default 3s on the default Blitz model is 5.7. Processing time: 30-90 seconds
Keyframe Animation (animateSpriteKeyframes)
Animate a sprite through up to three fixed keyframes (initial_image, middle_image, final_image), producing a spritesheet that interpolates through the provided frames in order. Runs on the Forge family, the only models supporting middle keyframes: forge (default) or forge-pixel for pixel-art sprites. The motion prompt is optional here: when omitted, the motion is derived purely from the keyframes. Use animateSprite instead for the classic single-image + text-prompt animation with model choice.
| Parameter | Required | Description |
|---|---|---|
initial_image | No* | URL or base64 of the first keyframe. *At least one of initial_image or middle_image is required (a final_image alone is rejected) |
middle_image | No* | URL or base64 of the middle keyframe the animation passes through |
final_image | No | URL or base64 of the final keyframe |
motion_prompt | No | Optional animation description (e.g., "attack slash"); without it the keyframes drive the motion |
image_type | No | sprite (default), sprite-vfx, ui_asset |
model | No | forge (default) or forge-pixel for pixel-art sprites |
frames | No | 4, 9, 16, 25, 36 (default), 49, 64 |
frame_size | No | 0 (default, max resolution), 32, 64, 96, 128, 192, 256, 384, -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) |
margin_ratio_vertical | No | Vertical padding around the sprite as a ratio 0.0–1.0 (only used when margin_ratio_mode is manual) |
margin_ratio | No | Deprecated - uniform padding on both axes; 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) |
duration | No | Forge durations: 1–4s in 0.5 steps (default: 3). Three keyframes need the room: at 1s the opening transition is compressed away |
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: same shape as animateSprite (spritesheet_url, video_url, gif_url, num_frames, num_cols, num_rows, ...)
Credits: Forge family only, 1.5 credits/sec with a 4-credit minimum (1s–2.5s = 4, the default 3s = 4.5, 3.5s ≈ 5.3, 4s = 6) Processing time: 30-90 seconds
Animation Presets (listAnimationPresets)
List available animation presets, used by transferMotion (onto a sprite) and animate3DModelPreset (onto a rigged 3D model). Returns preset animations, perspectives, and directions; no video URLs are exposed.
Returns:
animations: Array of presets withid,name,category,description,duration,preview_url, andclip_urlon the presets that can be retargeted onto a rigged 3D modelperspectives: 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. |
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.25,122
- 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