Skip to main content
Glama

Creator polish pipeline

One call for a publish-ready talk-head:

orient → denoise → BGM → captions → optional BG replace → export preset

Tool

What it does

run_talking_head_polish

Full recipe in one shot

process_audio

Denoise · gate · EQ · loudnorm

mix_bgm

Ambient pad under voice (ducking)

transcribe_and_caption

Whisper words + brand burn-in

replace_background

Matte + space / blur / solid plate

smart_cut_hesitations

Dead air & filler removal

export_render

youtube_16x9 · reels_9x16 · square_1x1

import_video

Bakes portrait rotation upright by default

from vidmcp.tools.creator import run_talking_head_polish

print(run_talking_head_polish(
    "talk.mov",
    preset="reels_9x16",
    bg_mode="space",   # none | space | blur | solid
    strength=0.75,
    bgm_volume=0.35,
))

MCP agents can also call apply_recipe(..., recipe_name="talking_head_polish") or free-text run_intent(...).

Agent context (tool packs + compact results)

Agents drown when MCP hosts load ~90 tool schemas and fat JSON. VidMCP defaults to a small surface:

Setting

Default

Purpose

VIDMCP_TOOL_PACK

talking_head

Expose only the tools for that product path

VIDMCP_COMPACT

1

Drop heavy keys / truncate long payloads

VIDMCP_MAX_RESULT_CHARS

4000

Hard cap on serialized tool results

Packs: talking_head · education · vfx · admin · all

run_intent("polish talk head for reels, space bg, cut fillers", video_path="talk.mov")
project_brief(project_id)          # prefer over full get_project
list_tool_packs() / set_tool_pack("vfx")
get_project(id, detail=true)       # full manifest only when needed

Recipes: talking_head_polish · talking_head_reels · talking_head_space · talking_head_tight · talking_head_infographics.

For full surface (debug): VIDMCP_TOOL_PACK=all.


Related MCP server: video-editor

Sample

GIF

MP4

Creator polish

gif

mp4

Flow field

gif

mp4

Tesseract

gif

mp4

Behind the subject

gif

mp4

Kinetic

gif

mp4

Unit circle

gif

mp4

Pipeline

gif

mp4


Install

Needs: Python 3.11+, ffmpeg, uv recommended

uv tool install vidmcp
vidmcp --doctor

# or
pip install 'vidmcp[creator]'   # + faster-whisper + mediapipe

MCP (Grok / Claude / Cursor)

# Grok
grok mcp add vidmcp \
  -e VIDMCP_SAM_BACKEND=mock \
  -e VIDMCP_WORKSPACE_ROOT=$HOME/vidmcp-workspaces \
  -e VIDMCP_TOOL_PACK=talking_head \
  -e VIDMCP_COMPACT=1 \
  -- uvx vidmcp
{
  "mcpServers": {
    "vidmcp": {
      "command": "uvx",
      "args": ["vidmcp"],
      "env": {
        "VIDMCP_SAM_BACKEND": "mock",
        "VIDMCP_WORKSPACE_ROOT": "/path/to/workspaces",
        "VIDMCP_TOOL_PACK": "talking_head",
        "VIDMCP_COMPACT": "1"
      }
    }
  }
}

Optional real matte on Apple Silicon:

pip install 'vidmcp[mlx]'
export VIDMCP_SAM_BACKEND=mlx
export VIDMCP_MLX_MODEL_ID=mlx-community/sam3.1-bf16

Core product

Segment

Text-prompt subject matte (SAM / MLX / MediaPipe / mock)

Compose

Effects behind the subject

Audio

Denoise, enhance, BGM duck, loudnorm

Captions

Whisper timeline + brand burn-in

Educate

Math plates + speech-locked scenes

Export

16:9 · 9:16 · 1:1 without stretch

create_project → import_video (orient)
  → process_audio → mix_bgm
  → segment_subject | replace_background
  → transcribe_and_caption → export_render

Prefer high-level paths: run_talking_head_polish · apply_recipe · run_quality_gated_pipeline.


Project layout

src/vidmcp/     MCP server, creator tools, perception, effects
demos/samples/  GIFs · MP4s for README & site
site/           vidmcp.com (static Hostinger)
configs/        Claude / Cursor snippets

Author

Dhiraj Lochib — Full-Stack, Blockchain, AI
dhirajlochib.com · GitHub · LinkedIn · dhirajch145@gmail.com


License

MIT

Available Tools

27 tools
add_graphicsD

Brand mograph overlays: lower_third, title_card, stat_counter, charts... lock='speech:'.

Inputs: items (required), project_id (required), brand. Returns: object

add_speech_infographicsC

Burn keyword/number infographic cards locked to transcript timing.

Inputs: project_id (required), topic. Returns: object

apply_cut_planC

Execute a cut plan with room-tone fill (no dead digital silence at cuts).

Inputs: plan_id (required), project_id (required), room_tone. Returns: object

apply_recipeC

Run a named production recipe (cyberpunk_talking_head, cinematic_bokeh, product_spotlight, rain_noir, ...).

Inputs: video_path (required), recipe_name (required), project_name, max_render_frames. Returns: object

create_projectC

