Skip to main content
Glama

DaVinci Resolve 21 MCP Server

An MCP server providing full API coverage for DaVinci Resolve 21. Exposes 88 tools and 20 resources for project management, timeline editing, media import, color grading, rendering, export, AI analysis (transcription, audio classification, Intellisearch, Slate ID, motion deblur, speech generation), and composite workflows like automated dailies creation.

Built for macOS. Requires DaVinci Resolve Studio with scripting enabled.

Installation

Prerequisites

  • DaVinci Resolve Studio 21

  • Python 3.10+

  • An MCP client (Claude Code, Claude Desktop, etc.)

Install

git clone https://github.com/apvlv/resolve-mcp.git
cd resolve-mcp
pip install -e .

Configure MCP Client

Add to your MCP client config (e.g. ~/.claude/settings.json):

{
  "mcpServers": {
    "davinci-resolve": {
      "command": "resolve-mcp"
    }
  }
}

Or without installing:

{
  "mcpServers": {
    "davinci-resolve": {
      "command": "python3",
      "args": ["-m", "resolve_mcp"],
      "env": {
        "PYTHONPATH": "/path/to/resolve-mcp/src"
      }
    }
  }
}

Related MCP server: davinci-resolve-mcp-free

Resources

Resources provide read-only access to current Resolve state.

URI

Description

resolve://system/status

Connection state, version, current page

resolve://project/current

Project name, resolution, frame rate, timeline count

resolve://project/list

All project names in current database

resolve://project/settings

Full project settings

resolve://project/timelines

All timelines with index and name

resolve://timeline/current

Current timeline details (frames, tracks, TC, FPS)

resolve://timeline/tracks

Track list with type, name, enabled, locked, item count

resolve://timeline/markers

All timeline markers

resolve://timeline/items

All timeline items across video tracks

resolve://mediapool/folders

Recursive folder tree with clip counts

resolve://mediapool/current-folder

Current folder contents

resolve://mediapool/clips

Clip details for current folder

resolve://mediapool/selected-clips

Currently selected clips

resolve://storage/volumes

Mounted media storage volumes

resolve://gallery/albums

Gallery still albums

resolve://gallery/stills

Stills in current album

resolve://render/jobs

Render job list

resolve://render/formats

Available formats and codecs

resolve://render/presets

Render presets

resolve://render/is-rendering

Render status

Tools

Project (6)

create_project, load_project, save_project, close_project, set_project_setting, disable_background_tasks

Navigation (1)

open_page - Switch between media, cut, edit, fusion, color, fairlight, deliver

Timeline (13)

create_empty_timeline, create_timeline_from_clips, set_current_timeline, set_current_timeline_by_name, delete_timeline, duplicate_timeline, add_track, delete_track, set_track_name, enable_track, lock_track, append_clips_to_timeline, set_timeline_start_timecode

Media Pool (4)

create_bin, set_current_folder, move_clips_to_folder, delete_clips

Media Import (5)

import_media, import_media_to_bin, scan_directory, import_camera_roll, import_timeline_from_file

Metadata (8)

get_clip_metadata, set_clip_metadata, set_clip_metadata_batch, set_clip_property, set_clip_color, add_clip_flag, extract_qc_notes_from_markers, calculate_clip_file_sizes

Clips (2)

rename_clips (token patterns: {CAM}, {REEL}, {REEL:N}, {N}, {N:N}, {DATE}, {TIME}, {UID}), rename_clip

Markers (6)

add_timeline_marker, delete_timeline_marker, delete_timeline_markers_by_color, add_clip_marker, get_clip_markers, delete_clip_marker

Color Grading (9)

apply_drx_grade, set_cdl, apply_cdl_from_file (CCC/EDL), set_lut, search_and_apply_lut, copy_grade, reset_grades, get_node_graph_info

Audio (4)

import_audio, auto_sync_audio, add_audio_track, generate_speech (AI Speech Generator: text-to-speech clip, optionally placed on the timeline)

Render (8)

set_render_settings, set_render_format, add_render_job, start_render, get_render_progress, wait_for_render, delete_render_jobs, load_render_preset

Export (9)

export_timeline, export_ale, export_edl, export_fcpxml, export_aaf, export_csv, export_otio, export_drt

Dailies (1)

create_dailies - End-to-end pipeline: scan camera rolls, create bins (OCF/{Cam}/{Roll}), import media, build timeline, apply DRX/CDL/LUT grades, import and sync audio

