视频与图像生成服务

提供基于RunwayML和Luma AI API的视频和图像生成工具,支持从文本或图像生成视频、图像增强、音频添加等功能。

  • by wheattoast11
  • TypeScript
  • 本地部署
  • 17 星标
  • 更新于
在 GitHub 查看 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 工具)

安装

  1. 克隆或下载: 获取服务器代码。
  2. 导航到目录: 在服务器的根目录中打开终端(runwayml-mcp-server).
  3. 安装依赖关系:
    npm install
    

配置

  1. 创建 .env 文件: 在服务器的根目录中,创建一个名为 .env.
  2. 添加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
    
    用实际键替换占位符值。

运行服务器

  1. 构建服务器: 编译TypeScript代码:
    npm run build
    
  2. 启动服务器:
    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秒的赛博朋克黑色视频片段。

步骤:

  1. 生成基础图像(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)

  2. 动画图像(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秒的视频,展示一个漂浮在极简主义环境中的未来主义耳塞。

步骤:

  1. 使用产品参考生成场景(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)

  2. 动画场景(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模型为现有图像设置动画。

步骤:

  1. (可选)生成基础图像(Luma): 使用 luma_generate_image 如果你没有图像。
  2. 图像动画(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"
      }
    }
    
    (等待视频生成完成)