DEV Community

xbill for Google Developer Experts

Posted on • Originally published at xbill999.Medium on

Omni Flash Preview with Claude Code

This article covers the MCP setup and configuration for using Google Omni Preview and underlying Gemini LLM with Claude Code CLI to enhance and extend Omni operations over MCP.


f

What is Google Omni?

Google Gemini Omni (often referred to simply as Google Omni) is a powerful, multimodal AI video model developed by Google. It allows users to generate, edit, and iterate on video content using any combination of text, images, video, and audio inputs through simple, conversational prompts. [1, 2, 3]

More details are here:

https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-omni

Gemini Omni

and here:

Start building with Nano Banana 2 Lite and Gemini Omni Flash

But wait- there is more!

Gemini Omni Flash Preview | Gemini Enterprise Agent Platform | Google Cloud Documentation

Haven’t You Done this One Before?

What is old is new.

This article extends a previous article covering using Antigravity CLI with MCP servers. The original article is here:

Google Omni Flash Preview with MCP and Antigravity CLI

The same structured approach is used to enable Python MCP servers on Claude Code CLI.

This seems Pretty Basic- why even Bother?!

When configuring a new environment and new tools — the key to a successful deployment is to validate the basic building blocks for the approach. Python MCP servers allow CLI tools like Claude Code to be dynamically extended with a clear approach to enable minimal MCP tools. Before attempting more complicated MCP tools — a set of basic MCP commands with the simplest MCP protocol (stdio) is used to verify the functionality.

What is MCP?

Unless you have been living off grid without Internet- MCP is the new universal connector and next “Big Thing”.

More information is here:

What is Model Context Protocol (MCP)? A guide

Python MCP Documentation

The official GitHub Repo provides samples and documentation for getting started:

GitHub - modelcontextprotocol/python-sdk: The official Python SDK for Model Context Protocol servers and clients

Isn’t MCP overkill?

There are many ways to call the Omni models. Native MCP support in Claude Code opens up a new pathway to call the underlying Omni model.

So what is the Secret Sauce?

The Interactions API allows for a clean consistent call to the model.

The Interactions API is Google’s unified interface for building with Gemini AI models and autonomous agents. Rather than using multiple separate endpoints for text chat, tool use, image generation, or background agents, it provides a single, streamlined API to handle complex, stateful workflows. [1, 2, 3]

More information is here:

Interactions API | Gemini API | Google AI for Developers

and here:

Gemini Interactions API | Gemini API | Google AI for Developers

There is A Skill for That!

You can make the magic happen!

Interactions API: our primary interface for Gemini models and agents

npx skills add google-gemini/gemini-skills --skill gemini-interactions-api
Enter fullscreen mode Exit fullscreen mode

Setup the Basic Environment

At this point you should have a working Python environment and a working Claude Code CLI installation. The next step is to clone the GitHub samples repository with support scripts:

cd ~
git clone https://github.com/xbill9/omni-flash-video-agent-claude
Enter fullscreen mode Exit fullscreen mode

Then run init.sh from the cloned directory.

The script will attempt to determine your shell environment and set the correct variables:

cd omni-flash-video-agent-claude
source init.sh
Enter fullscreen mode Exit fullscreen mode

If your session times out or you need to re-authenticate- you can run the set_env.sh script to reset your environment variables:

cd omni-flash-video-agent-claude
source set_env.sh
Enter fullscreen mode Exit fullscreen mode

Variables like PROJECT_ID need to be setup for use in the various build scripts- so the set_env script can be used to reset the environment if you time-out.

Running the Python Code

First- switch the directory with the Python version of the MCP sample code:

xbill@penguin:~/omni-flash-video-agent-claude$ make install
pip install -r requirements.txt
Enter fullscreen mode Exit fullscreen mode

The project can also be linted:

xbill@penguin:~/omni-flash-video-agent-claude$ make lint
ruff check .
All checks passed!
ruff format --check .
4 files already formatted
mypy .
Success: no issues found in 4 source files
Enter fullscreen mode Exit fullscreen mode

Claude Code MCP Config

A sample MCP config file:

