studiomeyer-io avatar

StudioMeyer Video

studiomeyer-io/mcp-video

This is a full-featured video production pipeline wrapped as eight MCP tools. It uses Playwright for 60fps frame-by-frame website recording with cinema easing curves, ffmpeg for encoding and editing (speed changes, keyframing, picture-in-picture), and supports color grading with 22 LUT presets, auto-captioning via Whisper, and TTS narration through ElevenLabs or OpenAI. The smart screenshot tool detects UI elements like chat widgets and pricing sections. You can record a product demo, add synchronized voiceover, apply cinematic color, and export to social formats (Instagram Reel, TikTok, YouTube Short) in one workflow. Built by StudioMeyer in Mallorca, runs on stdio or HTTP, requires ffmpeg and Playwright browsers.

GitHub stars
4
tools
18
transport
STDIO
last updated
Nov 1, 2026

Tools

18 tools

Public tool metadata for what this MCP can expose to an agent.

get_job_resultCheck job status and result. Poll every 60 seconds — do NOT poll more frequently. Video processing typically takes 3-5 minutes. Progress may stay at 20% during frame analysis for 1-3 minutes — this is completely normal. Do NOT interpret slow progress as failure. Only report fa...3 params

Check job status and result. Poll every 60 seconds — do NOT poll more frequently. Video processing typically takes 3-5 minutes. Progress may stay at 20% during frame analysis for 1-3 minutes — this is completely normal. Do NOT interpret slow progress as failure. Only report fa...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
db_job_idstring
Use when different from job_id (e.g. for video_url). Usually same as job_iddefault:
job_idstring
The job_id returned by a start/narrate tool
get_upload_urlGET A SIGNED UPLOAD URL for uploading a local video to NarrateAI cloud storage. Use this ONLY when running in HTTP/remote mode and the user has a local video file. After getting the URL, upload the file with curl, then pass the returned temp_file_path to any processing tool as...2 params

GET A SIGNED UPLOAD URL for uploading a local video to NarrateAI cloud storage. Use this ONLY when running in HTTP/remote mode and the user has a local video file. After getting the URL, upload the file with curl, then pass the returned temp_file_path to any processing tool as...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
filenamestring
Original filename of the video (e.g. 'demo.mp4')
generate_narration_scriptNARRATION SCRIPT – generates an AI-written timed script for a SILENT video. No audio output. Use when the user wants a timed narration script, text-only narration, or sync data for a silent video. This does NOT extract existing speech (use transcribe_video for that). This does...4 params

NARRATION SCRIPT – generates an AI-written timed script for a SILENT video. No audio output. Use when the user wants a timed narration script, text-only narration, or sync data for a silent video. This does NOT extract existing speech (use transcribe_video for that). This does...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
languagestring
Language code for narration (en, es, fr, de, etc.)default: en
manual_contextstring
Optional description of the video for better narrationdefault:
video_sourcestring
Public URL (http/https) or local file path of the video
narrate_video_fullFULL NARRATED VIDEO – produces a downloadable video with AI voiceover. Use when the user wants: "narrate this video", "add voiceover", "make a narrated video". VOICE OPTIONS — ask the user which they prefer: 1. AI voice: male1 (default, fastest), female1 (default, fastest), fe...6 params

FULL NARRATED VIDEO – produces a downloadable video with AI voiceover. Use when the user wants: "narrate this video", "add voiceover", "make a narrated video". VOICE OPTIONS — ask the user which they prefer: 1. AI voice: male1 (default, fastest), female1 (default, fastest), fe...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
languagestring
Language code (en, es, fr, de, etc.)default: en
manual_contextstring
Optional description of the video for better narrationdefault:
video_sourcestring
Public URL (http/https) or local file path of the video
voice_samplestring
Path or URL to audio file for voice cloning (overrides voice_type)default:
voice_typestring
AI voice preset: male1, female1, female2, female3, female4, male2, male3default:
abandon_jobAbandon/cancel a processing job. Call this when the user cancels on the agent side. Stops the backend from continuing audio generation and video assembly. Use after narrate_video_transcript or when continue_to_full_video was started but user cancelled. Returns: JSON with succe...2 params

