Back to MCP directory
publicPublicdnsLocal runtime

ludo-mcp

Ludo AI MCP服务器是一个通过模型上下文协议(MCP)提供AI生成游戏资产(如图像、3D模型、动画、音频)的服务,支持与Claude Desktop和Cursor等客户端集成。

article

README

🚀 Ludo AI MCP 服务器

通过模型上下文协议 (MCP) 使用人工智能生成游戏资源。

✨ 主要特性

| 类别 | 功能 | | ---- | ---- | | 图像 | 精灵图、图标、截图、背景、UI 资源、纹理、去除背景 | | 3D 模型 | 将 2D 图像转换为带有 PBR 纹理的 GLB 模型 | | 动画 | 从静态精灵图生成动画精灵表单(4 - 64 帧),从视频或预设进行动作迁移 | | 视频 | 从图像生成短视频(3 - 10 秒) | | 音频 | 音效、背景音乐、角色语音、文本转语音 |

🚀 快速开始

1. 获取 API 密钥

ludo.ai 上注册,并从 app.ludo.ai 获取你的 API 密钥。

2. 配置 MCP 客户端

Claude 桌面端

在 macOS 系统中,将以下内容添加到 ~/Library/Application Support/Claude/claude_desktop_config.json 文件;在 Windows 系统中,添加到 %APPDATA%\Claude\claude_desktop_config.json 文件:

{
  "mcpServers": {
    "ludo": {
      "url": "https://mcp.ludo.ai/mcp",
      "headers": {
        "Authorization": "ApiKey YOUR_API_KEY"
      }
    }
  }
}

Cursor

在 Cursor 偏好设置的 MCP 设置中添加以下内容:

{
  "mcpServers": {
    "ludo": {
      "url": "https://mcp.ludo.ai/mcp",
      "headers": {
        "Authorization": "ApiKey YOUR_API_KEY"
      }
    }
  }
}

💻 使用示例

基础用法

以下是一个使用 createImage 生成图像的示例:

# 假设使用 Python 调用 API
import requests

url = "https://mcp.ludo.ai/mcp"
headers = {
    "Authorization": "ApiKey YOUR_API_KEY"
}
data = {
    "prompt": "A pixel art knight character with sword and shield, side view, 16-bit style",
    "image_type": "sprite",
    "art_style": "Pixel Art (16-Bit)"
}

response = requests.post(url, headers=headers, json=data)
print(response.json())

高级用法

以下是一个使用 animateSprite 生成动画精灵表单的示例:

import requests

url = "https://mcp.ludo.ai/mcp"
headers = {
    "Authorization": "ApiKey YOUR_API_KEY"
}
data = {
    "initial_image": "url_of_initial_image",
    "motion_prompt": "walking cycle",
    "frames": 16
}

response = requests.post(url, headers=headers, json=data)
print(response.json())

📦 可用工具

图像生成 (createImage)

生成精灵图、图标、背景、UI 资源和纹理。 | 参数 | 是否必需 | 描述 | | ---- | ---- | ---- | | prompt | 是 | 图像的详细描述 | | image_type | 是 | spriteiconscreenshotartassetsprite-vfxui_assetfixed_backgroundtexture3dgeneric | | art_style | 否 | Pixel Art (16-Bit)Pixel Art (8-Bit)Low PolyCartoonishStylized 3DFlat DesignAnime/MangaVoxel Art 等 | | perspective | 否 | Side-ScrollTop-DownIsometricFirst-PersonThird-Person2.5D | | aspect_ratio | 否 | defaultar_1_1ar_4_3ar_16_9ar_9_16 | | n | 否 | 变体数量(1 - 8,默认值:1) | | request_id | 否 | 客户端提供的 ID,用于稍后检索结果 |

费用:每张图像 0.5 积分

图像编辑 (editImage)

使用文本指令修改现有图像(智能编辑)。 | 参数 | 是否必需 | 描述 | | ---- | ---- | ---- | | image | 是 | 要编辑的图像的 URL 或 Base64 编码图像 | | prompt | 是 | 更改描述(例如,“去除背景”、“使其更暗”、“在天空中添加云朵”) | | reference_image | 否 | 用于风格/内容指导的参考图像的 URL 或 Base64 编码图像 | | n | 否 | 变体数量(1 - 4,默认值:1) | | request_id | 否 | 客户端提供的 ID,用于稍后检索结果 |

