media MCP Server
Guardrailed video editing MCP server for AI agents. FFmpeg, Hyperframes, repurposing tools, Python client, and CLI. Local, fast, free.
Discovered via github-seeds:mcp-hot and last synced Today.
1. Install the package
uvx --from kinocut kino --mcp
2. Add to claude_desktop_config.json
{
"mcpServers": {
"mcp-video": {
"command": "uvx",
"args": [
"--from",
"kinocut",
"kino",
"--mcp"
]
}
}
}Config file location: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) / %APPDATA%\Claude\claude_desktop_config.json (Windows)
3
8
2
cinema, scroll, multi-device
subtitles, caption, overlay, animate
`./output`
`9847`
Operations
Description
capture, detect
speed, crop, reverse, keyframe, pip
grade, effect, lut, chroma
—
—
concat, intro, social, beat-sync, templates
`127.0.0.1`
generate, voices, narrated
`false`
extract, music, ducking, mix, voice
`false`
vignette, glow, noise, scanlines, chromatic aberration, luma key, mask, shape mask, bounded filter parameters
5
trim, merge, text, audio, resize, convert, filters, stabilize, chroma key, subtitles, watermark, batch, export, normalize audio
`search_tools` — keyword search across all tools
Audio (extraction)
5
Typed MCP / Python / CLI
extract colors, generate palettes, analyze product images
7
6
project scaffold, style-pack parsing, storyboard parsing, shot prompt expansion
18
1
trim, merge, resize, crop, rotate, convert, overlays, subtitles, export, cleanup, templates, merge-compatibility guardrails
grid, picture-in-picture, split-screen, animated text, counters, progress bars, auto-chapters, layout mismatch warnings
Approx. extra size
synthesize, compose, presets, effects, sequences, generated audio, spatial audio, mix-parameter guardrails
Count
Example prompt
What landed on `master`
Focus
Thin public discovery / Python adapters
resize
add_text
Raw FFmpeg in agent shell
Version / tip
transcription, scene detection, upscaling, stem separation, silence removal, color grading
still-match, still-grade, still-gate, image-edit, still-package — establish-locked color match with cohesion gate
merge
burn_in`) mapped 1:1 to the same vetted engine functions the individual tools use; media references are symbolic and workspace-confined; everything fails closed. ```json { "schema_version": 1, "name": "captioned-vertical-short", "sources": { "hero": { "path": "input/hero.mp4" } }, "steps": [ { "id": "trim-hero", "op": "trim", "inputs": { "src": "@sources.hero" }, "params": { "start": 0, "duration": 6 }, "output": "@work/hero_trim.mp4" }, { "id": "vertical", "op": "resize", "inputs": { "src": "@work/hero_trim.mp4" }, "params": { "width": 1080, "height": 1920 }, "output": "@work/hero_vertical.mp4" }, { "id": "caption", "op": "add_text", "inputs": { "src": "@work/hero_vertical.mp4" }, "params": { "text": "Watch this", "position": "bottom-center" }, "output": "@outputs.master" } ], "outputs": { "master": { "path": "output/final.mp4" } } } ``` ```bash kino workflow-validate --spec job.json # cheap structural gate, no render kino workflow-plan --spec job.json --save-plan plan.json # dry-run op graph + hashes kino workflow-render --spec job.json --save-receipt receipt.json # execute + provenance receipt kino workflow-inspect --receipt receipt.json # read-only integrity re-check ``` The render receipt records per-step input/output hashes, a resume cursor, and a cleanup manifest, all with workspace-relative paths: ```json { "receipt_kind": "workflow", "versions": { "mcp_video": "1.13.2", "ffmpeg": "8.1" }, "spec_hash": "sha256:be2f3a9b...", "steps": [ { "id": "trim-hero", "op": "trim", "status": "completed", "input_hashes": { "src": "sha256:3b976d49..." }, "output": "work/be2f3a9b-2effedb3/mcp_video_hero_trim.mp4", "output_hash": "sha256:00727499..." }, { "id": "caption", "op": "add_text", "status": "completed", "output": "output/final.mp4", "output_hash": "sha256:8633ad2a..." } ], "cleanup_manifest": { "cleaned": true, "policy": "clean-on-success" }, "resume_cursor": { "last_completed_step": "caption", "next_step": null }, "status": "completed", "render_determinism_scope": "spec/input/output hashes are deterministic; rendered bytes may vary across FFmpeg builds" } ``` `--all-variants` emits N distinct outputs from one declaration, and `--resume` continues a job that failed with its intermediates kept (fail-closed on a changed spec). Full schema, `@ref` grammar, variants, resume, and cleanup are in [docs/WORKFLOWS.md](docs/WORKFLOWS.md); a runnable spec is in [examples/workflows/](examples/workflows/captioned-vertical-short/). ## Governed AI-video review In **Kinocut**, a contract-first path is provided for agent-edited media that must stay attributable and reviewable: 1. **Ingest** the source into a private content-addressed project (`video_ingest` / `video-ingest`) 2. **Preflight + temporal inspection** on the stored asset (`video_preflight`, `video_inspect_temporal`) 3. **Verdict + acceptance** with exact human evidence (`video_verdict`, `video_acceptance_eval`) 4. **Bounded derivatives only** — audio-preserving body swap or allowlisted salvage recipes (`video_body_swap`, `video_salvage`), each with lineage and a fresh non-approved review slot There is no force/bypass flag. Analyzer output alone cannot approve. Stale, aliased, or protected inputs fail closed. Operating guide: [docs/AI_VIDEO_REVIEW_AND_SALVAGE.md](docs/AI_VIDEO_REVIEW_AND_SALVAGE.md). These surfaces are fully integrated in the published 1.15.x line — see [Status and releases](#status-and-releases). ## Dedicated Video Rescue For "fix this clip" requests where the story and timeline must remain unchanged, use the review-first rescue pipeline. Plan and inspect the diagnosis, approve only safe repair IDs, render, then inspect the verified package. The source stays immutable; master and universal sharing copy are always verified; optional captions remain sidecars. See [docs/RESCUE.md](docs/RESCUE.md) for CLI, MCP, Python, cancellation, resume, and stable errors. ## Layered Compositing `composite-layers` / `video_composite_layers` adds a spec-driven ordered layer stack for agents that need more than two-shot overlay primitives. It supports image, video, and solid layers; normal alpha compositing; per-layer opacity; x/y placement; transform sizing; timing windows; and mask/matte alpha sources — plus **full-canvas and positioned blend modes** (`multiply`, `screen`, `overlay`, `darken`, `lighten`) and **rotation** with a new `pivot` reference point. Dry-run plans and deterministic `layer_plan` v2 receipts capture source, filtergraph, and output hashes. ```bash kino composite-layers --spec layers.json --dry-run --save-layer-plan layer-plan.json kino composite-layers --spec layers.json -o out.mp4 --save-layer-plan layer-plan.json ``` Use `composite-layers` when an agent needs a planned stack of overlays, mattes, lower thirds, blurback plates or platform variants reviewed before rendering. Non-`normal` blends support opacity and `start`/`duration` windows in two geometries: full-canvas at `{0,0}` without explicit sizing, or a positioned rectangle with both positive integer `width` and `height` and an integral nonnegative in-canvas position. RGB blending avoids applying color arithmetic to subsampled chroma planes. Scale, rotation/pivot, mask/matte, fractional positions and out-of-canvas rectangles remain deferred and fail closed with `unsupported_blend_geometry`. Video layers and masks begin playback at the declared layer start. Keep sources and masks inside the spec directory, placing the spec in a common parent of its media. Output remains video-only. ## 360 dual-cam assembly Any stitched equirect 360 MP4 (Insta360, Ricoh Theta, GoPro MAX, DJI, …) can become a two-cam 16:9 or 9:16 edit without a new tool name. Export from the camera app first — Kinocut does not stitch `.insv` or GoPro `.360`. ```python from kinocut import Client video = Client() plan = video.propose_360_assembly("x4-export.mp4", goal="desk 360 split 9:16") approved = video.decide_360_assembly(plan, "approve") video.render_360_assembly(approved, "desk-split.mp4") ``` Agents: `video_intent` with a 360/desk/table goal and `source=`, then `video_review_decide`. Full contract: [docs/360_ASSEMBLY.md](docs/360_ASSEMBLY.md). ## Still / Image Editing Kinocut treats multi-still packages as first-class media — plan → receipt → fail-closed gate, same safety posture as video rescue. Requires `pip install "kinocut[image]"`; run `kino doctor` to verify the image stack. **Workflow:** establish a hero plate → edit beats toward it → match shared WB/exposure → grade (optional signal LUT) → cohesion gate. ```bash # Image analysis: extract colors, generate palettes, analyze products kino image-extract-colors product.jpg -n 8 kino image-generate-palette scene.png --harmony triadic kino image-analyze-product listing.jpg --use-ai # Still/plate editing: match package to hero, grade, gate kino still-match --hero establish.png --inputs beat1.png beat2.png --output-dir out/matched kino still-grade --inputs out/matched/*.png --hero establish.png --output-dir out/graded kino still-gate --inputs out/graded/*.png --output-dir out/gate # Establish-locked edit with plan/receipt (dry-run first) kino image-edit --source beat.png --reference establish.png \ --intent "match establish world and light" --output-dir out/edit --dry-run # Or run the full pipeline in one shot kino still-package --establish establish.png --beats beat1.png beat2.png --output-dir out/pkg ``` ```python from kinocut import Client c = Client() c.still_match(hero="establish.png", inputs=["a.png", "b.png"], output_dir="out/m") c.still_gate(inputs=["out/m/a_matched.png", "out/m/b_matched.png"], output_dir="out/g") ``` `still-gate` fails closed on luma spread and shadow green/cyan metrics; every tool writes a JSON receipt with hashes and gains. Paid generative backends stay off by default (`prefer=edit`, `allow_paid_gen=false`). Full guide: [docs/STILL_PLATES.md](docs/STILL_PLATES.md). ## Public Discovery Kinocut is built to be **findable and citable** by both search engines and AI answer engines: - Canonical product URL: **https://kinocut.dev/** - GitHub README + [`llms.txt`](llms.txt) with entity facts, install commands, and safety rules - Official MCP Registry record under `io.github.KyaniteLabs/kinocut` - FAQ answers in this README and [docs/faq.md](docs/faq.md) (answer-first, versioned claims) ### Kinocut vs raw FFmpeg (and vs cloud editors)
Guardrails before render
Local
Often metered
4
Marketing Mode combines 23 comprehensive marketing skills covering strategy, psychology, content, SEO, conversion optimization, and paid growth. Use when users need marketing strategy, copywriting, SEO help, conversion optimization, paid advertising, or any marketing tactic.
Access 23 marketing modules offering checklists, frameworks, and ready-to-use deliverables for CRO, SEO, copywriting, analytics, launches, ads, and social me...
Build Model Context Protocol (MCP) servers and tools from scratch. Full-stack MCP development with TypeScript/Python, testing, deployment, and registry publishing.
Build production-ready AI agents with PydanticAI — type-safe tool use, structured outputs, dependency injection, and multi-model support.
100+ AI Agents, Agent Skills and RAG Apps - Free and Open Source.
Build, run, and manage agent platforms.
A lightweight, powerful framework for multi-agent workflows
This repository showcases various advanced techniques for Retrieval-Augmented Generation (RAG) systems. Each technique has a detailed notebook tutorial.
Learn how to use the DeFi Yield Scout Claude skill. Complete guide with installation instructions and examples.
Learn how to use the Pywayne Llm Chat Bot Claude skill. Complete guide with installation instructions and examples.
Learn how to use the Dawn Proactive Agent v1 Claude skill. Complete guide with installation instructions and examples.