Skip to main content
Glama
Formula 1 MCP Server

Formula 1 MCP Server

by Darakhsh1999

🏁 Formula 1 MCP Server 🏎️

This project defines a MCP server for Formula 1 data, providing fans, analysts, and developers with easy access to a vast range of F1 statistics and information. Built with Python and powered by the Gradio framework, it offers a user-friendly web interface to explore historical and recent F1 data from the FastF1 library and the official OpenF1 API.

Video Demo (Claude Desktop)

Demo Video

Related MCP server: Pitstop

Architecture

Architectural overview of the MCP server and client. The MCP server is hosted using a Gradio back-end and can be either run locally or on a remote server.

Gradio Key Features

The interface is organized into several Gradio tabs, each dedicated to a specific type of F1 data:

  • Championship Standings: View final driver and constructor championship standings for any season from 1950 to the present.

  • Event Information: Get detailed information for any Grand Prix, including schedules and circuit details.

  • Season Calendar: Display the complete race calendar for a given year.

  • Track Visualizations: Generate and view plots of the fastest race lap, visualizing speed, gear changes, and cornering G-forces.

  • Session Results: Fetch detailed results for any race session (Practice, Qualifying, or Race).

  • Driver & Constructor Info: Look up background information and statistics for drivers and teams.

  • OpenF1 API Tools: An advanced toolkit for developers to directly query the OpenF1 API, build custom requests, and view raw JSON responses.

Tech Stack

  • Backend: Python

  • Web Framework: Gradio

  • Data Sources:

    • fastf1 Python library for historical data.

    • openf1 for live and recent data via their public API.

  • Key Libraries: pandas, matplotlib

MCP Server

The MCP server is defined inside app.py.

MCP Client

The MCP client and AI agent is defined inside mcp_client.py and allows interaction with the MCP server through server side events (SSE) transport.

MCP configuration file

For MCP clients that support SSE transport (for Claude Desktop, see below), the following configuration can be used:

{
  "mcpServers": {
    "gradio": {
      "url": "https://agents-mcp-hackathon-f1-mcp-server.hf.space/gradio_api/mcp/sse"
    }
  }
}

For Claude Desktop, the following configuration can instead be used, but make sure you have Node.js installed:

{
  "mcpServers": {
    "gradio": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://agents-mcp-hackathon-f1-mcp-server.hf.space/gradio_api/mcp/sse",
        "--transport",
        "sse-only"
      ]
    }
  }
}

Available Tools

17 tools
f1_mcp_server_apply_filtersC

Apply one or more filter strings to an API endpoint URL.

Inputs: param_1, api_string.

f1_mcp_server_constructor_championship_standingsB

Get the championship standing for a specific constructor in a given year.

Inputs: year, constructor_name.

f1_mcp_server_driver_championship_standingsC

Get the championship standing for a specific driver in a given year.

Inputs: year, driver_name.

f1_mcp_server_get_api_endpointC

Retrieve the API endpoint URL and filter metadata for a given OpenF1 endpoint.

Inputs: endpoint.

f1_mcp_server_get_api_endpointsA

Retrieve a list of all available OpenF1 API endpoints. Returns: dict: A dictionary containing a single key 'endpoints' with a list of available endpoint names as strings.

Inputs: no named parameters.

f1_mcp_server_get_constructor_infoC

Retrieve detailed information about a specific constructor.

Inputs: constructor_name.

f1_mcp_server_get_driver_infoC

Retrieve detailed information about a specific driver.

Inputs: driver_name.

f1_mcp_server_get_endpoint_infoC

Retrieve detailed information about a specific OpenF1 API endpoint.

Inputs: endpoint.

f1_mcp_server_get_event_infoC

Retrieve information about a specific Formula 1 event.

Inputs: year, round, format.

f1_mcp_server_get_filter_infoC

Retrieve detailed information about a specific OpenF1 API filter.

Inputs: filter_name.

f1_mcp_server_get_filter_stringC

Create a filter string for OpenF1 API requests.

Inputs: operator, filter_name, filter_value.

f1_mcp_server_get_season_calendarA

Get the complete race calendar for a specific F1 season.

Inputs: year.

f1_mcp_server_get_session_resultsC

Retrieve and format the results of a specific session.

Inputs: year, round, session_type.

f1_mcp_server_send_requestB

Send an HTTP GET request to the specified API endpoint and return the JSON response.

Inputs: api_string.

f1_mcp_server_track_visualizationC

Generate a visualization of the track with specified data.

Inputs: year, round, visualization_type.

f1_mcp_server_update_constructorsD

Inputs: year.

f1_mcp_server_update_driversD

Inputs: year.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.5/5.0

    Scored across 17 tools

    Disambiguation3/5

    Core F1 retrieval tools (standings, event info, session results, driver/constructor info) are clearly distinct. However, the OpenF1 API plumbing tools (get_api_endpoints, get_api_endpoint, get_endpoint_info, get_filter_info, get_filter_string, apply_filters, send_request) overlap heavily in purpose, and update_drivers/update_constructors have no descriptions, making their boundaries unclear.

    Naming Consistency4/5

    All tools share a consistent f1_mcp_server_ prefix and mostly use verb_noun or verb_resource naming (get_*, update_*). Minor deviations exist: championship_standings and track_visualization lack explicit verbs, and get_api_endpoint vs get_api_endpoints differ only by plural.

    Tool Count3/5

    17 tools is on the heavy side for an F1 data server. While core domain tools are justified, seven generic OpenF1 API access/filter tools appear to expose implementation plumbing rather than distinct user-facing capabilities, inflating the count.

    Completeness4/5

    The surface covers key F1 entities (drivers, constructors, standings, events, calendars, session results) and generic OpenF1 request tools provide fallback access to unmodeled data like laps, telemetry, or pit stops. Explicit list/search tools and clear update semantics are missing, but agents can work around most gaps.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      Provides comprehensive Formula 1 data access including race schedules, session results, lap times, telemetry data, driver/constructor standings, and circuit information. Enables users to retrieve and analyze F1 racing data through natural language queries using the FastF1 Python package.
      5
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Provides access to Formula 1 data including driver and constructor championship standings with support for current and historical seasons. Enables users to query F1 championship information through natural language with plans for expanded race data and telemetry.
      22
      1
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables access to Formula 1 data from the openF1.org API, including driver information, race results, lap times, telemetry, pit stops, weather conditions, and live position data across multiple seasons.
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to query real-time and historical Formula 1 data through the OpenF1 API, providing tools for driver info, lap times, telemetry, race events, and more.
      MIT