Search DevTools

Jump to any tool or page

Ludo AI Game Assets

Unexplored

Generate game assets with AI: sprites, 3D models, animations, sound effects, music, and voices.

Ludo-AI5 stars0 forksAI & Agents
View source

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

CategoryCapabilities
ImagesSprites, icons, screenshots, backgrounds, UI assets, textures, background removal
3D ModelsConvert 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
AnimationAnimated spritesheets from static sprites (4-64 frames), motion transfer from video or presets, spritesheet editing (re-prompt, outpaint, loop fixing)
VideoGenerate short videos from images or reference images (1-15 seconds, varies by model), prompt-driven video editing, 2x upscaling
AudioSound 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.

ParameterRequiredDescription
promptYesDetailed description of the image
image_typeYessprite, 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_styleNo8-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.
perspectiveNoSide-Scroll, Top-Down, Isometric, First-Person, Third-Person, 2.5D
aspect_ratioNodefault, ar_1_1, ar_4_3, ar_16_9, ar_9_16
nNoNumber of variations (1-8, default: 1)
request_idNoClient-provided ID to retrieve results later

Credits: 0.5 per image


Edit Image (editImage)

Modify an existing image using text instructions (smart editing).

ParameterRequiredDescription
imageYesURL or base64-encoded image to edit
promptYesDescription of changes (e.g., "remove the background", "make it darker", "add clouds to the sky")
reference_imageNoURL or base64 reference image for style/content guidance
nNoNumber of variations (1-4, default: 1)
request_idNoClient-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.

ParameterRequiredDescription
style_imageYesURL or base64-encoded reference image for style matching
promptYesDescription of what to generate (e.g., "a warrior character", "a treasure chest")
image_typeYessprite, icon, screenshot, art, asset, sprite-vfx, ui_asset, fixed_background, texture, 3d, generic
nNoNumber of variations (1-4, default: 1)
request_idNoClient-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.

ParameterRequiredDescription
imageYesURL or base64-encoded sprite image
poseYesTarget 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)
descriptionNoAdditional instructions to guide pose generation
nNoNumber of variations (1-4, default: 1)
request_idNoClient-provided ID to retrieve results later

Returns: url, pose, motion_prompt

Example workflow:

  1. Generate a "Walk (Left)" pose with generatePose
  2. Use the returned motion_prompt directly in animateSprite for 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.

ParameterRequiredDescription
imageYesURL or base64-encoded sprite image
camera_rotationYesCamera 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_elevationNoCamera tilt in degrees: 0 (eye-level), 30 (elevated), 60 (high-angle). Omit to keep the sprite's current elevation.
nNoNumber of variations (1-4, default: 1)
request_idNoClient-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.

ParameterRequiredDescription
imageYesURL or base64-encoded image
cropNoTrim the result to the subject's bounding box (default: false)
creative_editNoHigher-quality output that may not match the input pixel-for-pixel (default: true)
request_idNoClient-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.

ParameterRequiredDescription
imageYesURL or base64-encoded image
texture_typeNopbr (default), simple, none
texture_sizeNo1024, 2048 (default)
target_num_facesNoTriangle count 1,000-200,000 (default: 50,000)
request_idNoClient-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.

ParameterRequiredDescription
modelYesURL or base64-encoded GLB to rig
rig_typeNoWhich 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_namingNoBone 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_idNoOptional 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.

ParameterRequiredDescription
modelYesURL or base64-encoded rigged GLB to animate (rig it first with rigModel)
promptYesDesired motion (e.g., "walking", "swinging an axe", "waving hello")
modeNoAnimation 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_variantsNoNumber of candidate animations to generate (1-8, default: 4)
loopNoReturn 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_promptNoRewrite the prompt into a detailed motion caption behind the scenes (default: true)
request_idNoOptional 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.

ParameterRequiredDescription
modelYesURL or base64-encoded rigged GLB (humanoid-template rig)
preset_idYesid of a preset from listAnimationPresets — only presets with a clip_url qualify
crop_loopNoTrim 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_placeNoRemove 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_idNoOptional 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.

