{"id":50465304,"url":"https://github.com/2sem/davinci-resolve-lite-mcp","last_synced_at":"2026-06-04T05:01:49.140Z","repository":{"id":361637999,"uuid":"1255209828","full_name":"2sem/davinci-resolve-lite-mcp","owner":"2sem","description":"MCP server to control DaVinci Resolve free (Lite) edition from Claude — runs as a Workspace\u003eScripts menu server, zero dependencies","archived":false,"fork":false,"pushed_at":"2026-06-01T07:18:22.000Z","size":87,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-01T07:25:13.717Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/2sem.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-31T14:47:32.000Z","updated_at":"2026-06-01T07:18:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/2sem/davinci-resolve-lite-mcp","commit_stats":null,"previous_names":["2sem/davinci-resolve-lite-mcp"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/2sem/davinci-resolve-lite-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2sem%2Fdavinci-resolve-lite-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2sem%2Fdavinci-resolve-lite-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2sem%2Fdavinci-resolve-lite-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2sem%2Fdavinci-resolve-lite-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/2sem","download_url":"https://codeload.github.com/2sem/davinci-resolve-lite-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2sem%2Fdavinci-resolve-lite-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33890052,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-04T02:00:06.755Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-01T07:01:10.658Z","updated_at":"2026-06-04T05:01:49.093Z","avatar_url":"https://github.com/2sem.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# davinci-resolve-lite-mcp\n\nAn [MCP](https://modelcontextprotocol.io) server that lets an AI client such as\n**Claude Code** control **DaVinci Resolve** — including the **free (Lite)\nedition**, which the existing\n[davinci-resolve-mcp](https://github.com/samuelgursky/davinci-resolve-mcp)\nproject cannot drive.\n\nThe free edition blocks *external* scripting, but it still runs Python scripts\nlaunched from its own **Workspace \u003e Scripts** menu. This project rides that path:\nthe MCP server runs **inside** Resolve as a menu script, and exposes Resolve's\nPython API over a small local HTTP endpoint that Claude connects to.\n\n```\nClaude Code ──HTTP JSON-RPC (MCP)──▶  127.0.0.1:8765/mcp\n                                          │   server runs INSIDE Resolve\n                                          │   (Workspace \u003e Scripts \u003e Utility)\n                                          ▼\n                              command queue → main script thread\n                                          ▼\n                              global `resolve` object → Resolve API\n```\n\n## Why this works on the free edition\n\n* Free Resolve permits scripts run from its **Scripts menu** (only *external*\n  network scripting is restricted).\n* A menu script gets the `resolve` object for free and may run a long-lived\n  loop — long enough to host a server.\n* The sandboxed Lite app ships the `com.apple.security.network.server`\n  entitlement, so it can open a localhost listening socket.\n* **Zero dependencies** — pure Python standard library. Nothing to `pip install`\n  into Resolve's interpreter.\n\n## Requirements\n\n* macOS with DaVinci Resolve (Lite/free or Studio).\n* Claude Code (or any MCP client that speaks the Streamable HTTP transport).\n\n## Install\n\n```bash\ngit clone \u003cthis-repo\u003e\ncd davinci-resolve-lite-mcp\n./install.sh\n```\n\n`install.sh` deploys:\n\n* the two launcher scripts into `Fusion/Scripts/Utility` (a folder Resolve scans\n  for the Scripts menu; **Utility** shows on every page), and\n* the `resolve_mcp` package into `Fusion/Scripts/MCP` — a folder Resolve does\n  **not** scan, so the helper modules stay out of the menu.\n\nThe Lite container path is detected automatically.\n\n\u003e **Sandbox note (important).** DaVinci Resolve Lite is sandboxed and can only\n\u003e read its own container, `~/Movies`, and files you pick interactively. A\n\u003e symlink that points outside those locations (e.g. into a clone under\n\u003e `~/Projects`) **cannot be followed by the sandboxed app**, so the menu script\n\u003e would silently never run. For that reason `install.sh` **copies** the files\n\u003e into the container on Lite (and symlinks only on the non-sandboxed Studio\n\u003e build). **Re-run `./install.sh` after pulling updates.**\n\u003e\n\u003e Resolve enumerates only the category folders (`Utility / Comp / Tool / Edit /\n\u003e Color / Deliver`) for its Scripts menu — that is why the launchers go in\n\u003e `Utility` and the package hides in `MCP`.\n\u003e\n\u003e The same sandboxing applies to file paths you ask the tools to use:\n\u003e exports/imports should target `~/Movies` (or other granted locations),\n\u003e otherwise Resolve cannot write/read them.\n\n## Run\n\n1. In DaVinci Resolve: **Workspace \u003e Scripts \u003e Utility \u003e davinci_mcp_server**.\n2. Open **Workspace \u003e Console** — it prints the endpoint and port:\n\n   ```\n   MCP endpoint:  http://127.0.0.1:8765/mcp\n   Add to Claude Code:\n     claude mcp add --transport http davinci http://127.0.0.1:8765/mcp\n   ```\n\n   \u003e The startup guide prints to the Resolve Console (Workspace \u003e Console).\n   \u003e Because the server runs continuously, its Console output can buffer until\n   \u003e it stops, so both scripts also mirror every line to a logfile:\n   \u003e\n   \u003e ```\n   \u003e ~/Movies/davinci-resolve-lite-mcp.log\n   \u003e ```\n   \u003e\n   \u003e Watch it live with `./logs.sh`. (Override the directory with\n   \u003e `DAVINCI_MCP_LOG_DIR`.) `~/Movies` is used because the sandboxed Lite app\n   \u003e is allowed to write there.\n\n3. Register it with Claude Code:\n\n   ```bash\n   claude mcp add --transport http davinci http://127.0.0.1:8765/mcp\n   ```\n\n4. Ask Claude to control Resolve.\n\n### Stopping\n\nAny of these stops the server:\n\n* **From the menu:** Workspace \u003e Scripts \u003e Utility \u003e **stop_davinci_mcp_server**\n* **From a terminal:** `./stop.sh`\n* **Quit DaVinci Resolve**\n\nThe menu stop script and `stop.sh` both POST to the server's `/shutdown`\nendpoint, scanning the same port range the server uses on startup.\n\n\u003e The port auto-increments from `8765` if that port is busy. Override the\n\u003e default with the `DAVINCI_MCP_PORT` / `DAVINCI_MCP_HOST` environment\n\u003e variables before launching Resolve.\n\n## Tools\n\n**77 tools**, all exercised live against DaVinci Resolve Lite, spanning the full\npipeline:\n\n- **Status \u0026 navigation** — page switching, project/timeline settings\n- **Projects \u0026 timelines** — load/create/duplicate, markers, scene cuts, lifecycle\n- **Tracks** — add/delete, enable/lock/rename\n- **Editing** — place/append/delete clips, titles \u0026 generators, transform/crop/zoom\n- **Media pool \u0026 storage** — import/delete, properties \u0026 metadata, tagging, disk browse\n- **Color** — node graph LUT/enable, reset grades, stills\n- **Render \u0026 export** — render queue, formats/codec, frame/timeline/project export \u0026 import\n\nSee **[docs/TOOLS.md](docs/TOOLS.md)** for the complete per-tool reference.\n\nEvery tool call is logged to the Resolve Console and the logfile as a single\nline: `[davinci-mcp] \u003cname\u003e \u003cargs\u003e -\u003e ok|error|EXCEPTION (Nms)`.\n\n## Project layout\n\n```\nsrc/davinci_mcp_server.py        thin launcher (deployed to Scripts/Utility)\nsrc/stop_davinci_mcp_server.py   stop launcher\nsrc/resolve_mcp/                 the server package (deployed to Scripts/MCP, hidden)\n    config · logio · connection · bridge · tools · server\ntests/test_server.py             offline tests (fake Resolve, no app needed)\ninstall.sh · uninstall.sh · stop.sh · logs.sh\ndocs/TOOLS.md                    full per-tool reference\nfallbacks/                       documented gotchas + fixes\n```\n\nRun the offline tests with `python3 tests/test_server.py`.\n\n## Known limitations\n\n- Clips are addressed by **name within the current media-pool folder**; if two\n  clips share a name, only one is reachable. (A future version may add id-based\n  addressing.)\n- Tool arguments are described by JSON Schema but not strictly validated\n  server-side yet — a malformed call surfaces as a generic JSON-RPC error rather\n  than a friendly message.\n\n## Security note\n\nThe server binds to `127.0.0.1` only, so it is reachable from your machine\nonly. It exposes control of DaVinci Resolve to any local process that can reach\nthe port — only run it on a machine you trust.\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2sem%2Fdavinci-resolve-lite-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F2sem%2Fdavinci-resolve-lite-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2sem%2Fdavinci-resolve-lite-mcp/lists"}