NIRA Video Production MCP server
Video production MCP: 55 tools — edit, grade, TTS captions, beat-sync, master, AI generate.
Usage numbers are collected on the next scan
Reviews
Write oneNobody has reviewed NIRA Video Production MCP yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
NIRA Video Production MCP tools (55, 5 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
ai_gen_cancelwrite actionCancel a running AI video generation job. Returns: {render_id, state}
ai_gen_falGenerate a video using a cloud AI model via fal.ai. model: kling-3.0 (best value), minimax-hailuo-2.3 (cheapest), luma-ray3 (best i2v), veo-3.1 (best quality), pika-2.2. image_path: optional reference image for image-to-video models. aspect_ratio: '16:9', '9:16', '1:1', '4:3'. Returns: {render_id, output_path, estimated_cost_usd} — background job.
ai_gen_list_modelsList all available AI video generation models with pricing and capabilities. Returns: {models: [...]}
ai_gen_statusCheck the status of an AI video generation job. Returns: {render_id, state, progress, output_path, error}
ai_gen_wan2gpGenerate a video using local Wan2GP (FREE, runs on your 4090). prompt: describe the video you want to generate. duration_frames: number of frames (81=~3s, 121=~5s at 24fps). resolution: '832*480' (fast) or '1280*720' (HD) or '480*832' (vertical). steps: 8 = fast draft, 20 = quality. nsfw_mode: True = adds NSFW LoRA (wan_general_nsfw_v3 at 1.75). image_path: optional input image for image-to-video
aud_add_musicAdd background music to a video, mixing with existing audio. music_volume: 0.1=very quiet background, 0.25=subtle, 0.5=equal mix. duck_under_voice: reduce music when original audio is loud (sidechain ducking). fade_out_s: music fade-out duration at end. Returns: {output_path}
aud_detect_beatsDetect BPM and beat timestamps for beat-synced video editing. Uses scipy STFT + autocorrelation (librosa-free, numpy 2.4 compatible). energy: 'low' (cut every 8 beats = slow/cinematic), 'medium' (every 4 beats = bar cuts), 'high' (every 2 beats = energetic). video_duration: if provided, filters cuts to within video length. Returns: {bpm, tempo_confidence, beat_times, cut_points, total_beats}
aud_duck_smartSmart sidechain audio ducking: music automatically ducks under voice/dialogue. video_path: video (or audio) containing the voice/narration track. music_path: background music file to duck. duck_db: how many dB to reduce music when voice is active. -12 = moderate, -20 = heavy. attack_ms/release_ms: how fast ducking engages and releases. Returns: {output_path, duck_db}
aud_extractExtract audio track from a video file. format: 'wav', 'mp3', 'aac', 'flac'. Returns: {output_path, duration_s}
aud_masterFull professional mastering chain: EQ → compression → limiting → EBU R128 loudnorm. style: 'music' (-14 LUFS, presence boost, punchy comp), 'podcast' (-16 LUFS, speech-optimised), 'broadcast' (-23 LUFS, EBU R128 strict). target_lufs: override loudness target (ignored if style is 'broadcast'). Works on audio files and video files (passes video stream through unchanged). Returns: {output_path, style
aud_mixMix multiple audio/video files' audio tracks together. input_paths: up to 8 files to mix. volumes: per-track volume multipliers (1.0 = unity). Defaults to equal mix. Returns: {output_path}
aud_normalizeNormalize audio to a target loudness (EBU R128 two-pass). target_lufs: -16.0 = YouTube/streaming, -23.0 = broadcast/EBU R128, -14.0 = Spotify. Returns: {output_path, target_lufs}
aud_replaceReplace the audio track of a video with a new audio file. mix_original: 0.0 = completely replace, 0.3 = 30% original + 70% new audio. Returns: {output_path}
aud_silencewrite actionRemove audio from a video (mute / silent output). Returns: {output_path}
proj_createwrite actionCreate a named video project to track multiple clips and settings. name: project name (used as identifier). clips: optional list of initial clip paths to add. Returns: {project_id, name, clip_count}
proj_listList all projects, or get details for a specific project. project_id: if empty, lists all projects. If set, returns that project's clips. Returns: {projects: [...]} or {project: {..., clips: [...]}}
proj_renderRender all clips in a project as a single final video. Clips are concatenated in order with optional transitions between them. transition: 'none', 'fade', 'dissolve', 'wipeleft', 'wiperight'. music_path: optional background music track to add. Returns: {render_id, output_path} — runs as background job.
render_cancelwrite actionCancel a running background render job. render_id: the render_id of the job to cancel. Returns: {render_id, state}
render_listList all render jobs (running, completed, failed). Returns: {jobs: [...], counts: {running, done, failed, cancelled}}
render_statusCheck the status of any background render job. render_id: the render_id returned when a background job was started. Returns: {render_id, state, progress, output_path, error, description} States: pending, running, done, failed, cancelled
vid_chaptersEmbed chapter markers into a video file. chapters: list of {title: str, start_s: float} dicts. Example: [{"title": "Intro", "start_s": 0}, {"title": "Demo", "start_s": 30}] Returns: {output_path, chapter_count}
vid_chromakeywrite actionRemove green/blue screen and composite over a background. foreground_path: footage with green/blue screen. background_path: background video or image. key_color: 'green', 'blue', or hex like '0x3CB043'. similarity: 0.1 = tight key (needs clean lighting), 0.3 = loose key. blend: 0.0 = hard edge, 0.15 = soft anti-aliased edge. Returns: {output_path}
vid_concatConcatenate multiple video clips in order. input_paths: list of paths to concat (must all be same resolution/fps for stream-copy). re_encode: True = re-encode to ensure compatibility (recommended). Returns: {output_path, duration_s, clip_count}
vid_exportExport video with platform-optimized encoding preset. platform: youtube_4k, youtube_1080, youtube_shorts, tiktok, instagram_reels, instagram_feed, twitter, facebook, linkedin, prores_4444, prores_422, h265_4k, av1_web, gif, web_mp4, nirasynth_xxx. Returns: {output_path, platform, size_mb}
vid_export_hlsExport video as HLS adaptive bitrate ladder (for streaming). Creates 3 renditions: 1080p, 720p, 480p + master playlist. output_subdir: directory name inside OUTPUT_DIR for HLS files. Returns: {playlist_path, renditions}
vid_filterApply a raw FFmpeg -vf filter string to a video. filter_string: any valid FFmpeg video filter chain, e.g. 'eq=brightness=0.1:saturation=1.5' or 'gblur=sigma=5,vignette'. Returns: {output_path}
vid_glitchApply retro/glitch effects. style: 'vhs' = VHS tape look, 'rgb_split' = color channel separation, 'scanlines' = CRT scanline overlay, 'datamosh' = pixel smear effect. intensity: 1–15 (effect strength). Returns: {output_path}
vid_gradeApply a cinematic color grade preset. look: teal_orange, vintage_film, blockbuster, noir, warm_golden, cold_blue, lifted_blacks, flat. grain: 0=no grain, 5=subtle, 10=moderate, 18=heavy film grain. Returns: {output_path, look}
vid_grainAdd cinematic film grain. Luma-only (more authentic). strength: 5=subtle, 10=moderate, 18=heavy analog film. Returns: {output_path}
vid_halationAdd cinematic film halation — red/orange glow around bright highlights. strength: 0.2=subtle, 0.45=authentic film, 0.8=heavy. glow_radius: gaussian blur radius for glow spread (default 18). Returns: {output_path}
vid_inspectInspect a video file — returns duration, fps, resolution, codecs, size. path: absolute path inside workspace/input/output dirs.
vid_list_workspaceList video files available in the workspace/output directories. subdir: optional subdirectory name within OUTPUT_DIR to list. Returns dict with 'workspace', 'output', 'input' file lists.
vid_loopLoop a video clip N times or to fill a target duration. loop_count: number of times to repeat (-1 if using total_duration_s). total_duration_s: if > 0, loop until this duration is reached. Returns: {output_path, duration_s}
vid_lower_thirdAdd a professional animated lower third (name + job title) to a video. Accent bar slides in from left, then name and title fade up. Returns: {output_path}
vid_lutApply a .cube LUT file to a video. lut_path: path to .cube LUT file (must be in E:/NIRA_VIDEO_MCP/luts/ or workspace). intensity: 0.0–1.0 blend strength (1.0 = full LUT, 0.5 = 50% mix with original). chain_filters: optional additional -vf filters to append after LUT. Returns: {output_path}
vid_manim_renderRender a Manim Community animation from Python scene code. scene_code: complete Python source defining a Scene subclass. scene_class: name of the Scene class to render. quality: 'l'=480p, 'm'=720p, 'h'=1080p, 'k'=4K. Returns: {output_path, render_id} Runs as background job — poll render_status for completion.
vid_metadataRead or write video file metadata (title, artist, year, comment, etc.). read_only: True = just return current metadata, no output file. metadata: dict of key/value pairs to embed (e.g. {"title": "My Video", "year": "2026"}). Returns: {output_path} when writing, or {metadata} when reading.
vid_motion_blurAdd motion blur by blending adjacent frames (simulates 180° film shutter). frames: 2=subtle, 4=cinematic, 8=heavy blur (slow motion look). Returns: {output_path}
vid_overlayComposite one video over another (picture-in-picture / watermark). base_path: background video. overlay_path: video or image to composite on top. x, y: pixel offset for overlay (top-left corner). opacity: 0.0–1.0. start_s / end_s: time range when overlay is visible (-1 = full duration). Returns: {output_path}
vid_probeFull ffprobe JSON dump for a video — all streams, format metadata. Use vid_inspect for a quick summary.
vid_progress_barAdd an animated progress bar that fills across the video duration. position: 'top' or 'bottom'. color: hex color or named color. Returns: {output_path}
vid_resizeResize video to target dimensions. fit: 'contain' = letterbox/pillarbox (no crop), 'cover' = crop to fill, 'stretch' = distort to exact size. Returns: {output_path, width, height}
vid_reverseReverse a video clip (plays backwards). Audio is also reversed. Returns: {output_path}
vid_speedChange video playback speed. speed: 0.25 = 4x slow motion, 0.5 = 2x slow, 1.0 = normal, 2.0 = 2x fast, 4.0 = 4x fast. Audio is pitch-shifted accordingly. Returns: {output_path, duration_s, speed}
vid_stabilizeStabilize shaky video footage (two-pass vidstab). smoothing: 10=moderate, 30=smooth, 100=locked-off tripod look. shakiness: 1–10, how shaky the source is. Returns: {output_path, render_id} — runs as background job (may take a while).
vid_subtitlesAdd subtitles to a video from an SRT file. burn_in: True = render text into frames (compatible everywhere). False = add as soft subtitle track (MKV/MP4 container only). Returns: {output_path}
vid_text_overlayAdd animated text overlay to a video. position: 'center', 'top', 'bottom', 'top_left', 'top_right', 'bottom_left', 'bottom_right', or 'x=100:y=200'. animation: 'fade', 'slide_up', 'typewriter', 'none'. duration_s: -1 = entire video. Returns: {output_path}
vid_thumbnailExtract a single frame from a video as a JPEG image. timestamp_seconds: position in video to grab (default 1.0s). width: output thumbnail width in pixels (height auto-scaled).
vid_thumbnail_spriteGenerate a thumbnail sprite sheet (contact sheet) for video scrubbing UIs. interval_s: how many seconds between each thumbnail. thumb_width: width of each thumbnail in pixels. Returns: {output_path, count, columns}
vid_title_cardGenerate a standalone animated title card video (no input needed). Title slides up and fades in, then fades out. Use vid_concat to prepend it to another clip. Returns: {output_path, duration_s}
vid_transitionConcatenate two clips with an xfade transition between them. transition: fade, dissolve, wipeleft, wiperight, wipeup, wipedown, slideleft, slideright, slideup, slidedown, circlecrop, rectcrop, distance, radial, smoothleft, smoothright, smoothup, smoothdown, circleopen, circleclose, vertopen, vertclose, horzopen, horzclose, fadegrays, pixelize. duration_s: length of the crossfade (default 1.0s). Re
vid_trimTrim a video to a start/end time range. start_seconds: trim start (default 0). end_seconds: trim end (-1 = until end of file). re_encode: False = stream-copy (fast, may be slightly imprecise at cut points). True = re-encode (slow, frame-accurate). Returns: {output_path, duration_s}
vid_tts_captionGenerate TTS voiceover from script using ElevenLabs, mix with video, and optionally produce SRT caption file with word-level timestamps. Requires ELEVENLABS_API_KEY environment variable. voice_id: ElevenLabs voice ID. Default = Rachel (calm narration). Other voices: AZnzlk1XvdvUeBnXmlld (Domi), TxGEqnHWrfWFTfGW9XjX (Josh/deep). mix_volume: volume of TTS voice in final mix (1.0 = full, 0.7 = slight
vid_vignetteAdd a cinematic vignette (dark edges) to a video. strength: 0.2=subtle, 0.5=moderate, 0.8=heavy. Returns: {output_path}
vid_waveformGenerate an audio waveform image from a video file. Returns a PNG image showing the audio waveform.
Public scan report
scanner v0.1.9 · 2026-09-27 · same rubric, same numbers if you re-run it
- Code scan17 source files scanned20/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancerepository not readable: repo not found3/15
- Maintainer identityno repository or website to verify2/10
Findings (1)
- mediumsubprocess with shell=True
exec.shell-truenira_video_mcp-1.0.3/tools/ffmpeg_utils.py: …FFmpeg subprocess utilities. Never uses shell=True. """ import asyncio import json import …
Install NIRA Video Production MCP in Claude Code, Cursor or VS Code
claude mcp add nira-video-mcp -- uvx nira-video-mcp
NIRA Video Production MCP: common questions
- Is NIRA Video Production MCP server safe?
- Not recommended: it is graded D (48/100). Read the NIRA Video Production MCP safety report
- How do I install NIRA Video Production MCP?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does NIRA Video Production MCP need an API key?
- Yes. The registry entry asks for
FAL_KEY. - Is NIRA Video Production MCP maintained?
- The latest release is v1.0.3.
- What can I use instead of NIRA Video Production MCP?
- Servers from other publishers that do the same job: Rendobar MCP server, StudioMeyer Video MCP server and Kinocut MCP server. Compare all NIRA Video Production MCP alternatives.
Alternatives to NIRA Video Production MCP
Same job from other publishers: the closest match first, then the best rated.
RendobarTransform video, audio and images, and generate media from prompts. FFmpeg, captions, models.not reviewedGrowingA
StudioMeyer VideoVideo production: recording, editing, effects, captions, TTS, screenshots. 8 tools.not reviewedGrowingB- KinocutGuardrailed video editing for AI agents: FFmpeg, captions, effects, Hyperframes, and receipts.not reviewedEstablishedB
KiCad MCP ProProduction-grade MCP server for KiCad EDA—PCB design, DRC, simulation, BOM, DFM, and manufacturing.not reviewedEstablishedA
Oh My CassetteChat-driven AI video montage: beat-synced cuts, auto-matched music, subtitles, transitions.not reviewedGrowingC