Hetuki/basic-mcp-server
0
1import gradio as gr
2import asyncio
3from langchain_mcp_adapters.client import MultiServerMCPClient
4
5
6# Define the async function to get airport from coordinates
7async def get_closest_airport(latitude, longitude):
8 client = MultiServerMCPClient({
9 "closest_airport": {
10 "command": "python",
11 "args": ["airport_search_server.py"],
12 "transport": "stdio"
13 }
14 })
15
16 tools = await client.get_tools()
17 for tool in tools:
18 if tool.name == "closest_airport":
19 result = await tool.ainvoke({"latitude": latitude, "longitude": longitude})
20 return result["data"] if isinstance(result, dict) and "data" in result else result
21
22
23# Wrapper to run async in sync Gradio interface
24def run_airport_tool(lat, lon):
25 return asyncio.run(get_closest_airport(lat, lon))
26
27
28# Gradio Interface
29with gr.Blocks(title="Find Closest Airport") as demo:
30 gr.Markdown("## ✈️ Closest Airport Finder from Coordinates")
31
32 with gr.Row():
33 lat_input = gr.Textbox(label="Latitude", placeholder="e.g., 23.0283165")
34 lon_input = gr.Textbox(label="Longitude", placeholder="e.g., 72.4962314")
35
36 submit_btn = gr.Button("Find Closest Airport")
37 output_text = gr.Textbox(label="Closest Airport Info")
38
39 submit_btn.click(run_airport_tool, inputs=[lat_input, lon_input], outputs=output_text)
40
41if __name__ == "__main__":
42 demo.launch(mcp_server=True)
43 