Stills (1)

extract_stills_from_markers - Extract single-frame clips from timeline markers, create stills timeline with grade copy

Fusion (3)

add_fusion_comp, create_fusion_node, create_fusion_node_chain

AI Analysis (8)

Resolve 21 AI tools. Each operates on a single clip (clip_name), a folder and its nested folders (folder_path), or the current Media Pool folder. Require Resolve Studio and, in most cases, packages from the Extras Download Manager.

transcribe_audio (optional speaker detection), clear_transcription, perform_audio_classification, clear_audio_classification, remove_motion_blur (AI motion deblur → new clips), analyze_for_intellisearch (face ID + Faster/Better mode), reset_intellisearch_analysis, analyze_for_slate (AI Slate ID, places markers)

Execute (2)

execute_python, execute_lua - Run arbitrary code with stdout/stderr capture and pre-populated Resolve API objects

Examples

"What project is open and how many timelines does it have?"
"Import all media from /Volumes/Media/A001 as a camera roll"
"Create a timeline called 'Assembly' from all clips in the current bin"
"Apply the DRX grade at /Volumes/Grades/show.drx to all timeline clips"
"Export the current timeline as ALE with CDL values"
"Set up dailies from /Volumes/OCF/A-Cam/A001 with grade /Volumes/Grades/dailies.drx"
"Render the current timeline as ProRes 422 HQ to /Volumes/Deliveries/"
"Transcribe audio for all clips in the Interviews bin with speaker detection"
"Analyze the A-Cam folder for Intellisearch and identify faces"
"Run Slate analysis on the current folder and place green markers"
"Generate speech 'Scene 12, take 3' and add it to the timeline at 01:00:05:00"

License

MIT

Available Tools

88 tools
add_audio_trackA

Add an audio track to the current timeline.

Args: sub_type: Audio track type: 'mono', 'stereo', '5.1', or '7.1'.

Inputs: sub_type. Returns: result

add_clip_flagB

Add a flag with the specified color to a clip in the current folder.

Args: clip_name: The name of the clip. color: The flag color (e.g. "Blue", "Red", "Green", etc.).

Inputs: color (required), clip_name (required). Returns: result

add_clip_markerA

Add a marker to a clip on the current timeline.

Searches all video tracks to find the clip by name, then adds a marker at the specified frame offset within that clip.

Args: clip_name: Name of the clip on the timeline. frame_id: Frame offset within the clip for the marker. color: Marker color (e.g. "Blue", "Red", "Green", "Yellow", etc.). name: Name/title for the marker. note: Optional note text for the marker. duration: Duration of the marker in frames (default: 1).

Inputs: name (required), color (required), frame_id (required), clip_name (required), +2 more. Returns: result

add_fusion_compA

Add a Fusion composition to a timeline clip.

If clip_index is not provided, adds a Fusion comp to the currently selected clip. Otherwise, targets the clip at the given 0-based index on the specified track.

Args: clip_index: Optional 0-based index of the clip on the track. Uses the currently selected clip if omitted. track_type: Type of track containing the clip (default: "video"). track_index: 1-based index of the track (default: 1).

Inputs: clip_index, track_type, track_index. Returns: result

add_render_jobB

Add a render job to the render queue using current render settings.

Returns the job ID of the newly added render job.

Inputs: no named parameters. Returns: result

add_timeline_markerA

Add a marker to the current timeline at the specified frame.

Args: frame_id: Frame number where the marker should be placed. color: Marker color (e.g. "Blue", "Red", "Green", "Yellow", etc.). name: Name/title for the marker. note: Optional note text for the marker. duration: Duration of the marker in frames (default: 1).

Inputs: name (required), color (required), frame_id (required), note, +1 more. Returns: result

add_trackB

Add a track to the current timeline.

Args: track_type: Type of track: 'video', 'audio', or 'subtitle'. sub_type: Audio sub-type: 'mono', 'stereo', '5.1', '7.1'. Only used for audio tracks.

Inputs: track_type (required), sub_type. Returns: result

analyze_for_intellisearchA

Run Intellisearch analysis on a clip or folder.

Operates on a single clip (clip_name), a folder (folder_path), or the current Media Pool folder if neither is given. Requires the 'AI IntelliSearch - Faster' package (or 'AI IntelliSearch - Better' when better_mode is True) from the Extras Download Manager.

