Skip to main content
Glama

DollhouseMCP

by DollhouseMCP
INIT_FIX_610_IMPLEMENTATION.md2.3 kB
# Initialization Fix Implementation - Issue #610 **Date**: August 16, 2025 **Branch**: fix/server-initialization-race-condition **Issue**: #610 - Fix race condition in server initialization ## Problem Analysis ### Current Implementation (Race Condition) In the constructor (lines 97-186): - Portfolio initialization happens asynchronously with `.then()` - `personasDir` starts as empty string - Critical initialization happens in the callback In the run() method (line 4457): - Server connects immediately with `await this.server.connect(transport)` - Doesn't wait for portfolio initialization - MCP is ready but personas/portfolio aren't loaded ### The Fix Move initialization to run() method and await it before connecting: ```typescript async run() { // Initialize BEFORE connecting await this.initializePortfolio(); await this.completeInitialization(); // NOW connect MCP const transport = new StdioServerTransport(); await this.server.connect(transport); } ``` ## Changes Made ### 1. Extract Post-Initialization Logic Created new method `completeInitialization()` that contains all the logic that was in the `.then()` callback. ### 2. Modified Constructor - Removed the async `.then()` pattern - Constructor now only sets up basic state - No async operations in constructor ### 3. Modified run() Method - Added await for `initializePortfolio()` - Added await for `completeInitialization()` - These complete BEFORE connecting to transport ## Testing ### Local MCP Test ✅ ```bash # Test with proper parameters echo '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"1.0.0","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}},"id":1}' | node dist/index.js 2>/dev/null # Result: Server responds correctly {"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{}},"serverInfo":{"name":"dollhousemcp","version":"1.0.0"}},"jsonrpc":"2.0","id":1} ``` ### Docker Test ```bash docker compose --file docker/docker-compose.yml run --rm -T dollhousemcp ``` Note: Docker environment needs further testing but local MCP is working correctly. ## Impact This fix ensures: 1. Portfolio and personas are loaded before MCP connects 2. No race condition between initialization and commands 3. Docker tests should pass 4. PR #606 is unblocked

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/DollhouseMCP/DollhouseMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server