Skip to main content
The MCP server is integrated into the main node process following the same patterns as the signaling server:
Node Integration Pattern
// From src/index.ts - MCP server startup
if (indexState.MCP_ENABLED) {
    try {
        const { createDemosMCPServer, createDemosNetworkTools } = await import("./features/mcp")

        // Get available port
        indexState.MCP_SERVER_PORT = await getNextAvailablePort(indexState.MCP_SERVER_PORT)

        // Create server with SSE transport for remote access
        const mcpServer = createDemosMCPServer({
            transport: "sse",
            port: indexState.MCP_SERVER_PORT,
            host: "localhost"
        })

        // Add all Demos Network tools
        const tools = createDemosNetworkTools()
        tools.forEach(tool => mcpServer.registerTool(tool))

        await mcpServer.start()

        // Track in state
        indexState.mcpServer = mcpServer
        getSharedState.isMCPServerStarted = true
        console.log(`[MAIN] MCP server started on port ${indexState.MCP_SERVER_PORT}`)
    } catch (error) {
        console.log("[MAIN] Failed to start MCP server:", error)
        getSharedState.isMCPServerStarted = false
        // Continue without MCP (failsafe)
    }
}