well now, it means the ServerBase cannot automatically get the list of methods from self, but needs the caller to do it explicitly.

What about passing to the constructor the subclass of ServerBase and the "object" (instead of calling it methods or wrapper) to expose.

If the object is an instance of ServerBase, then we make sure that any methods from the subclass of ServerBase are ignored. Else, we expose it as a generic object. Object is a dict already, all the work can be bypassed already.