Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Control the free edition of DaVinci Resolve 21.1 from Claude through a Lua script inside Resolve.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
链接指向作者自己的文件;我们不托管也不重新打包它。打开文件后,Claude Desktop 会进行安装。
在终端中运行这条命令
浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 saadk408 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.2.0)于2个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 MCPB。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Systemdox
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
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.
Your architecture in your agents' context: checks, specs, ADRs and docs over MCP, at write time.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
*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
只显示了开头部分;其余内容请在仓库中阅读