https://github.com/samuelgursky/davinci-resolve-mcp
MCP server integration for DaVinci Resolve
https://github.com/samuelgursky/davinci-resolve-mcp
blackmagic blackmagic-design blackmagicdesign davinci-resolve davinciresolve mcp mcp-server
Last synced: 26 days ago
JSON representation
MCP server integration for DaVinci Resolve
- Host: GitHub
- URL: https://github.com/samuelgursky/davinci-resolve-mcp
- Owner: samuelgursky
- Created: 2025-03-18T03:11:04.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2025-03-18T08:28:08.000Z (about 1 month ago)
- Last Synced: 2025-03-18T09:34:03.745Z (about 1 month ago)
- Topics: blackmagic, blackmagic-design, blackmagicdesign, davinci-resolve, davinciresolve, mcp, mcp-server
- Language: Python
- Homepage:
- Size: 30.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-mcp-zh - samuelgursky/davinci-resolve-mcp
- awesome-mcp-servers - DaVinci Resolve AI Assistant - MCP server integration for DaVinci Resolve (Table of Contents / Other Tools and Integrations)
- awesome-mcp-servers - DaVinci Resolve AI Assistant - MCP server integration for DaVinci Resolve (Table of Contents / Other Tools and Integrations)
README
# DaVinci Resolve MCP Server
[](https://opensource.org/licenses/MIT)
[](https://github.com/samuelgursky/servers)
[](https://modelcontextprotocol.io)An MCP server that provides tools for accessing and controlling DaVinci Resolve through its Scripting API, allowing AI assistants like Claude to interact with your timeline, media, and more.
## Features
- **Project Management**: Get project info, list projects, and switch between them
- **Timeline Operations**: Get timeline info, clip names, markers, and control playback
- **Clip Information**: Get detailed clip info including source timecode
- **Media Pool Access**: Browse media, view folder structure, and add clips to the timeline
- **Color Correction**: Node management, primary correction, and LUT operations (coming soon)
- **Advanced Timeline Analysis**: Generate and export source timecode reports## Installation
### Prerequisites
- DaVinci Resolve Studio (Free version has limited scripting support)
- Python 3.6+ (64-bit)
- DaVinci Resolve API access (automatically set up when installed)### Development Environment
This project is being developed on:
- macOS Sequoia 15.0.1
- DaVinci Resolve Studio 19.1.3
- Cursor AI Code EditorYour experience may vary on different systems or with different versions of DaVinci Resolve.
### Setup
```bash
# Install from PyPI
pip install mcp-server-davinci-resolve# Or install from GitHub
pip install git+https://github.com/samuelgursky/servers.git#subdirectory=mcp-server-davinci-resolve
```## Usage
### Starting the server
```bash
# Start the server
mcp-server-davinci-resolve# Specify host and port
mcp-server-davinci-resolve --host 127.0.0.1 --port 8080# With debug logging
mcp-server-davinci-resolve --debug
```### Configuration with Cursor
This integration has been tested and verified to work with the Cursor AI Code Editor.
### Potential Configuration with Claude Desktop (Untested)
The following configuration may work with Claude Desktop, but this has NOT been tested:
```json
{
"mcpServers": {
"davinci_resolve": {
"command": "mcp-server-davinci-resolve",
"args": []
}
}
}
```A sample configuration file is included in the repository as `claude_desktop_config.json`. To use it:
1. Copy the file to your Claude Desktop configuration directory
2. Restart Claude Desktop
3. Verify the DaVinci Resolve MCP server appears in your available tools## Examples
### Working with Projects
```typescript
// Get information about the current project
const projectInfo = await client.execute("mcp_get_project_info");
console.log(`Project: ${projectInfo.name}, Resolution: ${projectInfo.resolution}, FPS: ${projectInfo.fps}`);// List all projects
const projects = await client.execute("mcp_get_project_list");
console.log("Available projects:", projects.projects.join(", "));// Switch to a different project
await client.execute("mcp_switch_to_project", { project_name: "My Documentary" });
```### Working with Timelines
```typescript
// Get current timeline name
const timelineName = await client.execute("mcp_get_current_timeline_name");
console.log(`Current timeline: ${timelineName.name}`);// Get timeline information
const timelineInfo = await client.execute("mcp_get_timeline_info");
console.log(`Timeline has ${timelineInfo.video_tracks} video tracks and ${timelineInfo.audio_tracks} audio tracks`);// Get all clips in timeline
const clips = await client.execute("mcp_get_timeline_clip_names");
console.log(`Timeline contains ${clips.clips.length} clips`);// Get markers
const markers = await client.execute("mcp_get_timeline_markers");
console.log(`Timeline has ${markers.markers.length} markers`);
```### Controlling Playback
```typescript
// Get playhead position
const position = await client.execute("mcp_get_playhead_position");
console.log(`Current position: ${position.timecode}`);// Control playback
await client.execute("mcp_control_playback", { command: "play" });
// Other commands: "stop", "pause", "next_frame", "prev_frame", "next_clip", "prev_clip"
```### Working with Clips
```typescript
// Get details about a specific clip
const clipDetails = await client.execute("mcp_get_clip_details", {
track_type: "video",
track_index: 1,
clip_index: 0
});
console.log(`Clip: ${clipDetails.name}, Duration: ${clipDetails.duration}`);// Get source timecode information
const timecodeInfo = await client.execute("mcp_get_clip_source_timecode", {
track_type: "video",
track_index: 1,
clip_index: 0
});
```### Timecode Reporting
```typescript
// Generate a source timecode report for the entire timeline
const report = await client.execute("mcp_get_source_timecode_report");// Export report to file
await client.execute("mcp_export_source_timecode_report", {
export_path: "/path/to/report.csv",
format: "csv",
video_tracks_only: false
});
```## Environment Setup
DaVinci Resolve has specific API paths that are needed depending on your operating system. These are automatically set up by the package.
**Mac OS X:**
```
RESOLVE_SCRIPT_API="/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting"
RESOLVE_SCRIPT_LIB="/Applications/DaVinci Resolve/DaVinci Resolve.app/Contents/Libraries/Fusion/fusionscript.so"
PYTHONPATH="$PYTHONPATH:$RESOLVE_SCRIPT_API/Modules/"
```**Windows:**
```
RESOLVE_SCRIPT_API="%PROGRAMDATA%\Blackmagic Design\DaVinci Resolve\Support\Developer\Scripting"
RESOLVE_SCRIPT_LIB="C:\Program Files\Blackmagic Design\DaVinci Resolve\fusionscript.dll"
PYTHONPATH="%PYTHONPATH%;%RESOLVE_SCRIPT_API%\Modules\"
```**Linux:**
```
RESOLVE_SCRIPT_API=`/opt/resolve/Developer/Scripting`
RESOLVE_SCRIPT_LIB=`/opt/resolve/libs/Fusion/fusionscript.so`
PYTHONPATH="$PYTHONPATH:$RESOLVE_SCRIPT_API/Modules/"
```## Known Limitations
- DaVinci Resolve must be running before starting the MCP server
- Some operations (like project settings changes) have API limitations
- Playback control uses OS-specific keyboard shortcuts in some cases
- Resolve Free has limited scripting support compared to Studio version## Contributing
Contributions are welcome! Please check the [Contributing Guide](CONTRIBUTING.md) for details.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE.txt) file for details.
## Acknowledgements
- Built with the [Model Context Protocol](https://modelcontextprotocol.io) specification
- Utilizes the DaVinci Resolve Scripting API from Blackmagic Design