资讯动态

MCP接入Google Veo:让Claude和Cursor一句话生成视频

发布时间:2026/9/18 6:06:42 来源:尧图企业网站定制
最近我在Claude Desktop里敲了一段话帮我生成一段8秒的产品宣传视频画面是一个玻璃瓶在晨光中旋转背景是浅灰色影棚。十几秒后Claude回复我它已经调用了一个叫generate_video的工具任务正在排队还给了我一个operation_id。你可能没见过这个细节但这背后的意义非常大一个本来只会和你聊天的AI开始直接驱动Google Veo去生产视频了。中间起关键作用的就是MCPModel Context Protocol。它把Veo的整个视频生成能力打包成了一个普通工具Claude能自己决定什么时候调用、传什么参数。同一套东西我在Cursor里也跑通了。这篇文章不讲大而全的架构就讲清楚一件事怎么用MCP把Google Veo接进Claude和Cursor让AI视频生成从“写脚本调API”变成“说一句话自动调用”。适合手上已经有AI工具、想自己搭一套视频生成工作流的人不需要你有很强的工程背景我会把每一步的选择原因也顺带说清楚。1. 为什么是MCP把视频生成变成一次工具调用而不是一次API对接1.1 没有MCP之前视频生成和IDE是两条平行线在没有MCP之前如果你想在Claude里用Veo生成视频流程非常割裂。你需要在Claude里写完视频提示词复制出来打开另一个终端跑一个Python脚本传一堆参数等生成完再手动把视频文件放到项目目录里。如果中间提示词不满意你要回到Claude里改再复制一次再跑一遍脚本。这个来回切换的过程几轮下来就很让人烦躁。更麻烦的是Claude本身并不知道“当前这个项目里哪些素材能用、哪些目录是空的、视频生成任务到底有没有成功”。它只是一个对话窗口。视频生成能力只是一个孤立的HTTP接口。你要在两者之间做大量手工桥接工作处理鉴权、拼接URL、解析JSON、轮询任务状态。这些事情本身不难但是重复、枯燥而且每个接入方都不一样换一个服务商又得重写一遍。MCP解决的就是这个“桥接”问题。它让Claude这类AI应用能够动态发现并调用外部工具不需要预先在代码里写死每个API的调用逻辑。对用户来说效果就是你在对话框里提需求AI自己去决定用哪个工具、传什么参数然后把工具结果拿回来继续处理。视频生成不再是另一个窗口里的麻烦事而是对话的一部分。1.2 MCP到底做了什么一个类似USB-C接口的标准化层你可以把MCP理解成AI世界的USB-C接口。USB-C统一了充电和数据传输的物理接口而MCP统一了AI应用和外部工具之间的通信协议。任何符合MCP规范的工具服务MCP Server都可以被任何支持MCP的AI宿主MCP Host直接使用不需要为每个组合单独开发适配器。在MCP的体系里名词不多建议先记三个MCP Host运行AI模型的一方比如Claude Desktop、Claude Code、Cursor。它是“大脑”负责理解用户意图并决定是否调用外部工具。MCP Server具体提供工具/数据/能力的一方比如一个“视频生成服务”“数据库查询服务”“浏览器控制服务”。它通过标准协议把能力暴露出来。客户端Client在Host内部与Server建立连接、发起调用的部分。你不用直接碰它配置好Host和Server客户端会自动工作。通信协议上MCP目前主要有两种传输方式stdio和Streamable HTTP。stdio模式适合本地工具Host直接启动一个子进程通过标准输入输出来交换请求和响应。Streamable HTTP适合远程服务Host通过HTTP请求来调用。和Veo对接的场景最自然的选择其实是“本地stdio 远程API”的组合本地跑一个轻量MCP Server进程它内部再去请求Google的Veo接口。这样Claude不直接面对Google的鉴权、签名、轮询逻辑它只需要向本地Server说“我要生成视频”本地Server去完成所有脏活。MCP还规定了三种核心原语按实用度排序工具ToolsAI可以主动调用的动作比如generate_video、poll_video_status。资源ResourcesAI可以读取的数据比如某个视频文件的URL。提示词Prompts预设好的提示词模板方便AI在不同场景下复用。对Veo接入来说最主要用的是前两个让AI能发起视频生成任务、能查询任务进度。搞清楚这三个原语后面看配置文件和代码就不会懵。1.3 什么场景值得上MCP什么场景不需要MCP确实方便但也不是所有情况都必须用它。我见过有人只是每周偶尔生成一两次视频也非要搭一套MCP Server结果花了一整天调配置最后发现直接跑官方Demo脚本更省事。这里我给一个直观的判断标准。使用场景建议方案原因偶尔生成一次视频命令行可以接受直接用官方SDK写脚本少一层配置问题定位更快在Claude/Cursor里高频迭代视频创意MCP接入AI能边写提示词边调用形成闭环多人协作想统一团队的视频生成入口MCP Server部署到内网共享一个Remote Server密钥统一管理工具能力沉淀要做复杂后期处理链路MCP 自定义工具组合可以把“生成→抽帧→分析→再生成”做成多个工具串联我的建议是如果你主要用Claude或Cursor写代码、做内容而且希望AI直接产出视频素材那就值得上MCP。它一次配置长期受益而且链路越复杂收益越明显。2. 环境准备与前置条件动手前最容易被卡住的三个地方2.1 平台账号与API密钥Veo的钥匙从哪里来接Veo之前你需要有一个能访问Google生成式AI服务的账号和API Key。目前主流方式有两种通过Google AI Studio申请Gemini API Key或者通过Google Cloud的Vertex AI创建服务账号。从个人开发、快速验证的角度前者更轻量从团队生产、权限管控角度后者更规范。我建议个人先走API Key路线。登录Google AI Studio创建一个API Key然后在同一个控制台里确认当前账号能访问Veo模型。不同地区的账号、不同时间的开放范围会有差异如果界面上没有看到Veo相关的模型入口那就说明当前账号还没开通需要先申请或等待放量。拿到Key之后有件事必须第一时间做把它当成密码对待。不要写死在代码里不要commit到Git仓库。后面配置MCP Server时我会强调通过环境变量或配置文件单独传进去。一旦Key泄露别人就能消耗你的配额产生实际费用。2.2 工具链版本Claude和Cursor对MCP的支持情况不是所有版本都支持MCP这个坑很容易被忽略。Claude Desktop和Claude Code当前版本都对MCP有良好支持如果你还在用很老的版本建议先升级到最新。Cursor方面MCP支持从0.44版本左右开始加入经过几个版本迭代现在已经比较稳定。如果你用的版本比较旧在设置里找不到MCP相关入口先升级再说。运行MCP Server本身也需要一个本地环境。Node.js和Python都行我后面的示例代码用Python写因为FastMCP这个库封装得足够简单几行就能起一个Server。建议准备Python 3.10及以上Node.js 18及以上如果你选择用npx运行社区包会用到uv可选但推荐用来管理Python环境和运行脚本这些工具装好之后建议在终端里跑一遍确认版本避免后面配置时才发现环境不对。2.3 本地运行环境为什么建议先跑一个空的stdio服务很多教程会直接让你把MCP Server写好后一次性配置到Claude Desktop里但我强烈建议先单独跑一个空的stdio服务验证MCP握手流程。原因很简单MCP的stdio模式本质上是Host启动一个本地进程然后通过标准输入输出通信。如果这个进程一启动就报错Host那边只会显示“连接失败”错误信息非常有限。你可以在终端里手动运行MCP Server脚本看它能不能正常启动、会不会报缺少依赖。如果运行起来没有任何输出保持等待状态说明基础环境没问题。然后再交给Claude或Cursor去管理它。这一步还有一个额外的好处你能直观感受到stdio服务的生命周期。它不是一个常驻后台服务而是被Host按需启动的。Host退出进程也就结束。理解这一点后面排查“为什么改动没生效”会有帮助——你改了Server代码需要让Host重启才能加载因为旧进程不会自己重新读文件。3. 搭建Veo的MCP Server两条路线和一套核心代码3.1 路线A用社区现成的MCP Server快速跑通如果你不想一上来就写代码可以先找现成的MCP Server包。Google官方和社区都有一些封装好的MCP Server能直接通过npx或uvx运行。比如部分Google API相关的MCP Server只要配置好API Key就能在Claude或Cursor里调用Google能力。社区包的问题在于版本更新速度不一定跟得上Veo模型的迭代而且不同作者封装的工具名称、参数定义不一样。我试过一个包把视频生成工具命名为create_video参数是prompt和duration另一个包则叫generate_video还多了aspect_ratio和negative_prompt。这些差异本身不致命但你要注意看包的README确认它支持Veo 2而不是停留在老模型。用现成包的好处是快缺点是出了问题你得等作者更新。我自己的使用习惯是先用现成包验证整个链路通不通确定流程没问题之后再决定要不要换成自己的Server。3.2 路线B用FastMCP写一个自己的Veo服务下面重点说自建路线。用FastMCP写MCP Server非常直接它把协议细节都封装好了你只需要定义工具函数。以下是一个可运行的Veo MCP Server骨架基于Google Gemini API的predictLongRunning接口实现import os import time import requests from fastmcp import FastMCP mcp FastMCP(veo-server) GEMINI_API_KEY os.environ.get(GEMINI_API_KEY, ) GENERATE_URL ( https://generativelanguage.googleapis.com/v1beta/ models/veo-2.0-generate-001:predictLongRunning ) mcp.tool() def generate_video( prompt: str, seconds: int 8, aspect_ratio: str 16:9, resolution: str 720p ) - str: 调用Google Veo生成一段视频返回任务ID。 headers {Content-Type: application/json} payload { instances: [ { prompt: prompt, durationSeconds: seconds, aspectRatio: aspect_ratio, resolution: resolution, } ] } resp requests.post( f{GENERATE_URL}?key{GEMINI_API_KEY}, headersheaders, jsonpayload, timeout60, ) resp.raise_for_status() return resp.json().get(name, ) mcp.tool() def poll_video(operation_id: str) - str: 查询视频生成任务状态返回任务详情或视频文件信息。 url ( fhttps://generativelanguage.googleapis.com/v1beta/ f{operation_id}?key{GEMINI_API_KEY} ) resp requests.get(url, timeout30) resp.raise_for_status() data resp.json() if data.get(done): return str(data.get(response, {}).get(generatedVideos, data)) return f任务未完成当前状态{data.get(metadata, {}).get(state, UNKNOWN)} if __name__ __main__: mcp.run()这段代码的核心逻辑是第一个工具负责发起视频生成请求拿到一个operation_id第二个工具负责查询任务状态。你把这段代码保存成veo_server.py然后用环境变量传入API Key运行即可。如果你更习惯用Google官方SDK不需要自己拼URL代码会更短。用SDK的好处是官方会帮你处理请求格式和鉴权细节错误信息也更完整。我上面用requests直连是为了让你看清整个调用的真实结构排查问题时更有底。3.3 关键设计决策视频生成必须走异步任务Veo这类视频生成模型单次生成通常需要几十秒到几分钟。如果你在MCP工具函数里同步等待结果那Claude调用这个工具时会长时间卡在那里直到生成完成或超时。这个体验非常差而且容易触发Host侧的超时机制让任务看起来像失败了。更稳妥的做法就是我上面代码展示的发起任务后立刻返回operation_idAI拿到这个ID后可以定期调用poll_video来查询状态。这样做还有一个好处AI可以主动向你展示“任务排队中”“正在生成”“已完成”这样的进度信息而不是干等。你可以在Host里把这两个工具配合使用也可以让AI自己在提示词引导下完成任务。实际使用中Claude通常会先调用generate_video拿到ID后继续调用poll_video直到任务完成然后告诉你视频文件在哪。3.4 安全边界API Key不要出现在对话和配置里我自己刚开始做的时候踩过一个坑图省事把API Key直接写进了MCP Server代码结果Claude在调试时把代码内容读进去然后在一个错误信息里把Key打了出来差点泄露。正确的做法是代码里一律通过os.environ读取API Key在Host的配置里通过env字段单独传环境变量配置文件的读取权限尽量收紧。不要因为“只是本机测试”就放松警惕本机测试的代码也经常会被复制到其他地方。4. 让Claude和Cursor认识这个工具配置文件与验证方法4.1 Claude Desktop和Claude Code的接入配置Claude Desktop的MCP配置位置很固定macOS在~/Library/Application Support/Claude/claude_desktop_config.jsonWindows在%APPDATA%/Claude/claude_desktop_config.json。打开这个文件加入如下内容{ mcpServers: { veo: { command: python, args: [/绝对路径/veo_server.py], env: { GEMINI_API_KEY: 你的API Key } } } }配置好之后重启Claude Desktop界面上应该能看到工具图标里面能找到generate_video和poll_video这两个工具。如果Claude提示找不到工具检查一下文件名路径是否写错、Python命令是否可以正常执行。如果你用的是Claude Code则可以直接在终端里执行claude mcp add veo -- python /绝对路径/veo_server.pyClaude Code会把这条命令注册到会话里之后在这个项目目录下运行Claude Code就可以在会话中看到这个MCP工具。这种方式比改JSON配置文件更直观也方便在不同项目里管理不同的MCP Server。4.2 Cursor的接入配置Cursor的MCP配置有两种粒度项目级和全局级。项目级配置放在项目根目录的.mcp.json里适合这个项目专用的工具全局配置放在用户目录的Cursor配置里适合所有项目都能用的工具。在Cursor里打开项目根目录创建.mcp.json{ mcpServers: { veo: { command: python, args: [/绝对路径/veo_server.py], env: { GEMINI_API_KEY: 你的API Key } } } }文件保存后在Cursor的Agent/Composer界面打开MCP工具列表选择veo-server并启用。Cursor会自动通过客户端连接本地Server获取工具列表。Cursor对MCP的入口位置在不同版本里不完全一样有的在设置里有的在Agent面板右上角的工具图标里。如果你找不到用一下界面搜索功能直接搜MCP通常能定位到。4.3 验证三步走握手、工具列表、真实调用配置好之后不要急着让AI生成视频按顺序验证三个环节第一步验证握手。看Host端有没有成功连接MCP Server。Claude Desktop里工具图标亮起且能看到veo-server说明连接成功。Cursor里MCP工具列表里出现veo-server同样说明连接成功。第二步验证工具发现。点开veo-server里面应该能看到generate_video、poll_video两个工具。如果你看到的是“未找到工具”多半是Python脚本运行报错了回到终端手动跑一下脚本排查。第三步真实调用。在不涉及任何外部数据的场景下先让AI直接调用generate_video做一个最简单测试比如“生成一段2秒的纯色背景视频画面里只有一个白色圆形在移动”。这样能快速验证整个链路也方便你观察返回的operation_id格式。我在第一次接通后直接让Claude生成了一段“城市雨天街景”的测试视频结果等了大约40秒Claude告知任务完成并把生成的视频GCS链接给到了我。那一刻才真正感觉到视频生成确实已经变成了“对话能力的一部分”。5. 从提示词到成片一次真实调用链路与参数经验5.1 构造视频提示词和写文生图提示词完全不是一回事很多人第一次用Veo会习惯性地把文生图那套提示词搬过来比如“一只猫坐在窗台上阳光洒进来”。但视频模型需要的是完整的时空描述。它不光要知道画面里有什么还要知道物体怎么运动、镜头怎么动、光线怎么变化、节奏是快是慢。我推荐一个比较稳的提示词结构主体画面里主要物体/人物是什么有哪些关键特征。动作主体在做什么动作幅度多大。镜头镜头是固定、推近、环绕还是跟随。环境场景是什么天气、光照、氛围如何。风格写实、动画、电影感还是特定艺术风格。时长节奏这段画面是缓慢的、紧张的还是快节奏切换。比如对比两种写法普通写法一只鸟站在树枝上。Veo友好写法一只蓝灰色的小鸟站在长满青苔的树枝上它轻轻转头梳理羽毛微风吹过树叶轻轻晃动。镜头缓慢推近背景是虚化的清晨森林柔和的金色侧光穿透雾气画面呈现自然纪录片的写实质感。很明显后者给模型提供了足够多的“可生成”信息。视频模型和图像模型一样不能“脑补”太多模糊描述你给的信息越是具体、有时间顺序生成结果越接近预期。5.2 常用参数和我的默认值Veo 2的生成参数不同接入方式略有差异但核心几个参数是大同小异的。下面是我实测中最常调的参数以及我目前比较满意的默认值参数我的默认值建议范围说明seconds84-8时长越长生成耗时越久但画面叙事更完整aspect_ratio16:916:9 / 9:16 / 1:1根据投放平台选择竖屏优先9:16resolution720p480p / 720p / 1080p1080p生成更慢素材够用场景建议720pprompt无描述越详细越稳建议按结构写完整提示词关于生成次数不要指望一次生成就完美。我通常会让AI生成2到3个版本然后从中挑选。有些MCP Server包支持在同一个工具里传count参数一次生成多个变体效率更高。自己写Server的话也可以在payload里把generationCount设为2或3。5.3 把视频拉回本地完成工作流闭环Veo生成的视频通常返回一个临时的GCS链接有效期有限。如果你要拿来做进一步处理需要尽快下载到本地。在实际的项目工作流里我会在MCP Server里再加一个download_video工具负责把视频链接下载到指定目录同时返回本地路径。这样AI可以完成“生成视频→下载到项目assets目录→告诉你路径”的完整闭环。对于Cursor场景这一步尤其重要因为你在Agent里做完视频生成往往紧接着要做的是让代码读取视频、抽帧、剪片段或者把视频名写进项目文档。我自己比较喜欢的工作流是先用Claude或Cursor起草创意脚本让AI直接调用Veo生成视频再让AI用ffmpeg抽几帧图片回来分析画面质量不满意就改提示词再来一次。整个迭代都在一个对话里完成材料产出速度明显比原来高很多。6. 实测踩坑记录与经验沉淀6.1 最久的一次生成等待轮询间隔与超时要设计好第一次把Veo接入Claude时我让Claude生成一段8秒的高清视频。Claude调用generate_video后开始在那里“思考”然后调用poll_video返回“任务未完成”。它就再调一次再等。因为我的poll_video工具没有加轮询间隔Claude几乎是每几秒就打一次查询接口最后整个生成过程持续了近两分钟中间调用了几十次轮询接口。后来我在prompt里明确告诉Claude调用poll_video后如果任务未完成等待15秒再进行下一次查询。同时也在工具描述里写了“建议查询间隔不超过每15秒一次”。这样既避免了对API的频繁请求也让Claude的对话节奏更自然。如果你发现AI在轮询时非常急躁一直不断调用同一个工具可以在工具描述里写清楚预期耗时比如“视频生成通常需要60-90秒请耐心等待”。6.2 参数类型不匹配导致AI无法传参的两次案例MCP工具的参数是有schema定义的。FastMCP会根据Python函数的类型注解自动生成schema。如果你把参数类型写成int那AI在调用时就会尽量传整数如果你写成numberAI可能会传小数。这些看起来差异不大但在Veo的API里部分参数就是严格要求整数或特定枚举值。我第一次写poll_video时把operation_id默认值写成了一个空字符串并且在类型注解里没写清楚导致Claude以为这个参数可以不传结果调用时一直收到“operation_id is required”的错误。解决方式是在函数签名里去掉默认值并写明参数描述。另一个案例是aspect_ratio我一开始允许任意字符串传入结果AI聪明地传了“169”全角冒号API直接报错。解决方式是校验参数只允许16:9、9:16、1:1这三个值非法值一律报错。6.3 Cursor里工具不出现的排查链路Cursor的MCP支持整体稳定但我遇到过两次工具列表不刷新的情况。第一次是改了Server代码后Cursor还连着旧进程导致新工具没出现。解决方法是完全退出Cursor再重启让MCP客户端重新建立连接。第二次是项目根目录没有.mcp.json而是放在了一个子目录里Cursor没有自动发现。解决方式是把配置放到当前打开项目的根目录或者使用全局配置。还有一个需要注意的点如果你是通过command方式启动Python脚本确保python命令在Cursor的环境变量里可用。Cursor在某些情况下不会加载你终端里的完整PATH导致python命令找不到。遇到这种情况可以试着把command改成python3或者写绝对路径。6.4 配额与费用管理不设上限的理想很贵Veo是按生成次数和分辨率计费的视频生成比文本生成的费用高出一个量级。刚开始接入时我没有做任何配额限制AI在几次迭代里生成了不少测试片段月底看账单数字让我有点意外。现在我的做法是在MCP Server代码里增加一个简单的请求计数和日限额判断超过当天限制就返回“今日配额已用完请明天再试”。另外在Host配置里我会在提示词里提醒AI“视频生成费用较高非必要不要重复生成生成前向用户确认提示词”。这种方式虽然增加了一轮确认但能有效避免AI“自由发挥”导致大量无效生成。这几个月用下来最大的体感是当视频生成变成MCP工具之后我的工作方式真的变了。以前是“先写好脚本再手动调接口最后回到项目里用素材”现在是“在对话里把创意讨论完顺手就把视频素材生成了再顺手让代码把素材处理掉”。MCP最好的地方不是让你少写几行代码而是彻底改变了AI和外部世界之间的协作方式。如果你也打算把Veo接进Claude或Cursor我建议从小处着手先跑通一个最简单的生成链路再逐步加上轮询、下载、参数校验这些能力。工具不在多稳一条链路比铺一排半成品更有价值。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价