费用:每张图像 0.5 积分

风格生成 (generateWithStyle)

在保持参考图像视觉风格的同时生成新内容。 | 参数 | 是否必需 | 描述 | | ---- | ---- | ---- | | style_image | 是 | 用于风格匹配的参考图像的 URL 或 Base64 编码图像 | | prompt | 是 | 要生成内容的描述(例如,“一个战士角色”、“一个宝箱”) | | image_type | 是 | spriteiconscreenshotartassetsprite-vfxui_assetfixed_backgroundtexture3dgeneric | | n | 否 | 变体数量(1 - 4,默认值:1) | | request_id | 否 | 客户端提供的 ID,用于稍后检索结果 |

费用:每张图像 0.5 积分

姿势生成 (generatePose)

为现有精灵图生成新姿势。在使用 animateSprite 之前使用此功能,以获得最佳动画效果 - 起始姿势应与预期动画匹配。 | 参数 | 是否必需 | 描述 | | ---- | ---- | ---- | | image | 是 | 精灵图的 URL 或 Base64 编码图像 | | pose | 是 | 目标姿势:Idle (Front)Idle (Back)Walk / Run (Left)Attack ReadyJumpingCrouchingFlyingDefending / Blocking 或任何自定义描述 | | description | 否 | 指导姿势生成的额外指令 | | n | 否 | 变体数量(1 - 4,默认值:1) | | request_id | 否 | 客户端提供的 ID,用于稍后检索结果 |

返回值urlposemotion_prompt

示例工作流程

  1. 使用 generatePose 生成 “Walk / Run (Left)” 姿势
  2. 直接将返回的 motion_prompt 用于 animateSprite 以获得最佳动画效果

费用:每张图像 0.5 积分

去除背景 (removeImageBackground)

从图像中去除背景,返回透明的 PNG 图像。 | 参数 | 是否必需 | 描述 | | ---- | ---- | ---- | | image | 是 | 图像的 URL 或 Base64 编码图像 | | request_id | 否 | 客户端提供的 ID,用于稍后检索结果 |

返回值url(透明 PNG 图像)

费用:每张图像 0.5 积分

3D 模型生成 (create3DModel)

将 2D 图像转换为带有纹理的 3D GLB 模型。 | 参数 | 是否必需 | 描述 | | ---- | ---- | ---- | | image | 是 | 图像的 URL 或 Base64 编码图像 | | texture_type | 否 | pbr(默认值)、simplenone | | texture_size | 否 | 10242048(默认值)、4096 | | target_num_faces | 否 | 三角形数量 1,000 - 100,000(默认值:50,000) | | high_detail_shape | 否 | 启用复杂形状(较慢) | | request_id | 否 | 客户端提供的 ID,用于稍后检索结果 |

返回值model_url(GLB 文件)+ 4 张不同角度的快照图像

费用:每个模型 3 积分 处理时间:60 - 120 秒

精灵动画 (animateSprite)

从静态图像创建动画精灵表单。 | 参数 | 是否必需 | 描述 | | ---- | ---- | ---- | | initial_image | 是 | 起始帧的 URL 或 Base64 编码图像 | | motion_prompt | 是 | 动画描述(例如,“行走循环”、“闲置呼吸”、“攻击斩击”) | | image_type | 否 | spritesprite-vfxui_asset | | frames | 否 | 49162536(默认值)、4964 | | frame_size | 否 | 64128256(默认值)、0(最大分辨率) | | loop | 否 | 无缝循环(默认值:true) | | model | 否 | standard(默认值)或 new(更高质量) | | duration | 否 | 标准:1.2 - 3 秒,新:4 秒 | | final_image | 否 | 用于插值的结束帧 | | gif | 否 | 生成动画 GIF(默认值:false) | | individual_frames | 否 | 提取单个帧图像(默认值:false) | | spritesheet_with_background | 否 | 还返回去除背景之前带有完整背景的精灵表单(默认值:false) | | request_id | 否 | 客户端提供的 ID,用于稍后检索结果 |

返回值spritesheet_urlvideo_urlgif_urlindividual_frame_urlsspritesheet_with_background_urlindividual_frame_with_background_urlsnum_framesnum_colsnum_rows

