DaVinci Resolve

Permite que assistentes de IA interajam com o DaVinci Resolve Studio para controle avançado sobre edição de vídeo, correção de cores e áudio.

Documentação

DaVinci Resolve MCP Server

Controle o DaVinci Resolve Studio a partir de clientes MCP, como o Claude Desktop.

Este projeto expõe projetos, linhas do tempo, mídia, Fusion, cor, áudio, reprodução e operações de renderização do Resolve por meio de um servidor local de Model Context Protocol.

O que ele faz

O servidor fornece:

  • 32 ferramentas MCP para edição e controle do Resolve;
  • 6 recursos MCP somente leitura que descrevem o estado atual do Resolve;
  • descoberta automática da API de script do DaVinci Resolve no Windows, macOS e Linux;
  • uma sonda de módulo nativo protegida, para que uma importação quebrada de fusionscript não derrube o servidor MCP;
  • isolamento de runtime do Windows para impedir que o Resolve carregue uma DLL Python incompatível.

Exemplos de solicitações de um cliente MCP:

Crie um projeto chamado “Product Launch”.

Importe esses três clipes e crie uma linha do tempo chamada “Rough Cut”.

Adicione um marcador azul no quadro 240 com a nota “Review transition”.

Salve a classificação atual como um still no álbum “Approved Looks”.

Requisitos

  • DaVinci Resolve Studio 18 ou mais recente. O script externo deve estar habilitado.
  • CPython 3.10 ou 3.11 de 64 bits. O módulo de script do Resolve ainda importa imp, que foi removido do Python 3.12.
  • A API de script do DaVinci Resolve instalada com o Resolve.
  • Um cliente MCP, como o Claude Desktop.

Antes de iniciar o servidor, abra o Resolve e defina:

Preferences → System → General → External scripting using → Local

A edição gratuita do Resolve não expõe a conexão de script externo usada por este servidor. O processo MCP pode iniciar, mas permanecerá desconectado.

Instalação

Clone o repositório primeiro:

git clone https://github.com/Tooflex/davinci-resolve-mcp.git
cd davinci-resolve-mcp

Windows

Use um Python 64 bits comum do python.org. Não use um Python autônomo gerenciado por uv no Windows: sabe-se que o fusionscript.dll do Resolve falha com essas versões.

Instale o Python 3.10:

winget install --id Python.Python.3.10 -e

Crie o ambiente e instale as dependências:

& "$env:LOCALAPPDATA\Programs\Python\Python310\python.exe" -m venv .venv310
.\.venv310\Scripts\python.exe -m pip install --upgrade pip
.\.venv310\Scripts\python.exe -m pip install -e .

Inicie o servidor por meio do launcher do Windows:

.\run_server.ps1

Sempre use run_server.ps1 no Windows. Ele fixa o Resolve no runtime Python correto, isola PATH e configura os caminhos da API de script antes de iniciar o servidor.

macOS

Crie um ambiente virtual com CPython 3.10 ou 3.11:

python3.11 -m venv .venv
./.venv/bin/python -m pip install --upgrade pip
./.venv/bin/python -m pip install -e .

Inicie o servidor:

./.venv/bin/davinci-resolve-mcp

Os locais padrão da API do Resolve são detectados automaticamente:

  • /Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/Modules
  • ~/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/Modules

Tanto Macs Intel quanto Apple Silicon usam os mesmos caminhos de aplicativo e script do Resolve.

Linux

Crie o ambiente e instale as dependências:

python3.11 -m venv .venv
./.venv/bin/python -m pip install --upgrade pip
./.venv/bin/python -m pip install -e .
./.venv/bin/davinci-resolve-mcp

O caminho padrão de script no Linux é /opt/resolve/Developer/Scripting/Modules.

Se você usar uv como instalador, aponte explicitamente para um ambiente CPython compatível existente:

uv pip install --python .venv/bin/python -e .

No Windows, continue usando o ambiente python.org comum e run_server.ps1; não deixe o uv provisionar um runtime Python autônomo.

Configuração do cliente MCP

O servidor usa o transporte padrão de E/S do MCP. Configure seu cliente para iniciar o servidor como um processo local.

Claude Desktop no Windows

Edite %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "davinci-resolve": {
      "command": "powershell",
      "args": [
        "-NoProfile",
        "-ExecutionPolicy",
        "Bypass",
        "-File",
        "C:\\absolute\\path\\to\\davinci-resolve-mcp\\run_server.ps1"
      ]
    }
  }
}

Claude Desktop no macOS

Edite ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "davinci-resolve": {
      "command": "/absolute/path/to/davinci-resolve-mcp/.venv/bin/davinci-resolve-mcp",
      "args": []
    }
  }
}

Outros clientes MCP

Use os mesmos pares de comando e argumento mostrados acima:

  • Windows: powershell -NoProfile -ExecutionPolicy Bypass -File <run_server.ps1>
  • macOS/Linux: <venv>/bin/davinci-resolve-mcp

Use caminhos absolutos. Mantenha o Resolve em execução, reinicie o cliente MCP após alterar a configuração e verifique se as ferramentas davinci-resolve estão disponíveis.

Recursos MCP disponíveis

URIDescrição
system://statusStatus da conexão, do projeto e da linha do tempo
project://currentNome do projeto atual e contagem de linhas do tempo
timeline://currentNome, duração e contagem de trilhas de vídeo da linha do tempo atual
timeline://itemsItens na primeira trilha de vídeo
mediapool://currentPasta atual do pool de mídia e contagem de clipes
gallery://albumsNomes dos álbuns da galeria

Ferramentas MCP disponíveis

Projetos e navegação

