Skip to content

Windows: Chroma MCP connection fails with uvx.cmd - use uvx instead #1192

@ChanghoSong

Description

@ChanghoSong

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 patching

Note: 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.cmduvx, Chroma connects successfully:

[CHROMA_MCP] Connected to chroma-mcp successfully
[CHROMA_SYNC] Backfilling observations {project=.claude, missing=1032, existing=0, total=1032}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions