VideoGen Advisor

VideoGen Advisor

A unified MCP server for video generation that intelligently routes requests to HeyGen (for avatar/presenter videos) or Google Veo (for creative/cinematic content).

Category
Visit Server

README

VideoGen Advisor

A unified MCP server for video generation that intelligently routes requests to either HeyGen (for avatar/presenter videos) or Google Veo (for creative/cinematic content).

Features

  • Intelligent Routing: Automatically selects the best service based on prompt content
  • HeyGen Integration: Avatar-based videos, custom voices, templates
  • Google Veo Integration: Cinematic content, image-to-video, creative visuals
  • Unified Interface: Single generate_video tool with automatic service selection
  • Full Control: Direct access to service-specific tools when needed

Installation

pip install m2ai-mcp-videogen-advisor

Configuration

Set your API keys as environment variables:

export HEYGEN_API_KEY=your_heygen_api_key_here
export GEMINI_API_KEY=your_gemini_api_key_here

Claude Desktop Configuration

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "videogen": {
      "command": "videogen-advisor",
      "env": {
        "HEYGEN_API_KEY": "your_heygen_key",
        "GEMINI_API_KEY": "your_gemini_key"
      }
    }
  }
}

Or run directly with Python:

{
  "mcpServers": {
    "videogen": {
      "command": "python",
      "args": ["-m", "videogen_mcp.server"],
      "env": {
        "HEYGEN_API_KEY": "your_heygen_key",
        "GEMINI_API_KEY": "your_gemini_key"
      }
    }
  }
}

Available Tools

Unified Interface (3 tools)

Tool Description
generate_video Generate video with intelligent routing to HeyGen or Veo
get_video_status Check job status (works for both services)
download_video Get download URL for completed video

HeyGen-Specific (6 tools)

Tool Description
list_avatars List available avatars (stock + custom)
list_voices List available voices for avatar videos
create_avatar_video Create video with specific avatar/voice
list_templates List available video templates
get_template_details Get template variables and details
generate_from_template Generate video from template

Veo-Specific (2 tools)

Tool Description
generate_creative_video Generate cinematic video with full Veo controls
generate_video_from_image Animate a static image into video

Usage Examples

Automatic Routing

"Create a video where someone presents our Q4 results"
→ Routes to HeyGen (presenter/speaking content)

"Cinematic aerial shot of mountains at sunset"
→ Routes to Veo (creative/visual content)

Explicit Service Selection

# Force HeyGen
generate_video(
    prompt="Create any video",
    service_hint="heygen"
)

# Force Veo
generate_video(
    prompt="A tutorial video",
    service_hint="veo"
)

HeyGen Avatar Video

# 1. List avatars and voices
avatars = list_avatars(filter_gender="female")
voices = list_voices(filter_language="en")

# 2. Create video
job = create_avatar_video(
    script="Hello! Welcome to our company.",
    avatar_id="Angela-inblackskirt-20220820",
    voice_id="1bd001e7e50f421d891986aad5158bc8",
    background={"type": "color", "value": "#0066CC"},
    aspect_ratio="16:9"
)

# 3. Poll for completion
status = get_video_status(job_id=job["job_id"], service="heygen")

# 4. Download when complete
result = download_video(job_id=job["job_id"], service="heygen")

Veo Creative Video

# Generate cinematic content
job = generate_creative_video(
    prompt="A slow dolly shot through a neon-lit Tokyo alley at night, rain reflections, cinematic color grading",
    negative_prompt="blurry, low quality, text overlays",
    aspect_ratio="16:9",
    duration=8,
    model="veo-3.1-generate-preview"
)

# Poll and download
status = get_video_status(job_id=job["job_id"], service="veo")
result = download_video(job_id=job["job_id"], service="veo")

Image to Video

# Animate a still image
job = generate_video_from_image(
    image_url="https://example.com/product-photo.jpg",
    prompt="Slow zoom in with subtle product rotation",
    duration=6
)

Routing Logic

The generate_video tool uses keyword detection to route requests:

HeyGen triggers (avatar/presenter content):

  • speak, present, explain, tutorial, avatar, host, narrator
  • talking, announce, introduce, walk through, demo, spokesperson

Veo triggers (creative/cinematic content):

  • cinematic, scene, visual, b-roll, animation, shot, footage
  • landscape, abstract, artistic, dramatic, aerial, timelapse

Ambiguous prompts default to Veo unless avatar/presenter language is detected.

Video Wait Times

  • HeyGen: 1-5 minutes (varies by content length)
  • Veo: 2-10 minutes (varies by complexity)

Poll get_video_status until status is completed or failed.

Error Handling

All tools return structured error objects:

{
  "error": true,
  "code": "QUOTA_EXCEEDED",
  "message": "API credits exhausted. Check your account."
}

Common error codes:

  • AUTH_FAILED - Invalid API key
  • QUOTA_EXCEEDED - API credits exhausted
  • INVALID_AVATAR / INVALID_VOICE - ID not found
  • CONTENT_BLOCKED - Safety filter triggered
  • VIDEO_NOT_READY - Generation still in progress
  • JOB_NOT_FOUND - Invalid job ID

Development

# Run tests
pytest

# Run tests with coverage
pytest --cov=videogen_mcp

# Type checking
mypy src/

# Linting
ruff check src/ tests/

License

MIT License

Credits

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured