VideoGenerationMCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PIAPI_KEY | Yes | API key for PiAPI | |
| ELEVENLABS_KEY | Yes | API key for ElevenLabs | |
| OPENROUTER_API_KEY | No | Optional API key for OpenRouter (fallback for Hebrew transliteration) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| generate_kling_videoC | Generate a Kling Omni video (single prompt or multi-shot). |
| generate_seedance_videoA | Generate a Seedance video; auto-chain Hebrew BVAC lipsync when language is Hebrew. HEBREW (language="he") — this tool runs the ENTIRE BVAC chain itself; do NOT pre-build anything:
References split into human_image_urls (faces/people) and other_image_urls
(product/room/scene). Generated people MUST be private assets: human refs have
to be |
| verify_generated_audioA | Run the generated-video Scribe QA gate on a finished Seedance task. Use this after an async (wait=false) Hebrew lipsync job completes: pass the
original spoken |
| generate_seedance_first_lastB | Generate a Seedance video from a first (and optional last) frame image. |
| generate_elevenlabs_voiceoverB | Synthesize speech with ElevenLabs and write the audio to a temp file. |
| generate_musicA | Compose a music track with Eleven Music (3-600s) from a text prompt. For speech ads the bed must be COMPLEMENTARY, not the main event: prompt for minimal/low-key/background music ("soft, sparse, no melodic hook, low intensity"), keep force_instrumental=true so it never fights the voiceover, match duration_s to the video, then lay it under with mix_music_into_video (low gain + speech ducking). |
| generate_sound_effectA | Generate an ambient/diegetic sound-effect bed (0.5-30s) from a text prompt. Generation only — the caller mixes the bed onto the video locally with its own ducking recipe. Describe the soundscape concretely ("busy gym ambience: muffled crowd murmur, low machine hum"), pass the clip/ad runtime as duration_seconds, and keep loop=true for a seamless bed. |
| list_voicesA | List available ElevenLabs voices. |
| get_taskB | Fetch the current state of a PiAPI task. |
| transliterate_hebrewA | Transliterate Hebrew text to Latin (via LMStudio/OpenRouter LLM) for visual prompts. |
| upload_assetA | Register a private asset from a local path or public URL; return its asset://id. Local paths are first uploaded to a temporary public host for ingestion (the
asset persists on PiAPI ~days afterward, independent of that URL). If
|
| list_assetsB | List private assets (optionally filter by status: active,processing,failed). |
| get_assetA | Get a single asset's current state (refreshes its TTL). |
| delete_assetB | Delete a private asset. |
| stitch_videosA | Concatenate >= 2 clips (local paths or URLs, in order) into one MP4. Hard cuts; every clip is normalized to the first clip's resolution/fps so mixed specs concat cleanly. Use this for the final assembly of a multi-clip ad — do not shell out to ffmpeg concat yourself. |
| detect_beatsA | Detect tempo and beat times of an audio track — pure analysis, no output. Returns {"bpm": float, "beats": [seconds, ...]} with beat times ascending from the track start and covering the whole file. The tempo is reported at its lower octave, pinned into [min_bpm, max_bpm] (a track that reads as 172 BPM comes back as ~86) — pass the window to control which octave the grid lands on. Use this to beat-snap multi-clip seams onto a music bed before stitching. Silence / no detectable pulse returns {"bpm": 0.0, "beats": []} (not an error). |
| split_audioA | Cut a master voiceover mp3 at Returns len(points)+1 ordered segments with paths and durations. Workflow for
ads longer than one clip: generate ONE master VO with
generate_elevenlabs_voiceover (with_timestamps=true), pick sentence-boundary
timestamps, split here, then pass each segment's path as |
| mix_music_into_videoA | Lay a music bed under a video's existing speech/ambience audio. Gain is ADAPTIVE by default: both tracks are loudness-measured and the
music sits |
| trim_videoA | Frame-accurately cut a clip to an exact span (re-encode, not -c copy). Provide EITHER |
| retime_videoA | Stretch/compress a clip to hit a target duration (or explicit speed). Provide EITHER |
| mix_narrationA | Lay a voiceover as the PRIMARY audio over a (silent) video. The VO plays at full level and the video stream is copied untouched. An
optional |
| host_fileA | Host a local file on a temporary public URL (tmpfiles, ~1h retention). Use for non-asset references that need a provider-fetchable URL: a local
ElevenLabs mp3 going into |
| extract_frameA | Save one frame of a video (local path or URL) as PNG; default = LAST frame. Use the last frame of clip N as |
| burn_captionsA | Burn word-timed captions onto a video (local path, URL, or PiAPI task_id). Default flow transcribes the video's OWN audio with ElevenLabs Scribe (word
timestamps), groups words into short chunks (max_words per caption), and
burns styled overlays: white bold, black stroke, drop shadow, centered
low-third, Hebrew rendered in correct RTL visual order (English/brand
tokens stay LTR). Pass |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/AvivK5498/VideoGenerationMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server