Skip to main content
Glama

AI 用剪映自动剪片

Jianying Local MCP 是一个用于 Mac 剪映的本地 MCP 工具,支持镜头编排、字幕、关键帧动画和多轨剪辑。

在支持 MCP 的 AI 客户端中提供素材和剪辑要求,AI 调用工具生成剪映草稿,再用剪映打开、预览和导出。

快速开始 · 工具文档 · 案例拆解 · English

作品演示

《入戏·川剧初体验》,一支国风短片,内容包括川剧表演、变脸、吐火、换装和体验。

https://github.com/user-attachments/assets/8ad915ff-f449-415f-b163-cdf41901cca6

下载预览视频 · 59.52 秒 · 1080p · 25 fps(网页预览为 720p)

这次用到了照片运镜、双画面、书法排版、旁白字幕和配乐。我觉得成片大致有认真练习一年剪辑的水平。

案例从原始视频和照片重建,共 23 个场景。缓动、场景复合和精修使用了额外脚本,未全部集成到通用 MCP。查看制作过程。

Related MCP server: capcut-mcp

功能

关键帧动画

支持位置、缩放、旋转和透明度关键帧,内置 9 种线性运动预设,可制作推近、拉远、平移、滑入和渐显。

例如,给照片设置两个缩放关键帧:起点为 100%,3 秒后为 108%,就能得到一个缓慢推近的镜头。再配合位置和旋转变化,可以制作照片滑入、倾斜等效果。

照片关键帧与位置、缩放、旋转参数

剪映截图:“言传身教”场景的照片关键帧。

字幕编辑

支持 SRT 导入、导出,以及字幕内容、时间、字号、颜色、描边和位置的修改。样式可按单条字幕或整条轨道批量设置。

案例中的 28 句旁白排成 36 个原生文字片段,可以在剪映里直接改字。书法标题使用独立 PNG,支持移动、缩放和替换图片。

剪映中的原生字幕编辑

剪映截图:选中旁白字幕后,右侧显示文字与样式设置。

多轨剪辑

支持片段追加、拆分、排序、裁切,以及删除时间区间后收拢后续内容。视频、图片、文字和音频可按轨道组织。

案例主时间线整理为 6 条轨道,23 个场景分别封装为复合片段。照片、纸边、阴影和书法保留独立图层;场景复合由案例脚本完成。

复合片段内部的画面与装饰图层

剪映截图:“唱腔与身段”场景的双画面及内部图层。

批量编辑

batch_edit 可在一次调用中完成多项修改。例如:修改字幕、加粗、统一字号、添加描边、设置渐显,全部完成后保存一个新版本,保留原项目,不生成中间工程。

0.3.0 同时增加了简要返回和素材信息缓存,减少重复调用、素材探测与文件复制。性能测试与使用示例。

快速开始

需要 macOS、Python 3.11+,以及本机安装的剪映。

git clone https://github.com/Capricornus-joe/jianying-local-mcp.git
cd jianying-local-mcp
bash setup.sh
bash run.sh doctor

按 安装与配置连接 MCP 客户端,创建第一个草稿。文档提供了纯文字示例和批量编辑示例,无需下载测试素材。

兼容性

当前版本提供 22 个工具,通过本地 stdio 运行。Mac 草稿兼容性仍在测试中,生成后需要在剪映内检查和导出。

  • 仅修改本工具管理的计划,每次保存为新版本。

  • 剪映中的手动修改不会自动同步回 MCP。

  • 不支持解密草稿、直接改写任意已有工程或可靠的 Mac 原生自动导出。

  • 部分原生效果依赖本机缓存和剪映版本。

详细支持范围见 兼容性说明。

文档与贡献

工具参考 · 排错指南 · 草稿结构 · 贡献指南 · 更新记录

问题反馈请提交 Issue,附上版本、操作步骤和脱敏错误信息。复现素材请使用合成文件。

许可证

代码采用 MIT,依赖与参考项目见 第三方说明。案例视频和截图仅供项目展示,详见 媒体授权。本项目与剪映、CapCut、字节跳动无隶属关系。

Available Tools

22 tools
add_srtA

Import SRT text into a new managed revision. Invalid cues fail explicitly; no partial import.

Inputs: name (required), content (required), new_name (required), color, +5 more.

