Spaces:
Sleeping
Sleeping
| """ | |
| 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) | |