Args: clip_name: Name of a clip in the current folder to analyze. folder_path: Slash-separated folder path (e.g. 'Master/A-Cam') to analyze. identify_faces: Whether to identify faces during analysis. better_mode: Whether to use Better mode (otherwise Faster mode).

Inputs: clip_name, better_mode, folder_path, identify_faces. Returns: result

analyze_for_slateA

Run AI Slate analysis on a clip or folder, marking detected slates.

Operates on a single clip (clip_name), a folder (folder_path), or the current Media Pool folder if neither is given. Requires the 'AI Slate ID' package from the Extras Download Manager.

Args: marker_color: Color of the markers to place at detected slates. One of: Blue, Cyan, Green, Yellow, Red, Pink, Purple, Fuchsia, Rose, Lavender, Sky, Mint, Lemon, Sand, Cocoa, Cream. clip_name: Name of a clip in the current folder to analyze. folder_path: Slash-separated folder path (e.g. 'Master/A-Cam') to analyze.

Inputs: marker_color (required), clip_name, folder_path. Returns: result

append_clips_to_timelineA

Append clips from the current media pool folder to the current timeline.

If clip_names is None, all clips in the current folder are appended.

Args: clip_names: Optional list of clip names to append. Uses all clips in current folder if omitted.

Inputs: clip_names. Returns: result

apply_cdl_from_fileB

Parse a CCC or EDL file and apply CDL values to matching timeline clips.

Matches clips by name using exact, no-extension, and fuzzy matching. Also applies metadata (Episode, Scene, Shot, Take, Camera) if present in the CDL file.

Args: cdl_path: Path to a .ccc or .edl file containing CDL data.

Inputs: cdl_path (required). Returns: result

apply_drx_gradeA

Apply a DRX grade file to timeline clips.

Args: drx_path: Path to the .drx grade file. grade_mode: Keyframe mode - 0=No keyframes, 1=Source timecode, 2=Start frames. clip_indices: Optional 1-based indices of clips on video track 1. Applies to all clips on all video tracks if omitted.

Inputs: drx_path (required), grade_mode, clip_indices. Returns: result

auto_sync_audioA

Sync video and audio clips by timecode.

Collects all clips from the specified bin (or current folder) and performs timecode-based audio sync, retaining video metadata and discarding embedded audio.

Args: bin_path: Optional slash-separated media pool folder path (e.g. 'Master/Audio'). Uses current folder if omitted.

Inputs: bin_path. Returns: result

calculate_clip_file_sizesA

Calculate file sizes for clips and write to 'Size' metadata field.

Handles regular files, R3D multi-part files (_001.R3D, _002.R3D, etc.), and image sequences (directory-based). Size is written in GB with 4 decimal places.

Args: clip_names: List of clip names to process. If None, processes all clips in the current folder.

Inputs: clip_names. Returns: result

clear_audio_classificationA

Clear audio classification for a clip or folder.

Operates on a single clip (clip_name), a folder and its nested folders (folder_path), or the current Media Pool folder if neither is given.

Args: clip_name: Name of a clip in the current folder. folder_path: Slash-separated folder path (e.g. 'Master/SFX').

Inputs: clip_name, folder_path. Returns: result

clear_transcriptionA

Clear audio transcription for a clip or folder.

Operates on a single clip (clip_name), a folder and its nested folders (folder_path), or the current Media Pool folder if neither is given.

Args: clip_name: Name of a clip in the current folder. folder_path: Slash-separated folder path (e.g. 'Master/Interviews').

Inputs: clip_name, folder_path. Returns: result

close_projectA

Save and close the current DaVinci Resolve project.

Inputs: no named parameters. Returns: result

copy_gradeB

Copy the grade from a source clip to one or more target clips.

All indices are 1-based on video track 1.

Args: source_clip_index: 1-based index of the source clip on video track 1. target_clip_indices: List of 1-based indices of target clips on video track 1.

Inputs: source_clip_index (required), target_clip_indices (required). Returns: result

create_binA

Create a new bin (subfolder) in the media pool.

Args: name: Name for the new bin. parent_path: Optional path to the parent folder (e.g. 'OCF/A-Cam'). Creates under root if omitted.

Inputs: name (required), parent_path. Returns: result

create_dailiesA

Full dailies pipeline: import camera rolls, create timelines, apply grades, sync audio.

