
DaVinci Resolve Lua MCP
io.github.saadk408由 GitHub 帳號 saadk408 發布v0.2.0更新於 Oct 25, 2026
Control the free edition of DaVinci Resolve 21.1 from Claude through a Lua script inside Resolve.
發布方自己的服務:Resolve
概覽
一個本機 Claude Desktop 擴充功能,透過在 DaVinci Resolve 內執行的 Lua 橋接腳本控制免費版 DaVinci Resolve 21.1。
- 可以做什麼
- 檢視目前開啟的專案,列出專案與時間軸,讀取媒體池片段與時間軸項目,支援分頁與截斷提示,並檢查橋接狀態、搜尋 Blackmagic 隨附的腳本參考文件。在目前時間軸上新增標記、依顏色或全部刪除標記、切換目前時間軸,以及開啟其他專案(預設先儲存目前專案)。將目前時間軸排入算圖佇列並開始算圖,查詢工作狀態與完成百分比。在 Resolve 內執行任意 Lua 5.1 程式碼,使用即時的 resolve 物件,回傳 JSON、擷取的 print 輸出與錯誤。從助理端乾淨地停止橋接。
- 適用情境
- 適合使用免費版 DaVinci Resolve 21.1 剪輯、希望助理讀取專案、時間軸與片段資訊、管理標記、觸發算圖,或在不購買 Studio 授權的情況下透過 Resolve 腳本 API 執行自訂 Lua 的使用者。
- 執行需求
- macOS(僅在 Apple Silicon 上實測)或 Windows 10/11(實驗性)。需要安裝 DaVinci Resolve 21.1 免費版並開啟一個專案,以及 Claude Desktop(內建 Node 20 或更新版本的執行環境)。安裝 .mcpb 套件後,每次啟動 Resolve 都要點選 Workspace > Scripts > resolve_mcp_bridge。可用 RLB_* 環境變數覆寫設定。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 DaVinci Resolve Lua MCP,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
DaVinci Resolve Lua MCP
Control the free edition of DaVinci Resolve 21.1 from Claude through a Lua script that runs inside Resolve. macOS and Windows (experimental), no Studio licence, no network.
[tests] [Release] [License: MIT] [Platforms: macOS, Windows (experimental)] [DaVinci Resolve 21.1 free edition]
DaVinci Resolve 21.1 moved Python scripting and the external scripting API to the Studio edition, and Blackmagic's own MCP server ships with Studio only. One door is still open on the free edition: Workspace > Scripts lists and runs Lua files. This project puts a small Lua script there. Launched once per Resolve session, it holds the live resolve object and executes Lua on behalf of an MCP server that Claude Desktop runs as an extension.
[!NOTE] Nothing here unlocks Studio features: the bridge uses the free edition's own Lua scripting API. Studio 21.1 users already have Blackmagic's native MCP server.
Features
- 15 purpose-built tools: project overview, project and timeline lists, Media Pool clips, timeline items, markers, timeline and project switching, rendering with status polling, and a search over Blackmagic's shipped scripting reference.
run_luafor everything else: any Lua 5.1 chunk runs inside Resolve with the liveresolveobject and returns JSON, capturedprintoutput and errors.- One
.mcpbbundle: install it in Claude Desktop, and the server copies its two Lua scripts into Resolve's user scripts folder on first launch. - No network: the server and the script talk through a request file and Fusion's preferences. There are no sockets, no listeners and no telemetry.
- Fast enough to feel interactive: about 60 ms per call, measured end to end on a Mac.
Requirements
- macOS (Apple Silicon is the only hardware measured).
- Windows 10 or 11, experimental. The default paths come from Blackmagic's documentation and forum reports; nothing has been measured on Windows yet. docs/windows.md lists what to check.
- DaVinci Resolve 21.1 free edition (build 21.1.0.17 is the one measured). Studio is not needed and not targeted. Blackmagic documents neither this Lua host nor its sandbox, so a point release can change what works.
- Claude Desktop. It ships the Node runtime the server needs (Node 20 or newer); nothing else is installed.
- A project open in Resolve while you use the tools.
Install
- Download
davinci-resolve-lua-mcp.mcpb(the latest release; the release notes and the SHA-256 are on the Releases page). - Double-click the file, or drag it onto the Claude Desktop window. Claude Desktop shows the extension's details and five settings; keep the defaults and click Install.
- In Resolve, open a project and click
Workspace > Scripts > resolve_mcp_bridge. That script is the bridge; the extension put it there when it first started.- The bridge stops when Resolve quits. Click it again after every Resolve launch, before using the tools.
- Ask Claude "Are you connected to DaVinci Resolve?".
From a terminal, either command downloads the file and opens the same dialog.
macOS:
Windows (PowerShell):
If nothing opens, install the file from Claude Desktop: Settings > Extensions > Advanced settings > Install Extension.
To update, download the new file and open it; extensions installed from a file do not update on their own. The server refreshes its two Lua scripts on its next start, so click Workspace > Scripts > resolve_mcp_bridge again afterwards. To build the bundle yourself, see Development.
Start and stop the bridge
Open a project in Resolve and click Workspace > Scripts > resolve_mcp_bridge. Nothing appears in the Console (the free edition mutes print in menu scripts); the bridge loops in the background and Resolve stays responsive. In Claude Desktop, resolve_status then reports alive: true with the product, version, edition, page and open project.
[!IMPORTANT] The bridge lives and dies with Resolve. After every Resolve launch, click
Workspace > Scripts > resolve_mcp_bridgeagain before using the tools. It is never started automatically, by design: a loop started throughfusion:Executeholds Fusion's shared script executor for the whole session, so the Scripts menu is the only supported launch.
To stop it, ask Claude to stop the bridge (stop_bridge), or quit Resolve. Clicking the script a second time while the bridge is running is harmless: the new one takes over and the old one exits on the first request addressed to the newer session.
Example prompts
https://github.com/user-attachments/assets/febdf2b9-8e0d-4fbf-8462-0d6ecd98c829
Tools
Every tool declares its access hints to the client. delete_markers refuses without confirm: true, and Claude is told to ask you first; run_lua takes no confirmation and is flagged destructive so the client can warn. Results are JSON with a matching structuredContent; the paginated tools (list_media_pool_clips, get_timeline_items) report total, offset, limit and truncated, and every failure names the next step instead of throwing.
Marker colours: Blue, Cyan, Green, Yellow, Red, Pink, Purple, Fuchsia, Rose, Lavender, Sky, Mint, Lemon, Sand, Cocoa, Cream.
Writing Lua for run_lua
The chunk runs inside Resolve's Scripts-menu Lua state (LuaJIT, Lua 5.1) with the globals resolve and fusion. Conventions, as the server also tells Claude:
- Call methods with a colon (
project:GetName()) and read constants with a dot (resolve.EXPORT_AAF). - API lists are 1-based tables: use
#listandfor i = 1, #list, neverpairs. Dicts are keyed tables;GetMarkers()is keyed by frame number. - Page names for
OpenPageare lowercase ("edit","color","deliver"). returna value to get it back as JSON. Only the first return value is sent.printoutput is invisible in Resolve but comes back inprints(capped at 200 lines / 16 KB).- Look the method up with
scripting_api_docsfirst, and avoid the deprecated forms Blackmagic's shipped examples still use:GetSetting/SetSetting(useGetSettings()/SetSettings({})),GetItemsInTrack(useGetItemListInTrack), index-based render-job calls (ids are strings) and single-argumentGetClipProperty. io,os.execute,os.remove,require,package,ffianddebugdo not exist in this state; errors carry the message only, without a traceback.
[!WARNING] The bridge handles one request at a time and cannot answer Resolve's modal dialogs. Long synchronous API calls (
RenderWithQuickExport,TranscribeAudio,Export,ArchiveProject,LoadProjecton an unsaved project when live save is off) block it until they finish. Start renders withrender_current_timelineand pollget_render_statusinstead of waiting insiderun_lua.
Settings
Claude Desktop shows these five settings when you install the extension. Keep the defaults for a standard Resolve installation. An empty folder field means the platform default from the Paths table.
[The extension's settings page in Claude Desktop with the five settings]Paths
The Windows paths are documented, not measured; the Fusion prefs folder is the least certain of them. A Microsoft Store install of Claude Desktop keeps its folders under %LOCALAPPDATA%\Packages\Claude_<id>\LocalCache\Roaming\Claude\ instead.
Environment variables (for the developer loop and tests)
The settings map onto RLB_SCRIPTS_DIR, RLB_AUTO_INSTALL, RLB_STATE_DIR, RLB_DEFAULT_TIMEOUT_S and RLB_PREFS_DIR; the rest have no setting. A bad value falls back to its default and shows up in resolve_status under config_problems; the server never refuses to start over configuration.
Troubleshooting
- The bridge is missing from
Workspace > Scripts. Ask Claude forresolve_statusand readbridge_script.outcome:installed,updatedorup_to_date: the file is in the scripts folder. Reopen the menu; Resolve lists a new file without a restart.skipped_auto_install_off: the setting is off. Copybridge/resolve_mcp_bridge.luaandscripts/claude_diag.luathere yourself.scripts_dir_missing: the folder does not exist. Launch Resolve once so it creates it, or fix the scripts-folder setting; the server never creates Resolve folders.permission_deniedorerror: the operating-system message says why.
config_problemsnames the state directory. The path cannot be embedded in the bridge: it contains]==], a double quote or a newline, starts with@@, or contains a backslash on macOS (Windows rewrites backslashes as forward slashes). Auto-install stays off until you change the State directory setting.- I copied the script into
Scripts/Deliver. Resolve also offers that folder's scripts as selectable render start/end scripts in the Deliver page, which is not where the bridge belongs. Delete the copy and keep the script inScripts/Utilityonly. Fusion.prefsis not updating. The bridge writes preferences only when it answers a request, so first check that it is running (resolve_status). The newestFusion.prefsunder the prefs folder is the one read, whatever the profile is called; set the prefs-folder setting only if that folder is somewhere else. A save that fails while Resolve is writing the file is attempted up to five times, and a failed start save is retried once a second until it lands.resolve_statussaysprefs_missing. NoFusion.prefsexists under the Fusion prefs folder. Launch Resolve at least once, or point the prefs-folder setting at the right folder. On Windows the default is documented but unmeasured; if yourFusion.prefslives elsewhere, please report the path as docs/windows.md describes.- A request is stuck, or a tool times out. The bridge is busy on a long synchronous call or a modal dialog it cannot answer: wait for Resolve to finish, then retry. Requests older than 120 s are refused by the bridge and the server removes
next.luaafter a timeout, so nothing needs clearing by hand. For slow calls, raise the default timeout (up to 300 s) or passtimeout_storun_lua. resolve_statussayslock_held. Another server kept the request slot for longer than the timeout: a second Claude Desktop entry,make smoke, or a dev-register loop. Stop it, or change the State directory setting. Remove thelockfile in the state directory by hand only if the pid it names is not a server.- On Windows, a tool answers with
EBUSYorEPERMonnext.lua. Windows refuses to delete or replace a file another process holds open, and the bridge re-reads the request file every 50 ms, so the server retries for about a second. A persistent error means something else keeps the file open, usually an antivirus scanner: exclude the state directory from real-time scanning. - On Windows,
resolve_statussaysstate_dir_ascii: false. Resolve's Lua may not open a path with non-ASCII characters, and every request would then time out. Set the state directory to an ASCII-only path such asC:\rlb. - Resolve was restarted mid-session.
resolve_statussaysresolve_gone(the recorded pid is dead) orno_reply. The session record survives the restart on purpose, and there is no heartbeat, so nothing restarts the bridge for you: clickWorkspace > Scripts > resolve_mcp_bridgeagain. - The response says
truncated: true. The JSON exceeded the cap (64 KB by default). Forrun_lua,result_previewholds the start of it; a purpose-built tool over the cap answers with an error that names the cap and asks for a smallerlimitor a differentoffset. Useoffsetandlimiton the list tools, or return less from your Lua. - Reinstalling shows no dialog. Remove the extension under Settings > Extensions, then open the
.mcpbagain; Claude Desktop relaunches the server at once. - A tool answers
bad_response. The installed script and the server disagree on the protocol, usually after an upgrade of one but not the other. Restart Claude Desktop so the server reinstalls the script, then relaunch it from the Scripts menu. - Where the logs are. The server's own log is
server.login the state directory (truncated at 5 MB; the path is also inresolve_status). Claude Desktop keeps the server's stderr asmcp-server-DaVinci Resolve Lua MCP.login its logs folder, which records the connection, not the chat's tool calls; the installed extension islocal.mcpb.saad-khan.davinci-resolve-lua-mcpin its extensions folder (both in Paths).
Prove that a call ran
The last answer is in Fusion.prefs, hex-encoded. On macOS:
On Windows (PowerShell):
Security
[!WARNING] Anything that can write one file on this machine can run Lua inside Resolve with your privileges. Read a
run_luachunk before you approve it.
- The state directory is that boundary. macOS creates it with mode 0700; Windows gives it your profile folder's permissions (the server sets none of its own).
- The last response persists hex-encoded in
Fusion.prefsuntil the next one overwrites it. On the measured Mac that file has mode 0666, so any local account can read the previous answer; on Windows it sits under%APPDATA%, private to your account by default (unmeasured). A clean stop marks the session recordstoppedand replaces the last answer with the stop acknowledgement. - The extension runs with your user's privileges, inside Claude Desktop's process model, with no sandbox of its own. It writes only its state directory and the two Lua files in Resolve's user scripts folder.
- No network: the server opens no sockets and makes no requests. Files in, preferences out.
Privacy Policy
The extension runs entirely on your machine and sends nothing anywhere. The full policy is PRIVACY.md; in short:
- Collection. It processes what Claude sends it (Lua code, marker text, names, paths) and what Resolve answers (project, timeline, clip and marker metadata, media paths). No accounts, no credentials, no telemetry, analytics or crash reporting.
- Use and storage. That data lives only in the request file (one call, then deleted), the last answer in
Fusion.prefs, the server log (ids, timings, paths and error messages; never Lua code, arguments or results) and Claude Desktop's copy of that log. - Third-party sharing. None by the extension. Claude Desktop sends tool inputs and results to Anthropic as part of your conversation, under Anthropic's privacy policy; GitHub serves the download.
- Retention. Until the next call or bridge launch overwrites the answer, until the log passes 5 MB, and otherwise until you delete the files as described under Uninstall.
- Contact. Questions: open an issue. Security problems: the repository's Security tab, as SECURITY.md describes.
Uninstall
- Remove "DaVinci Resolve Lua MCP" under Settings > Extensions in Claude Desktop.
- Delete
resolve_mcp_bridge.luaandclaude_diag.luafrom the scripts folder (see Paths); from a checkout on a Mac,make uninstall-bridgeremoves exactly those two files. - Delete the state directory.
The Global.ResolveLuaBridge.* keys stay in Fusion.prefs (under 2 KB after a clean stop: the session record, the stop answer and eight blanked keys). Remove them from Fusion's preferences if you want the file pristine.
Development
Prerequisites:
- Node 20 or newer and npm (the Makefile sources
~/.nvm/nvm.sh). - A DaVinci Resolve installation: the Lua tests run under its bundled
fuscriptat/Applications/DaVinci Resolve/DaVinci Resolve.app/Contents/Libraries/Fusion/fuscript. - Optionally
lua-language-server, formake lint-lua. - The Makefile is macOS-only. On Windows, run the same gates from Git Bash as docs/windows.md lists; the
fuscripttests andmake smokehave no Windows equivalent.
The developer loop: make dev-register once, then make build and restart Claude Desktop after each change, with no repack. The dev entry and the installed extension can run side by side: the request-slot lock is taken per request and released at once, so an idle server never blocks the other. They answer to the same tool names, though, so disable one in Claude Desktop while testing the other. CONTRIBUTING.md has the branch and release flow.
Releases: pushing a vX.Y.Z tag runs .github/workflows/release.yml, which runs the Node gates and make bundle on the tagged commit, attests the bundle's build provenance, then publishes an immutable GitHub Release with the bundle attached and its SHA-256 in the notes; an annotated tag's message becomes the notes' introduction. A second job publishes the release to the MCP Registry as io.github.saadk408/davinci-resolve-lua-mcp, with the hash of the file the release serves. Verify a downloaded bundle with gh attestation verify davinci-resolve-lua-mcp.mcpb -R saadk408/davinci-resolve-lua-mcp. The tests workflow also runs the Node gates and the bundle gate on a Windows runner.
[!NOTE]
make smokecreates and deletes a timeline namedbridge-smoke, adds and deletes markers on it, and sets the project's render target directory and file name.SMOKE_PROJECTmust be the name of the project that is open in Resolve, and it should be a scratch project, never a real edit. The run refuses to proceed when the names differ.
Layout:
bridge/resolve_mcp_bridge.lua: the in-Resolve loop, one dependency-free file under 600 lines.src/: the TypeScript server.server.tsholds the 15 tools,lua.tsevery Lua snippet and the one string-escaping helper,protocol.tsthe request slot and lock,prefs.tstheFusion.prefsreader,bridgeInstall.tsthe self-install.scripts/claude_diag.lua: the sandbox diagnostic, also shipped in the bundle.tests/: the Node suite;tests/lua/: thefuscriptchecks.docs/: the Windows measurement checklist (windows.md) and the README's screenshots (images/).
Acknowledgments
This project builds on the work of:
- AutoSubs - Lua bridge over Fusion preferences on free 21.1, the channel this project adopted
- samuelgursky/davinci-resolve-mcp - MCP server for DaVinci Resolve Studio through the Python scripting API
DaVinci Resolve is a trademark of Blackmagic Design Pty Ltd. This project is not affiliated with or endorsed by Blackmagic Design.
來源:README.md,提交 a10acbc
工具
0版本歷史
2- v0.2.0最新Sep 22, 2026
- v0.1.0Sep 22, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
其他 Resolve 整合
Resolve
ai.resolve官方發布者
Resolve 是遠端 AI DevOps 調查伺服器,讓助理跨日誌、指標、追蹤與部署調查告警、進行根因分析並回答生產環境問題。

ResolveMCP-ext
由 GitHub 帳號 CaptRauti 發布
為助理提供 DaVinci Resolve 21.1.2 中主流 Resolve MCP 伺服器未涵蓋的腳本能力:片段特效、貼上屬性、匯出影格、相簿與多機位版面。

DaVinci Resolve
由 GitHub 帳號 Aedelon 發布
讓 AI 助理透過具型別、可驗證的腳本 API 操作 DaVinci Resolve,完成剪輯、調色與交付的 MCP 伺服器。

DaVinci Resolve MCP (free edition)
由 GitHub 帳號 kingjamesch 發布
透過 Lua 橋接控制 macOS 上的 DaVinci Resolve 21.1(含免費版),讓助理管理專案、時間軸、媒體與算圖。

Nigeria Bank Resolve MCP by Wycord
由 GitHub 帳號 wycord 發布
將奈及利亞銀行帳號與銀行代碼解析為開戶人姓名,並可列出奈及利亞銀行及其代碼。