davinci-resolve-mcp 2.63.1 → 2.63.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,25 @@
2
2
 
3
3
  Release history for the DaVinci Resolve MCP Server. The latest release is summarized in the root README; older entries live here to keep the README focused.
4
4
 
5
+ ## What's New in v2.63.2
6
+
7
+ Installer fix for Windows MSIX builds of Claude Desktop (issue #93, reported by
8
+ @corolorn). No tool-surface change.
9
+
10
+ ### Fixed
11
+
12
+ - **Installer writes Claude Desktop config to the MSIX-virtualized path on
13
+ Windows** — Claude Desktop for Windows ships as an MSIX package (even from
14
+ the official website), and MSIX filesystem virtualization redirects the
15
+ app's config to
16
+ `%LOCALAPPDATA%\Packages\Claude_<publisherhash>\LocalCache\Roaming\Claude\claude_desktop_config.json`.
17
+ The installer previously wrote to the documented `%APPDATA%\Claude\` path,
18
+ which the MSIX-packaged app never reads, so the server silently never
19
+ appeared. The installer now detects the containerized path (publisher hash
20
+ globbed, not hard-coded) and writes there when present, falling back to
21
+ `%APPDATA%\Claude\` for non-MSIX installs. Documented both locations in
22
+ `docs/install.md`.
23
+
5
24
  ## What's New in v2.63.1
6
25
 
7
26
  Documentation-only. Records the `Graph.SetLUT` master-LUT-dir behavior (from the
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # DaVinci Resolve MCP Server
2
2
 
3
- [![Version](https://img.shields.io/badge/version-2.63.1-blue.svg)](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
3
+ [![Version](https://img.shields.io/badge/version-2.63.2-blue.svg)](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
4
4
  [![npm](https://img.shields.io/npm/v/davinci-resolve-mcp.svg?label=npm&color=CB3837)](https://www.npmjs.com/package/davinci-resolve-mcp)
5
5
  [![API Coverage](https://img.shields.io/badge/API%20Coverage-100%25-brightgreen.svg)](docs/reference/api-coverage.md)
6
6
  [![Tools](https://img.shields.io/badge/MCP%20Tools-34%20(341%20full)-blue.svg)](#server-modes)
package/docs/install.md CHANGED
@@ -50,7 +50,7 @@ The installer can automatically configure any of these clients:
50
50
 
51
51
  | Client | Config Written To |
52
52
  |--------|-------------------|
53
- | Claude Desktop | `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) |
53
+ | Claude Desktop | `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS); `%APPDATA%\Claude\claude_desktop_config.json` (Windows, see MSIX note below) |
54
54
  | Claude Code | `.mcp.json` (project root) |
55
55
  | Cursor | `~/.cursor/mcp.json` |
56
56
  | VS Code (Copilot) | `.vscode/mcp.json` (workspace) |
@@ -64,6 +64,15 @@ The installer can automatically configure any of these clients:
64
64
 
65
65
  You can configure multiple clients at once, or use `--clients manual` to get copy-paste config snippets.
66
66
 
67
+ > **Windows MSIX note (Claude Desktop):** Claude Desktop for Windows is
68
+ > distributed as an MSIX package — even when downloaded from the official
69
+ > website. MSIX filesystem virtualization redirects the app's config to
70
+ > `%LOCALAPPDATA%\Packages\Claude_<publisherhash>\LocalCache\Roaming\Claude\claude_desktop_config.json`,
71
+ > and the app never reads the documented `%APPDATA%\Claude\` path (which may
72
+ > still exist on disk). The installer detects the virtualized location and
73
+ > writes there automatically. If the server does not appear in Claude Desktop
74
+ > after a manual setup, check both locations.
75
+
67
76
  For [Autohand Code](https://github.com/autohandai/code-cli/), register the managed launcher after setup:
68
77
 
69
78
  ```bash
