davinci-resolve-mcp
npm
v2.210.0
Source verified
Published by samuelgursky — publish provenance cryptographically ties this package to that repository. That is proof of origin, not an official vendor package.
NPM bootstrapper for the DaVinci Resolve MCP Server.
The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.
1. Threat score — 100 − 0 = 100. What the published surface and source actually contain:
The deterministic scan raised no scored threat in the surface it inspected — the threat score stayed at 100. Capability observations and advisory notes are recorded but never lower it.
2. Client adoption risk — 100 − 6 = 94. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:
| Points | Adoption-risk factor |
|---|---|
| −6 | capability blast radius (high) — client exposure if the model is manipulated |
Capability observations and info notes are shown under Findings but never scored.
Open any row's finding below for the file, line and evidence behind a deduction.
Tools that read sensitive data ([get_media_storage_files]) and tools that can send data out ([open_project, open_project_folder]) are exposed together. An agent can move private data to the sink.
Evidence: sources [get_media_storage_files] → sinks [open_project, open_project_folder]
Fix: Keep secret-reading and egress capabilities on separate, separately-approved servers.
Location: flow get_media_storage_files → open_project
In the server's implementation (`bin/davinci-resolve-mcp.mjs:3`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: spawnSync } from "node:child_process"; import fs from "node:fs"; import os from "node:os"; import path from "node:path"
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server bin/davinci-resolve-mcp.mjs
In the server's implementation (`install.py:176`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: }')" ) result = subprocess.run( [str(python_path), "-c", script], capture_output=True, t
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server install.py
In the server's implementation (`resolve-advanced/server/aaf.mjs:12`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: rt { spawn } from 'node:child_process'; import { existsSync } from 'node:fs'; import { fileURLToPath } from 'node:url';
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server resolve-advanced/server/aaf.mjs
In the server's implementation (`resolve-advanced/server/capabilities.mjs:14`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: spawnSync } from 'node:child_process'; import { createRequire } from 'node:module'; const require = createRequire(impo
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server resolve-advanced/server/capabilities.mjs
In the server's implementation (`resolve-advanced/server/deliverable-qc.mjs:18`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: spawnSync } from 'node:child_process'; import { createRequire } from 'node:module'; import { probeMedia } from './ffpro
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server resolve-advanced/server/deliverable-qc.mjs
In the server's implementation (`resolve-advanced/server/extract-frames.mjs:19`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: spawnSync } from 'node:child_process'; import fs from 'node:fs'; import path from 'node:path'; import { requireFfmpeg }
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server resolve-advanced/server/extract-frames.mjs
In the server's implementation (`resolve-advanced/server/ffprobe-media.mjs:6`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: spawnSync } from 'node:child_process'; import { requireFfmpeg } from './capabilities.mjs'; /** Parse an "a/b" rational
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server resolve-advanced/server/ffprobe-media.mjs
In the server's implementation (`resolve-advanced/server/group-grade-read.mjs:20`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: spawnSync } from 'node:child_process'; import { createRequire } from 'node:module'; import { drxTool } from './tools/dr
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server resolve-advanced/server/group-grade-read.mjs
In the server's implementation (`resolve-advanced/server/offline-ref-db.mjs:340`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: const r = require('node:child_process').spawnSync( dump, ['-h', String(cfg.host), '-p', String(cfg.port), '-U',
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server resolve-advanced/server/offline-ref-db.mjs
In the server's implementation (`resolve-advanced/server/qc-sampler.mjs:17`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: spawnSync } from 'node:child_process'; import { createRequire } from 'node:module'; const require = createRequire(impo
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server resolve-advanced/server/qc-sampler.mjs
Tool "unlink_proxy_media" can write, overwrite or delete files (keyword "unlink" in tool name). Verify it is scoped to a safe directory.
Fix: Constrain file operations to an explicit, non-sensitive root; reject path traversal.
Location: tool unlink_proxy_media
Tool "unlink_clip_proxy_media" can write, overwrite or delete files (keyword "unlink" in tool name). Verify it is scoped to a safe directory.
Fix: Constrain file operations to an explicit, non-sensitive root; reject path traversal.
Location: tool unlink_clip_proxy_media
In the server's implementation (`resolve-advanced/server/tools/drt.mjs:54`): Loading a module chosen at runtime (from a variable) can pull in and run attacker-influenced code paths. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: rame crashes Resolve on import (measured)),audioOnly?+track? (explicit AUDIO placement on audio track 1-16; presence sup
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server resolve-advanced/server/tools/drt.mjs
Tool "unlink_proxy_media" can mutate/egress but declares no destructiveHint. Clients that don't default to spec-safe behavior may not prompt before running it.
Fix: Declare accurate annotations, and gate destructive tools on user confirmation regardless.
Location: tool unlink_proxy_media
Tool "unlink_clip_proxy_media" can mutate/egress but declares no destructiveHint. Clients that don't default to spec-safe behavior may not prompt before running it.
Fix: Declare accurate annotations, and gate destructive tools on user confirmation regardless.
Location: tool unlink_clip_proxy_media
Each tool and what it can reach — statically extracted from the published source.
get_media_storage_filesreads sensitive dataopen_projectnetwork egressopen_project_foldernetwork egressunlink_clip_proxy_mediawrites filesunlink_proxy_mediawrites filesadd_clip_flagno sensitive capabilityadd_clip_markerno sensitive capabilityadd_clip_mattes_to_media_poolno sensitive capabilityadd_color_groupno sensitive capabilityadd_items_to_media_pool_from_storageno sensitive capabilityadd_render_jobno sensitive capabilityadd_subfolderno sensitive capabilityadd_timeline_mattes_to_media_poolno sensitive capabilityanalyze_clip_for_intellisearchno sensitive capabilityanalyze_clip_for_slateno sensitive capabilityappend_to_timelineno sensitive capabilityapply_fairlight_preset_to_current_timelineno sensitive capabilityarchive_projectno sensitive capabilityauto_sync_audiono sensitive capabilityclear_clip_audio_classificationno sensitive capabilityclear_clip_colorno sensitive capabilityclear_clip_flagsno sensitive capabilityclear_clip_mark_in_outno sensitive capabilityclear_clip_transcriptionno sensitive capabilityclear_folder_transcriptionno sensitive capabilityclear_transcriptionno sensitive capabilityclose_projectno sensitive capabilitycreate_cloud_project_toolno sensitive capabilitycreate_gallery_power_grade_albumno sensitive capabilitycreate_gallery_still_albumno sensitive capabilitycreate_projectno sensitive capabilitycreate_project_folderno sensitive capabilitycreate_stereo_clipno sensitive capabilitydelete_clip_marker_at_frameno sensitive capabilitydelete_clip_marker_by_custom_datano sensitive capabilitydelete_clip_markers_by_colorno sensitive capabilitydelete_clip_mattesno sensitive capabilitydelete_color_groupno sensitive capabilitydelete_layout_preset_toolno sensitive capabilitydelete_media_pool_clipsno sensitive capabilitydelete_media_pool_foldersno sensitive capabilitydelete_projectno sensitive capabilitydelete_project_folderno sensitive capabilitydelete_render_jobno sensitive capabilitydelete_render_presetno sensitive capabilitydelete_stills_from_albumno sensitive capabilitydelete_timelines_by_idno sensitive capabilitydisable_background_tasks_for_current_sessionno sensitive capabilityexport_current_frame_as_stillno sensitive capabilityexport_folderno sensitive capabilityexport_layout_preset_toolno sensitive capabilityexport_media_pool_metadatano sensitive capabilityexport_project_to_fileno sensitive capabilityexport_stills_from_albumno sensitive capabilityfolder_analyze_for_intellisearchno sensitive capabilityfolder_analyze_for_slateno sensitive capabilityfolder_clear_audio_classificationno sensitive capabilityfolder_clear_transcriptionno sensitive capabilityfolder_exportno sensitive capabilityfolder_perform_audio_classificationno sensitive capabilityfolder_remove_motion_blurno sensitive capabilityfolder_transcribe_audiono sensitive capabilitygenerate_speechno sensitive capabilityget_album_stillsno sensitive capabilityget_clip_audio_mappingno sensitive capabilityget_clip_colorno sensitive capabilityget_clip_flag_listno sensitive capabilityget_clip_mark_in_outno sensitive capabilityget_clip_marker_by_custom_datano sensitive capabilityget_clip_marker_custom_datano sensitive capabilityget_clip_markersno sensitive capabilityget_clip_matte_listno sensitive capabilityget_clip_media_idno sensitive capabilityget_clip_metadatano sensitive capabilityget_clip_propertyno sensitive capabilityget_clip_third_party_metadatano sensitive capabilityget_clip_timelineno sensitive capabilityget_clip_unique_id_by_nameno sensitive capabilityget_color_group_clipsno sensitive capabilityget_color_group_post_clip_node_graphno sensitive capabilityget_color_group_pre_clip_node_graphno sensitive capabilityget_color_groups_listno sensitive capabilityget_current_databaseno sensitive capabilityget_current_project_folderno sensitive capabilityget_current_render_format_and_codecno sensitive capabilityget_current_render_modeno sensitive capabilityget_current_still_albumno sensitive capabilityget_database_listno sensitive capabilityget_folder_clip_listno sensitive capabilityget_folder_is_staleno sensitive capabilityget_folder_subfolder_listno sensitive capabilityget_folder_unique_idno sensitive capabilityget_gallery_album_nameno sensitive capabilityget_gallery_power_grade_albumsno sensitive capabilityget_gallery_still_albumsno sensitive capabilityget_media_pool_unique_idno sensitive capabilityget_media_storage_subfoldersno sensitive capabilityget_mounted_volumesno sensitive capabilityget_project_attributes_in_current_folderno sensitive capabilityget_project_folder_listno sensitive capabilityget_project_preset_listno sensitive capabilityget_project_unique_idno sensitive capabilityget_quick_export_render_presetsno sensitive capabilityget_render_codecsno sensitive capabilityget_render_formatsno sensitive capabilityget_render_job_listno sensitive capabilityget_render_job_statusno sensitive capabilityget_render_resolutionsno sensitive capabilityget_selected_clipsno sensitive capabilityget_still_labelno sensitive capabilityget_timeline_by_indexno sensitive capabilityget_timeline_matte_listno sensitive capabilitygoto_parent_project_folderno sensitive capabilitygoto_root_project_folderno sensitive capabilitygraph_apply_arri_cdl_lutno sensitive capabilitygraph_apply_grade_from_drxno sensitive capabilitygraph_get_lutno sensitive capabilitygraph_get_node_cache_modeno sensitive capabilitygraph_get_node_labelno sensitive capabilitygraph_get_num_nodesno sensitive capabilitygraph_get_tools_in_nodeno sensitive capabilitygraph_reset_all_gradesno sensitive capabilitygraph_set_lutno sensitive capabilitygraph_set_node_cache_modeno sensitive capabilitygraph_set_node_enabledno sensitive capabilityimport_cloud_project_toolno sensitive capabilityimport_folder_from_fileno sensitive capabilityimport_layout_preset_toolno sensitive capabilityimport_mediano sensitive capabilityimport_project_from_fileno sensitive capabilityimport_stills_to_albumno sensitive capabilityimport_timeline_from_fileno sensitive capabilityinsert_audio_to_current_trackno sensitive capabilityinspect_custom_objectno sensitive capabilityis_rendering_in_progressno sensitive capabilitylink_clip_full_resolution_mediano sensitive capabilitylink_clip_proxy_mediano sensitive capabilitylink_proxy_mediano sensitive capabilityload_burn_in_presetno sensitive capabilityload_cloud_projectno sensitive capabilityload_cloud_project_toolno sensitive capabilityload_layout_preset_toolno sensitive capabilityload_render_presetno sensitive capabilitymonitor_clip_growing_fileno sensitive capabilitymove_clips_to_folderno sensitive capabilitymove_media_pool_foldersno sensitive capabilityobject_helpno sensitive capabilityperform_clip_audio_classificationno sensitive capabilityquit_appno sensitive capabilityrefresh_lut_listno sensitive capabilityrefresh_media_pool_foldersno sensitive capabilityremove_clip_motion_blurno sensitive capabilityrename_color_groupno sensitive capabilityrender_with_quick_exportno sensitive capabilityreplace_clipno sensitive capabilityreplace_media_pool_clipno sensitive capabilityreplace_media_pool_clip_preserve_sub_clipno sensitive capabilityrestart_appno sensitive capabilityrestore_cloud_project_toolno sensitive capabilityrestore_projectno sensitive capabilityreveal_in_media_storageno sensitive capabilitysave_as_new_render_presetno sensitive capabilitysave_layout_preset_toolno sensitive capabilitysave_projectno sensitive capabilityset_cache_modeno sensitive capabilityset_cache_pathno sensitive capabilityset_clip_colorno sensitive capabilityset_clip_mark_in_outno sensitive capabilityset_clip_metadatano sensitive capabilityset_clip_propertyno sensitive capabilityset_clip_third_party_metadatano sensitive capabilityset_color_science_mode_toolno sensitive capabilityset_color_space_toolno sensitive capabilityset_current_databaseno sensitive capabilityset_current_media_pool_folderno sensitive capabilityset_current_render_format_and_codecno sensitive capabilityset_current_render_modeno sensitive capabilityset_current_still_albumno sensitive capabilityset_gallery_album_nameno sensitive capabilityset_media_pool_clip_nameno sensitive capabilityset_optimized_media_modeno sensitive capabilityset_project_nameno sensitive capabilityset_project_presetno sensitive capabilityset_project_property_toolno sensitive capabilityset_project_settingno sensitive capabilityset_proxy_modeno sensitive capabilityset_proxy_qualityno sensitive capabilityset_render_settingsno sensitive capabilityset_selected_clipno sensitive capabilityset_still_labelno sensitive capabilityset_superscale_settings_toolno sensitive capabilityset_timeline_format_toolno sensitive capabilitysetup_multicam_timelineno sensitive capabilitystart_rendering_jobsno sensitive capabilitystop_renderingno sensitive capabilityswitch_pageno sensitive capabilitytranscribe_audiono sensitive capabilitytranscribe_clip_audiono sensitive capabilitytranscribe_folder_audiono sensitive capabilityupdate_clip_marker_custom_datano sensitive capabilityCross-tool combinations that form a data-exfiltration primitive (untrusted input → sensitive source → external sink).
Scan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.
| Version | Score | Findings | Engine | Scanned |
|---|---|---|---|---|
v2.210.0 latest |
A 94/100 | 16 | 1.13.0 | 2026-09-07 |
v2.207.0 |
A 94/100 | 16 | 1.13.0 | 2026-09-06 |
v2.205.0 |
A 94/100 | 16 | 1.13.0 | 2026-09-04 |
v2.145.0 |
A 94/100 | 16 | 1.13.0 | 2026-09-01 |
v2.121.0 |
A 94/100 | 15 | 1.13.0 | 2026-08-31 |
v2.104.1 |
A 94/100 | 15 | 1.13.0 | 2026-08-30 |
v2.103.3 |
A 94/100 | 15 | 1.13.0 | 2026-08-29 |
v2.103.2 |
A 94/100 | 15 | 1.13.0 | 2026-08-28 |
v2.103.1 |
A 94/100 | 15 | 1.13.0 | 2026-08-25 |
v2.99.3 |
A 94/100 | 15 | 1.12.1 | 2026-08-23 |
Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.
The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.
npx mcptrustchecker scan davinci-resolve-mcp --online
Independent packages implementing the same tool, scanned with the same engine. Compare all 2 side by side →
MCP server for 2s.io — 575+ pay-per-call tools for AI agents — ground-truth data, AI gateway, and agent infra (storage, locks, queues, watchers). x402 USDC on Base/Solana, no API keys, upto usage billing, free trials.
ArXiv preprints + Google Scholar papers, with citation counts in one query.
Add MCP servers to your favorite coding agents with a single command.
Help agents automatically write and test stories for your UI components
Model Context Protocol server for AI-Archive platform - enables AI agents to discover, submit, and review research papers
MCP server for Semantic Scholar research workflows with stdio and Streamable HTTP transports.