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) | |