google-flow-mcp
Provides programmatic access to Google Flow, enabling AI agents to generate images with Nano Banana 2/Pro and videos with Veo 3, as well as manage projects and retrieve credit and session information.
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., "@google-flow-mcpGenerate an image of a cozy cabin in snowy woods at dusk with warm lights, 16:9"
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.
Google Flow MCP Server
A session-backed, direct-CDP UI-to-MCP wrapper for Google Flow (labs.google/fx/tools/flow), implementing the Browser as an API paradigm to provide programmatic access to Nano Banana 2/Pro image generation and Veo 3 video generation models.
Disclaimer: This project is an unofficial, independent open-source tool and is not affiliated with, endorsed by, or associated with Google or Google Labs. Use this software at your own risk. The authors and contributors assume no liability or responsibility for any account suspension, service restriction, credit consumption, or terms-of-service enforcement resulting from the use of this software. Users are solely responsible for complying with Google's Terms of Service and applicable policies.
Overview
This server acts as a UI-to-API bridge, enabling AI agents (Claude Desktop, Cursor, Windsurf, Cline, Antigravity, etc.) to control Google Flow using structured JSON-RPC over standard I/O. By attaching directly to an existing Chrome debugging session over WebSocket, it bypasses the need for official API keys, handles bot detection transparently via real user session context, and achieves sub-25ms execution latency with in-page binary streaming and live credit telemetry.
Related MCP server: Google Flow Browser MCP
Features
Browser as an API: Treats the authenticated Google Flow web interface as a programmable, queryable tool for AI agents.
Session-Backed CDP Engine: Connects directly over raw WebSocket to a persistent Chrome debugging profile, preserving Google OAuth session state and avoiding bot-detection challenges.
Multi-Reference Injection: Attaches canonical character and background reference images directly into the prompt bar as input chips.
In-Page Binary Streaming: Retrieves generated high-resolution assets via authenticated in-page
fetch()without page reloads.Standardized MCP Interface: Exposes Tools, Resources (
flow://credits,flow://session,flow://projects), and Prompt Templates.Cross-Platform Binary Discovery: Automatically locates Chrome, Brave, Chromium, or Edge installations across macOS, Windows, and Linux.
Multi-Language UI Support: Employs semantic SVG icon matching and multilingual fallback dictionaries (KO, EN, JA, FR, ES).
Prerequisites
Node.js >= 18.0.0
Google Chrome, Brave, Chromium, or Microsoft Edge
An active Google account with access to Google Flow (
https://labs.google/fx/tools/flow)
Installation Options
Option 1: Automatic Setup via AI Agent (Recommended)
Copy and paste the following prompt directly into your AI coding assistant (Cursor, Claude Code, Windsurf, Antigravity, Cline, etc.):
Please install and configure the google-flow-mcp server for my current environment:
1. Clone https://github.com/vynnlee/google-flow-mcp to an appropriate local directory and run `npm install`.
2. Locate the MCP configuration file for my current client (e.g., Claude Desktop, Cursor `.cursor/mcp.json`, Windsurf, Cline) and add the "google-flow" server entry pointing to the cloned `src/index.js`.
3. Run `npm run launch` to open the dedicated Chrome profile so I can log in to Google Flow.
4. Verify the setup by running `npm run test:e2e` and confirm that all tests pass.Option 2: MCPB Bundle (.mcpb) Drag & Drop
Download the pre-packaged google-flow-mcp-1.2.0.mcpb bundle from the Releases page and drag it directly into your MCP-compatible client interface.
Option 3: Manual Installation (3 Steps)
1. Clone and Install Dependencies
git clone https://github.com/vynnlee/google-flow-mcp.git
cd google-flow-mcp
npm install2. Launch Dedicated Browser Profile
Run the cross-platform launcher to start your persistent automation browser:
npm run launchLog in to your Google account once in the opened window. Your authentication is preserved across restarts in a dedicated user data directory.
(Manual alternative: launch Chrome with --remote-debugging-port=9333 and --user-data-dir="<path>")
3. Add to Your AI Client
Add the following standard MCP configuration to your AI client's settings:
{
"mcpServers": {
"google-flow": {
"command": "node",
"args": [
"/absolute/path/to/google-flow-mcp/src/index.js"
]
}
}
}Settings File Locations
Client | Configuration File Path |
Claude Desktop |
|
Cursor |
|
Windsurf |
|
Cline / Roo Code |
|
Zed |
|
Optional Configuration
Create config/flow.config.json to override default parameters:
{
"cdpPort": 9333,
"expectedAccount": "your-email@gmail.com",
"defaultImageModel": "Nano Banana 2",
"defaultRatio": "16:9",
"autoConfirm": false
}Components
Tools
flow_generate_image
Generates images using Nano Banana 2, Nano Banana Pro, or Imagen 4 with optional reference image attachment.
Parameters:
prompt(string, required): Detailed prompt describing the scene, subject, camera angle, and style.reference_images(string[], optional): Absolute file paths to reference images to inject as prompt chips.model(string, optional):"Nano Banana 2"(default),"Nano Banana Pro", or"Imagen 4".ratio(string, optional):"16:9"(default),"9:16","1:1","4:3", or"3:4".auto_confirm(boolean, optional): Set totrueto execute generation and consume credits. Iffalse, prepares the prompt in the UI without generating. Default:false.output_folder(string, optional): Directory path where downloaded files are saved.response_format(string, optional):"detailed"(default) or"concise".
flow_generate_video
Generates video clips using Veo 3.1 or Omni Flash.
Parameters:
prompt(string, required): Prompt describing camera movement and motion.model(string, optional):"Veo 3.1 Lite"(default),"Veo 3.1 Quality", or"Omni Flash".duration(string, optional):"4s","6s"(default), or"8s".ratio(string, optional):"16:9"(default),"9:16", or"1:1".auto_confirm(boolean, optional): Default:false.output_folder(string, optional): Destination directory path.response_format(string, optional):"detailed"(default) or"concise".
flow_status
Returns browser connection health, current account state, session validity, and real-time credit balance.
Parameters:
full(boolean, optional): Include complete telemetry payload. Default:true.
flow_manage_project
Lists or creates projects on the Flow canvas.
Parameters:
action(string, required):"list"or"create".name(string, optional): Required when action is"create".
flow_download_latest
Downloads the most recently rendered asset without triggering new generation.
Parameters:
output_folder(string, optional): Destination directory.
flow_connect / flow_disconnect
Manages the connection state to the dedicated Chrome browser instance.
Resources
flow://credits: Returns real-time JSON payload containing remaining credit balance, subscription tier, and SKU.flow://session: Returns authenticated user profile, email address, and OAuth expiration timestamp.flow://projects: Returns array of active projects on the user's canvas.
Prompts
consistent-storyboard-cut: Parameterized template for generating camera-consistent scene cuts with character and environment references.
Architecture
flowchart TD
Client["AI Clients and IDEs\n(Claude Desktop, Cursor, Windsurf, Cline)"]
subgraph MCPServer["google-flow-mcp (Node.js Server)"]
Router["Tool & Resource Router\n(Tools, Resources, Prompts)"]
Engine["Direct CDP WebSocket Engine\n(~21ms Low-Latency Control)"]
MultiRef["Multi-Reference Chip Injector\n(Characters & Backgrounds)"]
StreamFetch["In-Page Binary Stream Fetcher\n(Direct Asset Retrieval)"]
end
subgraph Browser["Dedicated Chrome Instance (:9333)"]
Session["Persistent Google OAuth Session\n(FlowAutomationChrome Profile)"]
Flow["Google Flow WebApp\n(Nano Banana 2/Pro & Veo 3)"]
end
Client -->|Stdio JSON-RPC| Router
Router --> MultiRef --> Engine
Engine -->|Raw WebSocket CDP| Session
Session --> Flow
Flow -.->|Authenticated Media Stream| StreamFetch
StreamFetch -.->|JPG / MP4 Assets + Credits JSON| ClientPerformance Benchmark
Measured on macOS against Google Chrome remote debugging port 9333 (5-run mean):
Metric | Standard Automation (Playwright CDP) | Direct CDP WebSocket Engine | Delta |
Initial Handshake | 354.25 ms | 21.80 ms | 16.2x faster |
DOM Traversal / Query | 21.29 ms | 1.65 ms | 12.9x faster |
Screenshot Capture | 383.92 ms | 359.95 ms | 6.2% faster |
Single Transaction Runtime | 761.31 ms | 384.17 ms | 1.98x faster |
Process Memory (RSS) | 166.81 MB | 52.31 MB | 68.6% reduction |
Troubleshooting & FAQ
Browser Connection Failed
Ensure the browser is running with
--remote-debugging-port=9333. You can verify by openinghttp://localhost:9333/jsonin your browser.If port 9333 is occupied by another process, change
cdpPortinconfig/flow.config.json.
Re-Authentication Required
If Google Flow displays a login prompt, open the dedicated Chrome window, log in with your Google account, and refresh the page. The session will remain active.
Using Custom Browser Paths
Set the
CHROME_PATHenvironment variable to point to your specific browser binary (e.g., Brave or Edge):export CHROME_PATH="/Applications/Brave Browser.app/Contents/MacOS/Brave Browser"
Development & Testing
Run unit and connection tests:
npm testRun full MCP specification compliance audit:
npm run test:e2eDebug using MCP Inspector:
npx @modelcontextprotocol/inspector node src/index.jsLicense
MIT License. Copyright (c) 2026 Vynn Lee.
Available Tools
7 toolsflow_connectB
Establishes connection to Google Flow Chrome instance on CDP port (default: 9333).
| Name | Required | Description | Default |
|---|---|---|---|
| headless | No | Launch headless (default: false for anti-bot safety). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral disclosure burden. It reveals the connection target and default port, but does not say whether this launches a browser, mutates state, is idempotent, or is required before other operations. This is a meaningful gap for a stateful connect tool.
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, efficient sentence that conveys the action, target, and default port with no filler. Every piece of information serves the agent's selection and invocation decision.
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 tool with one optional parameter and no output schema, the description covers the core action and default. However, it lacks behavioral side effects, prerequisites, and any indication of what a successful connection yields, so an agent has only partial context for correct invocation.
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% and the single parameter 'headless' is fully described with its default and anti-bot rationale. The description itself does not add parameter information, but the baseline of 3 applies because the schema already documents the parameter well.
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 ('Establishes connection') and a specific resource ('Google Flow Chrome instance on CDP port'), which clearly distinguishes it from sibling tools like flow_disconnect and flow_status. The default port value adds precision.
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?
No guidance is given about when this tool should be used, whether it must precede the other flow_* tools, or when a sibling like flow_status might be more appropriate. The purpose is implied by the name and description, but explicit usage context is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_disconnectA
Closes the browser connection and cleans up MCP state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and it clearly states the two effects: closing the browser connection and cleaning up MCP state. It does not discuss idempotency or consequences for ongoing operations, but for a simple disconnect tool this is sufficient.
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?
One sentence, ten words, with the primary action front-loaded. No filler or redundancy.
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 tool with no output schema and no annotations, the description fully captures the tool's behavior and lifecycle role. An agent can correctly invoke it without additional context.
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?
There are zero parameters, so the schema already exhaustively covers them. The baseline for 0 parameters is 4, and the description adds no parameter-specific information, which is acceptable.
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 ('closes'), a concrete resource ('browser connection'), and the additional cleanup of 'MCP state'. This clearly distinguishes it from siblings like flow_connect and the generation tools.
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 its role as the shutdown counterpart to flow_connect but never explicitly names alternatives or states when to call it. 'Closes the browser connection and cleans up MCP state' gives context but no when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_download_latestB
Downloads the most recently rendered image or video asset from the active Flow project without re-generating.
| Name | Required | Description | Default |
|---|---|---|---|
| output_folder | No | Destination directory path. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does reveal the key trait that it downloads rather than re-generates, but it omits important behaviors such as what happens if no render exists, whether files are overwritten, or how the active project is determined. This leaves significant behavioral ambiguity.
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, efficient sentence that front-loads the core action and key qualifier. It earns a high score for being concise and readable, though it lacks additional structured guidance that could improve utility without bloating the text.
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 tool with one optional parameter and no output schema, the description is reasonably complete at a basic level. However, it leaves gaps around the meaning of 'active Flow project' and behavior in edge cases like no rendered asset being available. These omissions make it only minimally viable rather than fully complete.
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 output_folder as a destination directory path. The description adds no new parameter-level meaning, and the tool description does not clarify whether output_folder is optional or what happens when it is omitted. Baseline 3 is appropriate given full schema coverage.
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 clearly states a specific verb ('Downloads'), resource ('most recently rendered image or video asset'), and context ('from the active Flow project'). It also explicitly distinguishes itself from generation tools by adding 'without re-generating,' which sets it apart from siblings like flow_generate_image and flow_generate_video.
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 phrase 'without re-generating' implies this tool is for retrieving an already-rendered asset, so usage is somewhat clear. However, it does not explicitly state when to prefer this tool over alternatives, nor does it define prerequisites like needing an active project or a prior render.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_generate_imageA
Generates high-fidelity images on Google Flow using Nano Banana 2, Nano Banana Pro, or Imagen 4. Supports attaching multiple reference images (e.g. character sheet + background environment) as prompt attachment chips. When auto_confirm=true, submits the prompt and downloads high-res images to output_folder. When auto_confirm=false (default), prepares the prompt and references in the UI for safety review without consuming credits.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model to use. Default is "Nano Banana 2". | Nano Banana 2 |
| ratio | No | Aspect ratio of the generated image. Default is "16:9". | 16:9 |
| prompt | Yes | Detailed image prompt describing subject, emotion, lighting, camera angle, shot size (ECU/MCU/MS/WS), and style. | |
| auto_confirm | No | Set to true to execute generation and consume Google Flow credits. If false, prepares without generating. | |
| output_folder | No | Directory path where generated images should be saved. | |
| response_format | No | Control verbosity of returned output (Anthropic Tool Standard). Default is "detailed". | detailed |
| reference_images | No | Array of absolute or relative file paths to reference images (e.g. character canonical PNG and location background JPG). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does disclose non-obvious behaviors: credit consumption only when auto_confirm=true, default no-credit safety mode, reference images attached as chips, and downloaded output location. It does not cover auth, rate limits, or failure behavior, but the key side effects are well stated.
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 three sentences, with each sentence earning its place: purpose and models, reference-image capability, and the auto_confirm behavior split. It is front-loaded with the core purpose and contains no filler or repetition.
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 7-parameter tool with no output schema and no annotations, the description covers the central behavioral choices and consequences—safety review, credit consumption, and output destination. It lacks return-value details and does not state whether output_folder is required when auto_confirm=true, but the response_format parameter and schema mitigate these gaps.
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 100%, so the baseline is 3, but the description adds genuine narrative meaning beyond the schema: auto_confirm determines credit use and download, reference_images are described as attachment chips with an example, and output_folder is tied to high-res download. These enrich the structured parameter definitions.
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 opens with a specific action ('Generates high-fidelity images on Google Flow') and lists three concrete model choices, making the resource and output type unambiguous. The word 'images' distinguishes it from the video-generation sibling without needing to inspect the schema.
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 explicitly explains when to use auto_confirm=true versus false, including credit consumption and UI safety review, giving clear invocation context. It does not explicitly name alternative sibling tools or exclusion conditions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_generate_videoA
Generates cinematic video clips on Google Flow using Veo 3.1 or Omni Flash. When auto_confirm=true, submits generation, monitors rendering progress, and downloads the MP4 file. When auto_confirm=false, prepares prompt without consuming credits.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Video generation model. | Veo 3.1 Lite |
| ratio | No | Aspect ratio of the video. | 16:9 |
| prompt | Yes | Video prompt describing camera movement (dolly, pan, tilt), subject motion, lighting, and pacing. | |
| duration | No | Duration of the generated video. | 6s |
| auto_confirm | No | Set to true to execute video generation and consume credits. | |
| output_folder | No | Directory path to save the generated MP4 file. | |
| response_format | No | Control verbosity of returned output. | detailed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does so well: it discloses that execution consumes credits, monitors rendering, downloads the MP4, and that the false path avoids credit use. It stops short of stating error behavior or what happens to intermediate state, but the key side effects are visible.
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 core purpose and model names are front-loaded, and the conditional behavior is packed into a compact, scannable pair of clauses.
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?
The description explains the execution flow well and the schema fully documents parameters, but there is no output schema and the description does not state what the tool actually returns (e.g. status, file path, rendering meta). For a 7-parameter generation tool with return-format options, that is a notable gap.
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 100%, so the baseline is 3, and the description goes beyond it by explaining the functional effect of auto_confirm (submission, monitoring, download, credit consumption) rather than repeating the schema's one-line definition. Other parameters remain schema-documented, which is acceptable given full coverage.
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 opens with a specific verb and direct object: 'Generates cinematic video clips on Google Flow,' using named models. This immediately distinguishes it from image-generation and connection-management siblings without requiring schema inspection.
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 clearly delineates the two modes based on auto_confirm: true executes generation, monitoring, and download, while false only prepares a prompt and avoids credit consumption. It does not explicitly name alternative tools for when a still image or a different operation is needed, but the video-specific scope makes that inference straightforward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_manage_projectB
Lists existing Flow projects or creates a new project on the user canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name of the project (required when action is "create"). | |
| action | Yes | Action to perform on projects. | list |
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 of behavioral disclosure. It states the two surface behaviors but does not disclose side effects of creating a project, whether creation is permanent or reversible, permission requirements, or potential failure modes. For a tool with a mutating action, this is a meaningful gap.
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 front-loaded sentence that names both capabilities with no filler or redundancy. Every word contributes to understanding the tool's scope.
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 dual-action tool with no annotations and no output schema, the description is too lean. It does not explain what a 'list' call returns, how naming conflicts are handled on create, or what side effects creation has on the user canvas. The schema covers parameters well, but the surrounding behavior is not fully specified.
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%, with 'action' having an enum and default, and 'name' explicitly documented as required when action is 'create.' The description adds no additional parameter semantics, but the schema already carries the necessary meaning.
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 names both distinct actions, 'Lists existing Flow projects' and 'creates a new project,' and identifies the resource and scope ('on the user canvas'). This clearly differentiates it from sibling tools like flow_generate_image, flow_generate_video, flow_connect, and flow_status.
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 usage through the 'list' and 'create' actions but provides no explicit guidance on when to prefer this tool over siblings or when listing versus creating is appropriate. There are no exclusion criteria or alternative routing, so the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_statusA
Checks the health and telemetry of Google Flow: Chrome CDP connection state, active user account, session expiration, and real-time remaining credit balance.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | Include detailed session metadata and telemetry. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavior disclosure. It clearly conveys a non-destructive read operation and lists the data points returned. It does not, however, mention whether a connection is required, what the output format is, or any failure/error behavior, so it is adequate but not rich.
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 sentence that front-loads the verb and resource and packs meaningful detail into a comma-separated list. No words are wasted, and the structure makes the tool's scope immediately readable.
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 status-check tool with one optional parameter and no output schema, the description covers the essential context an agent needs to decide to invoke it. The main gap is not describing the response structure, but the enumerated data points mitigate that for a low-complexity read-only tool.
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 schema documents the single 'full' parameter with 100% coverage, including its type, default, and meaning, so the baseline is 3. The description does not add detail about how 'full' changes the result, but it is not required since the schema already covers the parameter semantics.
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 starts with a clear verb ('Checks') and specific resource ('health and telemetry of Google Flow'), then enumerates exactly what is inspected: CDP connection state, active user account, session expiration, and credit balance. This distinguishes it sharply from the sibling generation, connection, and management tools without needing their schemas.
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 nature of a status/health tool implies when it should be used, e.g., before generating media or after connection issues. However, the description does not explicitly state when to use it versus alternatives or mention any exclusions, leaving usage timing to inference.
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.
7 tool updates
v1.2.0- First observed
flow_connect - First observed
flow_disconnect - First observed
flow_download_latest - First observed
flow_generate_image - First observed
flow_generate_video - First observed
flow_manage_project - First observed
flow_status
TDQS
Each tool targets a distinct concern: connection lifecycle, status, project management, image generation, video generation, and asset download. There is no meaningful overlap or ambiguity between them.
All tools follow the same flow_verb_noun pattern with snake_case, making the set predictable and easy to navigate. Even the less specific flow_manage_project fits the established convention.
Seven tools is well-scoped for a Google Flow MCP server, covering connection, status, project management, generation, and download without unnecessary duplication. Each tool earns its place.
The core workflow is covered: connect, manage projects, generate images/videos, and download results. Minor gaps exist such as no way to fetch a specific historical asset or cancel an in-progress generation, but these are not fatal to 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
Build and run visual creative-production workflows from your AI agent.
- FlowNodeOAuthio.flownode
Generate images, video, audio and 3D with FlowNode; results land in your asset library.
Generate images, GIFs, and PDFs from HTML, URLs, or templates — from your AI agent.
Design, save, and run outcome-aligned AI workflows and verifiers, with reliable image output.
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
- AlicenseAqualityBmaintenanceEnables AI agents to drive Google Flow through a real Chrome profile to generate images, videos, characters, and scenes without sharing credentials.1919MIT
- AlicenseBqualityCmaintenanceMCP server that lets AI agents control Google Flow for generating images and videos using the user's own Google account. It provides tools for image generation, video creation, character and scene management, and UI discovery.17MIT
- 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.-
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/vynnlee/google-flow-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server