# Claude Code and MCP are changing how we handle media assets in

> Source: <https://promptcube3.com/en/threads/2841/>
> Published: 2026-07-24 17:46:55+00:00

# Claude Code and MCP are changing how we handle media assets in

`omni-skill-agy`

into my local workflow to wrap this model into a FastMCP server, making it a usable skill for the Antigravity CLI. Instead of fighting with a web UI, you can just tell your agent to "generate a video of a fox running through snow" and then follow up with "make it nighttime" without the scene resetting.## The Technical Mechanics of Omni Flash

The "Omni" capability means the model handles mixed multimodal inputs in a single request. It doesn't just take text; it processes a list of parts including base64 images and documents (videos) uploaded via the [Gemini](/en/tags/gemini/) File API. This allows for five distinct workflows:

**Text-to-Video:** Standard generation in 16:9 or 9:16.**Image-to-Animation:** Taking a still and adding a motion prompt (e.g., "the group smiles").**Keyframe Interpolation:** Using two images and a transition prompt to fill the gap.**Subject Consistency:** Using reference images to keep characters consistent across scenes.**Video Restyling:** Taking an external video and re-rendering it (e.g., "convert this to Pixar style").

The secret sauce is the

`store=True`

parameter. When enabled, the API returns an **interaction ID**. Any subsequent call referencing that ID allows the model to retrieve the stored visual state, enabling iterative refinement.

## Implementation: [MCP](/en/tags/mcp/) Server and Tool Calls

To make this work within an AI workflow, the MCP server maps these capabilities to specific tool calls. If you're setting this up, you need to handle the synchronous nature of the API—these calls block until the video is rendered.

Here is a conceptual look at how the tool parameters are structured for a stateful edit:

```
{
  "tool": "generate_video",
  "parameters": {
    "prompt": "change the lighting to sunset",
    "interaction_id": "inter_abc123_xyz", 
    "store": true,
    "aspect_ratio": "16:9"
  }
}
```

In this snippet, the `interaction_id`

is the anchor. Without it, the model treats the request as a fresh start.

## Real-World Deployment Hurdles

If you're rolling this out for a team or a project, there are three constraints you can't ignore:

1. **Latency:** Generation is slow. Your agent needs to be configured to handle long-running requests without timing out.

2. **Cost:** It's billable per generation, so loop-based prompting can burn through credits fast.

3. **Payload Size:** Inline base64 works for small clips, but once you hit the ~4MB mark, you must use the File API for delivery to avoid crashes.

## From Scratch: Basic Setup

To get this running as an Antigravity skill, you'll need the `omni-skill-agy`

package. The deployment involves configuring your environment variables for the Gemini API and linking the MCP server to your CLI config.

```
# Install the package
pip install omni-skill-agy

# Set your API Key
export GEMINI_API_KEY="your_api_key_here"

# Run the MCP server to expose the skill to your agent
mcp-server-omni-flash
```

Once the server is live, your AI agent can trigger the `generate_video`

tool. I've found that the most effective prompt engineering for this specific model involves describing the *change* relative to the previous frame rather than re-describing the subject. Instead of saying "A fox in the snow at night," just say "Make it nighttime."

The addition of a YouTube upload tool in the same skill set completes the pipeline. You can move from a text prompt to a published video in a single sequence of tool calls, all while staying inside the terminal.

[Next Claude Code vs Gemini: My Stateful Image Workflow →](/en/threads/2817/)