For each camera roll path:

  1. Extract roll name and detect camera letter from the path

  2. Create OCF/{cam}-Cam/{roll_name} bin structure in the media pool

  3. Scan directory recursively for video files

  4. Import clips using batch-first with individual fallback

  5. Create a timeline from the imported clips in a Timelines bin

Optional post-processing:

  • drx_path: Switch to color page and apply DRX grade to all timeline clips

  • cdl_path: Parse CCC or EDL file, match CDL values to clips, apply grades

  • lut_name: Search standard LUT paths and apply to all timeline clips

  • audio_path + sync_audio: Scan for audio files, import to Audio bin, auto-sync

Args: camera_roll_paths: List of absolute paths to camera roll directories. drx_path: Optional path to a DRX grade file to apply. cdl_path: Optional path to a CCC or EDL file with CDL values. lut_name: Optional LUT filename to search for and apply. audio_path: Optional path to directory containing audio files. sync_audio: Whether to auto-sync imported audio. Requires audio_path. timeline_prefix: Optional prefix for timeline names.

Inputs: camera_roll_paths (required), cdl_path, drx_path, lut_name, +3 more. Returns: result

create_empty_timelineB

Create an empty timeline with the given name.

Args: name: Name for the new timeline.

Inputs: name (required). Returns: result

create_fusion_nodeA

Create a Fusion node in the current composition.

Creates a new tool/node of the specified type in the active Fusion composition and optionally sets its parameters.

Args: node_type: The Fusion node type to create (e.g. "Background", "Blur", "Transform", "Merge", "MediaIn", "MediaOut", "ColorCorrector"). parameters: Optional dict of parameter name-value pairs to set on the node.

Inputs: node_type (required), parameters. Returns: result

create_fusion_node_chainA

Create a chain of connected Fusion nodes in the current composition.

Creates multiple nodes and connects them sequentially (each node's Input is connected to the previous node's output). This is useful for building Fusion node graphs programmatically.

Each node dict supports:

  • "type" (required): The Fusion node type (e.g. "Background", "Blur")

  • "name" (optional): Custom display name for the node

  • "params" (optional): Dict of parameter name-value pairs

Args: nodes: List of node definitions. Each is a dict with "type" (required), optional "name", and optional "params".

Inputs: nodes (required). Returns: result

create_projectB

Create a new DaVinci Resolve project.

Args: name: Name for the new project.

Inputs: name (required). Returns: result

create_timeline_from_clipsA

Create a new timeline from media pool clips.

If clip_names is None, all clips in the current media pool folder are used.

Args: name: Name for the new timeline. clip_names: Optional list of clip names to include. Uses all clips in current folder if omitted.

Inputs: name (required), clip_names. Returns: result

delete_clip_markerA

Delete a marker from a clip on the current timeline at the specified frame.

Args: clip_name: Name of the clip on the timeline. frame_id: Frame offset of the marker to delete.

Inputs: frame_id (required), clip_name (required). Returns: result

delete_clipsB

Delete clips from the current media pool folder.

Args: clip_names: List of clip names to delete.

Inputs: clip_names (required). Returns: result

delete_render_jobsB

Delete render jobs from the queue.

Args: job_ids: Optional list of specific job IDs to delete. Deletes all jobs if omitted.

Inputs: job_ids. Returns: result

delete_timelineC

Delete a timeline by name.

Args: name: Name of the timeline to delete.

Inputs: name (required). Returns: result

delete_timeline_markerC

Delete a marker from the current timeline at the specified frame.

Args: frame_id: Frame number of the marker to delete.

Inputs: frame_id (required). Returns: result

delete_timeline_markers_by_colorA

Delete all markers of a specific color from the current timeline.

Args: color: Color of markers to delete (e.g. "Blue", "Red", "Green"). Use empty string "" to delete all markers regardless of color.

Inputs: color (required). Returns: result

delete_trackA

Delete a track from the current timeline.

Args: track_type: Type of track: 'video', 'audio', or 'subtitle'. index: 1-based index of the track to delete.

Inputs: index (required), track_type (required). Returns: result

disable_background_tasksA

Disable all background tasks for the current DaVinci Resolve session.

Useful before running performance-sensitive batch operations (renders, deliveries) to stop Resolve from spending resources on background work such as optimized media generation and analysis. The setting applies for the duration of the current Resolve session.

Inputs: no named parameters. Returns: result

duplicate_timelineB

