Kdenlive MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| project_newA | Create a brand new Kdenlive project session. After this call the project path is stored so subsequent tools automatically target this project. Args: output_path: Path where the project JSON will be saved (.kdenlive-cli.json). profile: Preset profile (hd1080p30, hd1080p25, hd720p60, 4k30, 4k60, sd_pal, sd_ntsc). Overrides width/height/fps if set. name: Human-readable project name. width: Video width in pixels (ignored when profile is set). height: Video height in pixels (ignored when profile is set). fps_num: FPS numerator (ignored when profile is set). fps_den: FPS denominator (ignored when profile is set). |
| project_openB | Load an existing .kdenlive-cli.json project into the session. Args: project_path: Path to an existing project file. |
| project_saveA | Persist the current project state to a file. Args: output_path: Optional path to write to. Defaults to the original project path. |
| project_get_infoA | Return project metadata: FPS, resolution, track layout, bin clip count. |
| project_list_profilesA | Enumerate all available video output profiles (hd1080p30, 4k60, sd_pal, etc.). |
| project_get_profileA | Get the current project's video profile (resolution, FPS, aspect ratio). |
| project_set_profileB | Set or update the project's video profile. Args: profile: Preset profile name (hd1080p30, hd1080p25, hd720p60, 4k30, 4k60, sd_pal, sd_ntsc). Overrides width/height/fps if set. width: Video width in pixels. height: Video height in pixels. fps_num: FPS numerator. fps_den: FPS denominator. progressive: Whether video is progressive. dar_num: Display aspect ratio numerator. dar_den: Display aspect ratio denominator. |
| bin_import_clipA | Ingest a media file into the project bin for later timeline use. Args: clip_path: Path to the media file (video, audio, or image). name: Optional display name. Defaults to the filename. duration: Optional duration override in seconds (useful for images). If None, auto-probed via ffprobe. clip_type: Media type hint: video, audio, image, color, title. |
| bin_remove_clipA | Delete a clip from the media bin by its ID. Args: clip_id: The clip identifier from bin_list_clips or bin_import_clip. |
| bin_list_clipsA | List every asset in the project bin with ID, name, type, and duration. |
| bin_get_clip_detailsB | Get detailed properties of a bin clip (length, aspect ratio, media info). Args: clip_id: The clip identifier from the bin. |
| timeline_add_trackA | Append a video or audio track to the timeline. Args: track_type: 'video' or 'audio'. track_name: Optional name (auto-generated if omitted). mute: Start muted. hide: Start hidden. locked: Prevent edits on this track. |
| timeline_remove_trackA | Delete a track and all its clips from the timeline. Args: track_id: Numeric track identifier (from timeline_list). |
| timeline_add_clipA | Place a bin clip onto a specific track at a given time position. Args: clip_id: Bin clip identifier to place (from bin_list_clips). track: Target track number. position: Start time on the timeline in seconds. in_point: Media trim-in (where to start playback inside source) in seconds. out_point: Media trim-out (where to end playback inside source) in seconds. Defaults to full bin duration. Use timeline_trim_clip to adjust after placement. |
| timeline_move_clipA | Reposition a clip on the same track to a new time position. Args: track_id: Track containing the clip. clip_index: 0-based index of the clip within the track. new_position: New timeline position in seconds. |
| timeline_trim_clipA | Adjust the in/out trim handles of a timeline clip (not the crop filter). Args: track_id: Track containing the clip. clip_index: 0-based index of the clip within the track. in_point: New trim-in in seconds. None = leave unchanged. out_point: New trim-out in seconds. None = leave unchanged. |
| timeline_split_clipA | Cut a clip into two independent pieces at a precise time offset. Args: track_id: Track containing the clip. clip_index: 0-based index of the clip within the track. offset: Time offset in seconds from the clip's start (0 < offset < clip duration). |
| timeline_remove_clipA | Delete a clip from the timeline. Args: track_id: Track containing the clip. clip_index: 0-based index of the clip within the track. |
| timeline_listA | Return all timeline tracks with clip counts, IDs, mute/lock status. |
| filter_addA | Attach a video/audio effect to a timeline clip. Args: track_id: Track containing the clip. clip_index: 0-based clip index on that track. filter_type: Filter name (e.g. blur, brightness, frei0r.opacity, volume). Run filter_list_available for all options. params: 'key=value' parameter strings (e.g. ['radius=5.0', 'opacity=0.8']). |
| filter_removeA | Detach an effect from a clip. Args: track_id: Track containing the clip. clip_index: 0-based clip index. filter_index: 0-based filter index (see filter_list). |
| filter_set_paramA | Update a single parameter on an active filter. Args: track_id: Track containing the clip. clip_index: 0-based clip index. filter_index: 0-based filter index. parameter: Parameter name (e.g. radius, opacity, level). value: New value (auto-converted to int/float if numeric). |
| filter_listA | List all active filters on a specific timeline clip. Args: track_id: Track containing the clip. clip_index: 0-based clip index. |
| filter_list_availableB | Discover all filters the Kdenlive runtime exposes. Args: category: Optional category filter (e.g. blur, color, audio). |
| transition_addB | Create a blend transition (crossfade, wipe, etc.) between two track layers. Args: transition_type: Transition name (e.g. crossfade, luma, mix). track_a: Upper track index. track_b: Lower track index. position: Start time on the timeline in seconds. duration: Transition length in seconds. params: 'key=value' parameter strings. |
| transition_removeA | Delete a transition by its numeric ID. Args: transition_id: Transition identifier. |
| transition_setC | Modify a parameter on an existing transition. Args: transition_id: Transition identifier. param_name: Parameter name. value: New value (auto-converted to numeric if applicable). |
| transition_listA | List all transitions on the timeline. |
| guide_addA | Place a navigation guide marker along the timeline. Args: position: Time position in seconds. label: Short label for the guide. guide_type: 'default', 'chapter', or 'segment'. comment: Optional longer description. |
| guide_removeB | Delete a guide marker by its ID. Args: guide_id: Numeric guide identifier. |
| guide_listA | Return all guide markers on the timeline. |
| export_xmlA | Generate Kdenlive/MLT XML for the current project. Args: output_path: Optional file path to write the XML to (e.g. ~/Downloads/myproj.kdenlive). If None, no file is written and XML is returned in data.xml for you to copy. |
| export_list_presetsA | List all available render presets for final video output. |
| export_renderA | Render the project to a video file via melt. Generates MLT XML from the current project then pipes it through melt. Requires 'melt' on the system (apt install melt). Args: output_path: Destination video file (e.g. output.mp4). preset: Optional render preset name (see export_list_presets). |
| session_undoA | Revert the most recent state change (up to 50 history entries). |
| session_redoB | Reapply the last undone operation. |
| session_statusA | Inspect session state: project loaded, modified flag, history depth. |
| session_historyA | List all undo/redo history entries with descriptions. |
| project_get_render_profilesA | Alias for project_list_profiles - get available render presets. |
| clip_get_propertiesA | Get timeline clip properties: in/out, duration, speed, opacity, reverse. |
| clip_set_speedB | Set playback speed of a timeline clip (1.0=normal, 2.0=2x, 0.5=half, negative=reverse). |
| clip_reverseB | Reverse playback direction of a timeline clip (toggles). |
| clip_set_opacityC | Set opacity of a timeline clip (0.0 transparent .. 1.0 opaque). |
| track_get_infoB | Get detailed info for a single track (including clips). |
| track_set_nameC | Rename a track. |
| track_set_lockedC | Lock/unlock a track. |
| track_set_hiddenB | Hide/show a track (video visibility). |
| track_set_mutedB | Mute/unmute a track (audio). |
| track_move_upB | Move track up one position (swap with previous). |
| track_move_downA | Move track down one position (swap with next). |
| timeline_get_durationA | Get total timeline duration in seconds (max end time). |
| timeline_get_positionA | Get current playhead position. |
| timeline_seekA | Seek playhead to position (seconds). |
| timeline_get_zoomB | Get timeline zoom level. |
| timeline_set_zoomA | Set timeline zoom level (0.1 .. 10.0). |
| timeline_get_infoA | Get comprehensive timeline info: tracks+clips, duration, position, zoom, guides, markers, profile. |
| guide_getA | Get single guide by ID. |
| guide_updateC | Update guide properties. |
| marker_addB | Add timeline or clip marker (markers separate from guides). |
| marker_listA | List all markers. |
| marker_removeB | Remove marker by ID. |
| render_queue_addC | Add job to render queue. |
| render_queue_listB | List render queue jobs. |
| render_queue_statusA | Get render queue status. |
| render_queue_startA | Start processing render queue (renders sequentially via melt). |
| render_queue_stopA | Stop render queue (marks running as stopped). |
| session_undo_stepC | Undo N steps (granular). |
| session_redo_stepB | Redo N steps (granular). |
| bin_create_folderC | Create folder in project bin. |
| bin_move_clipA | Move clip to folder (or root if folder None). |
| bin_renameC | Rename bin clip. |
| clip_set_colorA | Set color label for bin clip (hex or named). |
| clip_add_noteC | Add / update note for bin clip. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 73 tools
Multiple tools have unclear boundaries: timeline_get_info overlaps timeline_get_zoom/position/duration, project_get_render_profiles is an alias for project_list_profiles and also overlaps export_list_presets, and the clip_ prefix is used for both bin clips and timeline clips. session_undo vs session_undo_step also creates ambiguity.
Tool names are mostly consistent snake_case with a clear domain prefix and verb_noun pattern (timeline_add_clip, guide_remove, filter_set_param). Minor deviations like project_new, session_undo_step, and the duplicate alias project_get_render_profiles keep it from being fully consistent.
73 tools is an extreme count for an MCP server and exceeds any reasonable scope. Many tools are granular variants, aliases, or single-purpose getters that inflate the surface without adding meaningful capability.
The core video editing workflow is well covered: project management, bin operations, timeline editing, filters, transitions, guides, markers, and rendering all have solid CRUD/lifecycle coverage. Minor gaps exist such as no marker update tool and no way to list available transition types.