Skip to main content
Glama
jimmyjoe009

OpenF1 MCP Server

by jimmyjoe009

OpenF1 MCP Server

A Model Context Protocol (MCP) server that connects to the openF1.org API to fetch Formula 1 data. This server uses the stdio transport method for communication.

Features

The MCP server provides tools to fetch various Formula 1 data:

  • Drivers - Get driver information, filter by season or driver number

  • Teams - Fetch team data for specific seasons

  • Races - Get race information by season or round

  • Sessions - Fetch practice, qualifying, and race sessions

  • Results - Get race results filtered by session or driver

  • Laps - Fetch lap-by-lap data from sessions

  • Stints - Get tire stint information

  • Pit Stops - Access pit stop data

  • Weather - Fetch weather conditions during sessions

  • Incidents - Get penalty and collision data

  • Car Data - Access telemetry data (throttle, brake, DRS, etc.)

  • Positions - Get live position data during sessions

Installation

  1. Clone or download this project

  2. Install dependencies:

    pip install -r requirements.txt

Usage

Running the Server

Start the MCP server using stdio transport:

python -m src.server

Connecting via Claude

To use this server with Claude Desktop, add it to your claude_desktop_config.json:

macOS/Linux: ~/.config/claude/claude_desktop_config.json

Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "openf1": {
      "command": "python",
      "args": ["-m", "src.server"],
      "cwd": "/path/to/openf1_mcp"
    }
  }
}

Available Tools

list_drivers

Fetch F1 drivers. Optionally filter by season or driver number.

Parameters:

  • season (optional): Filter by season year (e.g., 2024)

  • driver_number (optional): Filter by driver number

list_teams

Fetch F1 teams. Optionally filter by season.

Parameters:

  • season (optional): Filter by season year (e.g., 2024)

list_races

Fetch F1 races. Optionally filter by season or round number.

Parameters:

  • season (optional): Filter by season year

  • round_number (optional): Filter by round number

list_sessions

Fetch F1 sessions (practice, qualifying, race).

Parameters:

  • season (optional): Filter by season year

  • round_number (optional): Filter by round number

list_results

Fetch race results. Optionally filter by session or driver.

Parameters:

  • session_key (optional): Filter by session key

  • driver_number (optional): Filter by driver number

list_laps

Fetch lap data from a session.

Parameters:

  • session_key (optional): Session key for filtering

  • driver_number (optional): Filter by driver number

list_stints

Fetch stint data (tire stints).

Parameters:

  • session_key (optional): Session key for filtering

  • driver_number (optional): Filter by driver number

list_pit_stops

Fetch pit stop data from a session.

Parameters:

  • session_key (optional): Session key for filtering

  • driver_number (optional): Filter by driver number

get_weather

Fetch weather data for a session.

Parameters:

  • session_key: Session key

list_incidents

Fetch incident data (collisions, penalties, etc.).

Parameters:

  • session_key (optional): Session key

  • driver_number (optional): Filter by driver number

get_car_data

Fetch car telemetry data (throttle, brake, DRS, etc.).

Parameters:

  • session_key (optional): Session key

  • driver_number (optional): Filter by driver number

list_positions

Fetch position data (live positions during session).

Parameters:

  • session_key (optional): Session key

  • driver_number (optional): Filter by driver number

API Reference

This project uses the openF1.org API which provides:

  • No authentication required

  • Free to use

  • Open source data from Formula 1

For more information about the API, visit openf1.org

Project Structure

openf1_mcp/
├── src/
│   ├── __init__.py
│   ├── server.py           # Main MCP server implementation
│   ├── openf1_client.py    # OpenF1 API client
├── tests/
│   ├── __init__.py
│   ├── conftest.py         # Pytest configuration
│   ├── test_openf1_client.py   # Client unit tests
│   ├── test_server.py          # Server unit tests
│   └── test_integration.py     # Integration tests
├── requirements.txt        # Python dependencies
├── pytest.ini             # Pytest configuration
├── run_tests.py           # Test runner script
└── README.md              # This file

Testing

The project includes comprehensive unit and integration tests.

Running Tests

Unit tests only:

python -m pytest tests/

Unit tests with coverage:

python -m pytest tests/ --cov=src --cov-report=html

Integration tests (requires API access):

python -m pytest tests/ --integration

Using the test runner script:

python run_tests.py                    # Run unit tests
python run_tests.py --integration      # Run all tests including integration
python run_tests.py --coverage         # Run unit tests with coverage report
python run_tests.py --integration --coverage  # Run all tests with coverage

Test Files

  • tests/test_openf1_client.py - Tests for the OpenF1 API client

  • tests/test_server.py - Tests for the MCP server and tool registration

  • tests/test_integration.py - Integration tests using the real API

Development

To extend the server with additional tools:

  1. Add new methods to OpenF1Client in src/openf1_client.py

  2. Add corresponding tool definitions in OpenF1MCPServer.get_tools() in src/server.py

  3. Add handling for the new tool in _run_tool() method

  4. Add tests in tests/test_openf1_client.py and tests/test_server.py

License

This project is open source and available under the MIT License.

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/jimmyjoe009/openf1_mcp'

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