Create a new non-destructive editing project. Optionally import a source video path.

Inputs: name, video_path. Returns: object

export_edlC

Export edit decision list JSON (source, audio pipeline, renders, history).

Inputs: project_id (required). Returns: object

export_multiB

One call → all platform variants (codec/size/loudness per target, reframe-aware).

Inputs: project_id (required), hw, targets. Returns: object

export_renderC

Export last render (or path) to preset: youtube_16x9 | reels_9x16 | square_1x1 | source.

Inputs: project_id (required), preset, loudnorm, render_path. Returns: object

generate_thumbnailC

Grab mid-frame thumbnail with title overlay from transcript.

Inputs: project_id (required), title. Returns: object

generate_thumbnailsC

A/B thumbnails: face/sharpness/color-scored frames + brand title styles + contact sheet.

Inputs: project_id (required), n, brand, title_variants. Returns: object

get_backend_infoA

Report active SAM backend (MLX/official/ultra/mock), multiplex flags, device, harness.

Inputs: no named parameters. Returns: object

get_projectB

Project info. Default is compact brief; detail=true returns full manifest (large).

Inputs: project_id (required), detail. Returns: object

import_videoA

Import (copy) a video into the project source folder.

bake_orientation: when True (default), bake displaymatrix rotation so portrait phone clips are upright for all downstream tools.

Inputs: project_id (required), video_path (required), bake_orientation. Returns: object

list_projectsA

List all projects in the workspace with status and source paths.

Inputs: no named parameters. Returns: object

list_recipesA

List named production recipes available to apply_recipe.

Inputs: no named parameters. Returns: object

list_tool_packsA

List agent tool packs: talking_head (default), education, vfx, admin, all.

Inputs: no named parameters. Returns: object

mix_bgmC

Mix copyright-safe ambient BGM under vocals (or user bgm_path). Ducking optional.

Inputs: project_id (required), duck, style, volume, +1 more. Returns: object

plan_cutsC

Cut plan v2: retakes, contextual fillers, dead-vs-dramatic pauses. Review before apply.

Inputs: project_id (required), aggressiveness, keep_dramatic_pauses. Returns: object

platform_healthA

Report installed backends (Whisper/SAM/Manim/Blender/FFmpeg) and readiness for education vs GPU paths.

Inputs: no named parameters. Returns: object

process_audioB

Denoise + enhance vocals + loudnorm. Writes audio/vocals_clean.wav on the project.

Inputs: project_id (required), strength, target_lufs. Returns: object

project_briefA

Compact project summary for agents (status, paths, next steps). Prefer over get_project.

Inputs: project_id (required), detail. Returns: object

replace_backgroundC

Cut out subject (MediaPipe/SAM) and composite over plate: space|blur|solid|image.

Inputs: project_id (required), plate, plate_image, matte_backend. Returns: object

run_intentA

Route free-text intent to the right pipeline (polish / recipe / education / VFX).

Examples: 'polish talk head for reels with space bg', 'tight cut no filler', 'cyberpunk behind speaker', 'teach Bayes with math plate'. dry_run=true returns the plan only. video_path required to execute.

Inputs: intent (required), preset, bg_mode, dry_run, +2 more. Returns: object

run_talking_head_polishA

ONE-SHOT creator polish: orient → denoise → BGM → optional cut/BG/captions/cards → export.

bg_mode: none | space | blur | solid preset: youtube_16x9 | reels_9x16 | square_1x1 | source Toggle stages with process_audio / mix_bgm / smart_cut / infographics / thumbnail.

Inputs: video_path (required), preset, bg_mode, mix_bgm, +10 more. Returns: object

set_tool_packA

Switch active tool pack and remove out-of-pack tools from this server process.

Expanding to a larger pack (e.g. all) after a smaller pack requires server restart with VIDMCP_TOOL_PACK set — removed tools cannot be re-registered mid-session.

Inputs: pack (required). Returns: object

smart_cut_hesitationsC

Remove dead air / long fillers (um, basically, …) using transcript + energy gaps.

Inputs: project_id (required), aggressiveness. Returns: object

transcribe_and_captionB

ASR word timeline + ASS captions; optionally burn into a new render (brand|karaoke|minimal).

Inputs: project_id (required), burn, style, language, +2 more. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.9/5.0

    Scored across 27 tools

    Disambiguation3/5

    Several tools have overlapping purposes, such as plan_cuts, apply_cut_plan, and smart_cut_hesitations all dealing with cutting/trimming, and generate_thumbnail vs generate_thumbnails. Descriptions help somewhat but agents may misselect.

    Naming Consistency3/5

    Tool names use a mix of verbs (add, apply, create, export, generate, get, import, list, mix, plan, process, project_brief, replace, run, set, smart_cut, transcribe) without a consistent pattern, making it harder to predict functionality.

    Tool Count3/5

    With 27 tools, the count is high but partially mitigated by the tool pack system that reduces the active set. However, the total number still feels heavy for a single server.

    Completeness5/5

    The tool set covers the full workflow from project creation to export, including audio, graphics, thumbnails, recipes, and health checks. There are no obvious gaps for its intended domain of video editing automation.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    Appeared in Searches