{
  "mcpServers": {
    "omni-video-agent": {
      "command": "/home/xbill/.pyenv/shims/python",
      "args": [
        "/home/xbill/omni-flash-video-agent-claude/server.py"
      ]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Validation with Claude Code CLI

The final connection test uses the CLI as a MCP client with the Python code providing the MCP server:

/mcp

   Manage MCP servers
   1 server

     Project MCPs (/home/xbill/omni-flash-video-agent-claude/.mcp.json)
   ❯ omni-video-agent · ✔ connected · 8 tools

Omni-video-agent MCP Server Status: ✔ connected
   Command: /home/xbill/.pyenv/shims/python
   Args: /home/xbill/omni-flash-video-agent-claude/server.py
   Config location: /home/xbill/omni-flash-video-agent-claude/.mcp.json
   Capabilities: tools
   Tools: 8 tools

   ❯ 1. View tools
     2. Reconnect
     3. Disable

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
   Tools for omni-video-agent
   8 tools

   ❯ 1. generate_video
     2. edit_video
     3. animate_image
     4. interpolate_images
   ↓ 5. generate_with_subjects

Enter fullscreen mode Exit fullscreen mode

Omni Video Management via MCP

The MCP tools provide a complete suite of agent-oriented operations for managing the Omni Video calls.

Overview of MCP tools :


Here's the help summary for the Gemini Omni Flash Video Agent MCP tools available in this project:

🎬 Available Tools

┌────────────────────────┬─────────────────────────────────────────────────────────┐
│ Tool │ What it does │
├────────────────────────┼─────────────────────────────────────────────────────────┤
│ generate_video │ Text prompt → new video │
├────────────────────────┼─────────────────────────────────────────────────────────┤
│ edit_video │ Statefully edit a prior video via its interaction ID │
├────────────────────────┼─────────────────────────────────────────────────────────┤
│ animate_image │ Animate a static local image with a motion prompt │
├────────────────────────┼─────────────────────────────────────────────────────────┤
│ interpolate_images │ Transition video between two keyframe images │
├────────────────────────┼─────────────────────────────────────────────────────────┤
│ generate_with_subjects │ Video featuring specific subjects from reference images │
├────────────────────────┼─────────────────────────────────────────────────────────┤
│ edit_user_video │ Upload a local video + edit it │
├────────────────────────┼─────────────────────────────────────────────────────────┤
│ upload_to_youtube │ Publish a local video to YouTube │
├────────────────────────┼─────────────────────────────────────────────────────────┤
│ get_help │ This summary │
└────────────────────────┴─────────────────────────────────────────────────────────┘

📦 Delivery Modes

- inline (default) — base64 bytes, fast for small clips (< 4MB)
- uri — Google File API, recommended for larger clips

Aspect ratios: 16:9 (landscape) or 9:16 (portrait).

💡 Prompting Tips for Cinematic Results

1. Scene layout — environment, subjects, clothing, spatial arrangement
2. Subject action — specific movement ("the cat slowly sips its tea")
3. Camera & motion — panning, tracking shot, crane shot, slow zoom
4. Lighting & mood — volumetric light, golden hour, cyberpunk neon
5. Style — photorealistic 3D, Pixar-style, macro photography, 2D vector

Want me to generate, edit, or animate something? Just describe the video you have in mind (or point me at a local image/video file) and I'll take it from there.
Enter fullscreen mode Exit fullscreen mode

We have Lift Off!

Finally- the MCP tools are now available for working with the Omni models:

generate video- Called omni-video-agent

Done! The clip was generated and saved.

📹 Output: /home/xbill/omni-flash-video-agent-claude/gen_1783349792.mp4
🆔 Interaction ID: v1_ChdIY0pMYXRIYk81ak0tOFlQX04tdWtRVRIXSGNKTGF0SGJPNWpNLThZUF9OLXVrUVU

It shows the Claude Code mascot — a glowing orange starburst character, Pixar-style — standing in a futuristic data center with blue-lit server racks, holographic code streams, and a slow cinematic dolly-in as it waves.

A couple of things I can do next if you'd like:
- Edit it statefully (via edit_video) — e.g. change lighting, add motion, tweak the mascot's action. I have the interaction ID ready.
- Upload to YouTube as private/unlisted.

Note: since you asked for an image but this toolset only produces video, if you specifically need a still frame I can grab one from the clip with ffmpeg. Want me to do that?

https://www.youtube.com/watch?v=VN96SWejRsw
Enter fullscreen mode Exit fullscreen mode


edit video with interactions ID

📹 Output: /home/xbill/omni-flash-video-agent-claude/edit_1783351815.mp4
🆔 New Interaction ID: v1_ChdIY0pMYXRIYk81ak0tOFlQX04tdWtRVRIXQmNwTGFxU0xOTmVOanJFUC1abldtUTQ

The Claude Code mascot is now rendered in blue, with the futuristic data center, server racks, and holographic code preserved.

https://www.youtube.com/watch?v=sfxY1cGeP4w
Enter fullscreen mode Exit fullscreen mode


❯ call mcp tool animate_image claude.webp

  Listed 1 directory

Found the file. Let me take a quick look so the motion prompt fits what's actually in the image.

  Read 1 file

It's a cute pixel-art orange blocky creature holding a small banana in its raised hand. I'll animate it with a playful, retro-game feel that suits the pixel style.

  Called omni-video-agent

Animated! The pixel-art creature is now bouncing and waving its banana in a looping 8-bit idle animation.

📹 Output: /home/xbill/omni-flash-video-agent-claude/animated_1783352756.mp4
🆔 Interaction ID: v1_ChdzczFMYXRxcU1mSFNZktsMU1rUHFLeUgyUWs

https://www.youtube.com/watch?v=nhCzd7fgUmM
Enter fullscreen mode Exit fullscreen mode


call mcp tool interpolate_images banana.webp claude.webp

  Listed 1 directory

Both files exist. Let me look at banana.webp so the transition prompt matches the actual keyframes.

  Read 1 file

Start frame is a pixel-art yellow banana with eyes; end frame is the orange blocky creature. I'll set up a smooth morph transition between them.

  Called omni-video-agent

Done! Created a pixel-art morph transition from the banana into the Claude mascot.


https://www.youtube.com/watch?v=atj2ythTQMw
Enter fullscreen mode Exit fullscreen mode


❯ call mcp tool generate with subjects banana.webp claude.webp

Both subject images are already confirmed present. I'll generate a scene featuring both the banana and the mascot together.

  Called omni-video-agent

Done! Generated a video featuring both subjects together.

📹 Output: /home/xbill/omni-flash-video-agent-claude/subject_1783354313.mp4
🆔 Interaction ID: v1_Chd4OU5MYXVIN0NvbXNqckVQM05EYzRROBIXeDlOTGF1SDdDb21zanJFUDNORGM0UTg

The banana and the Claude mascot adventure together as best friends through a colorful 8-bit side-scrolling game world — hopping across platforms, past coins and pixel flowers. 

https://www.youtube.com/watch?v=ibgve6EUVkQ
Enter fullscreen mode Exit fullscreen mode


❯ call mcp tool edit_user_video gen_1783349792.mp4 - make it steam punk

Called omni-video-agent

Done! The original data-center clip has been reimagined in a steampunk style.

📹 Output: /home/xbill/omni-flash-video-agent-claude/user_edit_1783354931.mp4
🆔 Interaction ID: v1_ChdNZFpMYXMza0F0aU8xTWtQcVpxUTRRWRIXTWRaTGFzM2tBdGlPMU1rUHFacVE0UVk

The sci-fi data center is now a Victorian mechanical hall of brass pipes, copper gears, and hissing steam, with the mascot reimagined as a clockwork brass-and-copper automaton — still waving.

https://www.youtube.com/watch?v=N-O4_YZcyyk
Enter fullscreen mode Exit fullscreen mode

One last thought- Where are Agents?

Where are the Agents?

The Claude CLI harness itself uses agents to manage the workflow.

The additional touch point for leveraging the MCP interface is that they all are exposed as MCP tools. The MCP tools can be called directly from Agent code or used as a template for Interactions API calls embedded in an Agent.

Summary

The strategy for using MCP with Omni and Claude CLI was validated with a incremental step by step approach.

A minimal stdio transport MCP Server was started from Python source code and validated with Claude CLI running as a MCP client in the same local environment. This Python server provided all of the management tools to interact with the Omni models.

Top comments (0)