Duplicate a timeline. Duplicates the current timeline if no name given.

Args: name: Optional name of the timeline to duplicate. Uses current timeline if omitted.

Inputs: name. Returns: result

enable_trackA

Enable or disable a track in the current timeline.

Args: track_type: Type of track: 'video', 'audio', or 'subtitle'. index: 1-based index of the track. enabled: True to enable, False to disable.

Inputs: index (required), enabled (required), track_type (required). Returns: result

execute_luaC

Execute Lua script via Fusion. Output from print() is captured.

Args: script: Lua code to execute.

Inputs: script (required). Returns: result

execute_pythonB

Execute Python code with Resolve API access. stdout is captured.

Pre-populated variables: resolve, fusion, project_manager, project, media_pool, media_storage, timeline. Set a 'result' variable to return data.

Args: code: Python code to execute.

Inputs: code (required). Returns: result

export_aafB

Export the current timeline as an AAF file.

Args: output_path: Full file path for the exported AAF file.

Inputs: output_path (required). Returns: result

export_aleA

Export the current timeline as an ALE (Avid Log Exchange) file.

Args: output_path: Full file path for the exported ALE file. include_cdl: If True, export as ALE_CDL to include CDL data.

Inputs: output_path (required), include_cdl. Returns: result

export_csvA

Export the current timeline as a CSV (comma-separated values) file.

Args: output_path: Full file path for the exported CSV file.

Inputs: output_path (required). Returns: result

export_drtB

Export the current timeline as a DRT (DaVinci Resolve Timeline) file.

Args: output_path: Full file path for the exported DRT file.

Inputs: output_path (required). Returns: result

export_edlB

Export the current timeline as an EDL file.

Args: output_path: Full file path for the exported EDL file.

Inputs: output_path (required). Returns: result

export_fcpxmlB

Export the current timeline as an FCPXML file.

Args: output_path: Full file path for the exported FCPXML file. version: FCPXML version: '1.8', '1.9', or '1.10'. Defaults to '1.10'.

Inputs: output_path (required), version. Returns: result

export_otioA

Export the current timeline as an OTIO (OpenTimelineIO) file.

Args: output_path: Full file path for the exported OTIO file.

Inputs: output_path (required). Returns: result

export_timelineB

Export the current timeline in the specified format.

Supported formats: AAF, DRT, EDL, FCP_7_XML, FCPXML_1_8, FCPXML_1_9, FCPXML_1_10, HDR_10_PROFILE_A, HDR_10_PROFILE_B, TEXT_CSV, TEXT_TAB, OTIO, ALE, ALE_CDL.

Args: output_path: Full file path for the exported file. format: Export format name (e.g. 'EDL', 'AAF', 'FCPXML_1_10'). sub_type: Optional export sub-type string. Used for formats that require additional specification.

Inputs: format (required), output_path (required), sub_type. Returns: result

extract_qc_notes_from_markersA

Extract QC notes from timeline clip markers and write to clip metadata.

Iterates all video tracks on the current timeline, finds markers of the specified color on each clip, formats them as '[timecode] marker_name', and writes the combined text to the 'QC Notes' metadata field on the corresponding MediaPoolItem.

Args: marker_color: The marker color to extract (default: Yellow).

Inputs: marker_color. Returns: result

extract_stills_from_markersA

Extract still frames from timeline markers and create a new stills timeline.

Scans the current timeline's video track 1 for markers of the specified color. For each matching marker, extracts a single-frame clip from the source media. Creates a new timeline containing all extracted stills and copies grades from the source timeline items.

The new timeline is placed in a Timelines/{color}-Stills bin and its start timecode is set to 01:00:00:00.

Args: marker_color: Color of markers to extract stills from (default: "Blue"). Common values: Blue, Cyan, Green, Yellow, Red, Pink, Purple, Fuchsia, Rose, Lavender, Sky, Mint, Lemon, Sand, Cocoa, Cream. timeline_name: Optional custom name for the stills timeline. Defaults to "{color}-Stills_{source_timeline_name}".

Inputs: marker_color, timeline_name. Returns: result

generate_speechA

Generate speech audio from text using DaVinci Resolve's AI Speech Generator.

Creates an audio MediaPoolItem from the given text and, when add_to_timeline is True, places it on the current timeline at the given timecode. Requires Resolve Studio with the 'AI Speech Generator' package installed via the Extras Download Manager.

