Skip to content

Blank terminal window pops up on Windows when Chroma MCP server starts #590

Description

@dwd898

Description

On Windows, when the claude-mem plugin starts the Chroma MCP server via uvx, a blank terminal window (Windows Terminal / PowerShell) pops up and does not close automatically. Users must manually close this window each time, which is disruptive to the workflow.

Environment

  • OS: Windows 11 64-bit
  • Terminal: PowerShell 7.6.0-preview.6
  • claude-mem version: 9.0.0
  • uvx location: C:\Users\Dell\AppData\Local\Microsoft\WinGet\Links\uvx.exe

Steps to Reproduce

  1. Start Claude Code with claude-mem plugin enabled
  2. Trigger any action that invokes Chroma (e.g., search with semantic search enabled)
  3. A blank terminal window appears showing the uvx.exe path
  4. The window remains open and must be manually closed

Expected Behavior

The Chroma MCP server should start in the background without displaying any visible terminal window.

Root Cause Analysis

Looking at src/services/sync/ChromaSync.ts:106-124, the code attempts to hide the console window:

const transportOptions: any = {
command: 'uvx',
args: ['--python', pythonVersion, 'chroma-mcp', ...],
stderr: 'ignore'
};

// CRITICAL: On Windows, try to hide console window to prevent PowerShell popups
// Note: windowsHide may not be supported by MCP SDK's StdioClientTransport
if (isWindows) {
transportOptions.windowsHide = true;
}

The comment already acknowledges that windowsHide may not be supported by MCP SDK's StdioClientTransport. This option is not being passed through to the underlying child_process.spawn() call.

Possible Solutions

  1. Upstream fix: Request MCP SDK to support windowsHide option in StdioClientTransport
  2. Wrapper script: Use a VBS or PowerShell wrapper to launch uvx silently:
    powershell -windowstyle hidden -command "uvx --python 3.13 chroma-mcp ..."
  3. Custom spawn: Bypass StdioClientTransport and use Node.js child_process.spawn directly with proper Windows options:
    spawn(command, args, {
    windowsHide: true,
    stdio: ['pipe', 'pipe', 'ignore']
    });

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugConfirmed bug

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions