lc-editor

lc-editor

Enables creating and editing 9:16 video reels programmatically through MCP tool calls, with ffmpeg rendering, caption styling, and optional project presets.

Category
访问服务器

README

lc-editor

A local video editor for a computer use agent, made for grokbot. You drive it from an MCP client; there is no timeline UI to click. You send tool calls; ffmpeg renders the file.

Built for short 9:16 reels (1080x1920, 30fps). Captions are stroke-and-shadow text, never a box. Sound is the owner's call, not the editor's: ask before assuming music or natural audio. This version composites multiple layers, applies a small effect pack, expands templates into ordinary timeline items, and can mix owner-imported music with beat sync. Engine rules live in specs/craft.md. Karachi episode structure is an optional preset, not the default.

Needs

  • Python 3.11 or newer
  • ffmpeg and ffprobe on your PATH

Install

From a clone of this repo:

pipx install .

pip install . works too. pipx keeps the app in its own env and puts lc-editor on your PATH.

From GitHub:

pipx install git+https://github.com/uzairayed/lc-editor.git

Run

lc-editor serve --project ./my-reel

--web starts a page on 127.0.0.1:8765 that can show stills. It only reads.

Cursor

Add this to your MCP config. Use an absolute project path.

{
  "mcpServers": {
    "lc-editor": {
      "command": "lc-editor",
      "args": ["serve", "--project", "/absolute/path/to/project"]
    }
  }
}

On Windows the path looks like C:/Users/you/my-reel.

Tools

Every edit returns { ok, timeline_summary, warnings }. Illegal requests fail out loud. Same op_id twice does not duplicate. review_report must pass before export. Preview stills and the contact sheet are JPEG files on disk, not base64.

The primary track is still the gapless clips list (clip_add, trim, split, reorder, motion, transitions). Two or more sources can share one slot (layout_add). Overlays, look, and music sit beside it:

  • Layers: layer_add / layer_update / layer_remove / layer_reorder / layer_transform / layer_keyframe for timed video, image, or text. text_style sets fade, pop, slide, or type-on. effect_add / effect_update / effect_remove attach blur, sharpen, glow, grain, vignette, lut, or color. Raw ffmpeg filter strings are rejected.
  • Templates: template_list, template_apply("editorial"|"karachi", bindings=...), template_save. Apply writes ordinary layers and look; the project stays editable.
  • Music: default is off. project_set(allow_music=true) is the owner opt-in. Then import_file a local .mp3/.wav/.m4a and music_add. beat_analyze, beat_edit, dry-run beat_sync_preview, then beat_sync_apply. There is no stock catalog; licensing stays with the owner.
  • Layouts: layout_add("stack_v"|"stack_h"|"stack_v3"|"grid_2x2", panes=[...]) composites two to four sources into one clip. layout_pane refocuses a cell. layout_clear flattens back to pane 0. A vista or reveal stays full-frame.
  • Captions: caption_add still works and syncs to a bound text layer. No box, banner, or scrim.

Optional: project_create(..., preset="karachi") loads series branding. Other reels do not need it.

Capability matrix

Area In this version
Canvas 1080x1920, 30fps, MCP only
Primary track Gapless clips, trim/split/reorder, kenburns/punch
Layouts stack_v, stack_h, stack_v3, grid_2x2. One timeline slot
Layers Timed video, image, and text overlays with z-order, transform, keyframes
Effects Registry: blur, sharpen, glow, grain, vignette, lut, color
Text Stroke-and-shadow only. Motion: fade, pop, slide, type-on
Templates editorial, karachi; apply expands to ordinary layers
Sound Natural audio, beds, SFX. Music is opt-in via project_set(allow_music=true) then music_add
Beat sync beat_analyze, beat_edit, dry-run beat_sync_preview, then beat_sync_apply
Look One adjustment layer (LUT, grain, vignette) after the cut

Giving this to grokbot

Once the MCP server is in grokbot's config, hand it a prompt like this:

You have an MCP server called lc-editor. It is a video editor you control
entirely through tool calls; ffmpeg does the rendering.

My raw clips are in <folder>. Cut a 9:16 reel of <subject>, 15 to 28 seconds.
Follow the craft rules in specs/craft.md: stroke-and-shadow captions with no
background box, hard cuts on motion.

Before you touch the timeline, ask me what I want for sound: music or natural
audio only. Do not assume either way. If I ask for music, call
project_set(allow_music=true), import my track, music_add it, beat_analyze,
show me beat_sync_preview, then beat_sync_apply only after I confirm.

Work in passes: analyze the footage first, pick the strongest shots, then
match what you see in the keyframes to context/INDEX.md and read only those
scene cards (process in context/HOW.md) before you set durations or roles.
Build the timeline, add a layout when two shots belong on one frame
(two signs, two named places), add layers or a template if needed, then
run review_report and fix every warning before you export. Show me
preview stills at each pass.

Swap the folder, subject, and any series preset (for example preset="karachi") into the prompt as needed.

Scene holds (door as a reveal, tile as a detail, highway as punctuation) live in context/. The agent looks up subjects in context/INDEX.md and reads only the matching cards. That library is editorial judgment. Engine floors in specs/craft.md still win when they conflict.

Not in this version

Multicam, speech-to-captions, a stock music catalog, Drive import, or a browser you edit in.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选