davinci-resolve-mcp
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 |
|---|---|
| resolve_infoA | Resolve product name, version, current page. Call first to confirm the bridge is connected. |
| open_pageA | Switch the active page: media, cut, edit, fusion, color, fairlight, deliver. |
| list_projectsA | List project names in the current project-manager folder. |
| current_projectA | Current project's name and timeline count. |
| open_projectB | Open an existing project by name. |
| create_projectC | Create and open a new project. |
| save_projectB | Save the current project. |
| close_projectA | Close the current project (prompts to save in Resolve if needed). |
| get_project_settingA | Read a project setting (empty key returns all settings). |
| set_project_settingB | Set a project setting, e.g. timelineFrameRate, timelineResolutionWidth. |
| import_mediaA | Import media files (absolute paths on the Resolve machine) into the current media pool folder. |
| list_mediaA | List clips in the media pool root (name, type, fps, duration, resolution). |
| list_binsB | List sub-folder (bin) names in the media pool root. |
| create_binB | Create a new bin (sub-folder) in the media pool root. |
| get_clip_propertyB | Get a media pool clip's property by clip name (empty property = all). |
| delete_clipsB | Delete media pool clips (root folder) by name. |
| list_timelinesB | List timeline names in the current project. |
| current_timelineB | Current timeline name, frame range and track counts. |
| set_current_timelineC | Make the named timeline the current one. |
| create_timelineC | Create a new empty timeline. |
| create_timeline_from_clipsB | Create a timeline pre-filled with the named media pool clips. |
| duplicate_timelineC | Duplicate a timeline under a new name. |
| delete_timelineC | Delete a timeline by name. |
| append_clipsA | Append media pool clips to the current timeline (all clips if names omitted). |
| get_track_countB | Number of tracks of a type: video, audio, or subtitle. |
| add_trackA | Add a track of the given type (video, audio, subtitle). |
| delete_trackB | Delete the track at index (1-based) of the given type. |
| set_track_nameD | Rename a track. |
| set_track_enableC | Enable or disable a track. |
| get_timeline_itemsB | List clips on a track (name, start, end, duration). |
| set_item_propertyB | Set a timeline item property (Pan, Tilt, ZoomX, ZoomY, Opacity, CompositeMode, RetimeProcess, CropLeft, ...). Items are 1-based per track. |
| add_markerC | Add a marker to the current timeline at a frame. |
| get_markersA | All markers on the current timeline, keyed by frame. |
| delete_markerC | Delete the marker at a frame. |
| delete_markers_by_colorA | Delete all markers of a color ('All' deletes every marker). |
| get_num_nodesC | Number of color nodes on the current video item. |
| set_lutC | Apply a LUT to a node (1-based) on the current video item. |
| set_cdlC | Apply CDL (slope/offset/power as 'R G B' strings) to a node on the current item. |
| add_color_versionB | Add a color version to the current video item (0=local, 1=remote). |
| list_render_presetsB | List available render presets. |
| get_render_formatsA | Map of available render formats to file extensions. |
| get_render_codecsC | Available codecs for a render format. |
| set_render_format_and_codecC | Set the current render format and codec. |
| load_render_presetC | Load a render preset by name. |
| set_render_settingsB | Set render settings, e.g. {"TargetDir": "/out", "CustomName": "v1", "FormatWidth": 1920, "FormatHeight": 1080, "MarkIn": 0, "MarkOut": 240}. |
| add_render_jobA | Add the current render settings to the render queue; returns the job id. |
| get_render_job_listB | List queued render jobs. |
| delete_render_jobC | Remove a render job from the queue. |
| start_renderB | Start rendering the queue. |
| stop_renderC | Stop rendering. |
| is_renderingB | Whether a render is in progress. |
| get_render_job_statusC | Status/progress of a render job. |
| import_timelineC | Import a timeline from AAF/EDL/XML/FCPXML/DRT/OTIO. Returns the new timeline name. |
| export_timelineC | Export a timeline. export_type is a Resolve constant name, e.g. EXPORT_EDL, EXPORT_FCPXML_1_10, EXPORT_OTIO, EXPORT_AAF, EXPORT_DRT. |
| place_clipB | Place a media pool clip onto the current timeline with precise framing. start_frame/end_frame = in/out within the source; record_frame = where it lands on the timeline; media_type 1=video only, 2=audio only. |
| add_titleB | Insert a title generator (e.g. 'Text', 'Text+') at the playhead of the current timeline. |
| add_generatorA | Insert a generator (e.g. 'Solid Color', 'Grey Scale') at the playhead. |
| add_fusion_titleA | Insert a Fusion title (e.g. 'Text+') at the playhead of the current timeline. |
| add_fusion_generatorC | Insert a Fusion generator at the playhead of the current timeline. |
| set_clip_colorC | Set the clip color label of a timeline item (Orange, Apricot, Yellow, Lime, Olive, Green, Teal, Navy, Blue, Purple, Violet, Pink, Tan, Beige, Brown, Chocolate). |
| get_timeline_settingB | Read a current-timeline setting (empty key = all). |
| set_timeline_settingC | Set a current-timeline setting. |
| bridge_statusA | Check whether the in-Resolve bridge is running and reachable. Use this when other tools report 'bridge_not_running'. |
| assemble_rough_cutB | One-shot rough cut: (optionally create+select a bin) import the media files, create a timeline, and append every imported clip to it. |
| render_to_fileA | Queue and start rendering the current timeline to target_dir/custom_name. Optionally load a render preset first (e.g. 'YouTube - 1080p', 'H.264 Master'). Free-edition limits apply: 8-bit, <= UHD 3840x2160, <= 60fps. |
| free_render_checkA | Advisory: flag render settings that exceed DaVinci Resolve Free limits (8-bit, <= UHD 3840x2160, <= 60fps). Does not change anything. |
| resolve_evalA | Run arbitrary Lua inside Resolve against the live |
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 67 tools
Most tools have clearly distinct purposes with detailed descriptions. However, there is some overlap between add_generator, add_title, add_fusion_generator, and add_fusion_title, which could cause confusion. Overall, the majority are well-disambiguated.
Tool names follow a verb_noun pattern generally, but there are inconsistencies such as 'list' vs 'get' (e.g., list_projects vs get_timeline_items), and some names like 'assemble_rough_cut' or 'resolve_eval' deviate. The mix is readable but not fully consistent.
With 67 tools, the server is very large for an MCP server. While DaVinci Resolve is complex, this number exceeds typical scope and may overwhelm agents. Several tools could be consolidated or are redundant (e.g., multiple render start/stop tools).
The tool set covers a wide range of operations: project management, media import, timeline editing, color grading, rendering, etc. It includes an escape hatch (resolve_eval) for missing functionality. Only minor gaps exist, such as lack of detailed audio editing tools.