package/install.py CHANGED
@@ -35,7 +35,7 @@ from src.utils.update_check import (
35
35
 
36
36
  # ─── Version ──────────────────────────────────────────────────────────────────
37
37
 
38
- VERSION = "2.63.1"
38
+ VERSION = "2.63.2"
39
39
  # Only hard floor: mcp[cli] requires Python 3.10+. There is no upper bound —
40
40
  # Resolve's scripting bridge loads into newer interpreters on recent builds
41
41
  # (Python 3.14 verified against Resolve Studio 20.3.2). Older Resolve builds
@@ -282,6 +282,37 @@ def appdata():
282
282
  """Windows %APPDATA% equivalent."""
283
283
  return Path(os.environ.get("APPDATA", home() / "AppData" / "Roaming"))
284
284
 
285
+ def localappdata():
286
+ """Windows %LOCALAPPDATA% equivalent."""
287
+ return Path(os.environ.get("LOCALAPPDATA", home() / "AppData" / "Local"))
288
+
289
+ def windows_claude_desktop_config():
290
+ """Resolve the Claude Desktop config path on Windows, MSIX-aware (issue #93).
291
+
292
+ Claude Desktop for Windows ships as an MSIX package (even when downloaded
293
+ from the official website, not the Store). MSIX filesystem virtualization
294
+ redirects the app's %APPDATA% reads/writes into a per-package container,
295
+ so the app actually uses:
296
+
297
+ %LOCALAPPDATA%\\Packages\\Claude_<publisherhash>\\LocalCache\\Roaming\\Claude\\
298
+
299
+ A config written to the documented %APPDATA%\\Claude\\ location is invisible
300
+ to the app -- the server silently never appears. Prefer the containerized
301
+ path whenever a Claude MSIX package directory with that structure exists;
302
+ fall back to %APPDATA%\\Claude\\ otherwise. The publisher-hash suffix is
303
+ globbed rather than hard-coded so a re-signed package still matches.
304
+ """
305
+ packages = localappdata() / "Packages"
306
+ try:
307
+ candidates = sorted(packages.glob("Claude_*"))
308
+ except OSError:
309
+ candidates = []
310
+ for pkg in candidates:
311
+ virtual = pkg / "LocalCache" / "Roaming" / "Claude"
312
+ if virtual.is_dir():
313
+ return virtual / "claude_desktop_config.json"
314
+ return appdata() / "Claude" / "claude_desktop_config.json"
315
+
285
316
  def xdg_config():
286
317
  """Linux XDG_CONFIG_HOME or default."""
287
318
  return Path(os.environ.get("XDG_CONFIG_HOME", home() / ".config"))
@@ -314,7 +345,7 @@ MCP_CLIENTS = [
314
345
  "name": "Claude Desktop",
315
346
  "get_path": lambda: {
316
347
  "Darwin": home() / "Library" / "Application Support" / "Claude" / "claude_desktop_config.json",
317
- "Windows": appdata() / "Claude" / "claude_desktop_config.json",
348
+ "Windows": windows_claude_desktop_config(),
318
349
  "Linux": xdg_config() / "Claude" / "claude_desktop_config.json",
319
350
  }.get(SYSTEM),
320
351
  "config_key": "mcpServers",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "davinci-resolve-mcp",
3
- "version": "2.63.1",
3
+ "version": "2.63.2",
4
4
  "description": "NPM bootstrapper for the DaVinci Resolve MCP Server.",
5
5
  "license": "MIT",
6
6
  "author": "Samuel Gursky <samgursky@gmail.com>",
@@ -80,7 +80,7 @@ if not logging.getLogger().handlers:
80
80
  handlers=[logging.StreamHandler()],
81
81
  )
82
82
 
83
- VERSION = "2.63.1"
83
+ VERSION = "2.63.2"
84
84
  logger = logging.getLogger("davinci-resolve-mcp")
85
85
  logger.info(f"Starting DaVinci Resolve MCP Server v{VERSION}")
86
86
  logger.info(f"Detected platform: {get_platform()}")
package/src/server.py CHANGED
@@ -11,7 +11,7 @@ Usage:
11
11
  python src/server.py --full # Start the 341-tool granular server instead
12
12
  """
13
13
 
14
- VERSION = "2.63.1"
14
+ VERSION = "2.63.2"
15
15
 
16
16
  import base64
17
17
  import os