Args: text_input: The text to synthesize into speech. timecode: Timeline timecode (HH:MM:SS:FF) to place the clip when add_to_timeline is True. voice_model: Voice model name (e.g. 'Female 1', 'Male 1', 'Custom Voice'). custom_voice_file: Full path to a custom voice file (used with 'Custom Voice'). speed: Speech speed. variation: Speech variation. pitch: Speech pitch. generation_id: Generation ID. filename: Output filename for the generated audio. add_to_timeline: Whether to add the generated clip to the current timeline. audio_track: Audio track index to place the clip on.

Inputs: timecode (required), text_input (required), pitch, speed, +7 more. Returns: result

get_clip_markersA

Get all markers on a clip on the current timeline.

Args: clip_name: Name of the clip on the timeline.

Inputs: clip_name (required). Returns: result

get_clip_metadataA

Get all metadata for a clip found by name in the current Media Pool folder.

Args: clip_name: The name of the clip to get metadata from.

Inputs: clip_name (required). Returns: result

get_node_graph_infoA

Get node graph information for a clip including node count, labels, and LUT paths.

Args: clip_index: 1-based index of the clip on video track 1.

Inputs: clip_index (required). Returns: result

get_render_progressA

Get the status and progress of all render jobs in the queue.

Inputs: no named parameters. Returns: result

import_audioA

Import audio files from a directory into a media pool bin.

Scans for common audio formats: WAV, MP3, AIF, AIFF, M4A, AAC, FLAC, OGG, WMA, MXF.

Args: directory: Path to the directory containing audio files. bin_name: Name of the media pool bin to import into. Created if it does not exist. recursive: Whether to scan subdirectories recursively.

Inputs: directory (required), bin_name, recursive. Returns: result

import_camera_rollA

Import a camera roll into an organized OCF bin structure.

Creates OCF/{Camera}-Cam/{RollName} folder hierarchy and imports all video files from the directory. Camera letter is auto-detected from the directory name (e.g. 'A001' -> 'A') if not specified.

Args: directory: Absolute path to the camera roll directory. camera_letter: Optional camera designation letter (e.g. 'A', 'B'). Auto-detected from directory name if omitted.

Inputs: directory (required), camera_letter. Returns: result

import_mediaA

Import media files into the current media pool folder.

Uses batch import first for speed, with individual fallback for reliability.

Args: file_paths: List of absolute file paths to import.

Inputs: file_paths (required). Returns: result

import_media_to_binA

Import media files into a specific media pool bin.

Navigates to the target bin first, then imports.

Args: file_paths: List of absolute file paths to import. bin_path: Target folder path (e.g. 'OCF/A-Cam/A001').

Inputs: bin_path (required), file_paths (required). Returns: result

import_timeline_from_fileA

Import a timeline from an AAF, EDL, XML, or OTIO file.

Args: file_path: Absolute path to the timeline file.

Inputs: file_path (required). Returns: result

load_projectB

Load an existing DaVinci Resolve project by name.

Args: name: Name of the project to load.

Inputs: name (required). Returns: result

load_render_presetB

Load a render preset by name.

Args: preset_name: Name of the render preset to load.

Inputs: preset_name (required). Returns: result

lock_trackA

Lock or unlock a track in the current timeline.

Args: track_type: Type of track: 'video', 'audio', or 'subtitle'. index: 1-based index of the track. locked: True to lock, False to unlock.

Inputs: index (required), locked (required), track_type (required). Returns: result

move_clips_to_folderB

Move clips from the current folder to a target folder.

Args: clip_names: List of clip names to move. target_path: Destination folder path (e.g. 'OCF/A-Cam/A001').

Inputs: clip_names (required), target_path (required). Returns: result

open_pageA

Open a specific page in DaVinci Resolve.

Args: page_name: Page to open. Valid values: media, cut, edit, fusion, color, fairlight, deliver.

Inputs: page_name (required). Returns: result

perform_audio_classificationA

Analyze and classify audio into categories and subcategories.

Operates on a single clip (clip_name), a folder and its nested folders (folder_path), or the current Media Pool folder if neither is given. Requires Resolve Studio with AI audio classification support.

Args: clip_name: Name of a clip in the current folder to classify. folder_path: Slash-separated folder path (e.g. 'Master/SFX') to classify.

Inputs: clip_name, folder_path. Returns: result

remove_motion_blurA

Apply AI motion deblur to a clip or folder, creating new deblurred clips.

