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
- Start Claude Code with claude-mem plugin enabled
- Trigger any action that invokes Chroma (e.g., search with semantic search enabled)
- A blank terminal window appears showing the uvx.exe path
- 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
- Upstream fix: Request MCP SDK to support windowsHide option in StdioClientTransport
- Wrapper script: Use a VBS or PowerShell wrapper to launch uvx silently:
powershell -windowstyle hidden -command "uvx --python 3.13 chroma-mcp ..."
- 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']
});
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
Steps to Reproduce
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
powershell -windowstyle hidden -command "uvx --python 3.13 chroma-mcp ..."
spawn(command, args, {
windowsHide: true,
stdio: ['pipe', 'pipe', 'ignore']
});