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는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검
레지스트리 이름이 GitHub 계정 saadk408 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.2.0)은 2개월 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 MCPB도 있어야 해요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, sync. labs
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ 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.
Lipsync videos, dub them into other languages, make talking videos and open sync. Studio.
제작자의 저장소에서 쓰인 그대로 가져왔어요. 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
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요