Conversions across 221 color spaces, tested against cited sources: CSS strings, gamut, LUTs
Kdenlive is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Inspect, edit and render Kdenlive video projects locally on Linux.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user mhbxyz-kdenlive-mcp '--' uvx mcp-kdenlive
# 2 — ask your agent for something these tools do
# list_markers, add_marker, update_marker and 34 more
Kdenlive costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one runs on your machine: your client starts Kdenlive as a process under your own user, with your files and your network, so the tool surface below is what it can do to your computer rather than to a server somewhere else. Its scan result is on the Security tab — read the surface before you approve it.
This is a public server: you run it yourself and this marketplace is not in the path. You need uv (docs.astral.sh/uv): uvx comes with it. Claude Code registers it in one command; --scope user makes it available in every project. The '--' is in quotes so that PowerShell passes it on.
claude mcp add --scope user mhbxyz-kdenlive-mcp '--' uvx mcp-kdenliveReconnect, or start a new session, and the tools appear in the model’s tool list.
Nothing is required, but it can take KDENLIVE_MCP_ALLOWED_ROOTS (Colon-separated absolute directories; every file the server reads or writes must be inside them. Unset: only the user's videos directory. 'unrestricted': no limit (not recommended).), KDENLIVE_MCP_KDENLIVE (Absolute path of the kdenlive executable if it is not on PATH (for example an AppImage).), KDENLIVE_MCP_MELT (Absolute path of the MLT melt executable if it is not on PATH.), KDENLIVE_MCP_FFPROBE (Absolute path of the ffprobe executable if it is not on PATH.) if you want to set them.
One config entry your client uses to start the process locally. A local server runs with your file system and your network, which is why it is priced without metering.
37 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Read from its source code. A server that builds its tool list when it starts can list more tools than this.
List the timeline guides of a sequence, the clip markers of every bin clip, and the marker categories (index, name, color). Positions are frames: timeline frames for guides, source frames for clip markers. Read-only.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| sequence | array | no | — |
Add a guide or a clip marker with a comment, a category and an optional
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| position | integer | yes | — |
| destination | yes | — | |
| comment | string | no | — |
| category | integer | no | — |
| duration | integer | no | — |
| bin_id | no | — | |
| sequence | array | no | — |
| overwrite | no | — | |
| expected_sha256 | no | — |
Change the marker at position: move it (new_position), or change its
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| position | integer | yes | — |
| destination | yes | — | |
| new_position | integer | no | — |
| comment | string | no | — |
| category | integer | no | — |
| duration | integer | no | — |
| bin_id | no | — | |
| sequence | array | no | — |
| overwrite | no | — | |
| expected_sha256 | no | — |
Remove the marker at position.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| position | integer | yes | — |
| destination | yes | — | |
| bin_id | no | — | |
| sequence | array | no | — |
| overwrite | no | — | |
| expected_sha256 | no | — |
Read a sequence's subtitles (Kdenlive's subtitle track, an ASS file next to the project): file and status, styles, and events with start/end frames, layer and text. Read-only.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| sequence | array | no | — |
| max_events | integer | no | — |
Import a SubRip (.srt) or WebVTT (.vtt) file, UTF-8 or UTF-16 with a byte order mark, as the main sequence's subtitles, in Kdenlive's own format: an ASS file named after the saved project (<destination>.ass) with Kdenlive's default style. Times are rounded to frames; overlapping subtitles go to…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| subtitle_file | string | yes | Path of the .srt or .vtt file. |
| destination | yes | — | |
| offset | integer | no | Frames added to every subtitle. |
| replace | boolean | no | — |
| sequence | array | no | — |
| overwrite | no | — | |
| expected_sha256 | no | — |
Create a text title (an editable Kdenlive title clip, not an image) and place it on a video track, usually one above the footage (add_track). Unicode and several lines ( ) are kept. Position: align x vertical presets inside 5 % margins, or the box's top-left x, y in pixels. The font must…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| text | string | yes | Title text; starts a new line. |
| track | string | yes | Video track label, e.g. V2. |
| start | integer | yes | Timeline frame. |
| destination | yes | — | |
| duration | integer | no | Frames; default 5 seconds. |
| font | string | no | Font family, e.g. 'Noto Sans'. |
| font_size | integer | no | Pixels; default 1/12 of the frame height. |
| color | no | — | |
| outline | integer | no | Outline width, pixels. |
| outline_color | no | — | |
| align | string | no | — |
| vertical | string | no | — |
| x | integer | no | Left of the text box, pixels; with y. |
| y | integer | no | Top of the text box, pixels; with x. |
| italic | boolean | no | — |
| sequence | array | no | — |
| overwrite | no | — | |
| expected_sha256 | no | — |
List the effects this server can apply (a subset verified against Kdenlive's own format): identifier, target (video/audio), parameters with units, ranges and defaults, and whether the installed MLT provides them. Crossfades between adjacent clips use add_mix / remove_mix. Read-only.
Takes no parameters.
Append a verified effect (list_effects) to a clip, with optional
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| clip | yes | — | |
| revision | yes | — | |
| effect | string | yes | Effect id from list_effects, e.g. 'crop'. |
| destination | yes | — | |
| params | no | — | |
| sequence | array | no | — |
| overwrite | no | — | |
| expected_sha256 | no | — |
Change parameters of the clip's effect at index; animated parameters
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| clip | yes | — | |
| revision | yes | — | |
| index | yes | — | |
| params | yes | — | |
| destination | yes | — | |
| sequence | array | no | — |
| overwrite | no | — | |
| expected_sha256 | no | — |
Remove the clip's effect at index (any effect).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| clip | yes | — | |
| revision | yes | — | |
| index | yes | — | |
| destination | yes | — | |
| sequence | array | no | — |
| overwrite | no | — | |
| expected_sha256 | no | — |
Crossfade a clip into the next clip on its track (they must touch), like Kdenlive's Mix Clips: both clips extend into their source handles around the cut, and grouped audio gets the matching audio crossfade. duration in frames (default 1 second). The result is written to destination with the…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| clip | yes | — | |
| revision | yes | — | |
| destination | yes | — | |
| duration | integer | no | — |
| sequence | array | no | — |
| overwrite | no | — | |
| expected_sha256 | no | — |
Remove the crossfade at the end of a clip; both clips go back to the original cut. The result is written to destination with the save_project_copy rules.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| clip | yes | — | |
| revision | yes | — | |
| destination | yes | — | |
| sequence | array | no | — |
| overwrite | no | — | |
| expected_sha256 | no | — |
Report whether Kdenlive, MLT (melt), ffprobe and ffmpeg are installed and usable, with their paths, versions and actionable hints. Read-only: modifies nothing. Locations can be overridden with KDENLIVE_MCP_KDENLIVE, KDENLIVE_MCP_MELT, KDENLIVE_MCP_FFPROBE and KDENLIVE_MCP_FFMPEG in the server…
Takes no parameters.
Summarize a Kdenlive project file without modifying it: Kdenlive and document versions, profile (resolution, rational frame rate), bin clip count and each timeline sequence with its duration and track counts. Includes the file's sha256 so later calls can detect changes. Reads the file on disk…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — |
Return the tracks, clips, mixes, compositions and guides of one sequence of a Kdenlive project, read-only. Positions are integer frames at the project frame rate; timeline ranges are [start, end) and source in/out are inclusive (see the 'conventions' field). Large timelines are truncated to…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| sequence | string | no | Sequence uuid or name; defaults to the active sequence. |
| max_clips | integer | no | Maximum clips returned. |
List the media referenced by a Kdenlive project's bin and diagnose missing or unreadable files, plus files used by effects and transitions (LUTs, luma wipes, subtitles). References are resolved exactly like Kdenlive does (project root, moved projects, proxies). Read-only; URLs are reported but…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| probe | boolean | no | Run ffprobe on available files. |
| max_items | integer | no | Maximum bin items returned. |
Check one local media file (absolute path) and return ffprobe metadata: duration, streams, codecs, dimensions, rational frame rate, sample rate, channels, rotation. Read-only; URLs are refused. Probing reads headers and does not prove that every frame decodes.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | Absolute path of a local media file. |
List the render presets of the installed Kdenlive (system and user custom presets), with group and file extension. Use a returned name with render_project.
Takes no parameters.
Render a Kdenlive project to a new local file with an installed Kdenlive preset (kdenlive --render, or MLT's melt: see engine), then validate the output with ffprobe. Blocks until the render ends or timeout_seconds elapses. Never modifies the project or its media. Refuses an existing output…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| output | string | yes | Absolute path of the file to create. |
| preset | string | no | Kdenlive preset name (see list_render_presets). |
| overwrite | boolean | no | Replace an existing output file. |
| allow_missing_media | boolean | no | Render even if media files are missing. |
| timeout_seconds | number | no | Stop the render after this. |
| engine | no | — |
Start rendering a Kdenlive project in the background and return a job id immediately. Same checks and guarantees as render_project (preset, output, missing media, atomic publication after validation). Poll get_render_job for the state (queued, running, succeeded, failed, cancelled) and cancel with…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| output | string | yes | Absolute path of the file to create. |
| preset | string | no | Kdenlive preset name (see list_render_presets). |
| overwrite | boolean | no | Replace an existing output file. |
| allow_missing_media | boolean | no | Render even if media files are missing. |
| timeout_seconds | number | no | Stop the render after this. |
| engine | no | — |
State of a render job: queued (with queue position), running (elapsed time; progress only when Kdenlive reports it), or ended with the full result (exit status, output validation, log tail).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | Id returned by start_render. |
List render jobs of this server session, most recent first.
Takes no parameters.
Request cancellation of a queued or running render job. The returned job has cancel_requested=true; its state becomes 'cancelled' once Kdenlive and its child processes have exited and the partial output was removed. Cancelling a finished job changes nothing.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | Id returned by start_render. |
List the MLT video profiles available for new projects (name, resolution, rational frame rate, progressive).
Takes no parameters.
Create a new Kdenlive project file containing one media clip placed at the start of the timeline (video on V1, audio on A1, grouped). Like a new Kdenlive project, it has two video tracks (V1, V2) and two audio tracks (A1, A2): V2 is free for overlays and titles before any add_track. The project is…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| destination | string | yes | Absolute path of the new .kdenlive file. |
| media_path | string | yes | Absolute path of an audio or video file. |
| profile | string | no | MLT profile name, or 'auto' to match the media. |
| overwrite | boolean | no | Replace an existing project file. |
Write a verified copy of a Kdenlive project to another .kdenlive file, preserving all project data (unknown metadata included). Relative media paths are rewritten so they still work from the destination folder. Refuses to overwrite an existing file unless overwrite=true (a timestamped backup is…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| destination | string | yes | Absolute path of the .kdenlive to write. |
| overwrite | boolean | no | Allow replacing an existing file. |
| expected_sha256 | string | no | Required to write over the source: its sha256 as last read. |
Add audio or video files to a project's bin (not to the timeline) and write the result to destination. Files already in the bin are reported as 'existing' with their clip id instead of being duplicated. Clip data comes from MLT, as in Kdenlive. Same safety rules as save_project_copy.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| media_paths | array | yes | Absolute paths of media files. |
| destination | yes | — | |
| overwrite | no | — | |
| expected_sha256 | no | — |
Point bin clips at new media files, for example after moving a media folder. mapping maps a bin_id, a stored reference or a resolved path (from list_project_media) to the new absolute path. Every copy of the clip (bin and timeline instances) is updated; timing, ids and effects are kept. The new…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| mapping | object | yes | {bin_id | old reference | old resolved path: new absolute path} |
| destination | yes | — | |
| overwrite | no | — | |
| expected_sha256 | no | — |
Add an empty, optionally named audio or video track to a sequence and write the result to destination. Video tracks are added on top of the existing video tracks; audio tracks below the existing audio tracks (Kdenlive's track order). Existing clips, groups, compositions and mixes are preserved.…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| kind | string | yes | 'audio' or 'video'. |
| destination | yes | — | |
| name | string | no | Track name shown in Kdenlive. |
| sequence | string | no | Sequence uuid or name; default: active sequence. |
| overwrite | no | — | |
| expected_sha256 | no | — |
Place a bin clip (bin_id from list_project_media / get_timeline) on a track at frame start, optionally a source sub-range [source_in, source_out] (inclusive). A clip with audio and video put on a video track also gets its audio on audio_track (default A1; null for video only), grouped like…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| bin_id | string | yes | — |
| track | string | yes | Track label, e.g. V1. |
| start | integer | yes | — |
| destination | yes | — | |
| source_in | integer | no | — |
| source_out | integer | no | — |
| audio_track | string | no | — |
| sequence | array | no | — |
| overwrite | no | — | |
| expected_sha256 | no | — |
Move a clip to frame start, optionally to another track of the same kind. Positions are frames at the project rate; nothing ripples and nothing is overwritten (overlaps fail). A clip grouped with its audio/video counterpart is edited together with it. The result is written to destination with…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| clip | yes | — | |
| revision | yes | — | |
| start | integer | yes | — |
| destination | yes | — | |
| track | string | no | — |
| sequence | array | no | — |
| overwrite | no | — | |
| expected_sha256 | no | — |
Change a clip's timeline bounds to [start, end) (either may be omitted); the source in/out points follow, like resizing in Kdenlive. Extending is limited by the source length. Positions are frames at the project rate; nothing ripples and nothing is overwritten (overlaps fail). A clip grouped with…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| clip | yes | — | |
| revision | yes | — | |
| destination | yes | — | |
| start | integer | no | — |
| end | integer | no | — |
| sequence | array | no | — |
| overwrite | no | — | |
| expected_sha256 | no | — |
Cut a clip at timeline frame at into two adjacent clips (razor). Positions are frames at the project rate; nothing ripples and nothing is overwritten (overlaps fail). A clip grouped with its audio/video counterpart is edited together with it. The result is written to destination with the…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| clip | yes | — | |
| revision | yes | — | |
| at | integer | yes | — |
| destination | yes | — | |
| sequence | array | no | — |
| overwrite | no | — | |
| expected_sha256 | no | — |
Remove a clip from the timeline, leaving a gap (neighbours do not move; the bin clip stays). Positions are frames at the project rate; nothing ripples and nothing is overwritten (overlaps fail). A clip grouped with its audio/video counterpart is edited together with it. The result is written to…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| clip | yes | — | |
| revision | yes | — | |
| destination | yes | — | |
| sequence | array | no | — |
| overwrite | no | — | |
| expected_sha256 | no | — |
Set a constant audio level in dB (-100 to +20; 0 = unchanged level) on a clip's audio, with Kdenlive's Volume effect. For an audio/video pair, the audio clip is changed. An existing constant level is replaced; an animated one is refused. The result is written to destination with the…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| clip | yes | — | |
| revision | yes | — | |
| level_db | number | yes | — |
| destination | yes | — | |
| sequence | array | no | — |
| overwrite | no | — | |
| expected_sha256 | no | — |
Set the audio fade-in and/or fade-out of a clip, in frames (omit to keep, 0 to remove), with Kdenlive's Fade in / Fade out effects. Both must fit in the clip. For an audio/video pair, the audio clip is changed. Fades stay at the clip's edges when it is later trimmed or split. The result is written…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | yes | — | |
| clip | yes | — | |
| revision | yes | — | |
| destination | yes | — | |
| fade_in | integer | no | — |
| fade_out | integer | no | — |
| sequence | array | no | — |
| overwrite | no | — | |
| expected_sha256 | no | — |
- Every tool, no call limit
- No card, and mcprush charges nothing for it
- Source published under MIT
- Runs on your machine — nothing of it reaches our gateway
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Kdenlive or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | high | capability blast radius (high) — client exposure if the model is manipulated | −6 |
| verification-discount | source | publisher verification (provenance) — cryptographic build provenance ties the artifact to its source | −0 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
Tools were statically extracted from the published source (37 recovered), not enumerated from a running server. Tool-poisoning, Unicode-smuggling, capability and toxic-flow analysis ran on this inferred surface, but a mis-parsed registration could be missed or mis-attributed, so tool-derived findings are capped below “confirmed”. To grade the real runtime surface, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. high is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| remove_marker | no tags | |
| remove_mix | no tags | |
| list_render_jobs | no tags | |
| list_markers | no tags | |
| add_marker | no tags | |
| update_marker | no tags | |
| list_subtitles | no tags | |
| import_subtitles | no tags | |
| add_title | no tags | |
| list_effects | no tags | |
| add_effect | no tags | |
| update_effect | no tags | |
| remove_effect | no tags | |
| add_mix | no tags | |
| diagnose_environment | no tags | |
| inspect_project | no tags | |
| get_timeline | no tags | |
| list_project_media | no tags | |
| probe_media | no tags | |
| list_render_presets | no tags | |
| render_project | no tags | |
| start_render | no tags | |
| get_render_job | no tags | |
| cancel_render_job | no tags | |
| list_profiles | no tags | |
| create_project | no tags | |
| save_project_copy | no tags | |
| add_media_to_bin | no tags | |
| relink_media | no tags | |
| add_track | no tags | |
| insert_clip | no tags | |
| move_clip | no tags | |
| trim_clip | no tags | |
| split_clip | no tags | |
| remove_clip | no tags | |
| set_clip_volume | no tags | |
| set_clip_fades | no tags |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
The public result for this release does not print the flow graph, so there is nothing to show here. That is not the same as "no paths were found": what the scan did read is above, under coverage.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
Always latest — the install command names no version, so it installs the newest release when it runs; the current release on file is 0.3.0. Pin a release below and the command asks for exactly that one.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Kdenlive can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.