Abandon/cancel a processing job. Call this when the user cancels on the agent side. Stops the backend from continuing audio generation and video assembly. Use after narrate_video_transcript or when continue_to_full_video was started but user cancelled. Returns: JSON with succe...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
job_idstring
The db_job_id or job_id of the job to cancel
transcribe_videoTRANSCRIPTION ONLY – video with existing voice -> speech-to-text -> timed transcript. No translation, no narrated video. Returns original speech as-is. Use when the user wants to transcribe a video that already has spoken audio (podcast, interview, meeting recording, etc.). CR...3 params

TRANSCRIPTION ONLY – video with existing voice -> speech-to-text -> timed transcript. No translation, no narrated video. Returns original speech as-is. Use when the user wants to transcribe a video that already has spoken audio (podcast, interview, meeting recording, etc.). CR...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
source_languagestring
Language of the speech in the video (REQUIRED). Ask user if not specified
video_sourcestring
Public URL (http/https) or local file path of the video
transcribe_and_translateTRANSCRIBE & TRANSLATE (new upload) – video with voice -> speech-to-text -> translate -> translated transcript. No TTS, no video output. Returns translated timed transcript only. Use when the user uploads a new video and wants a translated transcript (e.g. Spanish podcast -> E...4 params

TRANSCRIBE & TRANSLATE (new upload) – video with voice -> speech-to-text -> translate -> translated transcript. No TTS, no video output. Returns translated timed transcript only. Use when the user uploads a new video and wants a translated transcript (e.g. Spanish podcast -> E...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
source_languagestring
Language of the speech in the video (REQUIRED)
target_languagestring
Language to translate to (REQUIRED)
video_sourcestring
Public URL (http/https) or local file path of the video
translate_existing_videoTRANSLATION (existing video) – Translate transcript of a video already in the user's library. Loads transcript from cloud, translates, returns. No upload. Sync – returns immediately. Use when the user wants to translate a video they already narrated/dubbed with NarrateAI (e.g....4 params

TRANSLATION (existing video) – Translate transcript of a video already in the user's library. Loads transcript from cloud, translates, returns. No upload. Sync – returns immediately. Use when the user wants to translate a video they already narrated/dubbed with NarrateAI (e.g....

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
job_idstring
The job_id of the completed video from user's library
source_languagestring
Language of the current transcript (REQUIRED)
target_languagestring
Language to translate to (REQUIRED)
dub_video_fullFULL AUTO-DUBBING – transcribe -> translate -> extract speaker voice -> TTS with cloned voice -> dubbed video. No refinement screen. Uses the video's own speaker voice for the dubbed audio. Use when the user wants a complete dubbed video (e.g. Spanish video -> English dubbed)....5 params

FULL AUTO-DUBBING – transcribe -> translate -> extract speaker voice -> TTS with cloned voice -> dubbed video. No refinement screen. Uses the video's own speaker voice for the dubbed audio. Use when the user wants a complete dubbed video (e.g. Spanish video -> English dubbed)....

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
preserve_background_musicboolean
Keep background music (true) or replace with silence (false)
source_languagestring
Language of the speech in the video (REQUIRED)
target_languagestring
Language to dub into (REQUIRED)
video_sourcestring
Public URL (http/https) or local file path of the video
generate_documentDOCUMENT GENERATION – produces a structured markdown document from a silent video. Use when the user wants: a document, article, guide, tutorial, or written content based on a video. NOT for narrated video or voiceover. The agent MUST ask which document type the user wants bef...5 params

DOCUMENT GENERATION – produces a structured markdown document from a silent video. Use when the user wants: a document, article, guide, tutorial, or written content based on a video. NOT for narrated video or voiceover. The agent MUST ask which document type the user wants bef...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
document_typestring
Document type: user_onboarding, tutorial_guide, feature_showcase, business_overview, or product_documentationdefault: user_onboarding
languagestring
Language code (en, es, fr, de, etc.)default: en
manual_contextstring
Optional description of the video for better document generationdefault:
video_sourcestring
Public URL (http/https) or local file path of the video
generate_ttsTEXT-TO-SPEECH – generate audio from text. Returns a downloadable audio URL. Use when the user wants: "read this aloud", "generate speech", "text to speech", "convert text to audio", "make an audio file from this text". VOICE OPTIONS — ask the user which they prefer: 1. AI voi...5 params

TEXT-TO-SPEECH – generate audio from text. Returns a downloadable audio URL. Use when the user wants: "read this aloud", "generate speech", "text to speech", "convert text to audio", "make an audio file from this text". VOICE OPTIONS — ask the user which they prefer: 1. AI voi...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
languagestring
Language code (en, es, fr, de, etc.)default: en
textstring
The text to convert to speech
voice_samplestring
Path or URL to audio file for voice cloning (overrides voice_type)default:
voice_typestring
AI voice preset: male1, female1, female2, female3, female4, male2, male3default: male1
narrate_batchBATCH NARRATION – narrate multiple videos in parallel. Each gets a full narrated video with voiceover. Use when the user has multiple videos to narrate (e.g. "narrate these 3 videos"). Maximum 5 videos per batch. Each video is processed independently – one failure does not aff...6 params

BATCH NARRATION – narrate multiple videos in parallel. Each gets a full narrated video with voiceover. Use when the user has multiple videos to narrate (e.g. "narrate these 3 videos"). Maximum 5 videos per batch. Each video is processed independently – one failure does not aff...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
contexts_jsonstring
JSON array of per-video contexts matching video order, e.g. '["context1", "", "context3"]'default:
languagestring
Language code (en, es, fr, de, etc.). Applies to all videosdefault: en
manual_contextstring
Shared context for ALL videos. Ignored if contexts_json is provideddefault:
video_sources_jsonstring
JSON array of video URLs or paths, e.g. '["url1.mp4", "url2.mp4"]'. Max 5
voice_typestring
AI voice preset: male1, female1, female2, female3, female4, male2, male3default:
batch_generate_scriptsBATCH SCRIPT GENERATION – generate AI narration scripts for multiple silent videos in parallel. Each video gets a timed narration script (text only, no audio). Maximum 5 videos per batch. One failure does not affect others. CRITICAL – Context handling: Before calling, ask the...5 params

BATCH SCRIPT GENERATION – generate AI narration scripts for multiple silent videos in parallel. Each video gets a timed narration script (text only, no audio). Maximum 5 videos per batch. One failure does not affect others. CRITICAL – Context handling: Before calling, ask the...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
contexts_jsonstring
JSON array of per-video contexts matching video orderdefault:
languagestring
Language code (en, es, fr, de, etc.). Applies to all videosdefault: en
manual_contextstring
Shared context for ALL videos. Ignored if contexts_json is provideddefault:
video_sources_jsonstring
JSON array of video URLs or paths, e.g. '["url1.mp4", "url2.mp4"]'. Max 5
batch_transcribeBATCH TRANSCRIPTION – transcribe speech from multiple videos in parallel. Each video must have existing spoken audio. Returns timed transcript per video. CRITICAL: source_language is REQUIRED – ask user if not specified. Applies to all videos. Maximum 5 videos per batch. One f...3 params

BATCH TRANSCRIPTION – transcribe speech from multiple videos in parallel. Each video must have existing spoken audio. Returns timed transcript per video. CRITICAL: source_language is REQUIRED – ask user if not specified. Applies to all videos. Maximum 5 videos per batch. One f...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
source_languagestring
Language of the speech in ALL videos (REQUIRED)
video_sources_jsonstring
JSON array of video URLs or paths, e.g. '["url1.mp4", "url2.mp4"]'. Max 5
batch_dubBATCH DUBBING – dub multiple videos into another language in parallel. Each video gets full auto-dubbing (transcribe -> translate -> voice clone -> dubbed video). CRITICAL: source_language, target_language, preserve_background_music are REQUIRED – ask user. All videos share th...5 params

BATCH DUBBING – dub multiple videos into another language in parallel. Each video gets full auto-dubbing (transcribe -> translate -> voice clone -> dubbed video). CRITICAL: source_language, target_language, preserve_background_music are REQUIRED – ask user. All videos share th...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
preserve_background_musicboolean
Keep background music (true) or replace with silence (false)
source_languagestring
Language of the speech in ALL videos (REQUIRED)
target_languagestring
Language to dub into (REQUIRED)
video_sources_jsonstring
JSON array of video URLs or paths, e.g. '["url1.mp4", "url2.mp4"]'. Max 5
update_transcriptUPDATE TRANSCRIPT – edit the narration script before continuing to full video. Use after generate_narration_script returns a transcript and the user wants to change wording, timing, or content of specific segments. The user describes changes naturally; you apply them and call...5 params

UPDATE TRANSCRIPT – edit the narration script before continuing to full video. Use after generate_narration_script returns a transcript and the user wants to change wording, timing, or content of specific segments. The user describes changes naturally; you apply them and call...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
job_idstring
The job_id from generate_narration_script, list_videos, or translate_existing_video
reset_for_reprocessingboolean
Set true to reset a completed video for re-narration (e.g. after translation)default: false
target_languagestring
Language of the new transcript (required when reset_for_reprocessing is true)default:
transcript_jsonstring
Full transcript as JSON array, e.g. '[{"start_time": 0.0, "end_time": 2.5, "text": "Welcome"}]'
list_videosLIST VIDEOS – get the user's video library (previously processed videos). Use when the user wants to see their existing videos, re-translate a previously narrated video, or work with videos they already processed. Returns paginated list with job IDs, filenames, status, and tim...3 params

LIST VIDEOS – get the user's video library (previously processed videos). Use when the user wants to see their existing videos, re-translate a previously narrated video, or work with videos they already processed. Returns paginated list with job IDs, filenames, status, and tim...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
pageinteger
Page number for paginationdefault: 1
per_pageinteger
Results per page (max 100)default: 20
continue_to_full_videoContinue from transcript to full narrated video. Use after generate_narration_script returns a transcript and the user is satisfied with it. VOICE OPTIONS — ask the user which they prefer: 1. AI voice: male1 (default, fastest), female1 (default, fastest), female2, female3, fem...5 params

Continue from transcript to full narrated video. Use after generate_narration_script returns a transcript and the user is satisfied with it. VOICE OPTIONS — ask the user which they prefer: 1. AI voice: male1 (default, fastest), female1 (default, fastest), female2, female3, fem...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
db_job_idstring
The db_job_id from the transcript step (for video URL retrieval)default:
job_idstring
The job_id from generate_narration_script or narrate_video_full
voice_samplestring
Path or URL to audio file for voice cloning (overrides voice_type)default:
voice_typestring
AI voice preset: male1, female1, female2, female3, female4, male2, male3default:

Sponsors

Readme

Part of the StudioMeyer MCP Stack — Built in Mallorca 🌴 · ⭐ if you use it

mcp-video

npm version npm downloads License Last commit GitHub stars

**Cinema-grade video production for AI agents.**

View the full README on GitHub

Details

Repository
github.com/studiomeyer-io/mcp-video
Category
Media & Entertainment
Package
@studiomeyer/mcp-video
Transport
STDIO
Registry
MCP registry, active

More from studiomeyer-io

Related Media & Entertainment MCP servers

View all
1csoai-org avatarVoice Audio Mcpcsoai-org/voice-audio-mcpVoice Audio MCP server. Tools: text to speech, list voices, transcribe. Built by MEOK AI Labs.1stars
2ykshah1309 avatarLive Audio Intelligenceykshah1309/live-audio-intelligence-mcpLive webcast transcription + vocal stress analysis (F0 jitter, hesitation) for earnings calls.1stars
3socialapi-ai avatarSocialapisocialapi-ai/mcp-socialapiMCP server for SocialAPI — manage social media comments, DMs, reviews, and mentions across platforms0stars
4brightwayai avatarVideo Analyzerbrightwayai/video-analyzerAnalyze videos: extract frames, transcribe audio, generate storyboard breakdowns.0stars
5davidmosiah avatarYouTube Shorts Agentdavidmosiah/youtube-shorts-agentAgent-first YouTube Shorts uploader: dry-run validation, OAuth checks, synthetic-media metadata.0stars
6jxoesneon avatarGemini Audio Mcpjxoesneon/gemini-audio-mcpHigh-performance audio, music, and voice generation MCP server for Gemini 2.5 and Lyria 3.0stars