mcpField
M
MCP Video Generation with Veo2

MCP Video Generation with Veo2

本地服务
github.com/mario-andreschak媒体与设计345 周前更新

关于 MCP Video Generation with Veo2

MCP Video Generation with Veo2 是一个基于 Google Veo 与 Gemini 的 MCP 服务,用于生成视频和图像。它面向需要在 MCP 客户端中调用生成模型的开发者,并提供可配置的模型、HTTP 访问与媒体存储。

主要功能

  1. 01通过 Google Veo 从文本或图像生成视频
  2. 02通过 Gemini 生成图像
  3. 03可配置视频与图像模型 ID
  4. 04支持 stdio、Streamable HTTP 与 SSE 连接
  5. 05生成结果以资源形式返回并保存在本地

适用场景

  1. 01在 MCP 客户端中根据提示词生成短视频
  2. 02基于已有图像生成动画视频
  3. 03将生成的媒体文件保存并通过资源列表检索

MCP 相关

该项目是一个 MCP 服务,向 MCP 客户端提供 generateVideoFromText、generateImage、listGeneratedVideos 等工具,并以 videos:// 和 images:// 资源返回媒体内容。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"veo2": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
启动命令npx -y @smithery/cli

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@smithery/cli

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Google Veo 和 Gemini 图像 MCP 服务

使用 Google Veo 生成视频,并使用 Gemini 生成图像。为兼容现有安装,软件包名称仍为 mcp-video-generation-veo2;第 2 版使用维护中的可配置模型和 MCP SDK 2。

安装和运行

使用 Node.js 22 或 24。在此代码仓库中:

npm ci
npm run build
node dist/index.js

对于 MCP 宿主,请使用绝对路径 dist/index.js 直接启动 node。 不要将 npm start 作为 stdio 子进程启动:npm 自带的横幅可能会破坏 JSON-RPC 流。已安装的软件包也提供 mcp-video-generation-veo2。

{
  "mcpServers": {
    "veo": {
      "command": "node",
      "args": ["/absolute/path/mcp-veo2/dist/index.js"],
      "env": {
        "GOOGLE_API_KEY": "YOUR_GOOGLE_API_KEY",
        "VIDEO_MODEL": "veo-3.1-generate-preview",
        "IMAGE_MODEL": "gemini-3.1-flash-image"
      }
    }
  }
}

仅在生成内容时需要 API 密钥;发现、模板和已保存媒体访问无需密钥。必须启用 Google 模型访问权限、结算和配额。 即使 MCP 请求被取消或超时,生成也可能产生费用。 服务绝不会自动重试付费创建请求。

HTTP 和现有 SSE 客户端

将 MCP_AUTH_TOKEN 设置为至少 24 个字符的随机值,然后运行:

node dist/index.js http

打开 http://127.0.0.1:3000/,使用内置的浏览器连接检查页面。该页面会请求 MCP 令牌,将其保存在内存中,并使用真实的 MCP 请求列出已保存的媒体。

  • /mcp:MCP 2026-07-28 和无状态旧版 Streamable HTTP。
  • /sse 加 /messages?sessionId=...:兼容 LibreChat 等现有客户端的旧版 SSE。 每个连接都有自己的 MCP 服务;请求正文只会解析一次。SSE 会话在 10 分钟未收到 POST 后过期。
  • node dist/index.js sse 仍是同一 HTTP 监听器的别名。
  • 在每个 MCP 请求中发送 Authorization: Bearer <MCP_AUTH_TOKEN>,包括初始 SSE GET。 Google API 密钥是单独的、仅供服务端使用的凭据。

默认绑定地址为回环地址。若要公开服务,请为代理部署配置 HOST、ALLOWED_HOSTS 和 ALLOWED_ORIGINS,并在该代理处终止 TLS。仅信任精确配置的 Host 值和浏览器来源。 每个部署和存储目录都属于一名运营方;请勿在不受信任的租户之间共享其 bearer 令牌或存储。这是静态 bearer 部署身份验证,并非完整的 OAuth 授权服务器。

Issue #5 中的 file:// 前端和 /sse/tool/listGeneratedVideos URL 从来都不是 MCP REST API。请使用内置页面或 MCP 客户端。拒绝不透明的 Origin: null 和恶意来源;未启用通配符 CORS。旧的公共 /videos 目录服务器已移除。

工具和媒体

保留全部七个工具名称:

工具输入
generateVideoFromTextprompt,可选的视频设置
generateVideoFromImageimage,可选的 prompt 和视频设置
generateImageprompt,可选的 includeFullData
generateVideoFromGeneratedImageprompt,可选的 videoPrompt 和视频设置
listGeneratedVideos无输入
listGeneratedImages无输入
getImage已保存图像的 UUID,可选的 includeFullData

设置是扁平的工具参数,例如:

