Skip to main content
Glama

flow-mcp — Google Flow MCP Server

A standalone MCP server for Google Flow (split off from media-gen-mcp): 0-credit AI image generation + billed video generation (Veo / abra), all driven through your local Chrome session (CDP page context) — no API key, no quotas, no third-party relay.

  • Image generation / image upscaling / upload / status query / download / delete / share / cancel / character entities: all 0 credits

  • Video generation: consumes Google Flow credits (abra 7-20 / veo lite 10 / fast 20 / quality 100 per item; 1080p upscaling 0) — explicitly warned in the tool description, used by default only when the user explicitly asks

Installation

Prerequisites (one-time):

  1. Install lasso locally (the Chrome launcher in the CC full-interaction harness)

  2. Launch Chrome with CDP and sign in to labs.google:

lasso launch-chrome --port 9223 --mode visible   # 首次:窗口出现,完成 Google 登录(2FA 同)
# 之后每天只需:hidden 模式静默驻留
lasso launch-chrome --port 9223
  1. Open any project page at https://labs.google/fx/tools/flow in that Chrome (keep it running)

Connect to Claude Code:

claude mcp add flow-mcp -- node /path/to/flow-mcp/dist/index.js
# 或发布后:npx flow-mcp-server

Can be connected alongside media-gen-mcp without conflicts (see "Coexistence with media-gen-mcp" below).

Related MCP server: Grok Image Generation MCP Server

Tools (4)

Tool

Credits

Purpose

flow_generate_image

0

Text-to-image / image-to-image (base image + reference image) / 2K upscaling. NARWHAL (Nano Banana 2, default) / HARBOR_SEAL / GEM_PIX_2 (Nano Banana Pro). Supports aspect (16:9/9:16/1:1/3:4/4:3) and seed for exact reproduction

flow_generate_video

🔴 Billed

Video submission (t2v/i2v/r2v/first-last frames/extend/edit/upscale). Submit only, no waiting — returns a mediaId handle immediately

flow_status

0

One-stop introspection: credit balance / live model catalog (credit price and latency per key) / media list / single-media status and download / batch delete / public share links / cancel in-progress tasks. Also the polling path for video handles

flow_entity

0

Character entities: create character card / bind one of 30 preset voices / bind appearance image

Typical flow:

flow_status                                    # 先看:余额 + 目录(per-key creditsAtServiceTier)
flow_generate_image(prompt=..., aspect="16:9") # 0 积分生图,产出落盘并回传 mediaId+seed
flow_generate_video(model="abra_t2v_8s", ...)  # 🔴 计费提交 → 返回 mediaId 句柄(不阻塞)
flow_status(mediaId="...")                     # 轮询(0 积分;in_progress 会给 retry_after_seconds)
flow_status(mediaId="...", download=true)      # completed 后落盘 mp4

Configuration (shares one file with media-gen-mcp)

Config file: ~/.media-gen-mcp/config.json (both packages read the same file — "different implementation channels for the same feature" are enabled/disabled uniformly in one file). The directory name follows the historical name, do not change it (the Flow project ID is permanently recorded in ~/.media-gen-mcp/flow-project.json; renaming would orphan it).

{
  "flow": {
    "enabled": true,
    "imageRouting": "prefer",
    "videoRouting": "explicit-only",
    "toolDeadlineMs": 110000
  },
  "providers": {
    "flow": { "cdpPort": 9223 }
  }
}

Field

Default

Purpose

flow.enabled

true

false = S000 gate: the 4 tools are still registered, but any call immediately returns a [flow] S000 structured error (with built-in fix guidance). A session restart is required after changing the config

flow.imageRouting

"prefer"

prefer = the image tool description injects a "0-credit first" hint (soft routing); on-demand = used only when the user explicitly asks for Flow

flow.videoRouting

"explicit-only"

explicit-only (credit red line) = the video tool is used only when the user explicitly requests Flow/Veo/abra; prefer = used as the first choice (still warns about billing)

flow.toolDeadlineMs

110000

Hard cap for a single tool call (prevents hangs; on timeout returns [flow] S410, generation continues server-side and can be recovered via flow_status)

providers.flow.cdpPort

9223

CDP port (matches lasso launch-chrome --port)

providers.flow.projectId

(default)

When absent, reads the permanent project from flow-project.json (recommended — the project ID is reused permanently)

providers.flow.models.video.default

(none)

Deliberately no built-in default: video is billed, so model must be passed explicitly or configured explicitly here

See config.example.json for a full example.

Coexistence with media-gen-mcp

  • Both packages share ~/.media-gen-mcp/config.json; media-gen's own imageProviderPriority / videoProviderPriority chain only takes effect within its own package

  • After the split, cross-package priority = this package's tool-description soft routing (imageRouting/videoRouting guide Claude to prefer flow_generate_image) + the enabled master switch — there is no cross-package hard redirect (the two packages are physically invisible to each other; an honest design)

  • flow-project.json / flow-entities.json belong to this package; after Flow is removed from the media-gen side, it no longer reads or writes them

Error code quick reference ([flow] S<code>)

Code

Meaning

Resolution

S000

Config disabled

Follow the guidance in the error to set flow.enabled back to true, restart the session

S100

CDP unreachable

lasso launch-chrome --port 9223

S101

No labs.google page

Open the Flow project page in that Chrome

S102

Not signed in

Complete the labs.google sign-in in that Chrome

S104

reCAPTCHA failed

Stay on the Flow page and retry

S1xx others

Environment prerequisite

Retry once the environment is ready; image generation can fall back to other image tools

S2xx

Page fetch failed

Check the upstream response snippet in the message

S300/S301/S303

Model/parameter/mode validation

Follow the message guidance to change the key or parameters (intercepted before submission, zero cost)

S400

mediaId not in this project

Call flow_status without arguments to view all media

S402

Incomplete download

Just retry

S410

Tool-layer deadline (anti-hang)

Generation is still running server-side; recover via flow_status without arguments

Environment requirements

  • Node.js ≥ 18

  • Local Chrome (launched via lasso with --remote-debugging-port=9223) signed in to labs.google

  • FFmpeg bundled with the package (ffmpeg-static; used only for output validity self-check, automatically degrades to a notice when missing)

License

MIT

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • AI image, video & music generation. Flux, Veo 3.1, Suno V5. Free tier included.

  • Image, video, audio, face-swap, talking avatars and chat across 300+ AI models, one balance.

  • Generate images, video & speech with Nano Banana, Veo, Omni and Gemini TTS. Pay as you go.

View all MCP Connectors

Latest Blog Posts

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/wangdong233/flow-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server