Gemini Omni MCP
Provides tools to generate and edit videos using Google's Gemini Omni model, supporting text-to-video, image-to-video, reference images, and video editing with batch generation.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Gemini Omni MCPGenerate a 5-second video of a sunset over mountains"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.

Gemini Omni MCP
MCP server for Google's Gemini Omni Flash video model — text-to-video, image-to-video, reference-guided video, and conversational video editing with native audio, straight from your AI agent.
Setup
Get a Gemini API key from Google AI Studio, then add the server to your MCP config.
Claude Desktop / Claude Code / Cursor
Add to your MCP config (mcp.json / .claude.json / claude_desktop_config.json):
{
"mcpServers": {
"gemini-omni": {
"command": "uvx",
"args": ["gemini-omni-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key-here"
}
}
}
}Droid CLI
droid mcp add gemini-omni "uvx gemini-omni-mcp@latest" --env GEMINI_API_KEY=your-api-key-hereGenerated MP4s are saved to ~/gemini_omni_videos by default (set OUTPUT_DIR to change).
Related MCP server: veo-mcp-server
Features
Text-to-video: prompt-only MP4 generation with generated audio (music, ambience, SFX)
Image-to-video: animate a single reference image with motion and camera direction
Reference-to-video: up to 6 reference images to lock subjects, style, or props
Conversational editing: iterate on a generated video via
previous_interaction_id, or upload your own MP4 and edit itPrompt role tags:
<FIRST_FRAME>and<IMAGE_REF_N>bind reference images to rolesTiming cues:
[0-3s],[3-6s],[6-10s]direct the action beat by beatBatch generation: run multiple prompts in conservative parallel batches (max 4)
URI or inline delivery: robust Files API polling and download built in
Output is 720p 24fps MP4 with SynthID watermarking (preview-quality model).
Showcase
All videos below were generated by this server with gemini-omni-flash-preview, sound on.
Corgi on a hoverboard
A corgi wearing tiny goggles rides a glowing hoverboard through a neon-lit Tokyo street at night, rain reflections on the pavement, camera tracking alongside, single continuous shot, cinematic lighting, upbeat synthwave music.
https://github.com/user-attachments/assets/4b9a8e87-7db0-469d-a261-3c354f7fe9b8
Astronaut latte art
An astronaut in a white spacesuit pours latte art into a floating cup inside a cozy moon-base cafe, Earth visible through a large window, steam swirling in low gravity, slow dolly-in, warm lighting, gentle ambient cafe sounds.
https://github.com/user-attachments/assets/88072ef8-1ce4-4c80-a05a-bfb5531d1271
Origami ocean
An origami paper whale swims gracefully through a stylized paper-craft ocean, paper waves folding and unfolding, paper seagulls gliding above, soft sunlight, camera slowly orbiting, calm orchestral score.
https://github.com/user-attachments/assets/c1e31341-e53c-4a55-af12-d6bb9432dcf5
Tools
generate_video
Generates or edits one MP4 and returns JSON with video.path, interaction_id, and metadata.
Argument | Type | Description |
| string | Scene, motion, camera, lighting, mood, and audio direction |
| string? |
|
| string? |
|
| int? | Optional preview field, |
| list? | Up to 6 local image paths |
| string? | Local MP4 to upload and edit |
| string? |
|
| string? | Continue editing a generated video |
| bool? | Optional LLM prompt enhancement, default |
batch_generate
Runs multiple prompts in parallel batches, capped at 4.
Argument | Type | Description |
| list | One prompt per video |
| — | Shared across the batch, same semantics as |
| int? | Parallelism, capped at |
Configuration
Everything is configured through environment variables (or a local .env):
Variable | Default | Description |
| — | Required. |
|
| Where generated MP4s are saved |
|
|
|
|
|
|
| unset | Optional 3-10s target |
|
| Generation timeout in seconds |
|
| Seconds between Files API polls |
|
| Max seconds waiting for file activation |
|
| Max parallel generations |
|
| LLM-enhance prompts before generation |
|
| Logging level |
Prompting tips
Ask for a "single continuous shot" and "no scene cuts" for one-scene outputs.
Always include audio direction, for example "gentle ambient sound, no dialogue".
For edits, keep the prompt short and add "Keep everything else the same".
Use
<FIRST_FRAME>and<IMAGE_REF_N>tags to bind reference-image roles.Timing cues like
[0-3s],[3-6s], and[6-10s]work well.
Limitations
Preview model: 720p, 24fps, MP4 only, SynthID-watermarked.
System instructions, temperature, negative prompts, voice edits, YouTube sources, and multi-video reasoning are unsupported.
Uploaded-video editing is unavailable in some regions.
Development
git clone https://github.com/nikships/gemini-omni-mcp
cd gemini-omni-mcp
uv sync --all-extras
uv run ruff format .
uv run ruff check .
uv run mypy gemini_omni_mcp/
uv run pytest
uv buildReleases are automated: every push to main bumps the version and publishes to PyPI (see PUBLISHING.md).
License
Gemini Omni MCP is licensed under the MIT license. See LICENSE for details.
Available Tools
2 toolsbatch_generateA
Generate multiple Gemini Omni Flash videos in conservative parallel batches.
Use for storyboards, aspect-ratio comparisons, or reference-guided variations. Batch size defaults to configuration and is capped at 4 because video jobs are long. The JSON response includes per-prompt video.path, interaction_id, metadata, and errors.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | ||
| prompts | Yes | ||
| delivery | No | ||
| batch_size | No | ||
| aspect_ratio | No | ||
| enhance_prompt | No | ||
| duration_seconds | No | ||
| reference_image_paths | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behaviors: conservative parallel batching, batch size cap at 4, and response structure (video.path, interaction_id, etc.). It does not discuss authentication or rate limits, but the tool is a generator so destructive effects are minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief, with the primary action in the first sentence, followed by use cases and key constraints. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters and no schema descriptions, the description is incomplete for parameter semantics. It does mention the output format (JSON with specific fields) and batch behavior, but more detail on each parameter's role is needed for full contextual completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters. It only covers batch_size, aspect_ratio, and reference_image_paths implicitly. Other parameters like task, delivery, enhance_prompt, and duration_seconds are not mentioned, leaving the agent underinformed for 8 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates multiple Gemini Omni Flash videos in parallel batches. It explicitly mentions use cases like storyboards and aspect-ratio comparisons, distinguishing it from the sibling tool 'generate_video' which likely handles single video generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides specific usage scenarios (storyboards, comparisons, variations) and a rationale for batch size cap ('because video jobs are long'), guiding when to use. It implicitly excludes single-video use, but could be more explicit about when to prefer the sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_videoA
Generate or edit MP4 videos with Gemini Omni Flash.
Capabilities:
text_to_video: prompt-only video with generated audio.
image_to_video: one reference image plus motion and camera direction.
reference_to_video: multiple reference images for subjects, style, or props.
edit: use previous_interaction_id or input_video_path to edit existing video.
Parameters:
prompt: Describe the scene, motion, camera movement, lighting, mood, and audio.
task: text_to_video, image_to_video, reference_to_video, or edit. If omitted, inferred.
aspect_ratio: 16:9 landscape or 9:16 portrait.
duration_seconds: Optional 3 to 10 second target. If the API rejects this preview field, retry without it.
reference_image_paths: Up to 6 local images. Use or tags in the prompt for control.
input_video_path: Local MP4 to upload and edit through the Files API.
delivery: uri is recommended for generated MP4 files; inline is supported for smaller payloads.
previous_interaction_id: Continue editing a prior generated video.
enhance_prompt: Optional, default false. For edits, simple prompts usually work better.
Prompt tips:
Ask for "single continuous shot" and "no scene cuts" when you want one scene.
Include explicit audio direction such as "gentle ambient room tone, no dialogue".
For edits, say "Keep everything else the same".
Timing cues like [0-3s], [3-6s], [6-10s] are supported.
Limitations:
Output is MP4, currently 720p at 24fps, SynthID-watermarked, and preview quality.
System instructions, temperature, top_p, stop sequences, negative_prompt, voice edits, YouTube sources, and multi-video reasoning are unsupported.
Uploaded-video editing is unavailable in some regions.
Returns JSON including video.path, interaction_id, task, aspect_ratio, delivery, size, and URI metadata. After success, open video.path with the native OS video viewer.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | ||
| prompt | Yes | ||
| delivery | No | ||
| aspect_ratio | No | ||
| enhance_prompt | No | ||
| duration_seconds | No | ||
| input_video_path | No | ||
| reference_image_paths | No | ||
| previous_interaction_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses limitations (720p, 24fps, watermark, preview quality), unsupported features, region restrictions, and post-success behavior (open video.path). Annotations absent, so description carries full burden and does well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections and bullets, but lengthy. Front-loads purpose. Every sentence adds value, but slight redundancy in parameter listing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers capabilities, parameters, prompt tips, limitations, return values. Output schema exists, but description adds detailed return structure. Complete for a complex tool with 9 parameters and a sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 9 parameters are individually described with context, defaults, and usage nuances (e.g., duration_seconds retry, reference tags). Compensates fully for 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Generate or edit MP4 videos' and enumerates four specific capabilities (text_to_video, etc.). Distinguishes from sibling 'batch_generate' by focusing on single generation/editing tasks, though not explicitly contrasted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides task categories and prompt tips, but lacks explicit guidance on when to use vs. batch_generate or when to avoid. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The two tools serve completely distinct purposes: batch_generate for parallel multi-video generation and generate_video for single video creation/editing. There is no overlap in functionality, ensuring clear differentiation.
Both tool names follow a consistent verb_noun pattern in snake_case (generate_video, batch_generate). The naming style is uniform, making it predictable for agents.
With only two tools, the server is narrowly scoped but appropriate for its focused purpose of video generation. The tools cover both single and batch workflows without unnecessary bloat.
The tool surface covers the core generation lifecycle (text-to-video, image-to-video, reference-to-video, editing) and batch processing. Minor gaps exist (no listing of previous interactions or deletion), but these are not essential for the domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for MiniMax H3 multimodal video generation
MCP server for Google Veo AI video generation
MCP server for Wan AI video generation
MCP server for Hailuo (MiniMax) AI video generation
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server that exposes Google's Veo2 video generation capabilities, allowing clients to generate videos from text prompts or images.732MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for 4K video generation using Google VEO 3.1 — text-to-video, image-to-video, video extension, and frame interpolation.1MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for generating images and videos using Google Gemini and VEO models, with support for multiple AI models and credential modes.1Apache 2.0
- AlicenseAqualityAmaintenanceProduction-grade MCP server for image and video understanding and generation across Gemini, OpenAI, and Grok.54Apache 2.0
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/nikships/gemini-omni-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server