File size: 3,091 Bytes
014f597 1d0b9d1 89c9126 44e58a6 89c9126 6bdfadb b139634 6bdfadb 44e58a6 6bdfadb 89c9126 6bdfadb 44e58a6 89c9126 6bdfadb 89c9126 b139634 89c9126 1d0b9d1 89c9126 014f597 6bdfadb 89c9126 6bdfadb 44e58a6 6bdfadb b139634 6bdfadb b139634 44e58a6 b139634 6bdfadb 89c9126 b139634 89c9126 1d0b9d1 89c9126 87a229b 1d0b9d1 014f597 1d0b9d1 014f597 1d0b9d1 |
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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
import gradio as gr
# Local modules
import tools
from utils.constants import (
DRIVER_NAMES,
CONSTRUCTOR_NAMES,
CURRENT_YEAR
)
iface_driver_championship_standings = gr.Interface(
fn=tools.driver_championship_standings,
inputs=[
gr.Number(label="Calendar year", value=CURRENT_YEAR, minimum=1950, maximum=CURRENT_YEAR),
gr.Dropdown(label="Driver", choices=DRIVER_NAMES)
],
outputs="text",
title="Driver Championship Standings",
description="Get the driver championship standings"
)
iface_constructor_championship_standings = gr.Interface(
fn=tools.constructor_championship_standings,
inputs=[
gr.Number(label="Calendar year", value=CURRENT_YEAR, minimum=1950, maximum=CURRENT_YEAR),
gr.Dropdown(label="Constructor", choices=CONSTRUCTOR_NAMES)
],
outputs="text",
title="Constructor Championship Standings",
description="Get the constructor championship standings"
)
iface_event_info = gr.Interface(
fn=tools.get_event_info,
inputs=[
gr.Number(label="Calendar year", value=CURRENT_YEAR, minimum=1950, maximum=CURRENT_YEAR),
gr.Textbox(label="Grand Prix", placeholder="Ex: Monaco", info="The name of the GP/country/location (Fuzzy matching supported)"),
gr.Radio(["human", "LLM"], label="Display format", value="human")
],
outputs="text",
title="Event Info",
description="Get the Grand Prix event info for a specific race week"
)
iface_season_calendar = gr.Interface(
fn=tools.get_season_calendar,
inputs=[
gr.Number(label="Calendar year", value=CURRENT_YEAR, minimum=1950, maximum=CURRENT_YEAR),
],
outputs="text",
title="Season Calendar",
description="Get the season calendar information for the given year"
)
iface_track_visualization = gr.Interface(
fn=tools.track_visualization,
inputs=[
gr.Number(label="Calendar year", value=CURRENT_YEAR, minimum=1950, maximum=CURRENT_YEAR),
gr.Textbox(label="Grand Prix", placeholder="Ex: Monaco", info="The name of the GP/country/location (Fuzzy matching supported)"),
gr.Radio(["speed", "corners", "gear"], label="Visualization type", value="speed"),
gr.Dropdown(DRIVER_NAMES)
],
outputs="image",
title="Track Visualizations",
description="Get the track visualization for the given Grand Prix"
)
named_interfaces = {
"Driver Championship Standings": iface_driver_championship_standings,
"Constructor Championship Standings": iface_constructor_championship_standings,
"Event Info": iface_event_info,
"Season Calendar": iface_season_calendar,
"Track Visualizations": iface_track_visualization
}
# Tab names and interfaces
tab_names = list(named_interfaces.keys())
interface_list = list(named_interfaces.values())
# Combine all the interfaces into a single TabbedInterface
gradio_server = gr.TabbedInterface(
interface_list,
tab_names=tab_names,
title="Formula 1 MCP server"
)
# Launch the interface and MCP server
if __name__ == "__main__":
gradio_server.launch(mcp_server=True) |