apply_motion_presetA

Create clip-relative motion keyframes: zoom_in/out, pan_left/right, slide_up/down, fade_in/out, pulse. Existing keyframes on the same properties are replaced. Alpha animation requires exported-frame verification in your installed app.

Inputs: name (required), preset (required), clip_ids (required), new_name (required), +3 more.

apply_native_resourceA

Apply one uniquely cached catalog-free transition or entrance/exit animation. resource_kind is transition/video_animation/text_animation; resource_name is an exact name from list_native_resources. A transition attaches to the outgoing visual clip. Animation replaces the same phase while preserving its other phase. This creates a new managed revision and never downloads resources.

Inputs: name (required), clip_ids (required), new_name (required), resource_kind (required), +4 more.

batch_editA

Apply 1-100 ordered editing steps in memory, then save ONE new revision.

Each step has action plus the fields of its corresponding tool: edit(operations), features(clip_ids,features), motion(clip_ids,preset,strength?), subtitles(content,track?,offset?,font_size?,color?), style_subtitles(style,track?,clip_ids?), reorder(track,clip_ids,start?), ripple_delete(start,end). No intermediate project or media copies are created. Invalid steps abort before any project write. Does not publish or export.

Inputs: name (required), steps (required), new_name (required), dry_run, +1 more.

check_environmentA
Read-only

Detect the installed app, local draft folder, implemented features and limitations.

Inputs: no named parameters.

create_draftA

Validate/build a new self-contained Mac draft; does not register it in the native app.

plan fields: name, width=1920, height=1080, fps=30, clips=[]. Each clip: id(optional unique ASCII), kind(video/audio/image/text), track, start, duration. Media requires absolute path, optional source_start=0, speed=1, volume=1. Text requires text, optional font_size=48, color=#FFFFFF, x=0,y=-0.75. Coordinates are normalized; font size has an experimental /6 mapping to native schema units. Same-track overlaps are rejected; overlays need separate tracks. Duration is timeline seconds, source duration=duration*speed. dry_run=True writes nothing; false copies media and writes a new project.

Inputs: plan (required), dry_run, include_plan.

edit_draftA

Create a new revision of an MCP-managed project; source always remains unchanged.

Operations: {op:append,clip:{...}}, {op:remove,id:clip_id}, {op:update,id:clip_id,changes:{start,duration,source_start,speed,volume,text,...}}, {op:split,id:clip_id,at:timeline_seconds}. Trim/move through update; gaps are preserved and there is no implicit ripple editing. Get IDs using read_managed_project.

Inputs: name (required), new_name (required), operations (required), dry_run, +1 more.

export_srtA
Read-only

Return a managed project's subtitles as SRT text; does not write or upload files.

Inputs: name (required), track.

extract_frameB

Extract a NEW PNG at a source time for inspection, covers or freeze frames. Add the output as an image clip to hold it for any desired timeline duration.

Inputs: path (required), time (required), output_dir (required), dry_run.

inspect_mediaA
Read-only

Read duration, resolution and audio presence of an absolute local media path; no uploads.

Inputs: path (required).

list_managed_projectsA
Read-only

List only projects authored by this MCP in its configured workspace.

Inputs: no named parameters.

list_motion_presetsA
Read-only

List local linear motion recipes; native exported behavior has version-specific limits.

Inputs: no named parameters.

list_native_resourcesA
Read-only

Find reviewed native video/text animations and transitions in the local effect cache. kind: all, animation, video_animation, text_animation, transition. Cache presence and public catalog pricing do not prove current account entitlement or playback. No effect scripts execute here and nothing is downloaded.

Inputs: kind, query, cache_root.

montage_createB

Assemble local videos/photos in order. None uses full video lengths; audio-only inputs fail. Fixed duration uses the shorter of requested and source length. Copies all media into a new draft.

Inputs: name (required), paths (required), fps, track, +6 more.

process_mediaA

Create NEW media with baked local effects: brightness[-1,1],contrast[0,3], saturation[0,3],gamma[0.1,10],reverse,extract_audio,normalize_audio,denoise_audio. Boolean operations use true/false. Source is untouched; this is preprocessing, not editable native adjustment parameters. Reverse limit 10 minutes. Output has a unique filename and can be reused with create_draft or montage_create.

