# Kdenlive MCP Server (pypi · kdenlive-mcp-server)

Kdenlive video editing MCP - 36 tools for project, timeline, filters and melt rendering

- Trust score: 75/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- pypi · `kdenlive-mcp-server`: 75/100 (this document), [markdown](https://verifymcp.io/servers/va1bhav512-kdenlive-mcp-server/kdenlive-mcp-server.md), [page](https://verifymcp.io/servers/va1bhav512-kdenlive-mcp-server/kdenlive-mcp-server)

## Channel facts

- Registry: `pypi`
- Package: `kdenlive-mcp-server`
- Version: `0.1.3`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it.
  - 0 of 31 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 16 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 75/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 3535 tokens (~48/item across 73 items; 73 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 57/100
  - Stability observed for 17 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 71/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 75/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 0 of 7 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "bin_remove_clip" implies "remove" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.
  - An AI judge read all 73 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Kdenlive MCP Server server?

Kdenlive MCP Server runs locally as a PyPI package, launched with uvx kdenlive-mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add va1bhav512-kdenlive-mcp-server -- uvx kdenlive-mcp-server
```

### Cursor

```json
{
  "mcpServers": {
    "va1bhav512-kdenlive-mcp-server": {
      "command": "uvx",
      "args": [
        "kdenlive-mcp-server"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "va1bhav512-kdenlive-mcp-server": {
      "command": "uvx",
      "args": [
        "kdenlive-mcp-server"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add va1bhav512-kdenlive-mcp-server -- uvx kdenlive-mcp-server
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "va1bhav512-kdenlive-mcp-server": {
      "type": "local",
      "command": [
        "uvx",
        "kdenlive-mcp-server"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add va1bhav512-kdenlive-mcp-server --command uvx --arg kdenlive-mcp-server
```

### Hermes

```yaml
mcp_servers:
  va1bhav512-kdenlive-mcp-server:
    command: "uvx"
    args: ["kdenlive-mcp-server"]
```

### Netclaw

```json
{
  "McpServers": {
    "va1bhav512-kdenlive-mcp-server": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "kdenlive-mcp-server"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add va1bhav512-kdenlive-mcp-server -t stdio -c uvx -a kdenlive-mcp-server
```

### Other

```json
{
  "mcpServers": {
    "va1bhav512-kdenlive-mcp-server": {
      "command": "uvx",
      "args": [
        "kdenlive-mcp-server"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-20 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-18 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-16 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-15 (score 72, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-09-14 (score 57, −14)

- [security regression] Malware scan: pass → unverified

### 2026-09-12 (score 71, +16)

- [security improvement] Malware scan: unverified → pass

### 2026-09-11 (score 55, −15)

- [security regression] Malware scan: pass → unverified

### 2026-09-10 (score 70, +3)

- [functional improvement] Stability: unverified → 0.23

## MCP tools (73)

### `project_new` (~220 tokens)

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).

Input parameters:

- `fps_den` (integer)
- `fps_num` (integer)
- `height` (integer)
- `name` (string)
- `output_path` (string, required)
- `profile`
- `width` (integer)

### `project_open` (~43 tokens)

Load an existing .kdenlive-cli.json project into the session.

Args:
    project_path: Path to an existing project file.

Input parameters:

- `project_path` (string, required)

### `project_save` (~42 tokens)

Persist the current project state to a file.

Args:
    output_path: Optional path to write to. Defaults to the original project path.

Input parameters:

- `output_path`

### `project_get_info` (~24 tokens)

Return project metadata: FPS, resolution, track layout, bin clip count.

### `project_list_profiles` (~33 tokens)

Enumerate all available video output profiles (hd1080p30, 4k60, sd_pal, etc.).

### `project_get_profile` (~23 tokens)

Get the current project's video profile (resolution, FPS, aspect ratio).

### `project_set_profile` (~171 tokens)

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.

Input parameters:

- `dar_den`
- `dar_num`
- `fps_den`
- `fps_num`
- `height`
- `profile`
- `progressive`
- `width`

### `bin_import_clip` (~122 tokens)

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.

Input parameters:

- `clip_path` (string, required)
- `clip_type` (string)
- `duration`
- `name`

### `bin_remove_clip` (~47 tokens)

Delete a clip from the media bin by its ID.

Args:
    clip_id: The clip identifier from bin_list_clips or bin_import_clip.

Input parameters:

- `clip_id` (string, required)

### `bin_list_clips` (~27 tokens)

List every asset in the project bin with ID, name, type, and duration.

### `bin_get_clip_details` (~47 tokens)

Get detailed properties of a bin clip (length, aspect ratio, media info).

Args:
    clip_id: The clip identifier from the bin.

Input parameters:

- `clip_id` (string, required)

### `timeline_add_track` (~100 tokens)

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.

Input parameters:

- `hide` (boolean)
- `locked` (boolean)
- `mute` (boolean)
- `track_name`
- `track_type` (string)

### `timeline_remove_track` (~42 tokens)

Delete a track and all its clips from the timeline.

Args:
    track_id: Numeric track identifier (from timeline_list).

Input parameters:

- `track_id` (integer, required)

### `timeline_add_clip` (~146 tokens)

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.

Input parameters:

- `clip_id` (string, required)
- `in_point` (number)
- `out_point`
- `position` (number, required)
- `track` (integer, required)

### `timeline_move_clip` (~83 tokens)

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.

Input parameters:

- `clip_index` (integer, required)
- `new_position` (number, required)
- `track_id` (integer, required)

### `timeline_trim_clip` (~109 tokens)

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.

Input parameters:

- `clip_index` (integer, required)
- `in_point`
- `out_point`
- `track_id` (integer, required)

### `timeline_split_clip` (~91 tokens)

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).

Input parameters:

- `clip_index` (integer, required)
- `offset` (number, required)
- `track_id` (integer, required)

### `timeline_remove_clip` (~58 tokens)

Delete a clip from the timeline.

Args:
    track_id: Track containing the clip.
    clip_index: 0-based index of the clip within the track.

Input parameters:

- `clip_index` (integer, required)
- `track_id` (integer, required)

### `timeline_list` (~23 tokens)

Return all timeline tracks with clip counts, IDs, mute/lock status.

### `filter_add` (~129 tokens)

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']).

Input parameters:

- `clip_index` (integer, required)
- `filter_type` (string, required)
- `params`
- `track_id` (integer, required)

### `filter_remove` (~75 tokens)

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).

Input parameters:

- `clip_index` (integer, required)
- `filter_index` (integer, required)
- `track_id` (integer, required)

### `filter_set_param` (~118 tokens)

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).

Input parameters:

- `clip_index` (integer, required)
- `filter_index` (integer, required)
- `parameter` (string, required)
- `track_id` (integer, required)
- `value` (string, required)

### `filter_list` (~55 tokens)

List all active filters on a specific timeline clip.

Args:
    track_id: Track containing the clip.
    clip_index: 0-based clip index.

Input parameters:

- `clip_index` (integer, required)
- `track_id` (integer, required)

### `filter_list_available` (~42 tokens)

Discover all filters the Kdenlive runtime exposes.

Args:
    category: Optional category filter (e.g. blur, color, audio).

Input parameters:

- `category`

### `transition_add` (~133 tokens)

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.

Input parameters:

- `duration` (number)
- `params`
- `position` (number)
- `track_a` (integer, required)
- `track_b` (integer, required)
- `transition_type` (string, required)

### `transition_remove` (~33 tokens)

Delete a transition by its numeric ID.

Args:
    transition_id: Transition identifier.

Input parameters:

- `transition_id` (integer, required)

### `transition_set` (~69 tokens)

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).

Input parameters:

- `param_name` (string, required)
- `transition_id` (integer, required)
- `value` (string, required)

### `transition_list` (~15 tokens)

List all transitions on the timeline.

### `guide_add` (~86 tokens)

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.

Input parameters:

- `comment` (string)
- `guide_type` (string)
- `label` (string)
- `position` (number, required)

### `guide_remove` (~34 tokens)

Delete a guide marker by its ID.

Args:
    guide_id: Numeric guide identifier.

Input parameters:

- `guide_id` (integer, required)

### `guide_list` (~16 tokens)

Return all guide markers on the timeline.

### `export_xml` (~72 tokens)

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.

Input parameters:

- `output_path`

### `export_list_presets` (~20 tokens)

List all available render presets for final video output.

### `export_render` (~90 tokens)

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).

Input parameters:

- `output_path` (string, required)
- `preset`

### `session_undo` (~24 tokens)

Revert the most recent state change (up to 50 history entries).

### `session_redo` (~16 tokens)

Reapply the last undone operation.

### `session_status` (~21 tokens)

Inspect session state: project loaded, modified flag, history depth.

### `session_history` (~18 tokens)

List all undo/redo history entries with descriptions.

### `project_get_render_profiles` (~21 tokens)

Alias for project_list_profiles - get available render presets.

### `clip_get_properties` (~41 tokens)

Get timeline clip properties: in/out, duration, speed, opacity, reverse.

Input parameters:

- `clip_index` (integer, required)
- `track_id` (integer, required)

### `clip_set_speed` (~65 tokens)

Set playback speed of a timeline clip (1.0=normal, 2.0=2x, 0.5=half, negative=reverse).

Input parameters:

- `clip_index` (integer, required)
- `speed` (number, required)
- `track_id` (integer, required)

### `clip_reverse` (~35 tokens)

Reverse playback direction of a timeline clip (toggles).

Input parameters:

- `clip_index` (integer, required)
- `track_id` (integer, required)

### `clip_set_opacity` (~51 tokens)

Set opacity of a timeline clip (0.0 transparent .. 1.0 opaque).

Input parameters:

- `clip_index` (integer, required)
- `opacity` (number, required)
- `track_id` (integer, required)

### `track_get_info` (~28 tokens)

Get detailed info for a single track (including clips).

Input parameters:

- `track_id` (integer, required)

### `track_set_name` (~28 tokens)

Rename a track.

Input parameters:

- `name` (string, required)
- `track_id` (integer, required)

### `track_set_locked` (~30 tokens)

Lock/unlock a track.

Input parameters:

- `locked` (boolean, required)
- `track_id` (integer, required)

### `track_set_hidden` (~32 tokens)

Hide/show a track (video visibility).

Input parameters:

- `hidden` (boolean, required)
- `track_id` (integer, required)

### `track_set_muted` (~34 tokens)

Mute/unmute a track (audio).

Input parameters:

- `muted` (boolean, required)
- `track_id` (integer, required)

### `track_move_up` (~27 tokens)

Move track up one position (swap with previous).

Input parameters:

- `track_id` (integer, required)

### `track_move_down` (~27 tokens)

Move track down one position (swap with next).

Input parameters:

- `track_id` (integer, required)

### `timeline_get_duration` (~20 tokens)

Get total timeline duration in seconds (max end time).

### `timeline_get_position` (~15 tokens)

Get current playhead position.

### `timeline_seek` (~23 tokens)

Seek playhead to position (seconds).

Input parameters:

- `position` (number, required)

### `timeline_get_zoom` (~14 tokens)

Get timeline zoom level.

### `timeline_set_zoom` (~30 tokens)

Set timeline zoom level (0.1 .. 10.0).

Input parameters:

- `zoom` (number, required)

### `timeline_get_info` (~30 tokens)

Get comprehensive timeline info: tracks+clips, duration, position, zoom, guides, markers, profile.

### `guide_get` (~22 tokens)

Get single guide by ID.

Input parameters:

- `guide_id` (integer, required)

### `guide_update` (~41 tokens)

Update guide properties.

Input parameters:

- `comment`
- `guide_id` (integer, required)
- `guide_type`
- `label`
- `position`

### `marker_add` (~60 tokens)

Add timeline or clip marker (markers separate from guides).

Input parameters:

- `clip_index`
- `comment` (string)
- `label` (string)
- `marker_type` (string)
- `position` (number, required)
- `track_id`

### `marker_list` (~12 tokens)

List all markers.

### `marker_remove` (~21 tokens)

Remove marker by ID.

Input parameters:

- `marker_id` (integer, required)

### `render_queue_add` (~40 tokens)

Add job to render queue.

Input parameters:

- `in_point`
- `out_point`
- `output_path` (string, required)
- `preset`

### `render_queue_list` (~14 tokens)

List render queue jobs.

### `render_queue_status` (~14 tokens)

Get render queue status.

### `render_queue_start` (~20 tokens)

Start processing render queue (renders sequentially via melt).

### `render_queue_stop` (~18 tokens)

Stop render queue (marks running as stopped).

### `session_undo_step` (~24 tokens)

Undo N steps (granular).

Input parameters:

- `steps` (integer)

### `session_redo_step` (~25 tokens)

Redo N steps (granular).

Input parameters:

- `steps` (integer)

### `bin_create_folder` (~27 tokens)

Create folder in project bin.

Input parameters:

- `name` (string, required)
- `parent`

### `bin_move_clip` (~33 tokens)

Move clip to folder (or root if folder None).

Input parameters:

- `clip_id` (string, required)
- `folder`

### `bin_rename` (~29 tokens)

Rename bin clip.

Input parameters:

- `clip_id` (string, required)
- `new_name` (string, required)

### `clip_set_color` (~35 tokens)

Set color label for bin clip (hex or named).

Input parameters:

- `clip_id` (string, required)
- `color` (string, required)

### `clip_add_note` (~32 tokens)

Add / update note for bin clip.

Input parameters:

- `clip_id` (string, required)
- `note` (string, required)

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/va1bhav512-kdenlive-mcp-server/kdenlive-mcp-server#diagnostics

## Score history

- 2026-09-20: 75
- 2026-09-19: 74
- 2026-09-18: 74
- 2026-09-17: 73
- 2026-09-16: 73
- 2026-09-15: 72
- 2026-09-14: 57
- 2026-09-13: 71
- 2026-09-12: 71
- 2026-09-11: 55
- 2026-09-10: 70
- 2026-09-09: 67
- 2026-09-08: 67
- 2026-09-07: 67
- 2026-09-06: 67
- 2026-09-05: 67
- 2026-09-04: 67
- 2026-09-03: 67

## Common questions

### What is the Kdenlive MCP Server server?

Kdenlive MCP Server is listed in the public MCP registry as io.github.Va1bhav512/kdenlive-mcp-server. Kdenlive video editing MCP - 36 tools for project, timeline, filters and melt rendering. This page covers its PyPI package (kdenlive-mcp-server).

### Is the Kdenlive MCP Server server safe to use?

Kdenlive MCP Server scores 75 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Kdenlive MCP Server server expose?

Kdenlive MCP Server exposes 73 tools: project_new, project_open, project_save, project_get_info, project_list_profiles, and 68 more. Their descriptions and schemas cost roughly 3,535 tokens of context every time the server is loaded.

### Is the Kdenlive MCP Server server still maintained?

Kdenlive MCP Server is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Kdenlive MCP Server server under?

Kdenlive MCP Server declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- PyPI project: https://pypi.org/project/kdenlive-mcp-server/
- Socket report: https://socket.dev/pypi/package/kdenlive-mcp-server
- Repository: https://github.com/Va1bhav512/kdenlive-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/va1bhav512-kdenlive-mcp-server/kdenlive-mcp-server.xml
- Changelog JSON feed: https://verifymcp.io/servers/va1bhav512-kdenlive-mcp-server/kdenlive-mcp-server.json
- HTML version of this page: https://verifymcp.io/servers/va1bhav512-kdenlive-mcp-server/kdenlive-mcp-server