ParameterRequiredDescription
initial_imageYesURL or base64 of the starting frame
motion_promptYesAnimation description (e.g., "walking cycle", "idle breathing", "attack slash")
image_typeNosprite, sprite-vfx, ui_asset
framesNo4, 9, 16, 25, 36 (default), 49, 64
frame_sizeNo32, 64, 96, 128, 192, 256 (default), 384, 0 (max resolution), -1 (AI 1.5× upscale), -9 (match input frame)
loopNoSeamless loop (default: true)
cropNoCrop frames to fit content; smaller spritesheets but inconsistent frame sizes
margin_ratio_horizontalNoHorizontal 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_verticalNoVertical 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_ratioNoDeprecated — 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_modeNoauto (default), manual, none
augment_promptNoAugment the motion prompt behind the scenes (default: true)
modelNoblitz (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: standardblitz
durationNoDepends on model — Blitz: 1.24s (1.2, 1.5, 2, 2.5, 3, 3.5, 4); Forge: 14s in 0.5 steps; Eagle / Eagle with Audio: 14s
final_imageNoEnding frame for interpolation
gifNoGenerate an animated GIF (default: false)
individual_framesNoExtract individual frame images (default: false)
spritesheet_with_backgroundNoAlso return the spritesheet with background intact, before background removal (default: false)
request_idNoClient-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 with id, name, category, description, duration, preview_url, and — when the preset can be retargeted onto a rigged 3D model — clip_url
  • perspectives — Array with id, 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.

ParameterRequiredDescription
imageYesURL or base64-encoded sprite image
videoNoURL 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_idNoID 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.
directionNoDirection for the animation preset. When using a preset, direction is required. Values: N, NE, E, SE, S, SW, W, NW
perspectiveNoPerspective ID to use with the animation preset. When using a preset, perspective is required.
framesNoNumber of frames in the output spritesheet
frame_sizeNoSize of each frame in pixels
loopNoTrim animation for seamless loop
cropNoCrop frames to fit content
margin_ratio_horizontalNoHorizontal padding around the sprite (0.0–1.0). Useful for animations that extend sideways, e.g. sword slashes or punches
margin_ratio_verticalNoVertical padding around the sprite (0.0–1.0). Useful for animations that extend up or down, e.g. jumps
margin_ratioNoDeprecated — 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_modeNomanual (default), none
gifNoGenerate an animated GIF (default: false)
individual_framesNoExtract individual frame images (default: false)
spritesheet_with_backgroundNoAlso return the spritesheet with background intact, before background removal (default: false)
modelNotango (default) — most powerful for demanding use cases; forge — cost-effective for simple motion, works best with presets and matching poses
durationNoAnimation length in seconds: 14 (default 1.5). If the reference video is longer, it is compressed to this duration
request_idNoClient-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).

ParameterRequiredDescription
spritesheet_urlYesURL of a spritesheet you generated in the last 7 days
edit_modeNoprompt (default) — re-prompt the animation; outpaint — extend beyond the frame; fix_loop — repair a bad loop
promptNoEdit instruction. Required for prompt mode, optional for outpaint, not accepted for fix_loop
imagesNoUp to 5 reference images (URL or base64) to guide the edit
durationNoOutput length in seconds: 14. Defaults to the source spritesheet's duration
modelNoforge (default)
cropNoCrop frames to fit content
loopNoTrim animation for seamless loop (default: true)
framesNoFrames in the output spritesheet: 4, 9, 16, 25, 36, 49, 64. Defaults to the source's frame count
frame_sizeNoFrame size in pixels: 32384, or 0 for max resolution. Defaults to the source's frame size
gifNoGenerate an animated GIF (default: false)
individual_framesNoExtract individual frame images (default: false)
spritesheet_with_backgroundNoAlso return the sprites

Sourced from the repository README.

More in AI & Agents