OmniFlow MCP
Automates Google Flow (Veo 3 / Omni 1.1) for video generation, including batch clip generation, prompt and model configuration, keyframe transitions, scene chaining, video-to-video edits, and automatic download of finished clips.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OmniFlow MCPMake a 40-second hotel promo from the photos in C:/promo, vertical, logo at the end."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
OmniFlow MCP — Google Flow (Veo 3 / Omni 1.1) automation for Claude
Google Flow has no API. This MCP server gives Claude Code and Claude Desktop hands inside Google Flow: batch video generation on Veo 3 / Omni 1.1, keyframe transitions, scene chaining, video-to-video edits and auto-download — on the Google AI plan you already pay for. No per-second billing, no API keys.

You, in Claude: «Make a 40-second hotel promo from the photos in
C:/promo, vertical, logo at the end.» Claude, through OmniFlow:flow_status→flow_generate(5 scenes, keyframe pairs) →flow_wait✓ 5 clips saved toomniflow-out/HotelPromo/
How it works
Claude Code / Claude Desktop
│ MCP (stdio, JSON-RPC)
▼
omniflow-mcp ── local bridge on 127.0.0.1:8787 ── files → omniflow-out/
▲ HTTP, polled every few seconds
│
OmniFlow Chrome extension ──► Google Flow tab (labs.google/fx/tools/flow)The MCP server (this repo) is pure transport: five tools and a local HTTP bridge, zero dependencies. The OmniFlow Chrome extension does the actual work in the Flow tab — it types the prompts, sets model / aspect / length, attaches references and keyframes, waits for the render and downloads the clips with clean numbered names. On connect, the extension hands the bridge its director playbook (dramaturgy map, camera moves, product presets, chaining recipe, sound layers); flow_status passes it to Claude, so Claude behaves like a director, not a typist.
Related MCP server: cutgent
Quick start
1. Install the extension — OmniFlow in the Chrome Web Store. First 24 hours are free, no key and no card.
2. Add the MCP server.
Claude Code:
claude mcp add omniflow -- npx -y omniflow-mcpWindows: if PowerShell refuses to run
claude.ps1/npm.ps1(script execution policy), call the.cmdshims instead:claude.cmd mcp add omniflow -- npx.cmd -y omniflow-mcp.
No npm? The same server runs straight from GitHub:
npx -y github:DanikVR/omniflow-veo-mcp.
Claude Desktop — add to claude_desktop_config.json:
{
"mcpServers": {
"omniflow": { "command": "npx", "args": ["-y", "omniflow-mcp"] }
}
}3. Open Google Flow at labs.google/fx/tools/flow and enter a project. The extension icon in the Chrome toolbar shows Claude ✓ when the bridge is connected.
4. Talk to Claude. It will ask two or three short questions (goal, platform, materials), propose scenarios, then shoot:
Make a 30-second ad for a thermal mug, vertical. Photos are in D:/mug. Logo at the end.Clips land in omniflow-out/<folder>/ next to where Claude was started (override with OF_OUT).
Tools
Tool | What it does |
| Is the extension connected, is a Flow project open, what is queued — and |
| Queue one or many clips: prompt, model, aspect, length, variants, references, keyframe pair, chaining, library assets. Returns |
| Wait for a job and return the file paths. Polls every 5 s, up to |
| Video-to-video edit of the last finished clip in the Omni 1.1 editor: background, weather, light, remove an object, restyle. |
| Drop everything that has not started rendering. |
Full parameter reference: docs/tools.md. The bridge also exposes a plain HTTP API on 127.0.0.1:8787 (/health, /jobs, /jobs/:id, /cancel) for scripts that are not MCP clients.
Claude skills
skills/ ships two Claude Code skills that turn Claude into a Flow director:
omni-director — always on when the user wants a video: asks the right questions, picks camera moves and product presets, chains scenes, proposes edits after the render.
ad-video — one line of brief → storyboard → keyframe pairs → English prompts →
flow_generate/flow_wait.
Copy them into your project's .claude/skills/ (or ~/.claude/skills/ for all projects). The skill bodies are currently in Russian; Claude reads them fine, an English edition is on the roadmap.
What the extension adds
39 one-click cinematic presets (dolly zoom, crash zoom, 360° orbit, bullet time, FPV, hero product spin, levitation, liquid splash, whip-pan and match-cut transitions, logo finale), keyframe transitions first → last frame, scene chaining so the hero stays the same person from clip to clip, three sound layers, and a manual Studio panel plus an in-panel chat assistant for people who don't use Claude. Details, screenshots and pricing: lingoflow.pro/omniflow.
Security
The bridge listens on
127.0.0.1only. To reach it from another machine (Tailscale etc.) setOF_HOSTandOF_PORT; then every request must carry the token from~/.omniflow-token(x-omniflow-tokenheader).Only
chrome-extension://origins may call the bridge; everything else gets 403.Nothing leaves your machine except what the extension itself sends to Google Flow. Prompts and clips stay on disk. The extension talks to lingoflow.pro only to validate its licence key.
The extension presses the same buttons you would, with 25–70 s pauses between runs. No captcha bypass, no private API, no multi-accounting.
Requirements
Node.js 20 or newer.
Chrome 116+ with the OmniFlow extension.
A Google account with access to Google Flow (Google AI Pro or Ultra plan for meaningful volume).
Claude Code or Claude Desktop.
FAQ
Does it work without the extension? No. The MCP server is transport; generation happens inside your Google Flow tab through the extension.
Is the extension free? The first 24 hours after install are free without a key. Then a free week with a card, then €29/year or €79 once. Pricing lives on the product page.
Can I run the bridge on one machine and Claude on another? Yes — OF_HOST=0.0.0.0 OF_PORT=8787 npx -y omniflow-mcp on the machine with Chrome, then point the extension's bridge URL (extension settings) to it and pass the token.
Where do the files go? omniflow-out/ in the current working directory, or OF_OUT=/path.
Links
Product page and pricing: lingoflow.pro/omniflow
Chrome Web Store: OmniFlow — MCP for Google Flow & Claude
Questions, support, ideas: t.me/GuruAppSheet
Sister project for Dreamina / Seedance 2.5: SeedFlow
Русская версия: README.ru.md
Sources & thanks
The presets and prompt rules inside the extension and the skills were distilled from public Veo 3 / Google Flow prompting guides and open community repositories, then verified on live generations. If you recognise your work and want a credit line here, open an issue — it will be added.
License
MIT © DanikVR. The OmniFlow Chrome extension is a separate, licensed product.
Available Tools
5 toolsflow_cancelA
Remove everything that has not started generating yet. Clips already in progress are not interrupted.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. It clearly discloses the key behavioral trait: pending items are removed, but already-started clips continue. It does not mention reversibility or response behavior, but the core side effect is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The main action is front-loaded, and the boundary condition is stated immediately after.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter cancellation tool with no output schema, the description is sufficiently complete to invoke correctly. It explains what will be removed and what will be preserved, leaving little ambiguity for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and complete schema coverage, so there is nothing for the description to add about parameter meaning. With 0 params, this is a solid baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Remove') and a clear resource/scope ('everything that has not started generating yet'), and explicitly distinguishes what is affected from what is not. This makes its purpose distinct from siblings like flow_generate, flow_status, and flow_edit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you want to cancel generation tasks that have not started. However, it does not explicitly name alternatives or state when not to use it beyond noting that in-progress clips are not interrupted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_editA
Edit an ALREADY FINISHED video in the Omni 1.1 editor (video-to-video): the extension opens the last clip in Flow, applies the described change and downloads the result. Requires "Trusted input" enabled in the extension. Wait for the result with flow_wait.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Subfolder name for the result | |
| prompt | Yes | What to change in the video (in English — the model reads it best) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden. It does well by revealing the workflow: the extension opens the last clip, applies the change, and downloads the result. It also discloses the trusted-input requirement and the asynchronous nature via flow_wait. It does not explicitly state whether the original file is modified, which is a minor gap for an edit operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It front-loads the core purpose — editing an already finished video — then packs the necessary behavioral details and prerequisites into the remainder. Every clause adds useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers the essential operational facts: what the tool does, what prerequisite must be met, and how to wait for the async result. It is slightly light on what happens to the original clip and on explicit disambiguation from flow_generate, but an agent can still select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds little beyond the schema: 'applies the described change' loosely maps to the prompt parameter, and the English-language tip already appears in the schema. This is the baseline case where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Edit an ALREADY FINISHED video in the Omni 1.1 editor (video-to-video)'. It also clarifies the mechanism — opens the last clip in Flow, applies the change, downloads the result — which distinguishes it clearly from sibling tools like flow_generate that create new content rather than edit existing clips.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this when editing an already finished video, not for generation. It also provides concrete operational guidance with the prerequisite 'Requires "Trusted input" enabled in the extension' and the follow-up instruction 'Wait for the result with flow_wait'. It does not explicitly name flow_generate as the alternative for new videos, but the context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_generateA
Queue a generation in the live Google Flow through the extension. Returns jobId immediately WITHOUT waiting for the clips — wait with flow_wait. File paths (frames/characters) are absolute; the bridge reads them. Paths on another machine are unreachable: ask the user to copy files to the machine where the bridge runs.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chaining for all items: every next clip starts from the last frame of the previous one | |
| items | Yes | Generation items, one per clip | |
| model | No | Default model for all items | |
| aspect | No | Default aspect ratio | |
| folder | No | Subfolder name for the results | |
| length | No | Default length | |
| prefix | No | File name prefix | |
| resolution | No | Default resolution |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses asynchronous queuing (returns immediately), the reliance on the bridge to read absolute file paths, and the cross-machine limitation. Minor failure modes or side effects are not discussed, but core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The first sentence establishes purpose and immediacy; the second adds the path caveat and remediation. Each sentence earns its place and is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the lack of annotations, and the absence of an output schema, the description covers the critical non-obvious behavior: async jobId return, file path assumptions, and the bridge machine constraint. Remaining parameter details are fully documented in the schema, so nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, which sets the baseline at 3. The description adds meaningful semantics for frames and characters: their paths are absolute, read by the bridge, and unusable from another machine. This goes beyond the schema's per-field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Queue a generation in the live Google Flow through the extension.' It also explicitly contrasts itself with flow_wait by noting it returns jobId immediately and does not wait for clips, making sibling differentiation clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit alternative ('wait with flow_wait') and a concrete when-not-to-use condition: file paths on another machine are unreachable, so the user must copy files to the bridge machine. It does not enumerate all sibling tools, but it covers the most important routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_statusA
Bridge and extension state: whether the OmniFlow extension is connected, whether a Google Flow project tab is open, what is queued — plus extension.director, the director playbook. Call it BEFORE generating: without a live Flow tab tasks just pile up. If license is "expired" the extension has no access: ask the user to activate a key at lingoflow.pro/omniflow; the queue resumes by itself after activation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses what state is inspected and reveals important behavior such as queue auto-resuming after license activation. It stops short of stating whether the call is side-effect-free or describing the exact response format, so it is not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it opens with the returned state categories, then immediately gives actionable sequencing and license guidance. Every sentence contributes useful information with no repetition or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description does well to enumerate the key state fields and preconditions. It could be more explicit about possible values or response shape, but the tool is simple and the guidance is sufficient for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is nothing for the description to clarify. Per the baseline for parameterless tools, this is fully adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool reports: connection state, open Flow tab, queued items, and the director playbook. This is clearly a status/read tool and is easily distinguished from sibling action tools like flow_generate, flow_edit, flow_wait, and flow_cancel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit directive to call the tool BEFORE generating, with a concrete consequence: without a live Flow tab, tasks pile up. It also provides conditional handling for an expired license, including the next user action and expected queue behavior after activation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_waitA
Wait for a job to finish and return the file paths. Polls the bridge every 5 s up to timeoutSec.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | ||
| timeoutSec | No | How long to wait, default 600 s (a Flow clip takes 1–3 min) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It discloses the polling mechanism (every 5 seconds) and the timeout limit, which is useful, but it does not specify what happens when timeoutSec is exceeded, whether polling stops immediately, or how failures are reported.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that front-loads the main purpose and then adds the key behavioral detail. There is no filler, repetition, or unnecessary context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter wait operation with no annotations and no output schema, this description covers the main behavior, the return value, polling cadence, and timeout. The only notable gap is the timeout-exceeded behavior and how to obtain a valid jobId, which prevents a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, so the description should help compensate. It slightly enriches timeoutSec by stating that polling occurs up to that limit, but jobId is only implied by the word 'job' and gains no additional semantic detail beyond its property name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise action (wait), the target (a job), and the outcome (returned file paths). This clearly differentiates it from sibling tools like flow_status, which checks status without blocking, and flow_generate/edit/cancel, which do not wait and return paths.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear that this tool is the blocking wait-and-collect step after a job has been started, with a timeout limit. It does not explicitly name alternatives or state when not to use it, so it falls just short of a top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
v1.1.2- First observed
flow_cancel - First observed
flow_edit - First observed
flow_generate - First observed
flow_status - First observed
flow_wait
TDQS
Each tool has a clearly distinct role: status checks connection/state, generate queues new work, edit modifies finished videos, wait polls for completion, and cancel removes queued work. Even though generate and edit both ultimately produce jobs, their descriptions make the different input contexts unambiguous.
All tools follow the same flow_ prefix with a single descriptive verb or noun suffix: status, generate, edit, wait, cancel. This creates a predictable and easy-to-navigate naming scheme.
Five tools is a tight, well-scoped set for an OmniFlow generation/editing bridge. Each tool maps to a necessary stage in the workflow without redundant or filler tools.
The core lifecycle is covered: check status, generate, edit, wait, and cancel queued jobs. Minor gaps exist such as no explicit way to cancel an in-progress job or list finished job history, but these are workable for the primary use case.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Turn Claude into a creative studio: DNA-locked characters, images, video, voiceover — 55 tools.
AI image, video, voice and music generation over MCP, routed to Veo 3.1, Seedance 2.0 and more.
- FlowNodeOAuthio.flownode
Generate images, video, audio and 3D with FlowNode; results land in your asset library.
Build and run visual creative-production workflows from your AI agent.
Related MCP Servers
- AlicenseAqualityDmaintenanceControls Google Flow for image and video generation from an AI agent. Enables generating images with models like Imagen 4, creating videos, managing characters and scenes via browser automation.177048MIT
- FlicenseNot gradedqualityAmaintenanceEnables Claude to control a full-stack video editor by issuing commands to add clips, text, animations, and render MP4 videos, with changes reflected in real-time in the browser UI.-
- AlicenseAqualityBmaintenanceEnables AI agents to drive Google Flow through a real Chrome profile to generate images, videos, characters, and scenes without sharing credentials.1919MIT
- FlicenseNot gradedqualityCmaintenanceBridges AI agents like Codex and Claude to Google Flow via browser automation. Provides tools to open, snapshot, click, type, upload, download, wait, and confirm paid generations.1-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DanikVR/omniflow-veo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server