Operates on a single clip (clip_name), a folder (folder_path), or the current Media Pool folder if neither is given. Returns the names of the newly created MediaPoolItem(s). Requires Resolve Studio with motion deblur support.

Args: clip_name: Name of a clip in the current folder to deblur. folder_path: Slash-separated folder path (e.g. 'Master/A-Cam') to deblur. deblur_option: Optional settings dict. Supported keys: 'FileName' (str), 'Format' (str, e.g. 'mov'), 'Codec' (str, e.g. 'ProRes422'), 'EncodingProfile' (str, H.264/H.265 only, e.g. 'Main10'), 'UseExtremeMode' (bool), 'UseMarkInMarkOut' (bool), 'RenderAtSourceRes' (bool), 'UseMoreGpuMemory' (bool).

Inputs: clip_name, folder_path, deblur_option. Returns: result

rename_clipB

Rename a single clip in the current Media Pool folder.

Args: clip_name: Current name of the clip to rename. new_name: The new name for the clip.

Inputs: new_name (required), clip_name (required). Returns: result

rename_clipsA

Rename all clips in the current Media Pool folder using a token pattern.

Supported tokens: {CAM} or {CAMERA} - camera letter (from camera param) {REEL} or {REEL:N} - reel number, optionally zero-padded to N digits {N} or {N:N} - clip counter starting at start_number, optionally zero-padded {DATE} - today's date in YYMMDD format {TIME} - current time in HHMMSS format {UID} - unique ID string (auto-generated if empty)

Example: "{CAM}{REEL:3}_{N:4}" with camera="A", reel=1, start_number=1 produces "A001_0001", "A001_0002", etc.

Args: pattern: Token pattern string for generating clip names. camera: Camera letter identifier (default: "A"). reel: Reel number (default: 1). start_number: Starting number for the {N} counter (default: 1). uid: Unique ID string. Auto-generated if empty.

Inputs: pattern (required), uid, reel, camera, +1 more. Returns: result

reset_gradesA

Reset all grades on specified clips or all clips in the timeline.

Args: clip_indices: Optional list of 1-based clip indices on video track 1. Resets all clips on all video tracks if omitted.

Inputs: clip_indices. Returns: result

reset_intellisearch_analysisA

Clear all Intellisearch analysis data for the current project.

Inputs: no named parameters. Returns: result

save_projectA

Save the current DaVinci Resolve project.

Inputs: no named parameters. Returns: result

scan_directoryA

Scan a directory for media files using Resolve's Media Storage.

Args: directory: Absolute path to the directory to scan. file_types: Optional list of file extensions to filter (e.g. ['.mov', '.mxf']). Returns all files if omitted. recursive: Whether to scan subdirectories. Defaults to True.

Inputs: directory (required), recursive, file_types. Returns: result

search_and_apply_lutA

Search standard LUT directories for a LUT file by name and apply it.

Searches recursively under the DaVinci Resolve LUT directory.

Args: lut_name: Filename of the LUT to search for (e.g. 'MyLUT.cube'). clip_index: Optional 1-based clip index on video track 1. If omitted, applies to all clips. node_index: Node index to apply the LUT to. Defaults to 2.

Inputs: lut_name (required), clip_index, node_index. Returns: result

set_cdlA

Apply CDL values to a specific clip's node.

Args: clip_index: 1-based index of the clip on video track 1. node_index: Index of the node within the clip's node graph. slope: Slope values as space-separated RGB string (e.g. '1.0 1.0 1.0'). offset: Offset values as space-separated RGB string (e.g. '0.0 0.0 0.0'). power: Power values as space-separated RGB string (e.g. '1.0 1.0 1.0'). saturation: Saturation value as string (e.g. '1.0').

Inputs: power (required), slope (required), offset (required), clip_index (required), +2 more. Returns: result

set_clip_colorA

Set the clip color on a clip in the current Media Pool folder.

Args: clip_name: The name of the clip. color: Color name. Valid colors: Orange, Apricot, Yellow, Lime, Olive, Green, Teal, Navy, Blue, Purple, Violet, Pink, Tan, Beige, Brown, Chocolate.

Inputs: color (required), clip_name (required). Returns: result

set_clip_metadataB

Set metadata fields on a clip in the current Media Pool folder.

Args: clip_name: The name of the clip to update. metadata: Dictionary of metadata field names to values.

