File size: 2,614 Bytes
e071442
 
 
 
 
 
 
c7bfd9f
 
 
 
 
e071442
 
c7bfd9f
 
 
 
 
 
e071442
 
 
c7bfd9f
 
 
 
 
 
e071442
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import gradio as gr

# Import your existing functions
from src import search_on_web, search_custom_sites, search_custom_domain


def run_search_on_web(query: str):
    try:
        result = search_on_web(query)
        return result.response_str, [item.model_dump() for item in result.citation]
    except Exception as e:
        return str(e), []

def run_search_custom_sites(query: str, sites: str):
    try:
        site_list = [s.strip() for s in sites.split(",") if s.strip()]
        result = search_custom_sites(query, site_list)
        return result.response_str, [item.model_dump() for item in result.citation]
    except Exception as e:
        return str(e), []


def run_search_custom_domains(query: str, domains: str):
    try:
        domain_list = [d.strip() for d in domains.split(",") if d.strip()]
        result = search_custom_domain(query, domain_list)
        return result.response_str, [item.model_dump() for item in result.citation]
    except Exception as e:
        return str(e), []

with gr.Blocks() as demo:
    gr.Markdown("# 🔎 MCP Search Panel")

    with gr.Tab("General Web Search"):
        query_input_web = gr.Textbox(label="Query")
        output_web_str = gr.Textbox(label="Answer")
        output_web_cite = gr.JSON(label="Citations")
        search_btn_web = gr.Button("Search")
        search_btn_web.click(
            fn=run_search_on_web,
            inputs=query_input_web,
            outputs=[output_web_str, output_web_cite],
        )

    with gr.Tab("Custom Sites Search"):
        query_input_sites = gr.Textbox(label="Query")
        sites_input = gr.Textbox(label="Sites (comma-separated)")
        output_sites_str = gr.Textbox(label="Answer")
        output_sites_cite = gr.JSON(label="Citations")
        search_btn_sites = gr.Button("Search")
        search_btn_sites.click(
            fn=run_search_custom_sites,
            inputs=[query_input_sites, sites_input],
            outputs=[output_sites_str, output_sites_cite],
        )

    with gr.Tab("Custom Domains Search"):
        query_input_domains = gr.Textbox(label="Query")
        domains_input = gr.Textbox(label="Domains (comma-separated, e.g., edu, gov)")
        output_domains_str = gr.Textbox(label="Answer")
        output_domains_cite = gr.JSON(label="Citations")
        search_btn_domains = gr.Button("Search")
        search_btn_domains.click(
            fn=run_search_custom_domains,
            inputs=[query_input_domains, domains_input],
            outputs=[output_domains_str, output_domains_cite],
        )

if __name__ == "__main__":
    demo.launch(mcp_server=True)