Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Control the free edition of DaVinci Resolve 21.1 from Claude through a Lua script inside Resolve.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Download the maker’s .mcpb file
The link goes to the maker’s own file; we do not host or repackage it. Open the file and Claude Desktop installs it.
Run this in your terminal
Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account saadk408, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.2.0) reached the registry 2 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need MCPB on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Claude Checkpoint MCP
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
MCP server that checkpoints Claude Code session context to survive crashes and token limits
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
*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.*
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.
resolve object and returns JSON, captured print output and errors.davinci-resolve-lua-mcp.mcpb (the latest release; the release notes and the SHA-256 are on the Releases page).Workspace > Scripts > resolve_mcp_bridge. That script is the bridge; the extension put it there when it first started.From a terminal, either command downloads the file and opens the same dialog.
macOS:
curl -fsSLo ~/Downloads/davinci-resolve-lua-mcp.mcpb https://github.com/saadk408/davinci-resolve-lua-mcp/releases/latest/download/davinci-resolve-lua-mcp.mcpb && open ~/Downloads/davinci-resolve-lua-mcp.mcpb
Windows (PowerShell):
Invoke-WebRequest -Uri https://github.com/saadk408/davinci-resolve-lua-mcp/releases/latest/download/davinci-resolve-lua-mcp.mcpb -OutFile "$env:USERPROFILE\Downloads\davinci-resolve-lua-mcp.mcpb"; Start-Process "$env:USERPROFILE\Downloads\davinci-resolve-lua-mcp.mcpb"
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.
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.
Scripts menu listing claude_diag and resolve_mcp_bridge">
[!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.
Give me an overview of the open Resolve project.
List the clips in the root bin with their durations and frame rates. What is on video track 1 of the current timeline? Add a blue marker at frame 240 named "fix colour". Delete all the red markers on this timeline. Render the current timeline to ~/Movies/out as fix-v2 and tell me when it finishes. Look up AppendToTimeline in the Resolve scripting docs. Use run_lua to return the current timeline's start timecode and its item count on V1.
https://github.com/user-attachments/assets/febdf2b9-8e0d-4fbf-8462-0d6ecd98c829
| Tool | What it does | Parameters | Access |
|---|---|---|---|
resolve_status | Whether the bridge is running and why not, its session, the platform, the self-install outcome and, when alive, product, version, edition, page and project | none | read-only |
run_lua | Runs a Lua 5.1 chunk inside Resolve with the live resolve object; returns its first return value as JSON plus captured prints and errors | code; timeout_s 1..300 (default from the settings) | destructive |
get_project_info | Name, page, database, frame rate, resolution, timeline count, root-bin counts and the current timeline of the open project | none | read-only |
list_projects | Projects in the current project-manager folder with dates and notes; marks the open one | none | read-only |
list_timelines | Every timeline with unique id, frame range and track counts; marks the current one | none | read-only |
list_media_pool_clips | Clips in one bin with path, duration, fps, resolution, type, frames and colour | bin_path (default /); offset; limit 1..200 (default 50) | read-only |
get_timeline_items | Items on one track of the current timeline with type, frames, source frames, enabled state and file path | track_type video, audio or subtitle; track_index from 1; offset; limit 1..500 (default 100) | read-only |
add_marker | Adds a marker to the current timeline and returns the stored marker | frame (relative to the timeline start); color (one of the 16 Resolve colours); name; note; duration in frames (default 1) | writes |
delete_markers | Deletes every marker of one colour, or all markers, from the current timeline | color (omit for all); confirm must be true | destructive |
set_current_timeline | Makes the named timeline current; an unknown name lists the known ones | name | writes |
open_project | Loads the named project, saving the open one first by default; an unknown name lists the known projects | name; save_current (default true) | writes |
render_current_timeline | Queues and starts a render of the current timeline and returns the job id | preset (optional, validated against the preset list); output_dir (absolute, must exist); filename | writes |
get_render_status | Status, completion percentage and error of one render job, plus whether Resolve is rendering | job_id | read-only |
stop_bridge | Asks the bridge to exit cleanly; relaunch it from Workspace > Scripts afterwards | none | writes |
scripting_api_docs | Searches Blackmagic's shipped scripting reference (.pyi signatures, README sections, CHANGELOG) with file and line; flags deprecated and unsupported calls | query; limit 1..10 (default 5) | read-only |
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:
project:GetName()) and read constants with a dot (resolve.EXPORT_AAF).#list and for i = 1, #list, never pairs. Dicts are keyed tables; GetMarkers() is keyed by frame number.OpenPage are lowercase ("edit", "color", "deliver").return a value to get it back as JSON. Only the first return value is sent. print output is invisible in Resolve but comes back in prints (capped at 200 lines / 16 KB).scripting_api_docs first, and avoid the deprecated forms Blackmagic's shipped examples still use: GetSetting/SetSetting (use GetSettings()/SetSettings({})), GetItemsInTrack (use GetItemListInTrack), index-based render-job calls (ids are strings) and single-argument GetClipProperty.io, os.execute, os.remove, require, package, ffi and debug do not exist in this state; errors carry the message only, without a traceback.local project = resolve:GetProjectManager():GetCurrentProject()
local timeline = project:GetCurrentTimeline() local items = timeline:GetItemListInTrack("video", 1) local out = {} for i = 1, #items do out[i] = { name = items[i]:GetName(), first = items[i]:GetStart(), last = items[i]:GetEnd() } end return { timeline = timeline:GetName(), start_timecode = timeline:GetStartTimecode(), items = out }
[!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 poll
Only the beginning is shown; read the rest in the repo