get_driver_info
Retrieve detailed Formula One driver data for a specific event, session, and year using the Formula One MCP Server. Inputs include year, event, session, and driver identifier to access precise information.
Instructions
Get information about a specific Formula One driver
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| driver_identifier | Yes | Driver identifier (number, code, or name; e.g., '44', 'HAM', 'Hamilton') | |
| event_identifier | Yes | Event name or round number (e.g., 'Monaco' or '7') | |
| session_name | Yes | Session name (e.g., 'Race', 'Qualifying', 'Sprint', 'FP1', 'FP2', 'FP3') | |
| year | Yes | Season year (e.g., 2023) |
Implementation Reference
- src/f1_mcp_server/f1_data.py:252-293 (handler)Core handler function that loads an F1 session using FastF1 and retrieves specific driver information, serializing it to JSON.def get_driver_info( year: Any, event_identifier: str, session_name: str, driver_identifier: str ) -> dict[str, Any]: """ Get information about a specific Formula One driver. 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.) driver_identifier (str): Driver number, code, or name Returns: dict: Status and driver information or error information """ try: # Validate year year_int = validate_year(year) logger.debug( f"Fetching driver info for {year_int}, " f"event: {event_identifier}, session: {session_name}, " f"driver: {driver_identifier}" ) session = fastf1.get_session(year_int, event_identifier, session_name) # Load session without telemetry for faster results session.load(telemetry=False) driver_info = session.get_driver(driver_identifier) # Convert to JSON serializable format driver_dict = driver_info.to_dict() clean_dict = {k: json_serial(v) for k, v in driver_dict.items()} logger.info(f"Successfully retrieved driver info for {driver_identifier}") return {"status": "success", "data": clean_dict} except Exception as e: logger.error(f"Error retrieving driver info: {str(e)}", exc_info=True) return { "status": "error", "message": f"Failed to retrieve driver information: {str(e)}", }
- src/f1_mcp_server/server.py:347-385 (schema)MCP tool schema definition including input parameters and descriptions for get_driver_info.types.Tool( name="get_driver_info", description=("Get information about a specific Formula One driver"), 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')" ), }, "driver_identifier": { "type": "string", "description": ( "Driver identifier (number, code, or name; " "e.g., '44', 'HAM', 'Hamilton')" ), }, }, "required": [ "year", "event_identifier", "session_name", "driver_identifier", ], }, ),
- src/f1_mcp_server/server.py:201-209 (registration)Dispatch logic in the MCP call_tool handler that routes requests for 'get_driver_info' to the actual function.elif name == "get_driver_info": # Handle remaining tools with proper validation # ... similar validation for other parameters ... result = get_driver_info( sanitized_args["year"], str(arguments["event_identifier"]), str(arguments["session_name"]), str(arguments["driver_identifier"]), )
- f1-messenger-app/mcp-bridge.py:107-107 (registration)Tool registration in the HTTP bridge that maps the tool name to the imported function for direct calling.'get_driver_info': get_driver_info,
- TypeScript schema for Gemini function calling, matching the MCP tool parameters.name: 'get_driver_info', description: 'Get information about a specific Formula One driver for a particular event and 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"', }, driver_identifier: { type: SchemaType.STRING, description: 'Driver number, code, or name (e.g., "44", "HAM", "Hamilton", "VER", "Verstappen")', } }, required: ['year', 'event_identifier', 'session_name', 'driver_identifier'] }