[BUG] Windows MSIX: plugin stdio MCP servers fail — ${CLAUDE_PLUGIN_ROOT} resolves to un-virtualized %APPDATA% path, plugin files live under LocalCache
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
On Windows (MSIX-packaged Claude desktop), every plugin that ships a local stdio MCP server fails to start. The desktop installs the plugin files into the MSIX-virtualized AppData, but launches the server with ${CLAUDE_PLUGIN_ROOT} expanded to the real, un-virtualized %APPDATA% path. The server process (python.exe, outside the package) can't see the virtualized location, so it gets "No such file or directory".
All 7 stdio-MCP plugins from our private marketplace fail identically and stop after 3/3 retries. Skill-only plugins and plugins using remote (http) MCP servers load fine.
What Should Happen?
${CLAUDE_PLUGIN_ROOT} should resolve to a path the spawned server process can actually read — the real on-disk location of the installed plugin files — so plugin stdio MCP servers start on MSIX installs the same as on macOS.
Error Messages/Logs
Connection closed (stderr: python.exe: can't open file '%APPDATA%\Claude\local-agent-mode-sessions\<id-1>\<id-2>\rpm\<plugin_id>\run_server.py': [Errno 2] No such file or directory)
Path passed to python.exe (does NOT exist — no "rpm" folder):
%APPDATA%\Claude\local-agent-mode-sessions\<id-1>\<id-2>\rpm\<plugin_id>\
Where the plugin files actually are (all files present, written at install time):
%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\local-agent-mode-sessions\<id-1>\<id-2>\rpm\<plugin_id>\
Steps to Reproduce
- Install Claude desktop on Windows via the standard installer (MSIX package, family Claude_pzs8sxrjxfjjc).
- Enable a plugin whose .mcp.json defines a stdio server, e.g.
{"mcpServers":{"x":{"command":"python","args":["${CLAUDE_PLUGIN_ROOT}/run_server.py"]}}}
- Restart Claude and start a Cowork task.
- The server never appears. Device info shows state "retrying" 3/3 with the error above.
- In File Explorer, %APPDATA%\Claude\local-agent-mode-sessions\<id-1>\<id-2>\rpm does not exist; the same path under %LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\ contains the plugin files.
Claude Model
Other
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
N/A — Claude desktop app 2.16120.0 (Cowork mode)
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Other
Additional Information
Windows x64, [paste winver result]. Claude desktop 2.16120.0, Electron 44.4.3.
Related MSIX-virtualization issues: #25579 (closed/locked — config/userData path), #58421 (Cowork cites non-existent AppData\Roaming paths), #26073 ("Edit Config" opens wrong file). None covers plugin MCP servers.
The plugin interpreter resolves fine (python.exe starts); only the script path is wrong. The failure occurs before any plugin code runs.
Likely fix: resolve CLAUDE_PLUGIN_ROOT to the real on-disk path (e.g. via the package's LocalCache path), or install plugin files outside the virtualized AppData.