DaVinci Resolve MCP
Una integración de servidor MCP para el software de edición de video DaVinci Resolve.
Documentación
Servidor MCP de DaVinci Resolve
Inglés | 简体中文
Un servidor de Protocolo de Contexto de Modelo (MCP) que permite a los asistentes de IA controlar DaVinci Resolve Studio a través de la API de scripting oficial. Proporciona cobertura completa de la API, además de ayudantes de flujo de trabajo protegidos para edición, organización del pool de medios, configuración de renderizado, marcadores de revisión, etalonaje, Fusion, Fairlight, tareas del ciclo de vida del proyecto, creación de extensiones y análisis de medios seguro para la fuente.
El servidor incluye un panel de control local para el navegador, que permite inspeccionar el estado de Resolve, ejecutar análisis seguros para la fuente, profundizar en clips y tomas analizados, y editar la salida del análisis en línea. Consulta la Guía del Panel de Control para el recorrido completo.
Inicio Rápido
npx davinci-resolve-mcp setup
Antes de conectarte, abre DaVinci Resolve Studio y configura Preferencias > General > Uso de scripting externo en Local. (En la edición gratuita, esa preferencia no ayuda — consulta Edición gratuita más abajo). El instalador de npm instala una copia gestionada en tu directorio de datos de aplicación de usuario y luego ejecuta el instalador universal de Python. El instalador crea un entorno virtual, detecta las rutas de Resolve y puede configurar Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, Zed, Continue, Cline, Roo Code, OpenCode, Codex CLI e IDE de JetBrains.
Para instalaciones desde el código fuente:
git clone https://github.com/samuelgursky/davinci-resolve-mcp.git
cd davinci-resolve-mcp
python install.py
Para rutas de plataforma, configuración específica del cliente y configuración manual, consulta Instalación y Configuración.
El instalador y el servidor verifican la última versión de GitHub para actualizaciones de MCP. Las comprobaciones son de mejor esfuerzo y están limitadas; el servidor nunca bloquea el inicio de MCP por una solicitud. El instalador puede solicitar, posponer, ignorar una versión, deshabilitar las comprobaciones o aplicar una actualización automática segura opcional para clonaciones limpias de git.
Edición gratuita (puente dentro de la aplicación)
Blackmagic restringe el scripting externo a Studio: en la edición gratuita,
scriptapp("Resolve") rechaza un proceso externo, diga lo que diga la preferencia.
Hasta Resolve 21.0.x, el menú Espacio de trabajo ▸ Scripts no estaba restringido — un script
lanzado desde allí recibe el objeto resolve en vivo (medido en la versión gratuita 21.0.3.7) —
por lo que el servidor puede acceder a la edición gratuita mediante un pequeño script que se ejecuta dentro
de Resolve y lo reexporta a través de un listener de loopback autenticado. Resolve 21.1
movió el scripting de Python a Studio. En la versión gratuita 21.1, el menú Scripts ya no lista
archivos .py en absoluto (reportado en Fedora 44 en #203; un script Lua en la misma carpeta
se lista normalmente). Si la Consola aún ejecuta Python allí no está confirmado, así que
trata el puente como una ruta de 21.0.x hasta que se mida.
python scripts/install_resolve_bridge.py
# restart Resolve, open a project, then: Workspace > Scripts > resolve_bridge
El instalador y el cliente MCP usan ~/.config/davinci-resolve-mcp/bridge.json
de forma predeterminada. Para mantener la configuración del puente autenticado en otro lugar, establece
DAVINCI_RESOLVE_BRIDGE_CONFIG al ejecutar el instalador y en el entorno del
cliente MCP; ambos lados usarán esa ruta.
Una vez que ese listener está en ejecución, se usa automáticamente siempre que el scripting
externo no esté disponible — no se requiere variable de entorno. Establecer
DAVINCI_RESOLVE_BRIDGE=1 fuerza el puente: se convierte en el único
transporte probado, por lo que un puente que deja de responder informa su propia falla en lugar
de recurrir silenciosamente a otro transporte. Úsalo cuando el puente sea la
ruta de la que pretendes depender.
En macOS, Resolve busca Python 3 en exactamente dos lugares: la
variable de entorno PYTHON3HOME y luego /usr/local/bin/python3. Homebrew,
pyenv, uv y conda no están en ninguno de los dos, por lo que el script nunca aparece silenciosamente en el
menú. Una instalación de python.org funciona porque su instalador crea
/usr/local/bin/python3 — pero no necesitas una: apunta Resolve al
intérprete que ya tienes, sin necesidad de sudo.
launchctl setenv PYTHON3HOME "$(python3 -c 'import sys; print(sys.prefix)')"
Usa launchctl setenv, no export — Resolve se lanza desde el Dock y
nunca ve el entorno de tu shell. Reinicia Resolve después. Se instala un canario Lua
junto a él para que puedas distinguir "Python no detectado" de una carpeta
incorrecta.
Dos cosas que muerden (#182). El prefijo debe contener ambos
lib/libpython3.X.dylib y bin/python3 bajo ese nombre exacto sin versión —
las compilaciones de framework de Homebrew a menudo solo incluyen bin/python3.13, que es
medio Python en lo que respecta a Resolve, y la verificación previa del instalador ahora
lo dice en lugar de informar un prefijo utilizable. Y launchctl setenv no
sobrevive a un reinicio; si los scripts dejan de listarse semanas después sin error, esa es
la razón. Para algo persistente, coloca un intérprete donde Resolve ya busca
(este necesita sudo, y verifica que /usr/local/bin no preceda a tu
Python normal en PATH):
sudo ln -s "$(command -v python3)" /usr/local/bin/python3
Validado en la versión gratuita 21.0.3.7 y Studio 19.1.3.7, ambos en macOS. Las rutas de Windows
agregadas en v2.70.1 (problema #106) se enviaron sin verificar; informes en la versión gratuita 21.0.1.11
(problema #109) y la versión gratuita 21.0.3.7 (problema #112) han mostrado desde entonces el puente
instalándose, listándose y sirviendo desde ambas %PROGRAMDATA% y %APPDATA% en
Windows 11, por lo que esas rutas ahora están confirmadas en lugar de asumidas. Linux está
confirmado también: un informe en la versión gratuita 20.3.2.9 (problema #129, Fedora 43) muestra el
puente instalándose en ~/.local/share/DaVinciResolve/Fusion/Scripts/Utility,
listándose contra el Python del sistema — Linux no tiene este problema de descubrimiento —
y sirviendo de extremo a extremo. Ninguna plataforma se basa ahora en una suposición: macOS fue
validado directamente, Windows y Linux con informes de usuarios.
Ten en cuenta que el puente mantiene su puerto mientras sirve. Antes de v2.70.3, un
puente de Windows podía sobrevivir a Resolve y bloquear el listener de la siguiente sesión; si
estás en una compilación anterior y un puente deja de responder, verifica si hay un
fuscript.exe obsoleto que aún mantiene el puerto.
Esta es la ruta documentada dentro de la aplicación, no una evasión de licencia, pero Blackmagic podría cerrarla — trátala como un nivel compatible-hasta-que-no-lo-sea. Solo loopback, solicitudes firmadas con HMAC, nonces de un solo uso.
Panel de Control Local
Lanza el panel de control local de un solo usuario desde la raíz del repositorio:
venv/bin/python -m src.control_panel
El comando inicia un servidor solo de loopback y abre el panel de control en tu navegador en una URL que lleva un token de acceso por lanzamiento (http://127.0.0.1:8765/#token=…) — usa esa URL exacta; el panel rechaza solicitudes sin él. Para que un agente de codificación de IA haga esto, pide: "Abre el panel de control de Resolve MCP para este repositorio." Los agentes deben usar venv/bin/python -m src.control_panel a menos que tu entorno de Python ya esté activo. Los trabajos de análisis persistidos actualizan automáticamente el índice de búsqueda local después de cortes exitosos; la acción manual de Construir Índice es para reconstruir desde informes existentes.
Modos del Servidor
| Modo | Punto de entrada | Herramientas | Mejor para |
|---|---|---|---|
| Compuesto | src/server.py | 37 | Modo predeterminado para la mayoría de los asistentes. Las operaciones relacionadas de Resolve se agrupan detrás de parámetros de acción para mantener bajo el uso de contexto. |
| Completo / granular | src/server.py --full o src/resolve_mcp_server.py | 389 | Usuarios avanzados que quieren una herramienta MCP por método de API de Resolve. |
El servidor compuesto se recomienda a menos que necesites específicamente la superficie granular de una herramienta por método.
Servidor avanzado — más allá de la API de scripting (opcional, Node)
El mismo paquete incluye un segundo servidor MCP opcional: davinci-resolve-advanced-mcp (bin
bin/davinci-resolve-advanced-mcp.mjs). Mientras que el servidor de Python impulsa un Resolve en vivo a través de la
API de scripting sancionada, el servidor avanzado hace lo que la API no puede — lee y edita
archivos de Resolve (.drp / .drt / .drx) y aplica cambios a nivel de DB/XML sin Resolve en ejecución, por lo que
se ejecuta en la nube o local. 18 herramientas: drp, drt, drx (códec de etalonaje por clip más un catálogo determinista de etalonaje/QC fuera de línea — piel dentro de la cámara + entre cámaras (métrica de línea de piel v2) + b-roll +
emparejamiento de balance de blancos con parche neutro, emparejar con referencia, balance de saturación/negros, normalización de contraste, importación ASC CDL,
transferencia de etalonaje sin pérdida + creación de look de temporada, adjuntar LUT nombrado, lecturas de scope + etiquetas de intención,
verificar etalonaje, extracción de fotogramas referidos a pantalla, QC de legalidad de transmisión), offline_ref,
conform (QC de conformado/relink con oráculo de fotogramas + linaje), color_trace (llevar etalonajes a través de un re-conformado),
fusion, audio_plan, fairlight (enrutamiento de buses), audio, project_read, project_db, pipeline
(un pipeline de DB como verdad: compilar especificaciones de proyecto YAML en una base de datos SQLite canónica, luego ejecutar etapas con
compuertas, procedencia y detección de desviación intención↔real), capabilities, deliverable (QC de entregables /
cumplimiento), media (front-end de medios / ingesta AE), editorial (integridad editorial / lista de cambios),
provenance (procedencia / auditoría / informe de episodio). También se puede consumir como una
biblioteca (API de motor importable), no solo como un servidor.
Las escrituras de etalonaje DRX están calibradas en vivo contra Resolve Studio: los parámetros de etalonaje toman las
unidades del panel en pantalla de Resolve por defecto (space: 'ui' | 'drx'), y las escrituras estructurales (power windows,
calificadores, zonas HDR, curvas HSL, ColorSlice, efectos de desenfoque/clave/movimiento) están verificadas por lectura del panel —
estado por control en resolve-advanced/vendor/drx-parameters/CALIBRATION-STATUS.md. También cierra
una brecha solo de UI: "Limpiar gráfico de nodos" programático (drx relayout para un clip, project_db
relayout_node_graphs para un proyecto completo) — diseño de nodos ordenado, contenido de etalonaje preservado byte a byte.
Agrégalo junto al servidor en vivo (ambos vienen en un solo 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 entradas. El núcleo es puro JS/MIT sin módulos nativos requeridos; algunas funciones
necesitan herramientas instaladas por el usuario (ffmpeg para audio, sharp/better-sqlite3 para algunas rutas) — llama a la
herramienta capabilities para estado en vivo y sugerencias de instalación.
A diferencia del servidor de Python, este tiene dependencias de Node. npx davinci-resolve-mcp setup las instala
en la instalación gestionada (npm install --omit=dev --omit=optional bajo resolve-advanced/) y solo
entonces registra el bin. Si esa instalación no pudo ejecutarse — sin conexión, o npm no disponible — la configuración registra
un comando npx para el servidor avanzado en su lugar, por lo que la entrada que escribe siempre arranca. Para reparar una
instalación existente sin volver a ejecutar la configuración: npx davinci-resolve-mcp sync.
Bradford Post Assistant — aplicación gestionada (beta cerrada)
Los mantenedores también construyen Bradford Post Assistant, una aplicación de escritorio sobre esta base abierta. Mientras que los servidores MCP dan manos a un agente, Post Assistant es el copiloto de trabajo a su alrededor — un asistente de IA en el dispositivo para postproducción donde el material del cliente nunca sale de la estación de trabajo:
- Un copiloto de postproducción — una aplicación de escritorio que se sitúa junto a DaVinci Resolve y observa la sesión en vivo (línea de tiempo, etalonaje y fotogramas — no solo llamadas a la API), con un asistente de IA integrado y un runtime de agentes, análisis de medios local (transcripción, análisis de fotogramas, inteligencia editorial) y control de calidad de conformado dentro de la aplicación.
- Memoria — memoria persistente y cifrada en el dispositivo para el asistente, además de aprendizaje entre episodios extraído de los hechos decodificados de tu flujo de trabajo (deriva de look de temporada, prioridades de corrección por cámara, bibliotecas de fotogramas de referencia, reutilización del mapa de rutas de conformado), con acumulación gestionada por ti y un flujo de trabajo de conocimientos revisados.
- Autocontenido por diseño — Post Assistant lo conecta todo por sí mismo: este MCP para el control de Resolve, la API de Bradford para sus servicios extendidos y tu proveedor de LLM elegido. Nada que configurar manualmente, sin clientes separados que gestionar, y la aplicación se mantiene al día (junto con su MCP incluido) con actualizaciones automáticas firmadas.
- Un conjunto de herramientas profesionales extendido — cirugía de etalonaje en proyectos en vivo, más de 22 familias de etalonaje adaptativo, una biblioteca de looks seleccionada, validación de especificaciones de entrega, análisis de ritmo/limpieza editorial, dirección de color en lenguaje natural y creación de composiciones Fusion — entregado a través de la API de Bradford gestionada.
- Flujos de trabajo de producción — las herramientas en bruto compuestas en flujos reales y acabados (entrega → conformado → control de calidad → entrega, continuidad de look de temporada, informes de episodio) con las salvaguardas y aprobaciones que un estudio orientado al cliente espera.
Actualmente está en beta cerrada — puedes solicitar acceso en bradfordoperations.com/software/post-assistant. Los servidores de código abierto están completos y son totalmente funcionales por sí solos.
Lo que puedes hacer
"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 principales
| Área | Lo que admite el servidor compuesto |
|---|---|
| Control de aplicación y proyecto | Iniciar/reconectar, cambio de página, CRUD de proyectos, carpetas de proyectos, bases de datos, envoltorios de proyectos en la nube, ajustes, ajustes preestablecidos, archivos |
| Pool de medios e ingesta | Importación segura, secuencias de imágenes, líneas de tiempo de preparación multicámara, organización de contenedores, normalización de metadatos, inventario de campos de metadatos, marcas, anotaciones, protecciones de relink/proxy/resolución completa |
| Análisis de medios | Análisis seguro de archivos/clips/contenedores/proyectos, detección de eventos de sincronización de 2-pop/slate-clap, metadatos predeterminados de Resolve y escritura de marcadores del pool de medios, artefactos de análisis persistentes, reutilización de informes existentes, análisis visual de host_chat_paths (finalizado por clip con commit_vision, funciona con cualquier cliente MCP con capacidad de visión) con opción de exclusión, transcripción con opción de exclusión |
| Edición de línea de tiempo y conformado | Sondeo de pistas/elementos, escaneo/escritura de claves de texto de títulos, ayudas de copiar/mover/duplicar, inserción con ripple, operaciones de rango, huecos/solapamientos, rangos de origen, exportaciones/importaciones de intercambio verificadas |
| Anotaciones de revisión | Marcadores de línea de tiempo/elementos/clips, datos personalizados, banderas, color de clip, limpieza de copiar/mover/sincronizar, informes de revisión, revisión de miniaturas de marcadores |
| Color y etalonaje | Sondeo de gráfico de nodos, validación de CDL, copia de etalonaje, ayudas de DRX/LUT, versiones, fotogramas de galería, grupos de color |
| Fusion | Composiciones de elementos de línea de tiempo, creación segura de herramientas, escrituras de entradas, inspección de puertos, conexiones validadas, escrituras masivas con alcance |
| Audio y Fairlight | Sondeos de pistas/elementos, mapeo de fuentes, escrituras protegidas de propiedades de audio, aislamiento de voz, planificación de auto-sincronización, sondeos de transcripción/subtítulos |
| Renderizado y entrega | Sondeo de matriz de formato/códec, validación de ajustes de renderizado, comprobaciones de ciclo de vida de trabajos en cola, exportación rápida protegida |
| Autoría de extensiones | Ayudas de ciclo de vida para scripts Lua/Python de Fuse, DCTL, ACES DCTL y página de Resolve con instalación/eliminación segura marcada por MCP |
| Orientación de oficio | La orientación editorial, de color, de audio y de flujo de trabajo incluida se sirve como prosa a través de MCP — indexada, buscable y legible por cualquier cliente, no solo por aquellos con este repositorio en disco |
Envoltorio de operación
Cada retorno de herramienta compuesta lleva un bloque _operation junto a su carga útil, de modo que
un agente lee una forma en lugar de una clave diferente por herramienta: status
(success / partial / blocked / failed), verification (con
contradiction mantenido distinto — Resolve informó éxito y la lectura
discrepó), changes (el delta semántico), warnings y un execution_id.
Dos ausencias son significativas y deliberadas. verification.status: "unverified"
significa no se informó evidencia, no "verificado y limpio". Un changes faltante
significa que la acción no informó un delta, no que nada cambió — un {} vacío
allí sería una respuesta segura pero incorrecta sobre una edición que simplemente nunca
declaró uno.
El envoltorio tiene un espacio de nombres en lugar de fusionarse en el nivel superior porque
status, operation, warnings, result y changes ya son todas claves de dominio
aquí; aplanar reescribiría el status: "done" de un trabajo en segundo plano y el
status: "confirmation_required" de una puerta de confirmación. setup(action="set_defaults", params={"result_envelope": "pure" | "legacy"}) cambia la forma, por llamada a través de
params={"envelope": ...}, por proceso a través de RESOLVE_MCP_RESULT_ENVELOPE.
Trazas de ejecución de agentes ("¿Por qué hizo esto el editor?")
Las operaciones de IA de múltiples pasos se correlacionan entre llamadas a herramientas en trazas de ejecución
unificadas. Cada traza agrega duraciones de herramientas (duration_ms), recuentos de llamadas, deltas
semánticos acumulados (items_deleted, items_added) y verificaciones de lectura.
Los agentes y editores pueden inspeccionar flujos de trabajo a través de resolve_control:
get_execution_trace(execution_id?), list_recent_executions(), o abrir una
ejecución con alcance con begin_execution(request="...") / end_execution().
export_execution_report(execution_id?, format="markdown"|"json") escribe un
artefacto de auditoría revisable con el mismo resumen, por defecto en
logs/execution-reports/<execution_id>.md. path lo escribe donde quieras
en su lugar — junto a un conformado en una carpeta TransferFiles con fecha, por ejemplo — y
crea los directorios para llegar allí, así que verifica la ruta antes de enviarlo.
Un archivo existente nunca se reemplaza sin overwrite: true.
inspect_operation(tool?, target_action?, target_params?) evalúa el nivel de riesgo
previo al vuelo (low, medium, high, critical), el potencial destructivo y el radio
de impacto (item, track, timeline, project, system) antes de actuar, mientras que
list_lifecycle_hooks() inspecciona los interceptores de ejecución activos.
Es una heurística sobre nombres de acciones, no una simulación — nunca toca el
proyecto y no valida tus parámetros, por lo que recognised: false significa que los
niveles son valores predeterminados en lugar de un hallazgo, y snapshot_available: null significa
que la disponibilidad de reversión no se determinó en lugar de estar ausente. Cada hook incluido
observa; ninguno reemplaza el resultado de una herramienta, por lo que dry_run siempre llega al
manejador real y nada sintetiza una vista previa para una acción que no tiene ninguna.
Un informe de una ejecución donde nada se verificó dice "no establecido — sin comprobaciones registradas", no "aprobado". La ausencia de evidencia es una pregunta aún abierta, y un documento de auditoría es el último lugar para dejar que un lector lo interprete como un visto bueno.
Las trazas viven en un anillo en memoria de 100 entradas y se añaden a
logs/execution-traces.jsonl junto a server.log — RESOLVE_MCP_TRACE_FILE
lo mueve, y RESOLVE_MCP_LOG_FILE mueve server.log en sí mismo (una ruta, o vacío
para ningún archivo; el conjunto de pruebas fuera de línea lo apunta a un archivo temporal para que nunca
escriba en el registro del operador). list_recent_executions informa esa ruta y si es
escribible, de modo que "el registro está vacío" y "no se está escribiendo nada" sean
distinguibles sin leer el código fuente. Lo que se registra es nombre de herramienta,
acción, tiempo, estado, deltas semánticos y verificación — sin parámetros y sin
rutas de archivo. El único campo de texto libre es el request que pasas a
begin_execution, así que trátalo como tratarías un mensaje de commit en un proyecto
de cliente.
Protección de trampa verificada
src/utils/api_truth.py registra comportamientos de la API de Resolve que se midieron
contra una compilación en vivo en lugar de leerse de una firma — llamadas que devuelven True
sin haber hecho nada, claves de ajustes rechazadas silenciosamente, métodos que no existen
en absoluto. Ese registro solía ser solo de consulta: respondía a
resolve_control(action="api_truth") y por lo demás era un archivo que nadie busca en medio de
un trabajo.
Ahora llega al llamador en el sitio de la llamada. Una acción mapeada a un símbolo con un
hecho registrado lleva un known_limitation compacto en su resultado — símbolo,
realidad, recomendación y nada más, porque el peso de la respuesta es un costo real
en una sesión de etalonaje larga y la entrada completa está a una búsqueda de distancia.
Un hecho solo se adjunta cuando el mapeo nombra ese símbolo exacto. Nada se infiere de un nombre similar: una explicación no relacionada pegada a un fallo se lee como un diagnóstico, y un diagnóstico incorrecto es peor que ninguno.
Un comportamiento se niega en lugar de advertir. TimelineItem.CopyGrades reemplaza
el etalonaje del objetivo por completo — medido horneando cada estado a una LUT de 33 puntos
y comparando bytes — devuelve True mientras lo hace y no crea ninguna versión a la que
volver. Aplicado a clips con trabajo manual, eso es una pérdida irrecuperable informada
como éxito. Por lo tanto, las acciones que lo llaman se niegan hasta que el llamador pase
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}
}
La intención no es prohibir la operación — es hacer que el llamador diga en voz alta que sabe lo que hace. Las ejecuciones en seco están exentas: una vista previa no destruye nada.
Establece RESOLVE_MCP_DISABLE_TRAP_GUARD=1 para desactivar tanto la negativa como el aviso
informativo. Esto es un cambio de comportamiento para los llamadores que anteriormente recibían un
{"success": true} desnudo de una copia destructiva.
Los hechos que respaldan una negativa deben seguir siendo re-medibles, por lo que una sonda en vivo
re-deriva cada uno y registra drifted cuando Resolve deja de estar de acuerdo; una prueba falla si una
entrada de destroys_prior_work no tiene sonda.
Extras opcionales
La instalación principal es deliberadamente pequeña: Python, ffmpeg y la API de scripting de Resolve. Algunas funciones necesitan más, y cada una se niega honestamente con su propia línea de instalación en lugar de degradarse a una suposición — un tempo fabricado o un nivel inventado produce una salida segura pero incorrecta, que es peor que ninguna función.
Ejecuta python scripts/doctor.py para ver cuáles de estos tienes.
| Extra | Desbloquea | Licencia |
|---|---|---|
| ffmpeg en PATH | Detección de silencio, marcadores de espacio muerto, medición de nivel, análisis de audio. Lo más útil de instalar. | LGPL/GPL — invocado como subproceso, nunca incluido |
pip install numpy | Pre-equilibrio de color, coincidencia de fotogramas de referencia, auditoría de densidad de sonido | BSD |
pip install librosa | Detección de ritmo, compás y frase para corte impulsado por música | ISC |
pip install -U openai-whisper | Transcripción y todo lo que se basa en ella a nivel de palabra | MIT |
pip install open_clip_torch | Similitud visual y find_similar | MIT |
pip install transformers | Incrustaciones de audio CLAP | Apache-2.0 |
pip install opencv-python | Análisis de fotogramas adicional | Apache-2.0 |
La acción media_analysis capabilities informa la pila de análisis en detalle y
te dice qué habilitaría cada pieza faltante.
Nada aquí está incluido. Los pesos de los modelos llevan sus propias licencias separadas del código que los carga; verifícalos antes de uso comercial.
Lo que esto no hace
Saber dónde se detiene una herramienta vale tanto como saber lo que hace, y es más barato leerlo aquí que descubrirlo a mitad de proyecto.
| No compatible | Por qué, y qué obtienes en su lugar |
|---|---|
| Elegir la mejor toma | El rendimiento es la mayor parte de lo que hace que una toma sea correcta, y nada de eso es medible desde una forma de onda o una transcripción. rank_takes clasifica la fluidez — muletillas, reinicios, cobertura del guion — y lo indica en cada respuesta. La toma que se reproduce suele ser la menos fluida, porque la vacilación a menudo es la actuación. Úsalo para encontrar la toma de seguridad limpia, no para elegir la lectura. |
| Edición automática de música | El soporte opcional de librosa proporciona detección de ritmo y planes de puntos de corte de ritmo/compás/frase, no un ensamblaje terminado. Los tiempos fuertes se infieren del primer pulso; usa beat_offset para anacrusas. Las herramientas de silencio de voz no son adecuadas para encontrar puntos de edición musical. |
| Juzgar un corte | Nada aquí tiene una opinión sobre si una edición es buena. Cada acción destructiva es plan → revisión → confirmación por esa razón. |
| Reemplazar un editor | La salida es un ensamblaje de primera pasada, en el sentido de asistente de edición: ingesta, sincronización, organización, cadena de tomas, señalar problemas. Es un punto de partida que tú cortas, no un corte terminado. Los valores predeterminados son deliberadamente generosos — se supone que un primer ensamblaje debe durar más, porque recortar es rápido y visible mientras que recuperar material descartado es lento e invisible. |
| Modificar tu material de origen | Por diseño y sin excepción — ver más abajo. |
Cualquier cosa analizada pero no verificable se informa como no verificada, nunca se integra en "bien". Un resultado vacío significa "no se encontró nada", nunca "no hay nada que encontrar".
Seguridad del Material de Origen
Este proyecto trata los originales de cámara y el material de origen como inmutables. Las herramientas de análisis leen archivos de origen y escriben informes solo en directorios de sidecar, temporales o de análisis del proyecto; la publicación de metadatos confirmados escribe solo en la base de datos del proyecto de Resolve. El servidor no debe modificar, transcodificar, crear proxies ni derivados del material de origen a menos que el usuario lo solicite explícitamente. Consulta Guía de Análisis de Medios para el flujo de trabajo detallado seguro para el origen.
Postura de Seguridad
El servidor predeterminado es un proceso stdio local iniciado por tu cliente MCP; no expone un listener de red ni una superficie de autenticación multiusuario integrada. Las dos superficies HTTP locales opcionales — el panel de control y el transporte MCP en red — se vinculan solo a loopback y requieren un token bearer por lanzamiento en cada solicitud, con comprobaciones de Host/Origin contra DNS rebinding y CSRF. Los metadatos de las herramientas incluyen indicaciones de seguridad para el cliente MCP para operaciones de solo lectura, destructivas, idempotentes y de recursos externos. Las escrituras destructivas en ambos servidores respetan destructive.safe_mode y el registro de auditoría de seguridad; solo el servidor compuesto archiva una línea de tiempo antes de mutarla — las escrituras granulares se rechazan o registran, nunca se recuperan. Consulta Política de Seguridad para los límites operativos, la guía de confirmación y la notificación de vulnerabilidades.
Estadísticas Clave
| Métrica | Valor |
|---|---|
| Herramientas MCP | 37 compuestas / 389 granulares (servidor en vivo) |
| Herramientas avanzadas (sin conexión) | 18 — .drp/.drt/.drx + autoría de BD, sin Resolve en ejecución |
| Acciones del Kernel | 136 acciones de flujo de trabajo protegidas en 9 herramientas compuestas |
| Métodos de API Cubiertos | 361/361 (100%) |
| Métodos Probados en Vivo | 338/361 (93.6%) |
| Tasa de Éxito de Pruebas en Vivo | 338/338 (100%) |
| Probado Contra | DaVinci Resolve 19.1.3 Studio + Resolve 20.3.2 Studio + Resolve 21.0.2 Studio + Resolve 21.0.3 gratis (a través del puente en la aplicación) |
Para el estado método por método, consulta Cobertura de API y Resultados de Pruebas. Para el soporte actual de flujos de trabajo, consulta Cobertura de Acciones del Kernel.
analyze_media se ejecuta directamente de forma predeterminada, persiste informes/artefactos inspeccionables bajo la raíz de análisis, solicita análisis visual del chat del host mediante el protocolo host_chat_paths (analyze devuelve rutas de fotogramas absolutas + un esquema JSON; el chat del host lee cada fotograma como imagen y llama a media_analysis(action="commit_vision", ...) para finalizar), ejecuta la transcripción a través del backend local configurado y escribe resúmenes de análisis más marcadores de clips del Media Pool con tiempo de origen de vuelta al proyecto de Resolve. Pasa include_visuals=false, include_transcription=false, publish_metadata=false, timed_markers=no o dry_run=true solo cuando quieras optar por no participar en esos comportamientos predeterminados. Omitir commit_vision deja la ejecución en pending_host_vision_analysis — se muestra como un modo de fallo, no se degrada silenciosamente.
Documentación
| Documento | Úsalo para |
|---|---|
| Instalación y Configuración | Requisitos, opciones del instalador, clientes compatibles, modos de servidor, configuración manual |
| Cobertura de API y Resultados de Pruebas | Estadísticas clave, tabla de cobertura de API, estado de pruebas en vivo, referencia completa de métodos |
| Cobertura de Acciones del Kernel | Mapa actual de acciones de flujo de trabajo protegidas |
| Referencia de Habilidades de IA | Contexto operativo para asistentes de IA que usan el servidor compuesto |
| Guía del Panel de Control | Recorrido del panel del navegador local: Resumen, Revisión (bin/clip/toma), Análisis, Configuración, Preferencias |
| Guía de Análisis de Medios | Flujos de trabajo seguros para el origen con FFprobe, FFmpeg, Whisper, sidecar y raíz de análisis |
| Guía del Asistente de Configuración Multicámara | Preparación de líneas de tiempo apiladas, límite asistente/API y pasos de conversión en la interfaz de Resolve |
| Guía de Decisiones Editoriales | Orientación editorial de oficio del proyecto para análisis y decisiones de línea de tiempo |
| Conformado de un AAF de Avid | Por qué las tres rutas nativas de Resolve fallan en una entrega consolidada, y cuál es peligrosa |
| Autoría Nativa de .drt | Autoría de líneas de tiempo sin conexión con plantillas empalmadas: cortes, retiempos, transiciones, fundidos, marcadores, compuestos — y las leyes medidas detrás de ellos |
| Bucle de Edición sin Interfaz | Conducir Resolve desde la línea de comandos: qué formatos de intercambio se vinculan y hacen round-trip, medido en GUI y -nogui |
| Guía de Decisiones de Color | Orientación de corrección de color de oficio del proyecto y límites de la API de color de Resolve |
| Contribución y Estructura del Proyecto | Flujo de trabajo de contribución, soporte de plataformas, notas de seguridad, estructura del repositorio |
| Política de Seguridad | Límite de confianza stdio local, metadatos de herramientas, guía de confirmación, notificación |
| Proceso de Lanzamiento | Lista de verificación de lanzamiento para mantenedores, superficies de versión, validación, etiquetas y notas de lanzamiento |
| Registro de Cambios | Notas de lanzamiento históricas |
Las referencias de autoría de extensiones viven en docs/authoring. Las notas del paquete de desarrollador de Resolve viven en docs/notes y docs/integrations. Las recetas de prompts viven en examples.
Requisitos
- DaVinci Resolve 18.5+ en macOS, Windows o Linux. Studio admite scripting externo directamente. La edición gratuita no — Blackmagic restringe el scripting externo a Studio — pero aún es accesible a través del puente en la aplicación, que se ejecuta dentro de Resolve desde el menú sin restricciones Workspace ▸ Scripts.
- Python 3.10+ (3.10-3.12 es el rango de menor riesgo). Python 3.13/3.14 también funcionan en builds recientes de Resolve (verificado en Studio 20.3.2); los builds más antiguos pueden fallar al conectar en 3.13+, en cuyo caso usa 3.10-3.12.
- Scripting externo de Resolve configurado en Local (Studio). En la edición gratuita esta preferencia no tiene efecto — usa el puente en la aplicación en su lugar.
Resolve 19.1.3 sigue siendo la línea base de compatibilidad. Las llamadas de scripting de Resolve 20.x son aditivas, protegidas por versión y probadas en vivo en 20.3.2. Las adiciones de scripting de Resolve 21.0 (clasificación de audio, transcripción con detección de hablante, IntelliSearch, análisis de pizarra, desenfoque de movimiento, generación de voz, control de tareas en segundo plano de sesión) se exponen detrás de la detección de capacidades en tiempo de ejecución, por lo que permanecen inactivas en builds antiguos y se activan automáticamente en Resolve 21+. Se prueban en vivo en Studio 21.0.2.4 — consulta el delta de Resolve 21. Ten en cuenta que AnalyzeForIntellisearch, AnalyzeForSlate y GenerateSpeech requieren cada uno un paquete de Extras de IA descargado por separado, y Resolve informa un paquete faltante de manera inconsistente (algunos devuelven False, otros una cadena de error), por lo que estas acciones informan success: false con la razón proporcionada por Resolve en lugar de adivinar.
Informar Errores y Solicitar Funciones
Dile a tu asistente "envía esto como un error" o "envía esto como una solicitud de función". Redacta un issue de GitHub a partir de la conversación, incluyendo la llamada fallida y su error, y adjunta la versión del servidor, el build de Resolve, el modo de conexión y el sistema operativo. Las rutas locales, tu nombre de usuario y cualquier cosa que parezca un secreto se redactan. Nada se presenta por ti: obtienes un enlace prellenado, revisas el borrador y lo envías en GitHub tú mismo. También puedes abrir un issue directamente.
Desarrollo
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
Las reglas de lanzamiento y validación están en docs/process/release-process.md. Los agentes de IA que trabajen en este repositorio deben comenzar con AGENTS.md; los usuarios de Claude Code también pueden leer CLAUDE.md, que apunta a las mismas instrucciones canónicas.
Licencia
MIT
Autor
Samuel Gursky (samgursky@gmail.com)
- GitHub: github.com/samuelgursky
Agradecimientos
- Blackmagic Design por DaVinci Resolve y su API de scripting
- El equipo de Model Context Protocol por permitir la integración de asistentes de IA
