You might want to look at
calibre2Opds as a way of generating a catalog that can be accessed independently of Calibre running. Does not have dynamic updating of the catalog but that could be handled by setting Calibre2Opds to be run at periodic intervals.