-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Closed
Description
Bug Description
On Windows (Git Bash / MSYS2 environment), ChromaMcpManager fails to connect to chroma-mcp via StdioClientTransport because it uses uvx.cmd instead of uvx.
Error
[CHROMA_MCP] Connecting to chroma-mcp via MCP stdio {command=uvx.cmd, args=chroma-mcp --client-type persistent --data-dir C:\Users\...\.claude-mem\chroma}
[CHROMA_MCP] Connection failed, killing subprocess to prevent zombie {error=MCP error -32000: Connection closed}
Root Cause
In src/services/sync/ChromaMcpManager.ts line 106:
const uvxCommand = isWindows ? 'uvx.cmd' : 'uvx';StdioClientTransport from @modelcontextprotocol/sdk uses child_process.spawn() internally without shell: true. On Windows, spawning .cmd files via spawn() without shell: true can cause immediate process termination / connection closed errors.
Fix
Change uvx.cmd to uvx. The uvx binary is directly executable in Git Bash / MSYS2 environments without the .cmd wrapper:
const uvxCommand = isWindows ? 'uvx' : 'uvx';
// or simply:
const uvxCommand = 'uvx';Workaround
Patch the built file directly:
sed -i 's/"uvx.cmd"/"uvx"/g' ~/.claude/plugins/cache/thedotmack/claude-mem/<version>/scripts/worker-service.cjs
# Restart worker after patchingNote: This patch is lost on /plugin update claude-mem.
Environment
- Windows 10 Pro 10.0.19045
- Shell: Git Bash (MSYS2)
- uvx 0.10.0
- chroma-mcp 1.6.0 (via uvx)
- claude-mem v10.3.1
- Node.js with @modelcontextprotocol/sdk StdioClientTransport
Verification
After patching uvx.cmd → uvx, Chroma connects successfully:
[CHROMA_MCP] Connected to chroma-mcp successfully
[CHROMA_SYNC] Backfilling observations {project=.claude, missing=1032, existing=0, total=1032}
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels