关于 MCP Video Generation with Veo2
MCP Video Generation with Veo2 是一个基于 Google Veo 与 Gemini 的 MCP 服务,用于生成视频和图像。它面向需要在 MCP 客户端中调用生成模型的开发者,并提供可配置的模型、HTTP 访问与媒体存储。
主要功能
- 01通过 Google Veo 从文本或图像生成视频
- 02通过 Gemini 生成图像
- 03可配置视频与图像模型 ID
- 04支持 stdio、Streamable HTTP 与 SSE 连接
- 05生成结果以资源形式返回并保存在本地
适用场景
- 01在 MCP 客户端中根据提示词生成短视频
- 02基于已有图像生成动画视频
- 03将生成的媒体文件保存并通过资源列表检索
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端提供 generateVideoFromText、generateImage、listGeneratedVideos 等工具,并以 videos:// 和 images:// 资源返回媒体内容。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
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 目录服务器已移除。
工具和媒体
保留全部七个工具名称:
| 工具 | 输入 |
|---|---|
generateVideoFromText | prompt,可选的视频设置 |
generateVideoFromImage | image,可选的 prompt 和视频设置 |
generateImage | prompt,可选的 includeFullData |
generateVideoFromGeneratedImage | prompt,可选的 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_MODEL | veo-3.1-generate-preview |
IMAGE_MODEL | gemini-3.1-flash-image |
STORAGE_DIR | ./generated-videos;图像存放在其 images 子目录中 |
HOST、PORT | 127.0.0.1、3000 |
MCP_AUTH_TOKEN | HTTP/SSE 必填,至少 24 个字符 |
ALLOWED_HOSTS | 其他以逗号分隔的精确 host[:port] 值 |
ALLOWED_ORIGINS | 其他以逗号分隔的精确 HTTP(S) 源 |
IMAGE_INPUT_DIR | STORAGE_DIR/images;真实路径必须位于其目录下 |
IMAGE_URL_HOSTS | 空;以逗号分隔的可信 HTTPS 源主机 |
GENERATION_TIMEOUT_MS | 600000,最大值为 1800000 |
POLL_INTERVAL_MS | 10000 |
MAX_MEDIA_BYTES | 67108864;最大值为 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/ 中。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。