Skip to main content
Glama
Machine-To-Machine

Formula One MCP Server (Python)

compare_drivers

Analyze and compare Formula One driver performance data for specific seasons, events, and sessions to identify differences in race results and statistics.

Instructions

Compare performance between multiple Formula One drivers

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
yearYesSeason year (e.g., 2023)
event_identifierYesEvent name or round number (e.g., 'Monaco' or '7')
session_nameYesSession name (e.g., 'Race', 'Qualifying', 'Sprint', 'FP1', 'FP2', 'FP3')
driversYesComma-separated list of driver codes (e.g., 'HAM,VER,LEC')

Implementation Reference

  • Core handler function that implements the compare_drivers tool logic: loads F1 session data, computes fastest lap, average lap time, total laps for each driver, and returns comparison data.
    def compare_drivers(year, event_identifier, session_name, drivers): """ Compare performance between multiple Formula One drivers. Args: year (int or str): The year of the F1 season event_identifier (str): Event name or round number session_name (str): Session type (Race, Qualifying, Sprint, etc.) drivers (str): Comma-separated list of driver codes Returns: dict: Status and driver comparison data or error information """ try: year = int(year) drivers_list = drivers.split(",") session = fastf1.get_session(year, event_identifier, session_name) session.load() driver_comparisons = [] for driver in drivers_list: # Get laps and fastest lap for each driver driver_laps = session.laps.pick_driver(driver) fastest_lap = driver_laps.pick_fastest() # Calculate average lap time valid_lap_times = [] for _, lap in driver_laps.iterrows(): if lap["LapTime"] is not None and not pd.isna(lap["LapTime"]): valid_lap_times.append(lap["LapTime"].total_seconds()) avg_lap_time = ( sum(valid_lap_times) / len(valid_lap_times) if valid_lap_times else None ) # Format lap time as string formatted_fastest = None fastest_lap_number = None if fastest_lap is not None: formatted_fastest = ( str(fastest_lap["LapTime"]) if not pd.isna(fastest_lap["LapTime"]) else None ) fastest_lap_number = ( int(fastest_lap["LapNumber"]) if not pd.isna(fastest_lap["LapNumber"]) else None ) # Compile driver data driver_data = { "DriverCode": driver, "FastestLap": formatted_fastest, "FastestLapNumber": fastest_lap_number, "TotalLaps": len(driver_laps), "AverageLapTime": avg_lap_time, } driver_comparisons.append(driver_data) return {"status": "success", "data": driver_comparisons} except Exception as e: return {"status": "error", "message": str(e)}
  • Registers the compare_drivers tool in the MCP server's list_tools() function, including its description and input schema validation.
    types.Tool( name="compare_drivers", description=( "Compare performance between multiple Formula One drivers" ), inputSchema={ "type": "object", "properties": { "year": { "type": "number", "description": "Season year (e.g., 2023)", }, "event_identifier": { "type": "string", "description": ( "Event name or round number (e.g., 'Monaco' or '7')" ), }, "session_name": { "type": "string", "description": ( "Session name (e.g., 'Race', 'Qualifying', " "'Sprint', 'FP1', 'FP2', 'FP3')" ), }, "drivers": { "type": "string", "description": ( "Comma-separated list of driver codes " "(e.g., 'HAM,VER,LEC')" ), }, }, "required": [ "year", "event_identifier", "session_name", "drivers", ], }, ),
  • Dispatches calls to the compare_drivers tool handler within the main f1_tool MCP call_tool function.
    elif name == "compare_drivers": result = compare_drivers( sanitized_args["year"], str(arguments["event_identifier"]), str(arguments["session_name"]), str(arguments["drivers"]), )
  • Imports the compare_drivers function from f1_data.py for use in the server.
    from .f1_data import ( analyze_driver_performance, compare_drivers, get_championship_standings, get_driver_info, get_event_info, get_event_schedule, get_session_results, get_telemetry, )

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Machine-To-Machine/f1-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server