FerramentaOperação
refreshAtualizar objetos em cache do Resolve
create_projectCriar um projeto
load_projectAbrir um projeto existente
save_projectSalvar o projeto atual
export_projectExportar um projeto para um arquivo
import_projectImportar um arquivo de projeto
set_project_settingAlterar uma configuração do projeto
open_pageAbrir Media, Edit, Fusion, Color, Fairlight ou Deliver

Mídia e linhas do tempo

FerramentaOperação
import_mediaImportar arquivos para o pool de mídia
add_sub_folderAdicionar uma subpasta ao pool de mídia
create_timelineCriar uma linha do tempo vazia
set_current_timelineSelecionar uma linha do tempo pelo índice baseado em 1
append_to_timelineAnexar clipes nomeados
create_timeline_from_clipsConstruir uma linha do tempo a partir de clipes nomeados
import_timeline_from_fileImportar uma linha do tempo, como XML ou EDL
set_clip_propertyAlterar uma propriedade de clipe da linha do tempo
add_timeline_markerAdicionar um marcador em um quadro
add_trackAdicionar uma trilha de vídeo, áudio ou legenda
set_track_nameRenomear uma trilha
enable_trackHabilitar ou desabilitar uma trilha
set_current_versionSelecionar uma versão de clipe de cor ou Fusion

Fusion e cor

FerramentaOperação
execute_luaExecutar Lua no ambiente Fusion do Resolve
create_fusion_nodeAdicionar um nó à composição Fusion atual
add_color_nodeAdicionar um nó de cor ao clipe atual
save_stillSalvar a classificação atual em um álbum da galeria
apply_stillAplicar um still nomeado a um clipe

execute_lua executa código dentro do Resolve. Execute apenas scripts de fontes confiáveis.

Áudio, reprodução e renderização

FerramentaOperação
set_audio_volumeDefinir o volume de áudio de um clipe nomeado
set_track_volumeDefinir o volume de uma trilha de áudio
play_timelineIniciar reprodução
stop_timelineParar reprodução
set_playhead_positionMover o cursor de reprodução para um quadro
start_project_renderIniciar uma renderização com um preset e caminho de saída opcionais

Como funciona a inicialização da conexão

server.py importa resolve_env.py antes de criar ResolveAPI.

Em todas as plataformas, a inicialização:

  1. seleciona os caminhos da API de script do Resolve e da biblioteca nativa;
  2. propaga o diretório Modules selecionado para processos filhos;
  3. testa DaVinciResolveScript em um subprocesso descartável;
  4. importa a biblioteca nativa no processo MCP somente quando a sonda sai com segurança.

No Windows, o Resolve pode, de outra forma, selecionar um runtime Python do registro do Windows e carregar um python3xx.dll estranho no processo atual. FUSION_PYTHON3_HOME, o pré-carregamento de DLL e o launcher isolado evitam essa falha nativa.

Substituições de ambiente

Os padrões funcionam para instalações padrão do Resolve. Para uma instalação personalizada, defina estas variáveis antes de iniciar o servidor:

VariávelFinalidade
RESOLVE_SCRIPT_PATHDiretório que contém DaVinciResolveScript.py
RESOLVE_SCRIPT_APIRaiz do diretório Developer/Scripting do Resolve
RESOLVE_SCRIPT_LIBCaminho absoluto para fusionscript.dll ou fusionscript.so
FUSION_PYTHON3_HOMERuntime Python do Windows que o Resolve deve carregar

Exemplo:

export RESOLVE_SCRIPT_PATH="/custom/Developer/Scripting/Modules"
export RESOLVE_SCRIPT_API="/custom/Developer/Scripting"
export RESOLVE_SCRIPT_LIB="/custom/Fusion/fusionscript.so"
./.venv/bin/davinci-resolve-mcp

Solução de problemas

O servidor inicia, mas não está conectado

  • Confirme que o DaVinci Resolve Studio está em execução.
  • Defina External scripting using como Local e reinicie o Resolve.
  • Confirme que o Python configurado é a versão 3.10 ou 3.11.
  • Verifique se o diretório Modules de script do Resolve existe.

O servidor permanece intencionalmente disponível em um estado desconectado quando não consegue inicializar o Resolve.

scriptapp('Resolve') returned None

O módulo nativo foi carregado, mas não foi possível obter um objeto Resolve em execução. O Resolve está fechado, o script externo está desabilitado ou a edição instalada não suporta script externo.

ModuleNotFoundError: No module named 'imp'

Está sendo usado Python 3.12 ou mais recente. Recrie o ambiente virtual com Python 3.10 ou 3.11.

Violação de acesso no Windows 0xC0000005

Inicie o projeto por meio de run_server.ps1, não com python server.py.

A falha ocorre quando fusionscript.dll carrega um runtime Python incompatível, geralmente de outra instalação python.org ou Anaconda registrada na máquina. O launcher define FUSION_PYTHON3_HOME e isola a resolução de DLL.

No valid Resolve scripting module path found

Defina RESOLVE_SCRIPT_PATH para o diretório que contém DaVinciResolveScript.py. Se a biblioteca nativa também estiver em um local não padrão, defina RESOLVE_SCRIPT_LIB.

Dependências MCP ausentes

Instale o projeto no mesmo interpretador configurado no cliente MCP:

python -m pip install -e .

Desenvolvimento

Instale o projeto em modo editável:

python -m pip install -e .

Execute os testes unitários:

python -m unittest discover -s tests -v

Execute verificações de sintaxe:

python -m py_compile server.py resolve_api.py resolve_env.py

O fluxo de trabalho do GitHub Actions executa os testes unitários em Python 3.10 e 3.11 no Windows, macOS e Linux.

As contribuições devem manter o comportamento de inicialização específico da plataforma coberto por testes.