{
  "markdown": "# Davinc-Resolve-Local-Bridge-MCP\n\n<!-- mcp-name: io.github.Airta-Admin/davinc-resolve-local-bridge-mcp -->\n\n<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/Airta-Admin/Davinc-Resolve-Local-Bridge-MCP/main/images/software-box.png\" alt=\"DaVinci Resolve Local Bridge MCP\" width=\"400\">\n</p>\n\n<p align=\"center\">\n  <strong>Control DaVinci Resolve from any AI assistant — Claude, Cursor, Devin, and more.</strong>\n</p>\n\n<p align=\"center\">\n  <strong>218 tools. Resolve API and optional-extension coverage. Works with DaVinci Resolve Free and Studio.</strong>\n</p>\n\n---\n\n## What Is This?\n\n**Davinc-Resolve-Local-Bridge-MCP** is a [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that gives AI assistants controlled access to DaVinci Resolve. It exposes **218 tools** covering projects, timelines, media, Fusion, color grading, rendering, and supported optional extensions.\n\n### How It Works\n\n```\nYour AI Assistant (Claude, Cursor, Devin, etc.)\n       │\n       │  talks MCP (stdio)\n       ▼\n  mcp_server/server.py        ← runs on your machine\n       │\n       │  talks HTTP (localhost:8787)\n       ▼\n  DaVinciResolveBridge.py ← runs INSIDE DaVinci Resolve\n       │                        (started from the Workflow Integration)\n       ▼\n  DaVinci Resolve API         ← full read + write access\n```\n\nThe bridge script runs **inside** DaVinci Resolve's process, giving it full access to the Resolve scripting API — even on the **Free edition** (which blocks external scripting). The MCP server runs as a separate process and proxies tool calls to the bridge over localhost HTTP.\n\n---\n\n## Quick Start\n\n### Prerequisites\n\n- **DaVinci Resolve 18.5+** (Free or Studio)\n- **Python 3.10+** on your machine\n- An MCP-compatible AI assistant (Claude Desktop, Cursor, Devin, etc.)\n\n### Step 1 — Install the Workflow Integration and Bridge\n\nRun the installer:\n\n```bash\npython install.py\n```\n\nThe installer adds the user-facing launcher under **Workspace → Workflow Integrations** and installs the underlying bridge script. Restart Resolve once after installation so it discovers the integration.\n\nFor a manual installation, copy `workflow/DaVinci Resolve Local Bridge MCP Server Connection.py` and the `workflow/assets` directory to Resolve's `Workflow Integration Plugins` directory. Also copy `bridge/Bridge-Connection-Script.py` to Resolve's scripts folder as `DaVinciResolveBridge.py`. The Scripts entry is retained as a fallback, not the normal launch path.\n\n| Platform | Path |\n|----------|------|\n| **Windows** | `%APPDATA%\\Blackmagic Design\\DaVinci Resolve\\Support\\Fusion\\Scripts\\Utility\\` |\n| **macOS** | `~/Library/Application Support/Blackmagic Design/DaVinci Resolve/Fusion/Scripts/Utility/` |\n| **Linux** | `~/.local/share/DaVinciResolve/Fusion/Scripts/Utility/` |\n\n### Step 2 — Install MCP Server Dependencies\n\n```bash\npip install -r requirements.txt\n```\n\n### Step 3 — Configure Your AI Assistant\n\nAdd the MCP server to your assistant's configuration file. The server path is `mcp_server/server.py` in this repo.\n\n#### Claude Desktop\n\nEdit `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"davinci-resolve-local-bridge\": {\n      \"command\": \"python\",\n      \"args\": [\"C:/path/to/Davinc-Resolve-Local-Bridge-MCP/mcp_server/server.py\"]\n    }\n  }\n}\n```\n\n#### Cursor\n\nEdit `.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"davinci-resolve-local-bridge\": {\n      \"command\": \"python\",\n      \"args\": [\"C:/path/to/Davinc-Resolve-Local-Bridge-MCP/mcp_server/server.py\"]\n    }\n  }\n}\n```\n\n#### Devin\n\nEdit `mcp_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"resolve-local-bridge\": {\n      \"command\": \"python\",\n      \"args\": [\"C:/path/to/Davinc-Resolve-Local-Bridge-MCP/mcp_server/server.py\"]\n    }\n  }\n}\n```\n\n#### Claude Code\n\n```bash\nclaude mcp add davinci-resolve-local-bridge -- python C:/path/to/Davinc-Resolve-Local-Bridge-MCP/mcp_server/server.py\n```\n\n#### Any MCP Client (generic)\n\nThe server uses **stdio transport**. Launch it with:\n\n```bash\npython mcp_server/server.py\n```\n\n### Step 4 — Start the Bridge Inside DaVinci Resolve\n\n1. **Open DaVinci Resolve**\n2. Go to **Workspace → Workflow Integrations → DaVinci Resolve Local Bridge MCP Server Connection**\n3. Click **Start Bridge**\n4. Confirm that the panel reports **Running on http://127.0.0.1:8787 (218 actions)**. For diagnostic details, open **Workspace → Console** and look for:\n\n```\n[Resolve Bridge] Connected to Resolve 21.0.4.5\n[Resolve Bridge] HTTP server running on http://127.0.0.1:8787\n[Resolve Bridge] 218 actions available\n```\n\n### Step 5 — Start Using It\n\nAsk your AI assistant:\n\n> \"Check if DaVinci Resolve is connected\"\n\nThe assistant will call the `resolve_status` tool and report back. Then try:\n\n> \"Create a new 1920x1080 30fps project called 'My Video' and add a timeline\"\n\n---\n\n## Architecture\n\n### Bridge Script (`bridge/Bridge-Connection-Script.py`)\n\nA Python script that runs **inside** DaVinci Resolve. The supported Workflow Integration launcher starts it for the user; **Workspace → Scripts → DaVinciResolveBridge** remains available only as a fallback. It:\n\n- Obtains the live `resolve` object from Fusion's globals\n- Starts an HTTP server on `127.0.0.1:8787`\n- Exposes 3 endpoints:\n  - `GET /health` — check if the bridge is alive\n  - `GET /actions` — list all available action names\n  - `POST /action` — execute an action by name with parameters\n- Stays alive with a blocking `serve_forever()` call\n- Kills any previous instance on the same port before starting\n\n### MCP Server (`mcp_server/server.py`)\n\nA standalone MCP server that:\n\n- Connects to the bridge over HTTP on localhost\n- Auto-discovers all 218 actions from the bridge's `/actions` endpoint\n- Exposes each action as an MCP tool with the `resolve_` prefix\n- Proxies tool calls to the bridge via `POST /action`\n- Stays in sync with the bridge — no manual tool definitions needed\n\n---\n\n## All 218 Tools\n\nThe MCP server auto-discovers tools from the bridge. Each tool is prefixed with `resolve_` (e.g., `status` becomes `resolve_status`). Pass parameters as a `params` object.\n\n### Resolve Application (15 tools)\n\n| Tool | Parameters | Description |\n|------|-----------|-------------|\n| `resolve_status` | — | Check bridge connectivity and get current project/timeline info |\n| `resolve_get_version` | — | Get Resolve version info |\n| `resolve_get_current_page` | — | Get the active page (edit, cut, color, etc.) |\n| `resolve_open_page` | `page` | Switch to a page: edit, cut, fusion, color, fairlight, deliver, media |\n| `resolve_get_layout_presets` | — | List available layout presets |\n| `resolve_load_layout_preset` | `presetName` | Load a layout preset by name |\n| `resolve_get_keyframe_mode` | — | Get current keyframe mode |\n| `resolve_set_keyframe_mode` | `keyframeMode` | Set keyframe mode |\n| `resolve_get_fairlight_presets` | — | List Fairlight audio presets |\n| `resolve_get_burnin_presets` | — | List burn-in presets |\n| `resolve_import_render_preset` | `presetPath` | Import a render preset from file |\n| `resolve_export_render_preset` | `presetName`, `exportPath` | Export a render preset to file |\n| `resolve_open_fusion_page` | — | Switch to Fusion page |\n| `resolve_open_edit_page` | — | Switch to Edit page |\n| `resolve_open_deliver_page` | — | Switch to Deliver page |\n\n### Project Manager (18 tools)\n\n| Tool | Parameters | Description |\n|------|-----------|-------------|\n| `resolve_create_project` | `name`, `width`, `height`, `fps` | Create a new project |\n| `resolve_load_project` | `name` | Load an existing project |\n| `resolve_save_project` | — | Save the current project |\n| `resolve_close_project` | — | Close the current project |\n| `resolve_delete_project` | `name` | Delete a project |\n| `resolve_create_folder` | `folderName` | Create a project folder |\n| `resolve_delete_folder` | `folderName` | Delete a project folder |\n| `resolve_get_project_list` | — | List projects in current folder |\n| `resolve_get_folder_list` | — | List subfolders in current folder |\n| `resolve_get_current_folder` | — | Get current folder name |\n| `resolve_open_folder` | `folderName` | Open a folder |\n| `resolve_goto_root_folder` | — | Navigate to root folder |\n| `resolve_goto_parent_folder` | — | Navigate to parent folder |\n| `resolve_import_project` | `filePath`, `projectName` | Import a .drp project |\n| `resolve_export_project` | `projectName`, `filePath`, `withStillsAndLUTs` | Export a project as .drp |\n| `resolve_archive_project` | `projectName`, `filePath`, ... | Archive a project |\n| `resolve_get_current_database` | — | Get current database name |\n| `resolve_get_database_list` | — | List available databases |\n\n### Project Settings (7 tools)\n\n| Tool | Parameters | Description |\n|------|-----------|-------------|\n| `resolve_get_project_name` | — | Get current project name |\n| `resolve_set_project_name` | `name` | Rename the current project |\n| `resolve_get_project_setting` | `key` | Get a project setting by key |\n| `resolve_set_project_setting` | `key`, `value` | Set a project setting |\n| `resolve_get_project_settings` | — | Get all project settings |\n| `resolve_get_project_preset_list` | — | List project presets |\n| `resolve_set_project_preset` | `presetName` | Apply a project preset |\n\n### Media Storage (4 tools)\n\n| Tool | Parameters | Description |\n|------|-----------|-------------|\n| `resolve_get_mounted_volumes` | — | List mounted storage volumes |\n| `resolve_get_subfolder_list` | `folderPath` | List subfolders in a path |\n| `resolve_get_file_list` | `folderPath` | List files in a folder |\n| `resolve_reveal_in_storage` | `path` | Reveal a file in the OS file browser |\n\n### Media Pool (13 tools)\n\n| Tool | Parameters | Description |\n|------|-----------|-------------|\n| `resolve_import_media` | `paths` (list) | Import media files into the pool |\n| `resolve_get_media_pool` | — | List all clips in root folder |\n| `resolve_get_root_folder` | — | Get root folder info |\n| `resolve_add_sub_folder` | `folderName`, `parentFolderName` | Create a subfolder |\n| `resolve_set_current_folder` | `folderName` | Set the current folder |\n| `resolve_delete_clips` | `clipNames` (list) | Delete clips from pool |\n| `resolve_move_clips` | `clipNames`, `targetFolder` | Move clips to a folder |\n| `resolve_relink_clips` | `clipNames`, `folderPath` | Relink clips |\n| `resolve_unlink_clips` | `clipNames` | Unlink clips |\n| `resolve_export_metadata` | `fileName`, `clipNames` | Export metadata CSV |\n| `resolve_get_selected_clips` | — | List selected clips |\n| `resolve_set_selected_clip` | `clipName` | Select a clip |\n| `resolve_add_timeline_mattes` | `paths` (list) | Add matte files |\n\n### Timeline (21 tools)\n\n| Tool | Parameters | Description |\n|------|-----------|-------------|\n| `resolve_create_timeline` | `name` | Create a new empty timeline |\n| `resolve_create_timeline_from_clips` | `name`, `clipNames` | Create timeline from clips |\n| `resolve_list_timelines` | — | List all timelines |\n| `resolve_get_timeline_name` | — | Get current timeline name |\n| `resolve_set_timeline_name` | `name` | Rename current timeline |\n| `resolve_set_current_timeline` | `timelineIndex` | Switch to timeline by index (1-based) |\n| `resolve_duplicate_timeline` | — | Duplicate the current timeline |\n| `resolve_delete_timelines` | `timelineNames` | Delete timelines |\n| `resolve_get_timeline_start_frame` | — | Get start frame |\n| `resolve_get_timeline_end_frame` | — | Get end frame |\n| `resolve_get_start_timecode` | — | Get start timecode |\n| `resolve_set_start_timecode` | `timecode` | Set start timecode |\n| `resolve_get_current_timecode` | — | Get current timecode |\n| `resolve_set_current_timecode` | `timecode` | Set current timecode |\n| `resolve_detect_scene_cuts` | — | Detect scene cuts |\n| `resolve_create_subtitles_from_audio` | `settings` | Auto-generate subtitles |\n| `resolve_timeline_export` | `fileName`, `exportType`, `exportSubtype` | Export timeline |\n| `resolve_import_timeline_from_file` | `filePath` | Import timeline from file |\n| `resolve_append_to_timeline` | `clipNames` | Append clips to timeline |\n| `resolve_get_timeline_setting` | `key` | Get a timeline setting |\n| `resolve_set_timeline_setting` | `key`, `value` | Set a timeline setting |\n\n### Timeline Tracks (11 tools)\n\n| Tool | Parameters | Description |\n|------|-----------|-------------|\n| `resolve_get_track_count` | `trackType` | Count tracks (video/audio/subtitle) |\n| `resolve_add_track` | `trackType` | Add a track |\n| `resolve_delete_track` | `trackType`, `trackIndex` | Delete a track |\n| `resolve_set_track_enable` | `trackType`, `trackIndex`, `enabled` | Enable/disable a track |\n| `resolve_get_track_enable` | `trackType`, `trackIndex` | Check if track is enabled |\n| `resolve_set_track_lock` | `trackType`, `trackIndex`, `locked` | Lock/unlock a track |\n| `resolve_get_track_lock` | `trackType`, `trackIndex` | Check if track is locked |\n| `resolve_get_track_name` | `trackType`, `trackIndex` | Get track name |\n| `resolve_set_track_name` | `trackType`, `trackIndex`, `name` | Set track name |\n| `resolve_get_items_in_track` | `trackType`, `index` | List clips on a track |\n| `resolve_get_timeline_selected_clips` | — | List selected timeline clips |\n\n### Timeline Items (66 tools)\n\nAll item actions accept optional `trackType`, `trackIndex`, `itemIndex` to target a specific clip, or operate on the first selected clip if omitted.\n\n| Tool | Parameters | Description |\n|------|-----------|-------------|\n| `resolve_get_item_name` | `trackType?`, `trackIndex?`, `itemIndex?` | Get clip name |\n| `resolve_set_item_name` | `name`, `trackType?`, ... | Rename a clip |\n| `resolve_get_item_duration` | `trackType?`, ... | Get clip duration |\n| `resolve_get_item_start` | `trackType?`, ... | Get clip start frame |\n| `resolve_get_item_end` | `trackType?`, ... | Get clip end frame |\n| `resolve_get_item_property` | `key?`, `trackType?`, ... | Get a clip property |\n| `resolve_set_item_property` | `key`, `value`, `trackType?`, ... | Set a clip property |\n| `resolve_get_item_enabled` | `trackType?`, ... | Check if clip is enabled |\n| `resolve_set_item_enabled` | `enabled`, `trackType?`, ... | Enable/disable a clip |\n| `resolve_set_item_color` | `colorName`, `trackType?`, ... | Set clip color |\n| `resolve_get_item_color` | `trackType?`, ... | Get clip color |\n| `resolve_clear_item_color` | `trackType?`, ... | Clear clip color |\n| `resolve_add_item_flag` | `color`, `trackType?`, ... | Add a flag |\n| `resolve_get_item_flags` | `trackType?`, ... | Get flags |\n| `resolve_clear_item_flags` | `color`, `trackType?`, ... | Clear flags |\n| `resolve_add_item_marker` | `frameId`, `color`, `name`, `note?`, ... | Add a marker |\n| `resolve_get_item_markers` | `trackType?`, ... | Get markers |\n| `resolve_insert_generator` | `generatorName` | Insert a generator |\n| `resolve_insert_fusion_generator` | `generatorName` | Insert a Fusion generator |\n| `resolve_insert_fusion_composition` | — | Insert a Fusion composition |\n| `resolve_insert_ofx_generator` | `generatorName` | Insert an OFX generator |\n| `resolve_insert_title` | `titleName` | Insert a title |\n| `resolve_insert_fusion_title` | `titleName` | Insert a Fusion title |\n| `resolve_grab_still` | — | Grab a still from current frame |\n| `resolve_grab_all_stills` | — | Grab stills from all clips |\n| `resolve_create_compound_clip` | `name` | Create a compound clip |\n| `resolve_create_fusion_clip` | — | Create a Fusion clip |\n| `resolve_import_into_timeline` | `filePath`, `importOptions?` | Import into timeline |\n| `resolve_stabilize` | `trackType?`, ... | Stabilize a clip |\n| `resolve_smart_reframe` | `trackType?`, ... | Smart Reframe a clip |\n| `resolve_create_magic_mask` | `mode`, `trackType?`, ... | Create a Magic Mask |\n| `resolve_regenerate_magic_mask` | `trackType?`, ... | Regenerate Magic Mask |\n| `resolve_get_item_track_info` | `trackType?`, ... | Get track info for a clip |\n| `resolve_get_linked_items` | `trackType?`, ... | Get linked items |\n| `resolve_set_item_cdl` | `cdl`, `trackType?`, ... | Set CDL values |\n| `resolve_add_take` | `mediaPoolItemName`, `startFrame?`, `endFrame?` | Add a take |\n| `resolve_get_takes_count` | `trackType?`, ... | Count takes |\n| `resolve_select_take_by_index` | `idx`, `trackType?`, ... | Select a take |\n| `resolve_finalize_take` | `trackType?`, ... | Finalize the current take |\n| `resolve_copy_grades` | `targetItemNames`, `trackType?`, ... | Copy grades to other clips |\n| `resolve_export_lut` | `exportType`, `path`, `trackType?`, ... | Export a LUT |\n| `resolve_set_color_output_cache` | `cache_value`, `trackType?`, ... | Set color output cache |\n| `resolve_set_fusion_output_cache` | `cache_value`, `trackType?`, ... | Set Fusion output cache |\n| `resolve_get_clip_metadata` | `metadataType?` | Get clip metadata |\n| `resolve_set_clip_metadata` | `metadataType`, `metadataValue` | Set clip metadata |\n| `resolve_get_clip_property` | `propertyName?` | Get clip property |\n| `resolve_set_clip_property` | `propertyName`, `propertyValue` | Set clip property |\n| `resolve_link_proxy_media` | `proxyMediaFilePath` | Link proxy media |\n| `resolve_unlink_proxy_media` | — | Unlink proxy media |\n| `resolve_replace_clip` | `filePath` | Replace clip with file |\n| `resolve_add_clip_marker` | `frameId`, `color`, `name`, `note?` | Add a clip marker |\n| `resolve_get_clip_markers` | — | Get clip markers |\n| `resolve_set_clip_color` | `colorName` | Set clip color (media pool) |\n| `resolve_add_clip_flag` | `color` | Add a clip flag |\n| `resolve_transcribe_clip_audio` | `useSpeakerDetection?` | Transcribe audio |\n| `resolve_set_clip_mark_inout` | `markIn`, `markOut`, `type` | Set mark in/out |\n| `resolve_clear_clip_mark_inout` | `type` | Clear mark in/out |\n| `resolve_add_timeline_marker` | `frameId`, `color`, `name`, `note?` | Add timeline marker |\n| `resolve_get_timeline_markers` | — | Get timeline markers |\n| `resolve_delete_timeline_markers_by_color` | `color` | Delete markers by color |\n| `resolve_delete_timeline_marker_at_frame` | `frameNum` | Delete marker at frame |\n| `resolve_export_current_frame` | `filePath` | Export current frame as still |\n| `resolve_apply_fairlight_preset` | `name` | Apply Fairlight preset |\n| `resolve_get_quick_export_presets` | — | List quick export presets |\n\n### Fusion Compositions (14 tools)\n\n| Tool | Parameters | Description |\n|------|-----------|-------------|\n| `resolve_create_fusion_comp` | `name` | Create a Fusion composition |\n| `resolve_add_fusion_comp` | `trackType?`, ... | Add a Fusion comp to a clip |\n| `resolve_import_fusion_comp` | `path`, `trackType?`, ... | Import a .comp file |\n| `resolve_export_fusion_comp` | `path`, `compIndex?`, `trackType?`, ... | Export a Fusion comp |\n| `resolve_load_fusion_comp_by_name` | `compName`, `trackType?`, ... | Load a comp by name |\n| `resolve_delete_fusion_comp_by_name` | `compName`, `trackType?`, ... | Delete a comp by name |\n| `resolve_rename_fusion_comp` | `oldName`, `newName`, `trackType?`, ... | Rename a comp |\n| `resolve_get_item_fusion_comp_count` | `trackType?`, ... | Count Fusion comps on a clip |\n| `resolve_get_item_fusion_comp_names` | `trackType?`, ... | List Fusion comp names |\n| `resolve_get_current_comp` | — | Get current Fusion composition |\n| `resolve_fusion_get_comp_list` | — | List all open comps |\n| `resolve_fusion_new_comp` | — | Create a new Fusion comp |\n| `resolve_fusion_save_comp` | `filePath` | Save current comp |\n| `resolve_fusion_load_comp` | `filePath` | Load a comp file |\n| `resolve_fusion_close_comp` | — | Close current comp |\n| `resolve_fusion_render_comp` | — | Render current comp |\n\n### Fusion Tools (11 tools)\n\n| Tool | Parameters | Description |\n|------|-----------|-------------|\n| `resolve_fusion_get_tool_list` | — | List all tools/nodes in current comp |\n| `resolve_fusion_find_tool` | `name` | Find a tool by name |\n| `resolve_fusion_delete_tool` | `name` | Delete a tool |\n| `resolve_fusion_get_attrs` | `name` | Get tool attributes |\n| `resolve_fusion_set_attrs` | `name`, `attrs` | Set tool attributes |\n| `resolve_fusion_add_node` | `nodeType`, `name` | Add a node (Background, Paint, Merge, etc.) |\n| `resolve_fusion_connect` | `fromNode`, `toNode`, `input` | Connect two nodes |\n| `resolve_fusion_set_input` | `node`, `input`, `value`, `frame?` | Set a node input (can keyframe) |\n| `resolve_fusion_get_input` | `node`, `input` | Get a node input value |\n| `resolve_fusion_set_current_frame` | `frame` | Set the current frame |\n| `resolve_fusion_get_current_frame` | — | Get the current frame |\n\n### Gallery (4 tools)\n\n| Tool | Parameters | Description |\n|------|-----------|-------------|\n| `resolve_get_gallery_still_albums` | — | List gallery still albums |\n| `resolve_get_gallery_powergrade_albums` | — | List PowerGrade albums |\n| `resolve_create_gallery_still_album` | — | Create a still album |\n| `resolve_create_powergrade_album` | — | Create a PowerGrade album |\n\n### Color / Nodes (7 tools)\n\n| Tool | Parameters | Description |\n|------|-----------|-------------|\n| `resolve_get_node_count` | — | Get node count on current clip |\n| `resolve_get_node_label` | `nodeIndex` | Get a node label |\n| `resolve_get_node_lut` | `nodeIndex` | Get a node's LUT |\n| `resolve_set_node_lut` | `nodeIndex`, `lutPath` | Set a LUT on a node |\n| `resolve_set_node_enabled` | `nodeIndex`, `isEnabled` | Enable/disable a node |\n| `resolve_reset_all_grades` | — | Reset all grades |\n| `resolve_refresh_lut_list` | — | Refresh the LUT list |\n\n### Rendering (22 tools)\n\n| Tool | Parameters | Description |\n|------|-----------|-------------|\n| `resolve_get_render_formats` | — | List render formats |\n| `resolve_get_render_codecs` | `renderFormat` | List codecs for a format |\n| `resolve_get_current_render_format_codec` | — | Get current format/codec |\n| `resolve_set_render_format_codec` | `format`, `codec` | Set render format and codec |\n| `resolve_get_render_mode` | — | Get render mode |\n| `resolve_set_render_mode` | `renderMode` | Set render mode |\n| `resolve_get_render_resolutions` | `format`, `codec` | List render resolutions |\n| `resolve_get_render_preset_list` | — | List render presets |\n| `resolve_load_render_preset` | `presetName` | Load a render preset |\n| `resolve_save_as_new_render_preset` | `presetName` | Save a new render preset |\n| `resolve_delete_render_preset` | `presetName` | Delete a render preset |\n| `resolve_set_render_settings` | `settings` | Set render settings (TargetDir, CustomName, etc.) |\n| `resolve_add_render_job` | — | Add a render job |\n| `resolve_delete_render_job` | `jobId` | Delete a render job |\n| `resolve_delete_all_render_jobs` | — | Delete all render jobs |\n| `resolve_get_render_job_list` | — | List render jobs |\n| `resolve_start_rendering` | `jobIds?`, `isInteractiveMode?` | Start rendering |\n| `resolve_stop_rendering` | — | Stop rendering |\n| `resolve_is_rendering_in_progress` | — | Check if rendering |\n| `resolve_get_render_status` | `jobId` | Get render job status |\n| `resolve_render_with_quick_export` | `presetName` | Quick export |\n| `resolve_render` | `settings?` | Add job and start rendering |\n\n### Speech & Subtitles (1 tool)\n\n| Tool | Parameters | Description |\n|------|-----------|-------------|\n| `resolve_generate_speech` | `text`, `voice?` | Generate AI speech audio |\n\n### Special (1 tool)\n\n| Tool | Parameters | Description |\n|------|-----------|-------------|\n| `resolve_create_hand_animation` | `imagePath`, `...` | Create a hand-drawing animation (Daniel Batal technique) |\n\n---\n\n### Optional open-source extensions (3 tools)\n\n| MCP Tool | Description |\n|---|---|\n| `resolve_get_extension_status` | Read-only detection for OpenCaptions and Rembg-Fuse |\n| `resolve_open_captions_list_templates` | List caption Text+ templates in the current project |\n| `resolve_fusion_add_rembg_node` | Add an installed Rembg-Fuse node to the current Fusion comp |\n\nOpenCaptions and Rembg-Fuse are independent third-party projects and are not bundled with this package.\n\n### DaVinci Resolve Local Bridge MCP Server Connection\n\n`install.py` also installs a supported Workflow Integration launcher. After restarting Resolve once, open **Workspace → Workflow Integrations → DaVinci Resolve Local Bridge MCP Server Connection** for Start Bridge, Stop Bridge, Refresh Status, and an optional one-time **$5 Developer Tip** button that opens Stripe-hosted checkout in the default browser. Resolve's public scripting API does not support injecting arbitrary buttons into its native top menu bar; Workflow Integrations is the supported persistent menu surface.\n\n### Support development\n\n<p align=\"center\">\n  <a href=\"https://buy.stripe.com/9B6eVd3vP3Et5465MI7bW05\">\n    <img src=\"https://raw.githubusercontent.com/Airta-Admin/Davinc-Resolve-Local-Bridge-MCP/main/workflow/assets/tip-jar.png\" alt=\"Tip jar\" width=\"150\">\n  </a>\n</p>\n\n<p align=\"center\">\n  <strong><a href=\"https://buy.stripe.com/9B6eVd3vP3Et5465MI7bW05\">Leave an optional one-time $5 developer tip</a></strong><br>\n  Secure checkout is hosted by Stripe. A tip supports continued development and maintenance of this open-source bridge; it is not a charitable donation or tax-deductible contribution.\n</p>\n\n## Troubleshooting\n\n### Bridge won't start\n\n- Make sure DaVinci Resolve is running and a project is open\n- Open **Workspace → Workflow Integrations → DaVinci Resolve Local Bridge MCP Server Connection** and click **Start Bridge**\n- Check the Console (Workspace → Console) for error messages\n- Restart DaVinci Resolve after installation — it scans Workflow Integrations at startup\n- If the Workflow Integration cannot be opened, use **Workspace → Scripts → DaVinciResolveBridge** as a fallback and report the integration error\n\n### \"Could not connect to Resolve Bridge\"\n\n- Open **Workspace → Workflow Integrations → DaVinci Resolve Local Bridge MCP Server Connection** and verify that its status says **Running**\n- Check that the console shows `[Resolve Bridge] HTTP server running on http://127.0.0.1:8787`\n- If the port is already in use, close Resolve and reopen it (stale `fuscript.exe` processes can hold the port)\n\n### Tools return errors\n\n- Call `resolve_status` first to verify connectivity\n- Some actions require a project to be open, a timeline to exist, or a clip to be selected\n- Error messages from the bridge indicate what's missing\n\n---\n\n## Technical Details\n\n- **Bridge port:** 127.0.0.1:8787 (localhost only, no external access)\n- **Transport:** HTTP/1.0 with Connection: close\n- **MCP transport:** stdio\n- **Dependencies:** `mcp`, `requests` (MCP server only; bridge uses pure stdlib)\n- **Resolve version:** 18.5+ (tested on 21.0.4.5)\n- **Python:** 3.10+ for MCP server; bridge uses Resolve's embedded Python\n\n---\n\n## License\n\nMIT License — see [LICENSE](LICENSE) file.\n\n---\n\n## Credits\n\nCreated by: A Fellow Coder for fellow coders. Inspired by the DaVinci Resolve scripting community.\n",
  "bytes": 26809,
  "sha": "11c89c90245f04dcc182a21cd51e36416e609503dfa3c1d94e45dc814d8a45c8",
  "repo_slug": "airta-admin/davinc-resolve-local-bridge-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_airta_admin_davinc_resolve_loc_9664b355/readme"
}