google-flow-mcp
π§ Google Flow Browser MCP
Control Google Flow β image & video generation β directly from your AI agent via MCP.
Fork of TMSSS05/google-flow-browser-mcp β adds macOS support and a working reference-image pipeline.
β¨ Features β’ π Quick Start β’ π§ Tools β’ βοΈ Configuration β’ π‘οΈ Safety
π«π· Ce serveur MCP permet Γ votre agent AI (OpenCode) d'utiliser Google Flow pour gΓ©nΓ©rer des images et des vidΓ©os, via votre propre compte Google et sans partager vos identifiants.
πΈ What It Does
This MCP server connects your AI agent to Google Flow β Google's creative suite for image and video generation. Your agent can:
π¨ Generate images with Nano Banana Pro, Nano Banana 2, or Imagen 4
π¬ Create videos and scenes with characters
π§ Manage characters and scenes in your Flow workspace
πΌοΈ Use Grid Architect for batch shot generation
π Discover and control any Flow tool programmatically
All through your own Google account β no API keys, no third-party tokens.
β¨ Features
π― For AI Agents
π For Humans
15+ MCP tools ready to use
Smart job queue β no parallel conflicts
Auto-discover UI β adapts to Flow changes
Structured logging for debugging
Safe actions β resilient click/fill logic
Your account, your data β no token sharing
No password asked β ever
Clean safety rules β stops on captcha/verification
Config backup before any modification
Single-job queue β no runaway generation
π Quick Start
Prerequisites
What | Why |
Node.js β₯ 18 | Runtime for the MCP server |
Google Chrome | Required for browser automation |
An MCP client | OpenCode, Claude Code, Claude Desktop, or any other MCP-compatible agent |
A Google account | To use Google Flow (yours, not shared) |
1οΈβ£ Install
git clone https://github.com/MinaSalib216/google-flow-mcp.git
cd google-flow-mcp
npm install2οΈβ£ Configure your Google profile
cp config/flow.config.example.json config/flow.config.jsonEdit config/flow.config.json:
{
"expectedAccount": "your.email@gmail.com",
"chromeProfile": "Profile 3",
"chromeUserDataDir": "/home/you/.config/google-chrome"
}π‘ Finding your Chrome profile:
Open Chrome and go tochrome://version/. Look for "Profile Path" β the last folder name is your profile (e.g.,Profile 3orDefault), and the path before it is yourchromeUserDataDir.
β οΈ macOS only: Chrome refuses
--remote-debugging-porton your real, OS-default profile directory ("DevTools remote debugging requires a non-default data directory"). PointchromeUserDataDirat a copy of your profile instead:mkdir -p "$HOME/.google-flow-chrome-profile" cp -R "$HOME/Library/Application Support/Google/Chrome/Default" \ "$HOME/.google-flow-chrome-profile/Default"Then set
chromeUserDataDirto~/.google-flow-chrome-profileandchromeProfiletoDefault. This preserves your login session without touching your real Chrome profile. Linux is unaffected by this restriction.
3οΈβ£ Make scripts executable
chmod +x scripts/*.sh4οΈβ£ Start Chrome with CDP
./scripts/start-browser.shThis launches Chrome with remote debugging enabled on port 9222 using your configured profile.
5οΈβ£ Start the MCP server
# In a separate terminal:
./scripts/start-mcp.sh6οΈβ£ Register with your MCP client
OpenCode:
./scripts/register-opencode.shπ Restart OpenCode after registration for the changes to take effect.
Claude Code: add a .mcp.json in your project root:
{
"mcpServers": {
"google-flow": {
"command": "node",
"args": ["/absolute/path/to/google-flow-mcp/src/index.js"]
}
}
}Any other MCP client: point it at node /absolute/path/to/google-flow-mcp/src/index.js over stdio.
β Verify it works
./scripts/test-flow-image.shποΈ Architecture
google-flow-browser-mcp/
β
βββ π config/
β βββ flow.config.example.json # Configuration template
β βββ selectors.map.json # UI selectors (auto-populated)
β
βββ π scripts/
β βββ start-browser.sh # Launch Chrome + CDP
β βββ start-mcp.sh # Start the MCP server
β βββ test-flow-image.sh # Quick integration test
β βββ register-opencode.sh # Register in OpenCode config
β
βββ π src/
β βββ index.js # MCP server entry point
β β
β βββ π browser/ # Chrome & CDP management
β β βββ connect.js # CDP connection manager
β β βββ launch-profile.js # Chrome profile launcher
β β βββ account-check.js # Verify Google account
β β βββ safe-actions.js # Safe click, fill, detection
β β
β βββ π tools/ # All MCP tool implementations
β β βββ flow-open.js # Navigate to Flow
β β βββ flow-status.js # Connection status
β β βββ generate-image.js # Image generation
β β βββ generate-video.js # Video generation (setup only)
β β βββ download-latest.js # Download generated files
β β βββ create-character.js # Create a character
β β βββ import-character.js # Import character JSON
β β βββ open-characters.js # List characters
β β βββ create-scene.js # Create a scene
β β βββ open-tools-gallery.js # Open tools gallery
β β βββ grid-architect.js # Batch shot generation
β β βββ discover-ui.js # UI discovery & mapping
β β βββ use-flow-tool.js # Generic tool opener
β β
β βββ π queue/ # Job management
β β βββ job-queue.js # Single-job queue
β β
β βββ π utils/ # Helpers
β βββ config.js # Config loader
β βββ logger.js # Structured logging
β βββ errors.js # Error codes & types
β βββ file-manager.js # File download/save
β βββ screenshots.js # Screenshot capture
β
βββ π output/ # Generated files land hereπ§ Tools
All tools are organized by function for easy discovery.
π Connection & Status
Tool | Description |
| Launch Chrome, connect CDP, navigate to Google Flow |
| Close browser and clean up all connections |
| Full status: connection, Flow loaded, account, queue state |
| Verify logged-in account matches configured email |
| Capture a screenshot of the current Flow page |
π¨ Image Generation
Tool | Description |
| Generate image with Nano Banana Pro, Nano Banana 2, or Imagen 4. Supports aspect ratios, reference images, and brand-based model selection. |
| Download the most recently generated file |
π¬ Video Generation
Tool | Description |
| Set up video generation (Omni Flash, Veo models, custom duration/ratio). β οΈ Stops at "ready to generate" β no credit consumed. |
| Create a video scene with characters and a text prompt |
π€ Characters
Tool | Description |
| Create a new character with name, description, and optional reference images |
| Import a character from a saved JSON file |
| Open the characters page and list all existing characters |
π οΈ Tools & Discovery
Tool | Description |
| Open the tools gallery and browse available tools |
| Open any Flow tool by name with optional parameters |
| Configure Grid Architect for batch shot generation with theme prompts, visual logic, and reference images |
| Discover and map all interactive elements (buttons, inputs, headings) on any Flow page |
π Queue & Monitoring
Tool | Description |
| Check job queue: active job, pending queue, completed and failed history |
βοΈ Configuration
Edit config/flow.config.json (copy from config/flow.config.example.json):
π Essential
Key | Type | Default | Description |
|
| β | Your Google account email β REQUIRED |
|
|
| Chrome profile directory name |
|
| β | Full path to Chrome user data directory β REQUIRED |
|
| Flow labs URL | Google Flow URL (supports |
π§ Advanced
Key | Type | Default | Description |
|
|
| Chrome DevTools Protocol port |
|
|
|
|
|
|
| Run Chrome in headless mode |
|
|
| UI locale ( |
β±οΈ Timing
Key | Default | Description |
|
| Max job execution time |
|
| Delay between UI actions (anti-detection) |
|
| How often to poll for generation completion |
|
| Max polling attempts before timeout |
|
| Wait time for file download |
π¨ Models & Ratios
Key | Description |
| Available models: |
| Available models: |
| Supported aspect ratios: |
π‘οΈ Safety & Ethics
This project is built with safety-first design:
β Principle | How it's enforced |
Your account only | Uses your own Google profile β never asks for or stores passwords |
No credential theft | Never exports cookies, tokens, or session data |
No bypass | Stops cleanly on captcha, login walls, or verification challenges |
No parallel abuse | Single-job queue prevents concurrent generation |
Credit-safe video | Video generation sets up parameters but stops before the final "Generate" click (no credit consumed) |
Config backup | Backs up OpenCode config before any modification |
β οΈ This is a browser automation tool. Use it responsibly and in accordance with Google's Terms of Service.
β FAQ
Getting Started
Open Chrome and go to chrome://version/. The Profile Path shows both your user data directory and profile name. For example:
/home/you/.config/google-chrome/Profile 3βchromeUserDataDir: "/home/you/.config/google-chrome",chromeProfile: "Profile 3"
You need a profile where you're already logged into your Google account.
Yes! Any MCP-compatible client (Claude Code, Claude Desktop, Continue.dev, etc.) can connect to this server. Just point your MCP config to node /path/to/src/index.js.
Troubleshooting
Make sure Chrome is installed at the expected path. scripts/start-browser.sh auto-detects macOS vs Linux and picks a sensible default (/Applications/Google Chrome.app/... vs /opt/google/chrome/chrome) β override with the CHROME environment variable if yours lives elsewhere.
Chrome blocks remote debugging on your real, OS-default profile folder. See the macOS callout in step 2 of Quick Start β point chromeUserDataDir at a dedicated copy of your profile instead.
The script checks for existing Chrome instances on port 9222. If something else is using that port, you can change cdpPort in config/flow.config.json (and update the script's CDP_PORT variable).
Verify that expectedAccount in config/flow.config.json matches the email logged into your Chrome profile. Use flow_account_check to verify.
Run flow_discover_ui to re-map selectors. The selectors.map.json will auto-update with new UI element positions.
Usage
Your AI agent calls flow_generate_image with a text prompt. Optionally specify model (Nano Banana 2 is default), aspect ratio, and reference images. The server waits for completion and makes the file available for download.
flow_generate_video sets up the video parameters (model, ratio, duration) but stops before clicking Generate. This lets you review the setup before consuming credits. The actual generation requires a paid Google Flow subscription.
π€ Contributing
Contributions are welcome! Please follow these guidelines:
Fork the repository
Create a feature branch (
git checkout -b feature/my-feature)Commit your changes (
git commit -m 'Add my feature')Push to the branch (
git push origin feature/my-feature)Open a Pull Request
π License
MIT Β© TMSSS05 β this fork adds macOS support and a working reference-image pipeline.
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/MinaSalib216/google-flow-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server