resolve-mcp
Provides full API coverage for DaVinci Resolve 21, including 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.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@resolve-mcp apply a LUT to all clips in timeline"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| Connection state, version, current page |
| Project name, resolution, frame rate, timeline count |
| All project names in current database |
| Full project settings |
| All timelines with index and name |
| Current timeline details (frames, tracks, TC, FPS) |
| Track list with type, name, enabled, locked, item count |
| All timeline markers |
| All timeline items across video tracks |
| Recursive folder tree with clip counts |
| Current folder contents |
| Clip details for current folder |
| Currently selected clips |
| Mounted media storage volumes |
| Gallery still albums |
| Stills in current album |
| Render job list |
| Available formats and codecs |
| Render presets |
| 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 toolsadd_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:
Extract roll name and detect camera letter from the path
Create OCF/{cam}-Cam/{roll_name} bin structure in the media pool
Scan directory recursively for video files
Import clips using batch-first with individual fallback
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
Scored across 88 tools
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.
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.
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.
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
Related MCP Connectors
QC, conform and AI video, image and sound generation for film. Priced before every run.
AI video editor for agents and humans: timeline, captions, color, audio and generation as MCP tools.
AI film lab for filmmakers: generate and review images/clips with input provenance, cost preflight
Generate, extend and edit AI images and videos, then assemble clips on a timeline and render.
Related MCP Servers
- AlicenseBqualityBmaintenanceProvides an AI assistant with 132 tools to control DaVinci Resolve Studio on macOS, enabling project management, media handling, timeline editing, color grading, rendering, and Fusion compositing through natural language commands.100MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to control DaVinci Resolve (Free and Studio) through natural language, providing 162 tools for timeline editing, color grading, rendering, and more. Includes local AI replacements for Studio-only features like voice isolation, background removal, and transcription.1MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to control DaVinci Resolve (Free and Studio) through 215 MCP tools covering the full Resolve scripting API, including projects, timelines, media, Fusion, color, and rendering.139 PyPI1MIT
- AlicenseBqualityCmaintenanceEnables AI-driven video editing and color grading in DaVinci Resolve, including beat-synced cuts, algorithmic 3D LUT generation, media transcoding, and hands-free playback control through natural language.212MIT