](https://mseep.ai/app/wheattoast11-mcp-video-gen)
RunwayML+Luma AI MCP服务器
此MCP服务器提供了与RunwayML和Luma AI API交互的工具,用于视频和图像生成任务。
特性
- 根据文本提示(RunwayML或Luma AI)生成视频。
- 从图像生成视频(RunwayML或Luma AI)。
- 根据文本提示生成图像(Luma AI)。
- 管理Luma AI代(列表、获取、删除)。
- 为Luma AI世代添加音频。
- 高端Luma AI世代。
- 在生成之前使用OpenRouter LLM增强提示。
先决条件
- Node.js(建议使用v18 LTS或更高版本)
- npm(通常包含在Node.js中)
- API密钥:
- RunwayML API机密 - 旧AI API密钥 - OpenRouter API密钥(用于 enhance_prompt 工具)
安装
- 克隆或下载: 获取服务器代码。
- 导航到目录: 在服务器的根目录中打开终端(
runwayml-mcp-server). - 安装依赖关系:
npm install配置
- 创建
.env文件: 在服务器的根目录中,创建一个名为.env. - 添加API密钥: 将API密钥添加到
.env文件:
RUNWAYML_API_SECRET=your_runwayml_api_secret_here
LUMAAI_API_KEY=your_luma_api_key_here
OPENROUTER_API_KEY=your_openrouter_api_key_here用实际键替换占位符值。
运行服务器
- 构建服务器: 编译TypeScript代码:
npm run build- 启动服务器:
npm start你应该看到这样的消息 RunwayML MCP server running on stdio 在终端的错误输出(stderr)中。
MCP客户端设置(例如,Claude桌面应用程序、Cline)
配置您的MCP客户端以连接到此服务器。具体步骤取决于客户,但您通常需要提供:
- 姓名: 描述性名称(例如。,
runway-luma-server) - 命令:
node - 论据: 编译后的服务器索引文件的完整路径(例如。,
/path/to/your/runwayml-mcp-server/build/server-index.js) - 环境变量:
- RUNWAYML_API_SECRET:您的RunwayML API机密 - LUMAAI_API_KEY:您的Luma AI API密钥 - OPENROUTER_API_KEY:您的OpenRouter API密钥
示例配置(概念性):
{
"mcpServers": {
"runway-luma-server": {
"command": "node",
"args": ["/full/path/to/runwayml-mcp-server/build/server-index.js"],
"env": {
"RUNWAYML_API_SECRET": "your_runwayml_api_secret_here",
"LUMAAI_API_KEY": "your_luma_api_key_here",
"OPENROUTER_API_KEY": "your_openrouter_api_key_here"
},
"disabled": false,
"autoApprove": []
}
}
}*(记得更换 /full/path/to/ 使用系统上的实际路径)*
可用工具
generate_text_to_video:从文本生成视频。
- provider:(可选) runwayml (默认)或 lumaai. - promptText:(必填)文本提示。 - runway_model:(可选)跑道型号(例如“gen-2”)。 - runway_resolution:(可选)跑道分辨率(1280:768 或 768:1280). - runway_watermark:(可选)布尔值,默认值 false. - luma_model:(可选)Luma型号(ray-flash-2, ray-2 (默认), ray-1-6). - luma_aspect_ratio:(可选)Luma纵横比(例如。, 16:9 (默认), 1:1). - luma_loop:(可选)布尔值。 - duration:(可选)视频持续时间(秒)。 - seed:(可选)世代种子(编号)。
generate_image_to_video:从图像生成视频。
- provider:(可选) runwayml (默认)或 lumaai. - promptImage:(必填)输入图像的URL,或者对于Runway,是一个数组 [{uri: "url", position: "first" | "last"}]. - promptText:(可选)图像附带的文本提示。 - runway_model:(可选)跑道型号(gen3a_turbo (默认))。 - runway_duration:(可选)跑道持续时间(5 (默认)或 10). - runway_ratio:(可选)跑道分辨率(1280:768 或 768:1280). - runway_watermark:(可选)布尔值,默认值 false. - luma_model:(可选)Luma型号(ray-flash-2, ray-2 (默认), ray-1-6). - luma_aspect_ratio:(可选)Luma纵横比(例如。, 16:9 (默认))。 - luma_loop:(可选)布尔值。 - seed:(可选)世代种子(编号)。
enhance_prompt:使用OpenRouter优化提示。
- original_prompt:(必填)加强提示。 - model:(可选)OpenRouter型号名称(默认为功能型号,如 anthropic/claude-3.5-sonnet). - instructions:(可选)增强的具体说明。
luma_generate_image:使用Luma AI生成图像。
- prompt:(必填)文本提示。 - aspect_ratio:(可选)Luma纵横比(16:9 (默认))。 - model:(可选)Luma图像模型(photon-1 (默认), photon-flash-1). - image_ref:(可选)图像参考对象数组({url: string, weight?: number}).最多4个。 - style_ref:(可选)样式引用对象数组({url: string, weight?: number}).最多1。 - character_ref:(可选)字符引用对象({ identity0: { images: [url1, ...] } }). - modify_image_ref:(可选)修改图像参考对象({url: string, weight?: number}).
luma_list_generations:列出前几代Luma AI。
- limit:(可选)结果数(默认值为10)。 - offset:(可选)分页偏移量(默认值0)。
luma_get_generation:获取特定Luma AI生成的详细信息。
- generation_id:(必需)生成的UUID。
luma_delete_generation:删除特定的Luma AI代。
- generation_id:(必需)生成的UUID。
luma_get_camera_motions:列出Luma AI提示支持的相机运动。(无参数)。luma_add_audio:为Luma一代添加音频。
- generation_id:(必需)生成的UUID。 - prompt:(必填)提示输入音频。 - negative_prompt:(可选)音频的否定提示。
luma_upscale:升级Luma一代。
- generation_id:(必需)生成的UUID。 - resolution:(可选)目标分辨率(1080p (默认)或 4k).
*(注:对于涉及生成的工具(generate_*, luma_upscale),服务器启动任务并立即返回。进度更新和最终结果URL将通过MCP进度通知发送。)*
示例工作流
以下是如何将服务器的工具组合用于常见用例的示例:
1.音乐视频片段(赛博朋克黑色)
目标: 为歌词“霓虹河流过铬之城”制作一段5秒的赛博朋克黑色视频片段。
步骤:
- 生成基础图像(Luma):
{
"tool_name": "luma_generate_image",
"arguments": {
"prompt": "Overhead shot of a dark, rainy cyberpunk city street at night. Bright neon signs reflect on wet pavement, resembling rivers of light flowing between towering chrome skyscrapers. Film noir aesthetic, photorealistic.",
"aspect_ratio": "16:9"
}
}*(等待图像生成完成并获取图像URL)*
- 动画图像(Luma):
{
"tool_name": "generate_image_to_video",
"arguments": {
"provider": "lumaai",
"promptImage": "{IMAGE_URL_FROM_STEP_1}",
"promptText": "Slow pan left across the rainy cyberpunk cityscape, neon lights flickering subtly.",
"luma_aspect_ratio": "16:9",
"duration": 5
}
}*(等待视频生成完成)*
2.产品广告理念(浮动耳塞)
目标: 制作一段5秒的视频,展示一个漂浮在极简主义环境中的未来主义耳塞。
步骤:
- 使用产品参考生成场景(Luma):
{
"tool_name": "luma_generate_image",
"arguments": {
"prompt": "A single, sleek futuristic wireless earbud floats weightlessly in the center of a bright, minimalist white room with soft, diffused ambient light. Zero gravity effect.",
"aspect_ratio": "1:1",
"image_ref": [{ "url": "{PRODUCT_IMAGE_URL}", "weight": 0.8 }]
}
}*(等待图像生成完成并获取图像URL)*
- 动画场景(Luma):
{
"tool_name": "generate_image_to_video",
"arguments": {
"provider": "lumaai",
"promptImage": "{IMAGE_URL_FROM_STEP_1}",
"promptText": "The earbud slowly rotates and drifts gently in zero gravity.",
"luma_aspect_ratio": "1:1",
"duration": 5
}
}*(等待视频生成完成)*
3.图像动画(RunwayML Gen3a)
目标: 使用RunwayML的Gen3a模型为现有图像设置动画。
步骤:
- (可选)生成基础图像(Luma): 使用
luma_generate_image如果你没有图像。 - 图像动画(RunwayML):
{
"tool_name": "generate_image_to_video",
"arguments": {
"provider": "runwayml",
"promptImage": "{YOUR_IMAGE_URL}",
"promptText": "Subtle zoom in, cinematic lighting.",
"runway_model": "gen3a_turbo",
"runway_duration": "5",
"runway_ratio": "1280:768" // Or "768:1280"
}
}*(等待视频生成完成)*
