DaVinci Resolve MCP

Uma integração de servidor MCP para o software de edição de vídeo DaVinci Resolve.

Documentação

Servidor MCP do DaVinci Resolve

Inglês | 简体中文

Version npm API Coverage Tools Advanced Tested DaVinci Resolve Python License

Um servidor Model Context Protocol (MCP) que permite que assistentes de IA controlem o DaVinci Resolve Studio por meio da API oficial de Scripting. Ele oferece cobertura completa da API, além de auxiliares de fluxo de trabalho protegidos para edição, organização da mídia pool, configuração de renderização, marcadores de revisão, correção de cor, Fusion, Fairlight, tarefas do ciclo de vida do projeto, criação de extensões e análise de mídia segura para a fonte.

Local control panel

Um painel de controle local no navegador acompanha o servidor para inspecionar o estado do Resolve, executar análises seguras para a fonte, explorar clipes e planos analisados e editar a saída da análise inline. Consulte o Guia do Painel de Controle para o tour completo.

Início Rápido

npx davinci-resolve-mcp setup

Antes de conectar, abra o DaVinci Resolve Studio e defina Preferências > Geral > Scripts externos usando para Local. (Na edição gratuita, essa preferência não ajuda — consulte Edição gratuita abaixo.) O inicializador npm instala uma cópia gerenciada no diretório de dados do aplicativo do usuário e, em seguida, executa o instalador universal do Python. O instalador cria um ambiente virtual, detecta os caminhos do Resolve e pode configurar o Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, Zed, Continue, Cline, Roo Code, OpenCode, Codex CLI e IDEs JetBrains.

Para instalações a partir da fonte:

git clone https://github.com/samuelgursky/davinci-resolve-mcp.git
cd davinci-resolve-mcp
python install.py

Para caminhos de plataforma, configuração específica do cliente e configuração manual, consulte Instalação e Configuração.

O instalador e o servidor verificam a versão mais recente do GitHub para atualizações do MCP. As verificações são feitas com melhor esforço e limitadas; o servidor nunca bloqueia a inicialização do MCP por causa de um prompt. O instalador pode perguntar, adiar, ignorar uma versão, desativar verificações ou aplicar uma atualização automática segura opcional para checkouts git limpos.

Edição gratuita (ponte no aplicativo)

