An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

        

# DaVinci Resolve MCP Server

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Version](https://img.shields.io/badge/version-1.2.0-blue)](https://github.com/samuelgursky/servers)
[![MCP](https://img.shields.io/badge/MCP-compatible-brightgreen)](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 Editor

Your 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