""" Optional Gradio UI for the MCP server. This can run alongside the FastAPI server for visual testing. """ import gradio as gr from server import search_youtube_videos import json def search_interface(query: str, max_results: int = 5): """Gradio interface for YouTube search""" if not query: return {"error": "Please enter a search query"} try: results = search_youtube_videos(query, int(max_results)) return { "success": True, "count": len(results), "results": results } except Exception as e: return { "success": False, "error": str(e) } # Create Gradio interface with gr.Blocks(title="YouTube Search MCP Server") as demo: gr.Markdown("# 🔍 YouTube Search MCP Server") gr.Markdown("Test the YouTube search functionality with a visual interface.") with gr.Row(): with gr.Column(): query_input = gr.Textbox( label="Search Query", placeholder="Enter search term (e.g., 'Python tutorial')", lines=1 ) max_results = gr.Slider( minimum=1, maximum=10, value=5, step=1, label="Maximum Results" ) search_btn = gr.Button("🔍 Search", variant="primary") with gr.Column(): output = gr.JSON(label="Search Results") # Examples gr.Examples( examples=[ ["Python programming tutorial", 5], ["Machine learning basics", 3], ["FastAPI tutorial", 5], ], inputs=[query_input, max_results], ) # Connect button search_btn.click( fn=search_interface, inputs=[query_input, max_results], outputs=output ) if __name__ == "__main__": demo.launch(server_name="0.0.0.0", server_port=7860)