import gradio as gr class AppWrapper: def __init__(self): self._interfaces = [] # List of tuples: (interface_obj, tab_name) def register_interface(self, interface_obj, tab_name): """ Register an interface object with a corresponding tab name. """ self._interfaces.append((interface_obj, tab_name)) def build_app(self): """ Build the Gradio TabbedInterface from registered interfaces. """ interface_list = [iface.interface for iface, _ in self._interfaces] tab_names = [tab for _, tab in self._interfaces] self.app = gr.TabbedInterface( title="Web Search MCP", interface_list=interface_list, tab_names=tab_names, ) def launch(self, **kwargs): self.app.launch(**kwargs)