basicsearch / gradio_ui.py
ocx2025's picture
updates
bd180df
"""
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)