gemini-omni-mcp
README.md
# gemini-omni-mcp
An **MCP server that lets Claude (or any MCP client) control Google Gemini Omni** — Google's new "any-to-any" video-generation model (announced at Google I/O 2026).
> **Why a browser bridge?** As of June 2026, Gemini Omni has **no public developer API**. Google said the Vertex AI rollout is "coming in the coming weeks." Until then, Omni only exists inside the Gemini app, Google Flow, and YouTube. This server bridges that gap by driving a **logged-in Chrome session** — and is built so it can swap to the official API in one place the moment it ships.
## How it works
```
Claude ──MCP──► gemini-omni-mcp ──Playwright──► Chrome (your Google login) ──► Gemini Omni
```
- Your Google login lives in a **persistent Chrome profile** (`.auth-profile/`). You sign in **once, yourself** — the code never sees, types, or stores your password.
- Tools are exposed over MCP so Claude can call them directly.
## Status
🚧 **Phase 1 — scaffold (this commit).** MCP server, browser session manager, and tool definitions are in place. The UI automation selectors are placeholders, to be mapped against the live Gemini Omni interface in Phase 2.
| Phase | What | State |
| :--- | :--- | :--- |
| 1 | Repo scaffold, MCP skeleton, auth flow | ✅ done |
| 2 | Map the real Gemini/Flow DOM, wire generation + download | ⏳ next |
| 3 | Register in Claude Desktop, end-to-end test | ⏳ |
| 4 | Swap to official Vertex AI Omni API when released | 🔭 future |
## Setup
```bash
npm install
npx playwright install chromium
npm run build
npm run auth # opens Chrome — log in to Google once
```
## Use as an MCP server in Claude Desktop
Add to `claude_desktop_config.json`:
```json
{
"mcpServers": {
"gemini-omni": {
"command": "node",
"args": ["C:/Users/tamir/Desktop/gemini-omni-mcp/dist/index.js"]
}
}
}
```
## Creating the *perfect* video
Don't fire a one-line prompt. The project ships a **creation interview** —
subject, action, setting, style, lighting, camera, aspect ratio, consistency,
mood — plus support for **editing an existing video**. The tools accept a
structured `brief`, not just a string, to nudge the caller into gathering those
details first. See **[GUIDE.md](GUIDE.md)** for the full flow and prompt template.
## Tools
| Tool | Description |
| :--- | :--- |
| `omni_status` | Is the session signed in? Is a generation running? |
| `omni_generate_video` | Generate a video from a structured brief (or full prompt); returns the saved file path. |
| `omni_edit_video` | Edit an existing video — describe one change; Omni keeps characters/physics/continuity. |
## Configuration
See [`.env.example`](.env.example). Copy it to `.env` to override defaults (profile dir, output dir, surface, headless, timeout).
## License
MIT
TDQS
A4.2/5.0
Scored across 3 tools
Disambiguation5/5
Each tool has a distinct and clearly defined purpose: editing videos, generating videos, and checking session status. No overlap in functionality.
Naming Consistency5/5
All tool names follow a consistent pattern with the 'omni_' prefix and verb_noun construction (edit_video, generate_video, status).
Tool Count5/5
Three tools is appropriate for a focused video generation and editing server, covering the essential operations without unnecessary extras.
Completeness4/5
The tool surface covers generation, editing, and status checking. Missing operations like listing or deleting videos, but these are not core to the stated purpose.
Maintenance
ActivityStale
ResponsivenessNo issues