This server exposes Veo's text-to-video, image-to-video, video extension, and styled video generation as MCP tools.
- Text-to-Video: Generate videos from text prompts
- Image-to-Video: Animate static images with optional frame interpolation
- Video Extension: Extend existing videos (Veo 3.1)
- Styled Generation: Use reference images for consistent style/characters (Veo 3.1)
- Multiple Models: Support for Veo 3.1, 3.0, and 2.0 models
# Clone the repository
git clone <repository-url>
cd veo-mcp-server
# Install with uv
uv pip install -e .
# Or install development dependencies
uv pip install -e ".[dev]"| Variable | Description | Default |
|---|---|---|
GOOGLE_API_KEY |
Google API key for Gemini Developer API | None (uses default auth) |
VEO_OUTPUT_DIR |
Directory for generated videos | ./generated_videos |
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"veo": {
"command": "uv",
"args": [
"--directory",
"/path/to/veo-mcp-server",
"run",
"veo-mcp-server"
],
"env": {
"GOOGLE_API_KEY": "your-api-key-here",
"VEO_OUTPUT_DIR": "/path/to/output/directory"
}
}
}
}Generate video from a text prompt.
Parameters:
prompt(required): Text description of the videomodel: Veo model to use (default:veo-3.1-generate-preview)aspect_ratio: "16:9" or "9:16" (default: "16:9")duration_seconds: "4", "6", or "8" (default: "8")resolution: "720p" or "1080p" (default: "720p")negative_prompt: Elements to excludenumber_of_videos: Number of videos to generate 1-4 (default: 1)
Example:
Generate a video of a sunset over the ocean with birds flying
Animate a static image into video.
Parameters:
prompt(required): Description of the animationimage_path(required): Path to the source imagemodel: Veo model to useaspect_ratio: Video aspect ratioduration_seconds: Video durationresolution: Video resolutionnegative_prompt: Elements to excludelast_frame_path: Optional path for final frame interpolation
Example:
Animate /path/to/image.jpg with the prompt "The character waves and smiles"
Extend an existing video (Veo 3.1 only).
Parameters:
prompt(required): Description for the extensionvideo_path(required): Path to the source videomodel: Veo model to use (default:veo-3.1-generate-preview)resolution: Video resolution
Example:
Extend /path/to/video.mp4 with "The scene continues as the sun rises"
Generate video using reference images for style consistency (Veo 3.1 only).
Parameters:
prompt(required): Video descriptionreference_image_paths(required): List of 1-3 image pathsreference_types: List of "asset" or "style" for each referencemodel: Veo model to useaspect_ratio: Video aspect ratioduration_seconds: Video durationresolution: Video resolutionnegative_prompt: Elements to exclude
Example:
Generate video with reference images ["/char.jpg", "/style.jpg"]
and types ["asset", "style"] with prompt "The character walks through the forest"
List all available Veo models and their capabilities.
Example:
List available Veo models
| Model | ID | Features |
|---|---|---|
| Veo 3.1 Preview | veo-3.1-generate-preview |
All features including reference images and video extension |
| Veo 3.1 Fast | veo-3.1-fast-generate-preview |
Speed-optimized Veo 3.1 |
| Veo 3.0 | veo-3.0-generate-001 |
Stable with native audio |
| Veo 3.0 Fast | veo-3.0-fast-generate-001 |
Fast stable version |
| Veo 2.0 | veo-2.0-generate-001 |
Basic video generation |
# Run all tests
uv run pytest
# Run specific test file
uv run pytest tests/test_models.py
# Run with coverage
uv run pytest --cov=veo_mcp_serverveo-mcp-server/
├── src/
│ └── veo_mcp_server/
│ ├── __init__.py
│ ├── server.py # MCP tools and entry point
│ ├── core.py # Business logic
│ └── models.py # Data models and enums
├── tests/
│ ├── test_models.py
│ └── test_core.py
├── docs/
│ └── implementation-plan.md
└── pyproject.toml
For detailed API documentation, see Google's Veo documentation.
Video generation typically takes 11 seconds to 6 minutes depending on complexity and server load. Progress is reported during generation.
Generated videos are stored on Google's servers for 2 days, after which they are automatically removed. Make sure to download generated videos promptly.
MIT
Contributions are welcome! Please open an issue or submit a pull request.