Skip to main content
Glama
notsedano

Formula One MCP Server

compare_drivers

Analyze and compare Formula One driver performance by selecting season year, event, session, and specific drivers for detailed insights.

Instructions

Compare performance between multiple Formula One drivers

Input Schema

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

Implementation Reference

  • Core handler function that implements the compare_drivers tool. Loads F1 session data using fastf1 library, processes lap times for multiple drivers, computes statistics like fastest lap, average lap time, total laps, 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)}
  • Dispatch logic in the MCP server's call_tool handler that routes requests for 'compare_drivers' to the imported compare_drivers function.
    elif name == "compare_drivers": result = compare_drivers( sanitized_args["year"], str(arguments["event_identifier"]), str(arguments["session_name"]), str(arguments["drivers"]), )
  • MCP tool registration in list_tools() defining the 'compare_drivers' tool name, description, and input schema for parameter 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", ], },
  • Import of the compare_drivers handler function from f1_data.py into the MCP 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, )
  • Client-side TypeScript schema definition for the compare_drivers tool used in the f1-messenger-app.
    name: 'compare_drivers', description: 'Compare performance between multiple Formula One drivers in the same session', parameters: { type: SchemaType.OBJECT, properties: { year: { type: SchemaType.NUMBER, description: 'Season year (e.g., 2024, 2023, 2022)', }, event_identifier: { type: SchemaType.STRING, description: 'Event name or round number (e.g., "Monaco", "British", "7")', }, session_name: { type: SchemaType.STRING, description: 'Session type: "Race", "Qualifying", "Sprint", "FP1", "FP2", "FP3"', }, drivers: { type: SchemaType.STRING, description: 'Comma-separated list of driver codes (e.g., "HAM,VER,LEC" or "44,1,16")', } }, required: ['year', 'event_identifier', 'session_name', 'drivers'] }

Other Tools

Related Tools

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/notsedano/f1-mcp-server'

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