MCP Veo 3 Video Generation Server
Provides video generation capabilities using Google's Veo 3 API through the Gemini API, enabling text-to-video and image-to-video generation with realistic motion and audio
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., "@MCP Veo 3 Video Generation Servergenerate a video of a sunset over mountains with birds flying"
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.
MCP Veo 3 Video Generation Server
A Model Context Protocol (MCP) server that provides video generation capabilities using Google's Veo 3 API through the Gemini API. Generate high-quality videos from text prompts or images with realistic motion and audio.
Features
🎬 Text-to-Video: Generate videos from descriptive text prompts
🖼️ Image-to-Video: Animate static images with motion prompts
🎵 Audio Generation: Native audio generation with Veo 3 models
🎨 Multiple Models: Support for Veo 3, Veo 3 Fast, and Veo 2
📐 Aspect Ratios: Widescreen (16:9) and portrait (9:16) support
❌ Negative Prompts: Specify what to avoid in generated videos
📁 File Management: List and manage generated videos
⚡ Async Processing: Non-blocking video generation with progress tracking
Related MCP server: Grok AI Image Generation MCP Server
Supported Models
Model | Description | Speed | Quality | Audio |
| Latest Veo 3 with highest quality | Slower | Highest | ✅ |
| Optimized for speed and business use | Faster | High | ✅ |
| Previous generation model | Medium | Good | ❌ |
📦 Installation Options
# Run without installing (recommended)
uvx mcp-veo3 --output-dir ~/Videos/Generated
# Install globally
pip install mcp-veo3
# Development install
git clone && cd mcp-veo3 && uv syncInstallation
Option 1: Direct Usage (Recommended)
# No installation needed - run directly with uvx
uvx mcp-veo3 --output-dir ~/Videos/GeneratedOption 2: Development Setup
Clone this directory:
git clone https://github.com/dayongd1/mcp-veo3 cd mcp-veo3Install with uv:
uv syncOr use the automated setup:
python setup.pySet up API key:
Get your Gemini API key from Google AI Studio
Create
.envfile:cp env_example.txt .envEdit
.envand add yourGEMINI_API_KEYOr set environment variable:
export GEMINI_API_KEY='your_key'
Configuration
Environment Variables
Create a .env file with the following variables:
# Required
GEMINI_API_KEY=your_gemini_api_key_here
# Optional
DEFAULT_OUTPUT_DIR=generated_videos
DEFAULT_MODEL=veo-3.0-generate-preview
DEFAULT_ASPECT_RATIO=16:9
PERSON_GENERATION=dont_allow
POLL_INTERVAL=10
MAX_POLL_TIME=600MCP Client Configuration
Option 1: Using uvx (Recommended - after PyPI publication)
{
"mcpServers": {
"veo3": {
"command": "uvx",
"args": ["mcp-veo3", "--output-dir", "~/Videos/Generated"],
"env": {
"GEMINI_API_KEY": "your_api_key_here"
}
}
}
}Option 2: Using uv run (Development)
{
"mcpServers": {
"veo3": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-veo3", "mcp-veo3", "--output-dir", "~/Videos/Generated"],
"env": {
"GEMINI_API_KEY": "your_api_key_here"
}
}
}
}Option 3: Direct Python
{
"mcpServers": {
"veo3": {
"command": "python",
"args": ["/path/to/mcp-veo3/mcp_veo3.py", "--output-dir", "~/Videos/Generated"],
"env": {
"GEMINI_API_KEY": "your_api_key_here"
}
}
}
}CLI Arguments:
--output-dir(required): Directory to save generated videos--api-key(optional): Gemini API key (overrides environment variable)
Available Tools
1. generate_video
Generate a video from a text prompt.
Parameters:
prompt(required): Text description of the videomodel(optional): Model to use (default: veo-3.0-generate-preview)negative_prompt(optional): What to avoid in the videoaspect_ratio(optional): 16:9 or 9:16 (default: 16:9)output_dir(optional): Directory to save videos (default: generated_videos)
Example:
{
"prompt": "A close up of two people staring at a cryptic drawing on a wall, torchlight flickering. A man murmurs, 'This must be it. That's the secret code.' The woman looks at him and whispering excitedly, 'What did you find?'",
"model": "veo-3.0-generate-preview",
"aspect_ratio": "16:9"
}2. generate_video_from_image
Generate a video from a starting image and motion prompt.
Parameters:
prompt(required): Text description of the desired motion/actionimage_path(required): Path to the starting image filemodel(optional): Model to use (default: veo-3.0-generate-preview)negative_prompt(optional): What to avoid in the videoaspect_ratio(optional): 16:9 or 9:16 (default: 16:9)output_dir(optional): Directory to save videos (default: generated_videos)
Example:
{
"prompt": "The person in the image starts walking forward with a confident stride",
"image_path": "./images/person_standing.jpg",
"model": "veo-3.0-generate-preview"
}3. list_generated_videos
List all generated videos in the output directory.
Parameters:
output_dir(optional): Directory to list videos from (default: generated_videos)
4. get_video_info
Get detailed information about a video file.
Parameters:
video_path(required): Path to the video file
Usage Examples
Basic Text-to-Video Generation
# Through MCP client
result = await mcp_client.call_tool("generate_video", {
"prompt": "A majestic waterfall in a lush forest with sunlight filtering through the trees",
"model": "veo-3.0-generate-preview"
})Image-to-Video with Negative Prompt
result = await mcp_client.call_tool("generate_video_from_image", {
"prompt": "The ocean waves gently crash against the shore",
"image_path": "./beach_scene.jpg",
"negative_prompt": "people, buildings, artificial structures",
"aspect_ratio": "16:9"
})Creative Animation
result = await mcp_client.call_tool("generate_video", {
"prompt": "A stylized animation of a paper airplane flying through a colorful abstract landscape",
"model": "veo-3.0-fast-generate-preview",
"aspect_ratio": "16:9"
})Prompt Writing Tips
Effective Prompts
Be specific: Include details about lighting, mood, camera angles
Describe motion: Specify the type of movement you want
Set the scene: Include environment and atmospheric details
Mention style: Cinematic, realistic, animated, etc.
Example Prompts
Cinematic Realism:
A tracking drone view of a red convertible driving through Palm Springs in the 1970s, warm golden hour sunlight, long shadows, cinematic camera movementCreative Animation:
A stylized animation of a large oak tree with leaves blowing vigorously in strong wind, peaceful countryside setting, warm lightingDialogue Scene:
Close-up of two people having an intense conversation in a dimly lit room, dramatic lighting, one person gesturing emphatically while speakingNegative Prompts
Describe what you don't want to see:
❌ Don't use "no" or "don't":
"no cars"✅ Do describe unwanted elements:
"cars, vehicles, traffic"
Limitations
Generation Time: 11 seconds to 6 minutes depending on complexity
Video Length: 8 seconds maximum
Resolution: 720p output
Storage: Videos are stored on Google's servers for 2 days only
Regional Restrictions: Person generation defaults to "dont_allow" in EU/UK/CH/MENA
Watermarking: All videos include SynthID watermarks
🚨 Troubleshooting
"API key not found"
# Set your Gemini API key
export GEMINI_API_KEY='your_api_key_here'
# Or add to .env file
echo "GEMINI_API_KEY=your_api_key_here" >> .env"Output directory not accessible"
# Ensure the output directory exists and is writable
mkdir -p ~/Videos/Generated
chmod 755 ~/Videos/Generated"Video generation timeout"
# Try using the fast model for testing
uvx mcp-veo3 --output-dir ~/Videos
# Then use: model="veo-3.0-fast-generate-preview""Import errors"
# Install/update dependencies
uv sync
# Or with pip
pip install -r requirements.txtError Handling
The server handles common errors gracefully:
Invalid API Key: Clear error message with setup instructions
File Not Found: Validation for image paths in image-to-video
Generation Timeout: Configurable timeout with progress updates
Model Errors: Fallback error handling with detailed messages
Development
Running Tests
# Install test dependencies
pip install pytest pytest-asyncio
# Run tests
pytest tests/Code Formatting
# Format code
black mcp_veo3.py
# Check linting
flake8 mcp_veo3.py
# Type checking
mypy mcp_veo3.pyContributing
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
📚 Links
MCP Docs: https://modelcontextprotocol.io/
Veo 3 API: https://ai.google.dev/gemini-api/docs/video
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
Documentation: Google Veo 3 API Docs
API Key: Get your Gemini API key
Issues: Report bugs and feature requests in the GitHub issues
Changelog
v1.0.1
🔧 API Fix: Updated to match official Veo 3 API specification
Removed unsupported parameters: aspect_ratio, negative_prompt, person_generation
Simplified API calls: Now using only model and prompt parameters as per official docs
Fixed video generation errors: Resolved "unexpected keyword argument" issues
Updated documentation: Added notes about current API limitations
v1.0.0
Initial release
Support for Veo 3, Veo 3 Fast, and Veo 2 models
Text-to-video and image-to-video generation
FastMCP framework with progress tracking
Comprehensive error handling and logging
File management utilities
uv/uvx support for easy installation
Built with FastMCP | Python 3.10+ | MIT License
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Appeared in Searches
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/dayongd1/mcp-veo3'
If you have feedback or need assistance with the MCP directory API, please join our Discord server