费用:每个动画 5 积分 处理时间:30 - 90 秒

动画预设 (listAnimationPresets)

列出可用于动作迁移的动画预设。返回预设动画、视角和方向 — 不暴露视频 URL。

返回值

  • animations — 包含 idnamecategorydescriptiondurationpreview_url 的预设数组
  • perspectives — 包含 idnamedescription 的数组(所有动画支持所有视角)
  • directions["N", "NE", "E", "SE", "S", "SW", "W", "NW"](所有动画支持所有方向)

费用:免费

动作迁移 (transferMotion)

将视频或动画预设中的动作迁移到静态精灵图上,生成动画精灵表单。 | 参数 | 是否必需 | 描述 | | ---- | ---- | ---- | | image | 是 | 精灵图的 URL 或 Base64 编码图像 | | video | 否 | 用作动作源的视频 URL。你可以使用 animateSprite 端点的视频或提供自己的视频。长达 4 秒的视频将产生更好的效果。必须提供 videopreset_id + perspective + direction。 | | preset_id | 否 | 用于代替视频 URL 的动画预设 ID。使用 animation-presets 端点列出可用预设。使用预设时,perspectivedirection 是必需的。 | | direction | 否 | 动画预设的方向。使用预设时,direction 是必需的。值:NNEESESSWWNW | | perspective | 否 | 与动画预设一起使用的视角 ID。使用预设时,perspective 是必需的。 | | frames | 否 | 输出精灵表单中的帧数 | | frame_size | 否 | 每个帧的像素大小 | | loop | 否 | 修剪动画以实现无缝循环 | | crop | 否 | 裁剪帧以适应内容 | | margin_ratio | 否 | 精灵图周围的填充(0.0 - 1.0) | | margin_ratio_mode | 否 | manual(默认值)、none | | gif | 否 | 生成动画 GIF(默认值:false) | | individual_frames | 否 | 提取单个帧图像(默认值:false) | | spritesheet_with_background | 否 | 还返回去除背景之前带有完整背景的精灵表单(默认值:false) | | request_id | 否 | 客户端提供的 ID,用于稍后检索结果 |

返回值spritesheet_urlvideo_urlgif_urlindividual_frame_urlsspritesheet_with_background_urlindividual_frame_with_background_urlsnum_framesnum_colsnum_rows

费用:每次迁移 5 积分

视频生成 (createVideo)

从图像生成短视频。 | 参数 | 是否必需 | 描述 | | ---- | ---- | ---- | | image | 是 | 起始帧的 URL 或 Base64 编码图像 | | prompt | 是 | 动作描述(例如,“相机拉近”、“角色向前走”) | | duration | 否 | 35(默认值)、810 秒 | | model | 否 | standard(默认值)或 new | | final_image | 否 | 用于插值的结束帧 | | request_id | 否 | 客户端提供的 ID,用于稍后检索结果 |

费用:3 秒 = 5 积分,5 秒 = 8 积分,8 秒 = 12 积分,10 秒 = 15 积分

音效生成 (createSoundEffect)

根据文本描述生成游戏音效。 | 参数 | 是否必需 | 描述 | | ---- | ---- | ---- | | description | 是 | 音效描述(例如,“激光枪射击”、“砾石上的脚步声”、“拾取硬币”) | | duration | 否 | 0 - 10 秒(0 = 自动) | | request_id | 否 | 客户端提供的 ID,用于稍后检索结果 |

费用:每个音效 3 积分

音乐生成 (createMusic)

生成背景音乐和主题。 | 参数 | 是否必需 | 描述 | | ---- | ---- | ---- | | description | 是 | 音乐描述(例如,“史诗般的管弦乐战斗主题”、“平静的钢琴旋律”、“8 位芯片音乐”) | | lyrics | 否 | 声乐轨道的可选歌词 | | request_id | 否 | 客户端提供的 ID,用于稍后检索结果 |

费用:每首曲目 3 积分

语音生成 (createVoice)

生成独特的角色语音。 | 参数 | 是否必需 | 描述 | | ---- | ---- | ---- | | voice_description | 是 | 角色描述(例如,“粗暴的老战士”、“开朗的年轻女孩”) | | text | 是 | 要朗读的文本(最多 200 个字符) | | type | 否 | human(默认值)或 non-human | | request_id | 否 | 客户端提供的 ID,用于稍后检索结果 |