A Blackmagic limita os scripts externos ao Studio: na edição gratuita, scriptapp("Resolve") recusa um processo externo, independentemente do que a preferência diga. Até o Resolve 21.0.x, o menu Workspace ▸ Scripts não era limitado — um script iniciado a partir dele recebe o objeto resolve ativo (medido na versão gratuita 21.0.3.7) — então o servidor pode alcançar a edição gratuita por meio de um pequeno script que é executado dentro do Resolve e o reexporta por meio de um listener de loopback autenticado. O Resolve 21.1 moveu os scripts Python para o Studio. Na versão gratuita 21.1, o menu Scripts não lista mais arquivos .py (relatado no Fedora 44 na issue #203; um script Lua na mesma pasta lista normalmente). Se o Console ainda executa Python lá não foi confirmado, então trate a ponte como um caminho para 21.0.x até que isso seja medido.

python scripts/install_resolve_bridge.py
# restart Resolve, open a project, then: Workspace > Scripts > resolve_bridge

O instalador e o cliente MCP usam ~/.config/davinci-resolve-mcp/bridge.json por padrão. Para manter a configuração da ponte autenticada em outro lugar, defina DAVINCI_RESOLVE_BRIDGE_CONFIG ao executar o instalador e no ambiente do cliente MCP; ambos os lados usarão esse caminho.

Quando esse listener estiver em execução, ele será usado automaticamente sempre que os scripts externos estiverem indisponíveis — nenhuma variável de ambiente é necessária. Definir DAVINCI_RESOLVE_BRIDGE=1 força a ponte: ela se torna o único transporte tentado, então uma ponte que para de responder relata sua própria falha em vez de cair silenciosamente em outro transporte. Use-a quando a ponte for o caminho no qual você pretende confiar.

No macOS, o Resolve procura por Python 3 em exatamente dois lugares: a variável de ambiente PYTHON3HOME e, em seguida, /usr/local/bin/python3. Homebrew, pyenv, uv e conda não ficam em nenhum deles, então o script silenciosamente nunca aparece no menu. Uma instalação do python.org funciona porque seu instalador cria /usr/local/bin/python3 — mas você não precisa de uma: aponte o Resolve para o interpretador que você já tem, sem necessidade de sudo.

launchctl setenv PYTHON3HOME "$(python3 -c 'import sys; print(sys.prefix)')"

Use launchctl setenv, não export — o Resolve é iniciado a partir do Dock e nunca vê o ambiente do seu shell. Reinicie o Resolve depois. Um canário Lua é instalado junto para que você possa distinguir "Python não detectado" de uma pasta errada.

Duas coisas que causam problemas (#182). O prefixo deve conter ambos lib/libpython3.X.dylib e bin/python3 sob esse nome exato sem versão — as builds de framework do Homebrew geralmente incluem apenas bin/python3.13, que é metade de um Python do ponto de vista do Resolve, e a verificação prévia do instalador agora diz isso em vez de relatar um prefixo utilizável. E launchctl setenv não sobrevive a uma reinicialização; se os scripts pararem de listar semanas depois sem erro, é por isso. Para algo persistente, coloque um interpretador onde o Resolve já procura (este precisa de sudo e verifique se /usr/local/bin não precede seu Python normal em PATH):

sudo ln -s "$(command -v python3)" /usr/local/bin/python3

Validado nas versões gratuitas 21.0.3.7 e Studio 19.1.3.7, ambas no macOS. Os caminhos do Windows adicionados na v2.70.1 (issue #106) foram enviados sem verificação; relatos nas versões gratuitas 21.0.1.11 (issue #109) e 21.0.3.7 (issue #112) desde então mostraram a ponte instalando, listando e servindo a partir de ambos %PROGRAMDATA% e %APPDATA% no Windows 11, então esses caminhos agora estão confirmados em vez de assumidos. O Linux também está confirmado: um relato na versão gratuita 20.3.2.9 (issue #129, Fedora 43) mostra a ponte instalando em ~/.local/share/DaVinciResolve/Fusion/Scripts/Utility, listando contra o Python do sistema — o Linux não tem nenhum desses problemas de descoberta — e servindo de ponta a ponta. Nenhuma plataforma agora depende de uma suposição: o macOS foi validado diretamente, o Windows e o Linux com base em relatos de usuários.

Observe que a ponte mantém sua porta enquanto serve. Antes da v2.70.3, uma ponte no Windows podia sobreviver ao Resolve e bloquear o listener da próxima sessão; se você estiver em uma build mais antiga e uma ponte parar de responder, verifique se há um fuscript.exe obsoleto ainda segurando a porta.

Este é o caminho documentado no aplicativo, não uma contornação de licença, mas a Blackmagic pode fechá-lo — trate-o como um nível suportado-até-não-ser-mais. Apenas loopback, requisições assinadas com HMAC, nonces de uso único.

Painel de Controle Local

Inicie o painel de controle local de usuário único a partir da raiz do repositório:

venv/bin/python -m src.control_panel

O comando inicia um servidor apenas de loopback e abre o painel de controle no seu navegador em uma URL que carrega um token de acesso por inicialização (http://127.0.0.1:8765/#token=…) — use essa URL exata; o painel recusa requisições sem ela. Para que um agente de codificação de IA faça isso, peça: "Abra o painel de controle do Resolve MCP para este repositório." Os agentes devem usar venv/bin/python -m src.control_panel a menos que seu ambiente Python já esteja ativo. Trabalhos de análise persistidos atualizam o índice de busca local automaticamente após fatias bem-sucedidas; a ação manual Build Index é para reconstruir a partir de relatórios existentes.

Modos do Servidor

ModoPonto de entradaFerramentasMelhor para
Compostosrc/server.py37Modo padrão para a maioria dos assistentes. Operações relacionadas do Resolve são agrupadas atrás de parâmetros de ação para manter o uso de contexto baixo.
Completo / granularsrc/server.py --full ou src/resolve_mcp_server.py389Usuários avançados que querem uma ferramenta MCP por método da API do Resolve.

O servidor composto é recomendado, a menos que você precise especificamente da superfície granular de uma ferramenta por método.

Servidor avançado — além da API de scripting (opcional, Node)

O mesmo pacote inclui um segundo servidor MCP opcional: davinci-resolve-advanced-mcp (bin bin/davinci-resolve-advanced-mcp.mjs). Enquanto o servidor Python controla um Resolve ao vivo por meio da API de scripting sancionada, o servidor avançado faz o que a API não pode — ele lê e edita arquivos do Resolve (.drp / .drt / .drx) e aplica mudanças em nível de DB/XML sem o Resolve em execução, então ele roda na nuvem ou localmente. 18 ferramentas: drp, drt, drx (codec de grade por clipe mais um catálogo determinístico e offline de correção/QC — correspondência de pele dentro da câmera + entre câmeras (métrica de linha de pele v2) + b-roll + correspondência de WB com patch neutro, correspondência com referência, equilíbrio de saturação/preto, normalização de contraste, importação ASC CDL, transferência de grade sem perdas + criação de visual de temporada, anexo de LUT nomeado, leituras de escopo + tags de intenção, verificação de grade, extração de frames com referência de exibição, QC de legalidade de transmissão), offline_ref, conform (conformidade/relink QC com frame-oracle + linhagem), color_trace (carregar grades em uma re-conformidade), fusion, audio_plan, fairlight (roteamento de barramento), audio, project_read, project_db, pipeline (um pipeline de DB-como-verdade: compilar especificações de projeto YAML em um banco SQLite canônico e, em seguida, executar estágios com portões, proveniência e detecção de desvio intenção↔real), capabilities, deliverable (QC de entregáveis / conformidade), media (front-end de mídia / ingestão AE), editorial (integridade editorial / changelist), provenance (proveniência / auditoria / relatório de episódio). Ele também pode ser consumido como uma biblioteca (API de engine importável), não apenas iniciado como um servidor.

As gravações de grade DRX são calibradas ao vivo contra o Resolve Studio: os parâmetros de grade usam as unidades do painel na tela do Resolve por padrão (space: 'ui' | 'drx'), e as gravações estruturais (power windows, qualificadores, zonas HDR, curvas HSL, ColorSlice, efeitos de blur/key/motion) são verificadas por leitura do painel — status por controle em resolve-advanced/vendor/drx-parameters/CALIBRATION-STATUS.md. Ele também fecha uma lacuna apenas de UI: "Cleanup Node Graph" programático (drx relayout para um clipe, project_db relayout_node_graphs para um projeto inteiro) — layout de nós organizado, conteúdo de grade preservado em bytes.

Adicione-o junto ao servidor ao vivo (ambos vêm em um único npm install):

{
  "mcpServers": {
    "davinci-resolve": { "command": "<python>", "args": ["<path>/src/server.py"] },
    "davinci-resolve-advanced": { "command": "node", "args": ["<path>/bin/davinci-resolve-advanced-mcp.mjs"] }
  }
}

install.py imprime ambas as entradas. O núcleo é puro JS/MIT sem módulos nativos obrigatórios; alguns recursos precisam de ferramentas instaladas pelo usuário (ffmpeg para audio, sharp/better-sqlite3 para alguns caminhos) — chame a ferramenta capabilities para status ao vivo e dicas de instalação.

Ao contrário do servidor Python, este tem dependências Node. npx davinci-resolve-mcp setup as instala na instalação gerenciada (npm install --omit=dev --omit=optional sob resolve-advanced/) e só então registra o bin. Se essa instalação não puder ser executada — offline ou npm indisponível — a configuração registra um comando npx para o servidor avançado, então a entrada que ele escreve sempre inicia. Para reparar uma instalação existente sem reexecutar a configuração: npx davinci-resolve-mcp sync.

Bradford Post Assistant — aplicativo gerenciado (beta fechado)

Os mantenedores também criam o Bradford Post Assistant, um aplicativo de desktop sobre esta fundação aberta. Enquanto os servidores MCP dão mãos a um agente, o Post Assistant é o copiloto de trabalho ao redor deles — um assistente de IA no dispositivo para pós-produção onde o material do cliente nunca sai da estação de trabalho:

  • Um copiloto de pós-produção — um aplicativo de desktop que acompanha o DaVinci Resolve e monitora a sessão ao vivo (linha do tempo, correções de cor e quadros — não apenas chamadas de API), com um assistente de IA integrado e runtime de agentes, análise local de mídia (transcrição, análise de quadros, inteligência editorial) e QC de conformação no aplicativo.
  • Memória — memória persistente e criptografada do assistente no dispositivo, além de aprendizado entre episódios extraído dos fatos decodificados do seu pipeline (deriva de visual de temporada, prioridades de correção por câmera, bibliotecas de quadros de referência, reutilização do mapa de caminhos de conformação), com acúmulo gerenciado para você e um fluxo de trabalho de insights revisados.
  • Autocontido por design — o Post Assistant conecta tudo sozinho: este MCP para controle do Resolve, a API Bradford para seus serviços estendidos e sua escolha de provedor de LLM. Nada para configurar manualmente, sem clientes separados para gerenciar, e o aplicativo mantém a si mesmo (e seu MCP integrado) atualizado com atualizações automáticas assinadas.
  • Um conjunto de ferramentas profissionais estendido — cirurgia de correção de cor em projetos ao vivo, mais de 22 famílias de correção adaptativas, uma biblioteca de looks selecionada, validação de especificações de entrega, análise de ritmo/limpeza editorial, direção de cor em linguagem natural e autoria de composições Fusion — entregues por meio da API Bradford gerenciada.
  • Fluxos de trabalho de produção — as ferramentas brutas compostas em fluxos reais e finalizados (entrega → conformação → QC → entrega, continuidade de visual de temporada, relatórios de episódios) com as proteções e aprovações que um estúdio voltado ao cliente espera.

Atualmente está em beta fechado — você pode solicitar acesso em bradfordoperations.com/software/post-assistant. Os servidores de código aberto estão completos e totalmente funcionais por conta própria.

O Que Você Pode Fazer

"List all projects and open the one called 'My Film'"
"Create a timeline called 'Assembly Cut' from all clips in the current bin"
"Build a multicam prep timeline from selected camera angles and preserve source media"
"Detect 2-pops or slate claps and suggest record offsets for sync prep"
"Publish analysis summaries, keywords, people, and slate hints into Resolve clip metadata"
"Probe this timeline for gaps, overlaps, missing media, and source frame ranges"
"Safely import this image sequence, organize it into bins, and normalize clip metadata"
"Build a ProRes 422 HQ render plan, validate the settings, and queue the job"
"Copy review markers from the timeline to the selected clip and export a review report"
"Snapshot this clip's grade, validate a CDL update, and export a temp LUT"
"Create a Fusion TextPlus overlay on the selected clip and verify graph connections"
"Report audio channel mappings, voice isolation availability, and subtitle support"
"Install this MCP-marked DCTL or script, classify refresh/restart needs, then remove it"

Capacidades Principais

ÁreaO que o servidor composto suporta
Controle de aplicativo e projetoIniciar/reconectar, alternância de páginas, CRUD de projetos, pastas de projetos, bancos de dados, wrappers de projetos em nuvem, configurações, predefinições, arquivos
Media pool e ingestãoImportação segura, sequências de imagens, linhas do tempo de preparação multicâmera, organização de bins, normalização de metadados, inventário de campos de metadados, marcas, anotações, proteções de relink/proxy/resolução total
Análise de mídiaAnálise segura de arquivos/clipes/bins/projetos, detecção de eventos de sincronização 2-pop/slate-clap, metadados padrão do Resolve e writeback de marcadores do Media Pool, artefatos de análise persistidos, reutilização de relatórios existentes, análise visual de host_chat_paths (finalizada por clipe com commit_vision, funciona com qualquer cliente MCP com capacidade de visão) com opção de exclusão, transcrição com opção de exclusão
Edição de linha do tempo e conformaçãoSondagem de faixas/itens, leituras/gravações de chaves de texto de títulos, auxiliares de copiar/mover/duplicar, inserção ripple, operações de intervalo, lacunas/sobreposições, intervalos de origem, exportações/importações de intercâmbio verificadas
Anotações de revisãoMarcadores de linha do tempo/item/clipe, dados personalizados, sinalizadores, cor de clipe, limpeza de copiar/mover/sincronizar, relatórios de revisão, revisão de miniaturas de marcadores
Cor e correção de corSondagem de gráfico de nós, validação de CDL, cópia de correção, auxiliares de DRX/LUT, versões, stills da Galeria, grupos de cor
FusionComposições de itens de linha do tempo, criação segura de ferramentas, gravações de entradas, inspeção de portas, conexões validadas, gravações em lote com escopo
Áudio e FairlightSondagens de faixas/itens, mapeamento de origem, gravações protegidas de propriedades de áudio, isolamento de voz, planejamento de auto-sincronização, sondagens de transcrição/legendas
Renderização e entregaSondagem de matriz de formatos/codecs, validação de configurações de renderização, verificações de ciclo de vida de trabalhos na fila, Quick Export protegido
Autoria de extensõesAuxiliares de ciclo de vida de scripts Fuse, DCTL, ACES DCTL e Lua/Python da página Resolve com instalação/remoção segura marcada por MCP
Orientação de ofícioA orientação editorial, de cor, áudio e fluxo de trabalho incluída, fornecida como prosa via MCP — indexada, pesquisável e legível por qualquer cliente, não apenas por aqueles com este repositório em disco

Envelope de operação

Todo retorno de ferramenta composta carrega um bloco _operation ao lado de sua carga útil, para que um agente leia uma única estrutura em vez de uma chave diferente por ferramenta: status (success / partial / blocked / failed), verification (com contradiction mantido distinto — o Resolve relatou sucesso e a leitura de retorno discordou), changes (o delta semântico), warnings e um execution_id.

Duas ausências são significativas e deliberadas. verification.status: "unverified" significa nenhuma evidência foi relatada, não "verificado e limpo". Um changes ausente significa que a ação não relatou um delta, não que nada mudou — um {} vazio ali seria uma resposta confiante e errada sobre uma edição que simplesmente nunca declarou um.

O envelope é namespaced em vez de mesclado no nível superior porque status, operation, warnings, result e changes já são todas chaves de domínio aqui; achatar reescreveria o status: "done" de um trabalho em segundo plano e o status: "confirmation_required" de uma porta de confirmação. setup(action="set_defaults", params={"result_envelope": "pure" | "legacy"}) altera a forma, por chamada via params={"envelope": ...}, por processo via RESOLVE_MCP_RESULT_ENVELOPE.

Rastros de execução de agentes ("Por que o editor fez isso?")

Operações de IA de várias etapas correlacionam chamadas de ferramentas em rastros de execução unificados. Cada rastro agrega durações de ferramentas (duration_ms), contagens de chamadas, deltas semânticos cumulativos (items_deleted, items_added) e verificações de leitura de retorno. Agentes e editores podem inspecionar fluxos de trabalho via resolve_control: get_execution_trace(execution_id?), list_recent_executions() ou abrir uma execução com escopo com begin_execution(request="...") / end_execution(). export_execution_report(execution_id?, format="markdown"|"json") grava um artefato de auditoria revisável com o mesmo resumo, padronizando para logs/execution-reports/<execution_id>.md. path o grava em qualquer lugar que você quiser — ao lado de uma conformação em uma pasta TransferFiles datada, por exemplo — e cria os diretórios para chegar lá, então verifique o caminho antes de enviá-lo. Um arquivo existente nunca é substituído sem overwrite: true. inspect_operation(tool?, target_action?, target_params?) avalia o nível de risco pré-execução (low, medium, high, critical), potencial destrutivo e raio de impacto (item, track, timeline, project, system) antes de agir, enquanto list_lifecycle_hooks() inspeciona interceptadores de execução ativos.

É uma heurística sobre nomes de ações, não uma simulação — nunca toca no projeto e não valida seus parâmetros, então recognised: false significa que os níveis são padrões em vez de uma descoberta, e snapshot_available: null significa que a disponibilidade de rollback não foi determinada em vez de ausente. Cada hook enviado observa; nenhum substitui o resultado de uma ferramenta, então dry_run sempre alcança o handler real e nada sintetiza uma pré-visualização para uma ação que não tem nenhuma.

Um relatório para uma execução onde nada foi verificado diz "não estabelecido — nenhuma verificação registrada", não "aprovado". Ausência de evidência é uma questão ainda em aberto, e um documento de auditoria é o último lugar para deixar um leitor interpretá-lo como um sinal de tudo limpo.

Os rastros vivem em um anel de memória de 100 entradas e são anexados a logs/execution-traces.jsonl ao lado de server.log — RESOLVE_MCP_TRACE_FILE o move, e RESOLVE_MCP_LOG_FILE move o próprio server.log (um caminho, ou vazio para nenhum arquivo; o conjunto de testes offline o aponta para um arquivo temporário para que nunca grave no log do operador). list_recent_executions relata esse caminho e se ele é gravável, para que "o log está vazio" e "nada está sendo gravado" sejam distinguíveis sem ler o código-fonte. O que é registrado é nome da ferramenta, ação, tempo, status, deltas semânticos e verificação — sem parâmetros e sem caminhos de arquivo. O único campo de texto livre é o request que você passa para begin_execution, então trate-o como trataria uma mensagem de commit em um projeto de cliente.

Proteção de Armadilha Verificada

src/utils/api_truth.py registra comportamentos da API do Resolve que foram medidos contra uma build ao vivo em vez de lidos de uma assinatura — chamadas que retornam True sem ter feito nada, chaves de configurações rejeitadas silenciosamente, métodos que não existem de forma alguma. Esse registro costumava ser somente leitura: respondia a resolve_control(action="api_truth") e, fora isso, era um arquivo que ninguém consulta no meio de um trabalho.

Agora ele alcança o chamador no local da chamada. Uma ação mapeada para um símbolo com um fato registrado carrega um known_limitation compacto em seu resultado — símbolo, realidade, recomendação e nada mais, porque o peso da resposta é um custo real em uma longa sessão de correção de cor e a entrada completa está a uma consulta de distância.

Um fato só é anexado quando o mapeamento nomeia exatamente aquele símbolo. Nada é inferido de um nome semelhante: uma explicação não relacionada anexada a uma falha parece um diagnóstico, e um diagnóstico errado é pior do que nenhum.

Um comportamento recusa em vez de avisar. TimelineItem.CopyGrades substitui a correção do alvo por completo — medido assando cada estado em um LUT de 33 pontos e comparando bytes — retorna True enquanto faz isso e não cria versão para voltar. Aplicado a clipes com trabalho manual, isso é perda irrecuperável relatada como sucesso. Então, ações que o chamam recusam até que o chamador passe acknowledge_trap: true:

{
  "success": false,
  "error": "'timeline_item_color.copy_grades' is refused: its verified behaviour destroys existing work that cannot be recovered afterwards.",
  "known_limitation": [{"symbol": "TimelineItem.CopyGrades", "reality": "...", "recommended": "..."}],
  "retry_with": {"acknowledge_trap": true}
}

A intenção não é proibir a operação — é fazer o chamador dizer em voz alta que sabe o que ela faz. Execuções de teste estão isentas: uma pré-visualização não destrói nada.

Defina RESOLVE_MCP_DISABLE_TRAP_GUARD=1 para desativar tanto a recusa quanto o push de aviso. Isso é uma mudança de comportamento para chamadores que anteriormente recebiam um {"success": true} simples de uma cópia destrutiva.

Fatos que alimentam uma recusa devem permanecer re-mensuráveis, então uma sonda ao vivo re-deriva cada um e registra drifted quando o Resolve deixa de concordar; um teste falha se uma entrada destroys_prior_work não tiver sonda.

Extras Opcionais

A instalação principal é deliberadamente pequena: Python, ffmpeg e a API de script do Resolve. Alguns recursos precisam de mais, e cada um recusa honestamente com sua própria linha de instalação em vez de degradar em uma suposição — um tempo fabricado ou um nível inventado produz saída confiante e errada, o que é pior do que nenhum recurso.

Execute python scripts/doctor.py para ver quais destes você tem.

ExtraDesbloqueiaLicença
ffmpeg no PATHDetecção de silêncio, marcadores de espaço morto, medição de nível, análise de áudio. A coisa mais útil de instalar.LGPL/GPL — invocado como subprocesso, nunca empacotado
pip install numpyPré-balanceamento de cor, correspondência de stills de referência, auditoria de densidade sonoraBSD
pip install librosaDetecção de batida, compasso e frase para corte guiado por músicaISC
pip install -U openai-whisperTranscrição e tudo em nível de palavra construído sobre elaMIT
pip install open_clip_torchSimilaridade visual e find_similarMIT
pip install transformersEmbeddings de áudio CLAPApache-2.0
pip install opencv-pythonAnálise adicional de quadrosApache-2.0

A ação media_analysis capabilities relata a pilha de análise em detalhes e informa o que cada peça ausente habilitaria.

Nada aqui é empacotado. Pesos de modelos carregam suas próprias licenças separadas do código que os carrega; verifique-os antes do uso comercial.

O Que Isso Não Faz

Saber onde uma ferramenta para vale tanto quanto saber o que ela faz, e é mais barato ler aqui do que descobrir no meio do projeto.

Não suportadoPor que, e o que você obtém em vez disso
Escolher a melhor takePerformance é o que mais define se uma take é a certa, e nada disso é mensurável a partir de uma forma de onda ou transcrição. rank_takes classifica fluência — preenchimentos, reinícios, cobertura do roteiro — e informa isso em cada resposta. A take que é reproduzida frequentemente é a menos fluente, porque a hesitação muitas vezes é a atuação. Use isso para encontrar a take de segurança limpa, não para escolher a leitura.
Edição automática de músicaO suporte opcional a librosa fornece detecção de batida e planos de pontos de corte de batida/compasso/frase, não uma montagem finalizada. Os tempos fortes são inferidos a partir da primeira batida; use beat_offset para anacruses. Ferramentas de silêncio de fala não são adequadas para encontrar pontos de edição musical.
Julgar um corteNada aqui tem opinião sobre se uma edição é boa. Toda ação destrutiva é plano → revisão → confirmação por esse motivo.
Substituir um editorA saída é uma montagem de primeira passada, no sentido de assistente de edição: ingestão, sincronização, organização, sequenciamento, sinalização de problemas. É um ponto de partida que você corta, não um corte finalizado. Os padrões são deliberadamente generosos — uma primeira montagem deve ficar longa, porque aparar é rápido e visível, enquanto recuperar material descartado é lento e invisível.
Modificar sua mídia de origemPor design e sem exceção — veja abaixo.

Qualquer coisa analisada, mas não verificável, é relatada como não verificada, nunca incorporada a "ok". Um resultado vazio significa "nada encontrado", nunca "nada a encontrar".

Segurança da Mídia de Origem

Este projeto trata originais de câmera e mídia de origem como imutáveis. As ferramentas de análise leem arquivos de origem e escrevem relatórios apenas em diretórios sidecar, temporários ou de análise do projeto; a publicação de metadados confirmados escreve apenas no banco de dados do projeto do Resolve. O servidor não deve modificar, transcodificar, criar proxies ou derivados da mídia de origem, a menos que o usuário peça explicitamente. Consulte Guia de Análise de Mídia para o fluxo de trabalho detalhado seguro para a origem.

Postura de Segurança

O servidor padrão é um processo stdio local iniciado pelo seu cliente MCP; ele não expõe um listener de rede ou superfície de autenticação multiusuário integrada. As duas superfícies HTTP locais opcionais — o painel de controle e o transporte MCP em rede — fazem bind apenas em loopback e exigem um token bearer por inicialização em cada requisição, com verificações de Host/Origin contra DNS rebinding e CSRF. Os metadados das ferramentas incluem dicas de segurança do cliente MCP para operações somente leitura, destrutivas, idempotentes e de recursos externos. Escritas destrutivas em ambos os servidores honram destructive.safe_mode e o log de auditoria de segurança; apenas o servidor composto arquiva uma timeline antes de mutá-la — escritas granulares são recusadas ou registradas, nunca recuperadas. Consulte Política de Segurança para limites operacionais, orientação de confirmação e relato de vulnerabilidades.

Estatísticas Principais

MétricaValor
Ferramentas MCP37 compostas / 389 granulares (servidor ativo)
Ferramentas avançadas (offline)18 — .drp/.drt/.drx + autoria de banco de dados, sem Resolve em execução
Ações de Kernel136 ações de fluxo de trabalho protegidas em 9 ferramentas compostas
Métodos de API Cobertos361/361 (100%)
Métodos Testados ao Vivo338/361 (93,6%)
Taxa de Aprovação em Testes ao Vivo338/338 (100%)
Testado ContraDaVinci Resolve 19.1.3 Studio + Resolve 20.3.2 Studio + Resolve 21.0.2 Studio + Resolve 21.0.3 gratuito (via bridge no aplicativo)

Para status método a método, consulte Cobertura de API e Resultados de Testes. Para suporte atual de fluxo de trabalho, consulte Cobertura de Ações de Kernel.

analyze_media executa diretamente por padrão, persiste relatórios/artefatos inspecionáveis sob a raiz de análise, solicita análise visual do chat do host via protocolo host_chat_paths (analyze retorna caminhos absolutos de frames + um esquema JSON; o chat do host lê cada frame como imagem e chama media_analysis(action="commit_vision", ...) para finalizar), executa transcrição através do backend local configurado e escreve resumos de análise e marcadores de clipes da Media Pool com tempo de origem de volta ao projeto do Resolve. Passe include_visuals=false, include_transcription=false, publish_metadata=false, timed_markers=no ou dry_run=true apenas quando quiser optar por não participar desses comportamentos padrão. Pular commit_vision deixa a execução em pending_host_vision_analysis — exibido como um modo de falha, não rebaixado silenciosamente.

Documentação

DocumentoUse para
Instalação e ConfiguraçãoRequisitos, opções de instalador, clientes suportados, modos de servidor, configuração manual
Cobertura de API e Resultados de TestesEstatísticas principais, tabela de cobertura de API, status de testes ao vivo, referência completa de métodos
Cobertura de Ações de KernelMapa atual de ações de fluxo de trabalho protegidas
Referência de Habilidades de IAContexto operacional para assistentes de IA usando o servidor composto
Guia do Painel de ControleTour do painel do navegador local: Visão Geral, Revisão (bin/clipe/plano), Análise, Configuração, Preferências
Guia de Análise de MídiaFluxos de trabalho seguros para a origem com FFprobe, FFmpeg, Whisper, sidecar e raiz de análise
Guia do Auxiliar de Configuração MulticâmeraPreparação de timeline empilhada, limite auxiliar/API e etapas de conversão na interface do Resolve
Guia de Decisão EditorialOrientação de ofício editorial de propriedade do projeto para análise e decisões de timeline
Conformando um AAF do AvidPor que todas as três rotas nativas do Resolve falham em uma entrega consolidada, e qual delas é perigosa
Autoria Nativa de .drtAutoria offline de timeline com emenda de modelos: cortes, retimes, transições, fades, marcadores, compostos — e as leis medidas por trás deles
Loop de Edição HeadlessDirigir o Resolve pela linha de comando: quais formatos de intercâmbio religam e fazem round-trip, medidos em GUI e -nogui
Guia de Decisão de CorOrientação de correção de cor de propriedade do projeto e limites da API de cor do Resolve
Contribuindo e Layout do ProjetoFluxo de contribuição, suporte de plataforma, notas de segurança, estrutura do repositório
Política de SegurançaLimite de confiança stdio local, metadados de ferramentas, orientação de confirmação, relato
Processo de LançamentoChecklist de lançamento para mantenedores, superfícies de versão, validação, tags e notas de lançamento
ChangelogNotas de lançamento históricas

Referências de autoria de extensões estão em docs/authoring. Notas do pacote de desenvolvedor do Resolve estão em docs/notes e docs/integrations. Receitas de prompt estão em examples.

Requisitos

  • DaVinci Resolve 18.5+ em macOS, Windows ou Linux. Studio suporta script externo diretamente. A edição gratuita não — a Blackmagic restringe script externo ao Studio — mas ainda é acessível através do bridge no aplicativo, que roda dentro do Resolve a partir do menu não restrito Workspace ▸ Scripts.
  • Python 3.10+ (3.10-3.12 é a faixa de menor risco). Python 3.13/3.14 também funcionam em builds recentes do Resolve (verificado no Studio 20.3.2); builds mais antigos podem falhar ao conectar em 3.13+, nesse caso use 3.10-3.12.
  • Script externo do Resolve definido como Local (Studio). Na edição gratuita, essa preferência não tem efeito — use o bridge no aplicativo em vez disso.

Resolve 19.1.3 permanece como a linha de base de compatibilidade. Chamadas de script do Resolve 20.x são aditivas, protegidas por versão e testadas ao vivo em 20.3.2. Adições de script do Resolve 21.0 (classificação de áudio, transcrição com detecção de falante, IntelliSearch, análise de slate, desfoque de movimento, geração de fala, controle de tarefas em segundo plano de sessão) são expostas atrás de detecção de capacidade em tempo de execução, então permanecem inertes em builds mais antigos e ativam automaticamente no Resolve 21+. São testadas ao vivo no Studio 21.0.2.4 — veja o delta do Resolve 21. Note que AnalyzeForIntellisearch, AnalyzeForSlate e GenerateSpeech cada um requer um pacote de Extras de IA baixado separadamente, e o Resolve relata um pacote ausente de forma inconsistente (alguns retornam False, outros uma string de erro), então essas ações relatam success: false com o motivo fornecido pelo Resolve em vez de adivinhar.

Relatando Bugs e Solicitando Recursos

Diga ao seu assistente "envie isso como um bug" ou "envie isso como uma solicitação de recurso". Ele redige uma issue do GitHub a partir da conversa, incluindo a chamada com falha e seu erro, e anexa a versão do servidor, o build do Resolve, o modo de conexão e o SO. Caminhos locais, seu nome de usuário e qualquer coisa que pareça um segredo são redigidos. Nada é registrado por você: você recebe um link pré-preenchido, revisa o rascunho e o envia no GitHub você mesmo. Você também pode abrir uma issue diretamente.

Desenvolvimento

python src/server.py          # Compound server
python src/server.py --full   # Granular server
venv/bin/python tests/test_import.py
venv/bin/python scripts/audit_api_parity.py

Regras de lançamento e validação estão em docs/process/release-process.md. Agentes de IA trabalhando neste repositório devem começar com AGENTS.md; usuários do Claude Code também podem ler CLAUDE.md, que aponta para as mesmas instruções canônicas.

Licença

MIT

Autor

Samuel Gursky (samgursky@gmail.com)

Agradecimentos

  • Blackmagic Design pelo DaVinci Resolve e sua API de script
  • A equipe do Model Context Protocol por permitir a integração com assistentes de IA