{
  "prompt": "A slow camera pan through a sunlit forest",
  "aspectRatio": "16:9",
  "durationSeconds": 8,
  "resolution": "720p"
}

Veo 3.1 支持 4、6 或 8 秒时长;1080p/4k 需要 8 秒。文本生成使用 personGeneration=allow_all;图像动画使用 allow_adult,并受 Google 的区域限制和过滤机制约束。每次调用生成一段视频或一张图像。不支持的显式设置会在调用提供方生成内容前报错。

图像输入可以是 base64 字符串、MCP 图像对象 { "type": "image", "mimeType": "image/png", "data": "..." }、允许的 HTTPS URL, 或 IMAGE_INPUT_DIR 下的绝对文件路径。系统会根据 MIME 类型和文件签名检查 PNG、JPEG 和 WebP。输入图像大小上限为 10 MiB。导入 URL 需要由操作员控制并明确配置 IMAGE_URL_HOSTS 允许列表;重定向必须仍在该允许列表中。请勿允许不可信的主机。

输出包含元数据以及 videos://<uuid> 或 images://<uuid> 资源链接。 资源会返回实际媒体数据块;视频数据绝不会被错误标记为 MCP 图像。includeFullData=true 还会在工具结果中附带媒体,大小上限为 8 MiB。为确保互操作性,资源大小上限同样为 8 MiB。较大的资源仍保存在 STORAGE_DIR 中,供操作员在服务器上获取。

视频下载始终在服务器上进行。API 密钥通过标头发送,绝不会出现在返回或保存的 URL 中。重定向次数有限;跨主机重定向不会收到 Google 密钥。下载的数据、元数据和 API 响应均有大小限制。不会记录提供方的错误响应正文和原始请求参数。启动时会通过允许列表重写有效的历史元数据,丢弃旧的含密钥 URL 和绝对路径,同时保留媒体文件。请轮换旧版本曾暴露的密钥,并从任何下游日志或备份中删除历史副本。

配置

复制 .env.example 或设置环境变量:

变量默认值 / 含义
GOOGLE_API_KEY提供商密钥;GEMINI_API_KEY 是别名
VIDEO_MODELveo-3.1-generate-preview
IMAGE_MODELgemini-3.1-flash-image
STORAGE_DIR./generated-videos;图像存放在其 images 子目录中
HOST、PORT127.0.0.1、3000
MCP_AUTH_TOKENHTTP/SSE 必填,至少 24 个字符
ALLOWED_HOSTS其他以逗号分隔的精确 host[:port] 值
ALLOWED_ORIGINS其他以逗号分隔的精确 HTTP(S) 源
IMAGE_INPUT_DIRSTORAGE_DIR/images;真实路径必须位于其目录下
IMAGE_URL_HOSTS空;以逗号分隔的可信 HTTPS 源主机
GENERATION_TIMEOUT_MS600000,最大值为 1800000
POLL_INTERVAL_MS10000
MAX_MEDIA_BYTES67108864;最大值为 134217728

Veo 2、Imagen 3 和 Imagen 4 不适合作为 2026 年底的默认选项。 Google 的 Veo 指南介绍了当前的视频接口;图像生成 列出了当前的 Gemini 图像模型。本实现使用受支持的 generateContent 图像 API;Google 的 Interactions 概览 确认该 API 仍受支持。部署前请重新检查模型可用性和 弃用信息。 可配置的模型 ID 允许替换为兼容模型,但无法保证 未来的模型接受相同的参数。Veo 3.1 当前的标识符属于 预览版,因此无法保证其在 2026 年底仍可用。

版本 2 迁移

  • MCP stdio 和 HTTP 通过 SDK2 实际的 serveStdio / createMcpHandler 入口提供 2026-07-28 版服务。旧版 stdio/HTTP/SSE 仍经过测试。
  • 时长 5/7、numberOfVideos=2、numberOfImages>1、不支持的人物模式、 enhancePrompt=true 和 autoDownload=false 现在都会明确报错。
  • 媒体始终下载到本地,并移除了公开存储目录访问。
  • MCP stdio 请使用直接的 Node/软件包二进制文件。缺少生成凭据 不再影响工具列表的获取。
  • 不会公布不受支持的资源订阅。

验证

npm run check

测试使用无需凭据的提供商测试桩,以及实际的 stdio、Streamable HTTP、 旧版 SSE 和仅生产环境的打包安装。测试覆盖架构错误、 取消、密钥处理、重定向、大小限制、媒体类型、路径边界、 连接隔离、Host/Origin/身份验证检查,以及正常 EOF。CI 在 Node 22 和 24 上运行。自动化测试不会执行付费生成;仍需通过真实账户测试, 以确认提供商计费、区域访问权限和视觉质量。

MIT 许可证。原始示例保留在 example-files/ 中。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。