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 | 是 | sprite、icon、screenshot、art、asset、sprite-vfx、ui_asset、fixed_background、texture、3d、generic |
| art_style | 否 | Pixel Art (16-Bit)、Pixel Art (8-Bit)、Low Poly、Cartoonish、Stylized 3D、Flat Design、Anime/Manga、Voxel Art 等 |
| perspective | 否 | Side-Scroll、Top-Down、Isometric、First-Person、Third-Person、2.5D |
| aspect_ratio | 否 | default、ar_1_1、ar_4_3、ar_16_9、ar_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 | 是 | sprite、icon、screenshot、art、asset、sprite-vfx、ui_asset、fixed_background、texture、3d、generic |
| n | 否 | 变体数量(1 - 4,默认值:1) |
| request_id | 否 | 客户端提供的 ID,用于稍后检索结果 |
费用:每张图像 0.5 积分
姿势生成 (generatePose)
为现有精灵图生成新姿势。在使用 animateSprite 之前使用此功能,以获得最佳动画效果 - 起始姿势应与预期动画匹配。
| 参数 | 是否必需 | 描述 |
| ---- | ---- | ---- |
| image | 是 | 精灵图的 URL 或 Base64 编码图像 |
| pose | 是 | 目标姿势:Idle (Front)、Idle (Back)、Walk / Run (Left)、Attack Ready、Jumping、Crouching、Flying、Defending / Blocking 或任何自定义描述 |
| description | 否 | 指导姿势生成的额外指令 |
| n | 否 | 变体数量(1 - 4,默认值:1) |
| request_id | 否 | 客户端提供的 ID,用于稍后检索结果 |
返回值:url、pose、motion_prompt
示例工作流程:
- 使用
generatePose生成 “Walk / Run (Left)” 姿势 - 直接将返回的
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(默认值)、simple、none |
| texture_size | 否 | 1024、2048(默认值)、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 | 否 | sprite、sprite-vfx、ui_asset |
| frames | 否 | 4、9、16、25、36(默认值)、49、64 |
| frame_size | 否 | 64、128、256(默认值)、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_url、video_url、gif_url、individual_frame_urls、spritesheet_with_background_url、individual_frame_with_background_urls、num_frames、num_cols、num_rows
费用:每个动画 5 积分 处理时间:30 - 90 秒
动画预设 (listAnimationPresets)
列出可用于动作迁移的动画预设。返回预设动画、视角和方向 — 不暴露视频 URL。
返回值:
animations— 包含id、name、category、description、duration、preview_url的预设数组perspectives— 包含id、name、description的数组(所有动画支持所有视角)directions—["N", "NE", "E", "SE", "S", "SW", "W", "NW"](所有动画支持所有方向)
费用:免费
动作迁移 (transferMotion)
将视频或动画预设中的动作迁移到静态精灵图上,生成动画精灵表单。
| 参数 | 是否必需 | 描述 |
| ---- | ---- | ---- |
| image | 是 | 精灵图的 URL 或 Base64 编码图像 |
| video | 否 | 用作动作源的视频 URL。你可以使用 animateSprite 端点的视频或提供自己的视频。长达 4 秒的视频将产生更好的效果。必须提供 video 或 preset_id + perspective + direction。 |
| preset_id | 否 | 用于代替视频 URL 的动画预设 ID。使用 animation-presets 端点列出可用预设。使用预设时,perspective 和 direction 是必需的。 |
| direction | 否 | 动画预设的方向。使用预设时,direction 是必需的。值:N、NE、E、SE、S、SW、W、NW |
| 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_url、video_url、gif_url、individual_frame_urls、spritesheet_with_background_url、individual_frame_with_background_urls、num_frames、num_cols、num_rows
费用:每次迁移 5 积分
视频生成 (createVideo)
从图像生成短视频。
| 参数 | 是否必需 | 描述 |
| ---- | ---- | ---- |
| image | 是 | 起始帧的 URL 或 Base64 编码图像 |
| prompt | 是 | 动作描述(例如,“相机拉近”、“角色向前走”) |
| duration | 否 | 3、5(默认值)、8、10 秒 |
| 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 woman、Wise woman、Calm woman、Patient man、Determined man、Deep voice man、Teen boy、Sweet girl 等 |
| emotion | 否 | Default、Happy、Sad、Angry、Fearful、Surprised、Neutral |
| language | 否 | auto、English、Spanish、French、German、Japanese、Korean 等 |
| request_id | 否 | 客户端提供的 ID,用于稍后检索结果 |
费用:每次生成 3 积分
检索图像结果 (getImageResults)
检索你最近通过 API 生成的图像。
| 参数 | 是否必需 | 描述 |
| ---- | ---- | ---- |
| request_id | 否 | 过滤到特定请求 |
返回值:包含 url、request_id、created_at 的图像对象数组
费用:免费
检索精灵图结果 (getSpriteResults)
检索你最近通过 API 生成的精灵表单。
| 参数 | 是否必需 | 描述 |
| ---- | ---- | ---- |
| request_id | 否 | 过滤到特定请求 |
返回值:包含 request_id、created_at 的精灵表单对象数组
费用:免费
检索视频结果 (getVideoResults)
检索你最近通过 API 生成的视频。
| 参数 | 是否必需 | 描述 |
| ---- | ---- | ---- |
| request_id | 否 | 过滤到特定请求 |
返回值:包含 url、request_id、created_at 的视频对象数组
费用:免费
检索音频结果 (getAudioResults)
检索你最近通过 API 生成的音频。
| 参数 | 是否必需 | 描述 |
| ---- | ---- | ---- |
| request_id | 否 | 过滤到特定请求 |
返回值:包含 request_id、created_at 的音频对象数组
费用:免费
检索 3D 模型结果 (get3DModelResults)
检索你最近通过 API 生成的 3D 模型。
| 参数 | 是否必需 | 描述 |
| ---- | ---- | ---- |
| request_id | 否 | 过滤到特定请求 |
返回值:包含 request_id、created_at 的 3D 资产对象数组
费用:免费
📚 详细文档
异步使用
你可以使用 request_id 构建即发即忘的工作流程。在任何生成请求中标记一个 request_id,然后轮询相应的结果端点,在输出准备好时获取结果 — 无需保持连接打开。
- 在生成请求中传递
request_id - 轮询相应的结果端点以检索输出
# 发起一个精灵动画请求
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 获取服务条款。
微信扫一扫