费用:每个语音 3 积分

文本转语音 (createSpeech)

从音频样本克隆语音。 | 参数 | 是否必需 | 描述 | | ---- | ---- | ---- | | text | 是 | 要朗读的文本(最多 1000 个字符) | | sample | 是 | 用于语音克隆的音频样本的 URL 或 Base64 编码音频 | | request_id | 否 | 客户端提供的 ID,用于稍后检索结果 |

费用:每次生成 3 积分

文本转语音预设 (createSpeechPreset)

使用预设语音进行文本转语音。 | 参数 | 是否必需 | 描述 | | ---- | ---- | ---- | | text | 是 | 要朗读的文本(最多 1000 个字符) | | voice_preset_id | 是 | Serious womanWise womanCalm womanPatient manDetermined manDeep voice manTeen boySweet girl 等 | | emotion | 否 | DefaultHappySadAngryFearfulSurprisedNeutral | | language | 否 | autoEnglishSpanishFrenchGermanJapaneseKorean 等 | | request_id | 否 | 客户端提供的 ID,用于稍后检索结果 |

费用:每次生成 3 积分

检索图像结果 (getImageResults)

检索你最近通过 API 生成的图像。 | 参数 | 是否必需 | 描述 | | ---- | ---- | ---- | | request_id | 否 | 过滤到特定请求 |

返回值:包含 urlrequest_idcreated_at 的图像对象数组

费用:免费

检索精灵图结果 (getSpriteResults)

检索你最近通过 API 生成的精灵表单。 | 参数 | 是否必需 | 描述 | | ---- | ---- | ---- | | request_id | 否 | 过滤到特定请求 |

返回值:包含 request_idcreated_at 的精灵表单对象数组

费用:免费

检索视频结果 (getVideoResults)

检索你最近通过 API 生成的视频。 | 参数 | 是否必需 | 描述 | | ---- | ---- | ---- | | request_id | 否 | 过滤到特定请求 |

返回值:包含 urlrequest_idcreated_at 的视频对象数组

费用:免费

检索音频结果 (getAudioResults)

检索你最近通过 API 生成的音频。 | 参数 | 是否必需 | 描述 | | ---- | ---- | ---- | | request_id | 否 | 过滤到特定请求 |

返回值:包含 request_idcreated_at 的音频对象数组

费用:免费

检索 3D 模型结果 (get3DModelResults)

检索你最近通过 API 生成的 3D 模型。 | 参数 | 是否必需 | 描述 | | ---- | ---- | ---- | | request_id | 否 | 过滤到特定请求 |

返回值:包含 request_idcreated_at 的 3D 资产对象数组

费用:免费

📚 详细文档

异步使用

你可以使用 request_id 构建即发即忘的工作流程。在任何生成请求中标记一个 request_id,然后轮询相应的结果端点,在输出准备好时获取结果 — 无需保持连接打开。

  1. 在生成请求中传递 request_id
  2. 轮询相应的结果端点以检索输出
# 发起一个精灵动画请求
animateSprite with request_id="my-anim-001", initial_image="url", motion_prompt="walking"

# 准备好时检索结果
getSpriteResults with request_id="my-anim-001"

所有生成端点都接受可选的 request_id 参数。结果可保留 7 天,每个结果端点最多返回 100 个最近通过 API 生成的资产。

示例提示

创建游戏资源

Create a pixel art knight character with sword and shield, side view, 16-bit style
Generate an isometric treasure chest icon for a mobile RPG
Create a low-poly stylized tree for a casual mobile game

动画

Animate this character with a smooth walking cycle, 16 frames
Create an idle breathing animation for this character sprite
Animate this fire sprite as a looping VFX effect

音频

Create a satisfying coin pickup sound effect for a platformer
Generate an epic orchestral boss battle theme, intense and dramatic
Create a voice for a wise old wizard saying "The journey begins now"

📄 API 文档

包含所有参数和响应格式的完整 API 文档:api.ludo.ai/api-documentation

📚 支持

📄 许可证

专有许可 - 请参阅 ludo.ai/terms 获取服务条款。

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client