Skip to content

Windows: chroma-mcp MCP stdio connection fails (uvx.cmd + backslash path) #1199

@dmnshin

Description

@dmnshin

Bug Description

On Windows, chroma-mcp fails to connect via MCP stdio with MCP error -32000: Connection closed. Two separate issues contribute:

1. uvx.cmd not found by Bun's spawn

In ChromaMcpManager.ts line 106:

const uvxCommand = isWindows ? 'uvx.cmd' : 'uvx';

Bun's child_process.spawn (used by StdioClientTransport) cannot resolve .cmd files on Windows. When uv is installed via pip/anaconda, only uvx.exe exists (no uvx.cmd).

stderr output from subprocess:

'uvx.cmd' is not recognized as an internal or external command

Fix: Change uvx.cmd to uvx.exe:

const uvxCommand = isWindows ? 'uvx.exe' : 'uvx';

2. Backslash path causes chromadb rust bindings Access Denied (OS error 5)

In ChromaMcpManager.ts line 29:

const DEFAULT_CHROMA_DATA_DIR = path.join(os.homedir(), '.claude-mem', 'chroma');

On Windows, path.join returns backslash paths like C:\Users\SOL\.claude-mem\chroma. When passed to chroma-mcp --data-dir, chromadb's rust bindings throw:

chromadb.errors.InternalError: Access Denied (os error 5)

Using forward slashes (C:/Users/SOL/.claude-mem/chroma) works correctly.

Fix: Normalize to forward slashes:

const DEFAULT_CHROMA_DATA_DIR = path.join(os.homedir(), '.claude-mem', 'chroma').replace(/\/g, '/');

Environment

  • Windows 11 Pro
  • Bun runtime (worker)
  • uv 0.9.10 (installed via anaconda at C:\anaconda3\Scripts\uvx.exe)
  • claude-mem v10.3.1
  • chroma-mcp 1.6.0

Steps to Reproduce

  1. Install claude-mem on Windows with uv installed via anaconda/pip
  2. Start worker: npm run worker:start
  3. Observe repeated CHROMA_MCP Connection failed errors in logs

Worker Log Evidence

Before:

[CHROMA_MCP] Connecting to chroma-mcp via MCP stdio {command=uvx.cmd, args=chroma-mcp --client-type persistent --data-dir C:\Users\SOL\.claude-mem\chroma}
[CHROMA_MCP] chroma-mcp stderr output {stderr='uvx.cmd' is not recognized as an internal or external command}
[CHROMA_MCP] Connection failed, killing subprocess to prevent zombie {error=MCP error -32000: Connection closed}

After fix:

[CHROMA_MCP] Connecting to chroma-mcp via MCP stdio {command=uvx.exe, args=chroma-mcp --client-type persistent --data-dir C:/Users/SOL/.claude-mem/chroma}
[CHROMA_MCP] Connected to chroma-mcp successfully

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