Inputs: path (required), operations (required), output_dir (required), dry_run.

publish_draftA

Add a managed revision as a NEW native draft and register it on Jianying's home page.

draft_root must be the absolute existing com.lveditor.draft folder with a recognized plaintext root_meta_info.json. Fully quit Jianying first and keep it closed until a real publication finishes. Defaults to no-write validation. Existing drafts are never replaced; the index is backed up. Native edits are not synced back to the managed source. Publishing does not launch the app or export video. Requires native folder write access.

Inputs: name (required), draft_root (required), dry_run.

read_managed_projectA
Read-only

Read a compact summary; view=clips returns paged clip IDs/timing (limit<=200). Use track to filter a clip page. view=full explicitly returns the complete plan.

Inputs: name (required), view, limit, track, +1 more.

read_native_draftB
Read-only

Inspect a plaintext native draft directory/file without changing it. Encoded drafts return unsupported.

Inputs: path (required).

reorder_trackA

Reorder ALL clips of one track into a gapless sequence; other tracks remain unchanged.

Inputs: name (required), track (required), clip_ids (required), new_name (required), +3 more.

ripple_deleteC

Delete a timeline interval from all tracks, trim crossing clips and close the gap. Source in-points account for playback speed. Animated intervals may be rejected.

Inputs: end (required), name (required), start (required), new_name (required), +2 more.

set_clip_featuresA

Apply advanced controls to selected clips in a new revision.

Groups: transform {x,y,scale_x,scale_y,rotation,opacity,flip_horizontal,flip_vertical}; crop {left,top,right,bottom} normalized source bounds; text_style supports bold, italic,underline,alignment,stroke_color,stroke_width,background_color, background_opacity,background_radius,shadow_color,shadow_opacity,shadow_diffuse, shadow_distance,shadow_angle,letter_spacing,line_spacing; keyframes {x|y|scale_x|scale_y|rotation|opacity:[{time,value}]} with clip-relative seconds and linear interpolation; audio_fade {in,out} seconds. mask {shape:circle|rectangle|linear,x,y,width,height,rotation,feather:0..100, invert,round_corner:0..100}; circle width defaults to compensate aspect ratio. animations [{type:in|out|group,duration,resource:{name,effect_id,resource_id,path}}]; transition_out {duration,resource:{name,effect_id,resource_id,path,is_overlap}}. Features merge per group for transform/style/keyframes; others replace. Pass null for a group to remove it. Resolve downloaded native resources first.

Inputs: name (required), clip_ids (required), features (required), new_name (required), +2 more.

style_subtitlesA

Batch update subtitle font_size/color/x/y by track or clip IDs, in a new revision.

Inputs: name (required), style (required), new_name (required), track, +3 more.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.3/5.0

    Scored across 22 tools

    Disambiguation3/5

    Most tools map to distinct resources/actions, but batch_edit intentionally mirrors operations from edit_draft, set_clip_features, motion, subtitles, reorder_track, and ripple_delete, creating overlapping selection paths. style_subtitles also partially overlaps with set_clip_features' text_style group.

    Naming Consistency4/5

    Names are overwhelmingly snake_case imperative verb + object, like list_*, read_*, create_draft, export_srt, and apply_native_resource. montage_create is inverted and batch_edit/ripple_delete are less clearly verb-first, but these are minor deviations.

    Tool Count3/5

    22 tools is in the heavy range, though the domain is broad enough that most tools serve a distinct purpose. The batch_edit meta-tool duplicating many other operations makes the surface feel larger than necessary.

    Completeness4/5

    The set covers the main local draft lifecycle well: environment checks, media preprocessing, project create/list/read/edit/publish, subtitles, motion, and native resources. Missing delete/revert and render/export are notable but agents can work around them.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      A
      quality
      D
      maintenance
      Enables AI assistants to create and edit professional videos through natural language by automating JianYing (CapCut) video production workflows. Supports adding media segments, effects, transitions, animations, and exporting editable project files.
      20
      325
      -
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables MCP clients to build CapCut video draft projects on disk — adding video and image clips, audio with fades, text overlays, SRT subtitles, filters, transitions, animations and keyframes, then saving the draft for editing and opening in CapCut. It also lists existing drafts, browses available effects and fonts, and summarizes track, duration and segment details.
      MIT