Inputs: metadata (required), clip_name (required). Returns: result

set_clip_metadata_batchB

Batch set metadata on multiple clips. Keys are clip names, values are metadata dicts.

Args: metadata_map: Dictionary mapping clip names to their metadata dictionaries.

Inputs: metadata_map (required). Returns: result

set_clip_propertyC

Set a clip property using SetClipProperty on a clip in the current folder.

Args: clip_name: The name of the clip. property_name: The property name to set. value: The value to set.

Inputs: value (required), clip_name (required), property_name (required). Returns: result

set_current_folderA

Navigate to a media pool folder by path.

Args: path: Folder path using '/' separators (e.g. 'OCF/A-Cam/A001'). Use '/' or 'Root' for the root folder.

Inputs: path (required). Returns: result

set_current_timelineA

Set the current timeline by its 1-based index.

Args: index: 1-based index of the timeline to activate.

Inputs: index (required). Returns: result

set_current_timeline_by_nameB

Set the current timeline by name.

Args: name: Name of the timeline to activate.

Inputs: name (required). Returns: result

set_lutB

Apply a LUT file to a specific clip's node.

Args: clip_index: 1-based index of the clip on video track 1. node_index: Index of the node to apply the LUT to. lut_path: Full path to the LUT file.

Inputs: lut_path (required), clip_index (required), node_index (required). Returns: result

set_project_settingA

Set a project setting by name.

Args: setting_name: The setting key (e.g. 'timelineFrameRate', 'timelineResolutionWidth'). value: The value to set as a string.

Inputs: value (required), setting_name (required). Returns: result

set_render_formatB

Set the render format and codec.

Args: format_name: Render format (e.g. 'mp4', 'mov', 'mxf'). codec: Codec name (e.g. 'H.264', 'H.265', 'DNxHR HQX', 'ProRes 422 HQ').

Inputs: codec (required), format_name (required). Returns: result

set_render_settingsC

Set render settings on the current project.

Args: settings: Dictionary of render setting key-value pairs (e.g. {'TargetDir': '/tmp/renders', 'CustomName': 'output'}).

Inputs: settings (required). Returns: result

set_timeline_start_timecodeB

Set the start timecode of the current timeline.

Args: timecode: Timecode string (e.g. '01:00:00:00').

Inputs: timecode (required). Returns: result

set_track_nameA

Set the name of a track in the current timeline.

Args: track_type: Type of track: 'video', 'audio', or 'subtitle'. index: 1-based index of the track. name: New name for the track.

Inputs: name (required), index (required), track_type (required). Returns: result

start_renderA

Start rendering jobs in the render queue.

Args: job_ids: Optional list of specific job IDs to render. Renders all queued jobs if omitted.

Inputs: job_ids. Returns: result

transcribe_audioA

Transcribe audio for a clip or folder using DaVinci Resolve's AI transcription.

Operates on a single clip (clip_name), a folder and its nested folders (folder_path), or the current Media Pool folder if neither is given. Requires Resolve Studio with transcription support.

Args: clip_name: Name of a clip in the current folder to transcribe. folder_path: Slash-separated folder path (e.g. 'Master/Interviews') to transcribe. use_speaker_detection: Whether to use speaker detection. If omitted, the project's setting is used.

Inputs: clip_name, folder_path, use_speaker_detection. Returns: result

wait_for_renderA

Wait for all rendering to complete, polling at the specified interval.

Blocks until no rendering is in progress.

Args: poll_interval: Seconds between progress checks. Defaults to 2.0.

Inputs: poll_interval. Returns: result

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 88 tools

    Disambiguation4/5

    Most tools have distinct purposes with clear descriptions. Some potential confusion exists between closely related tools like set_clip_metadata and set_clip_metadata_batch, but overall the boundaries are well defined.

    Naming Consistency5/5

    Tool names follow a consistent verb_noun pattern using snake_case, with only minor exceptions like analyze_for_intellisearch which still fit the pattern. The naming is predictable and readable.

    Tool Count2/5

    With 88 tools, the set is very large and likely overwhelming for an agent. While the server covers extensive DaVinci Resolve functionality, the sheer number increases selection difficulty and cognitive load.

    Completeness4/5

    The tool set covers most major workflows: media management, timeline editing, color grading, audio, rendering, and exports. Minor gaps exist, such as missing timeline clip deletion or trimming, but overall it is quite comprehensive.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers