Skip to main content
Glama

Pitstop

Pitstop šŸŽļø

Your one-stop shop for Formula 1 data and insights via the Model Context Protocol (MCP).

Python Version MCP FastF1 License

šŸ“‹ Table of Contents

Overview

Pitstop is an MCP server that provides comprehensive Formula 1 data access through Claude Desktop. Built on top of the FastF1 library and RSS feeds, it offers:

✨ Features

  • šŸ“° Latest F1 news from multiple trusted sources

  • šŸ”„ Silly season & transfer rumors with smart filtering

  • šŸ Complete session data (practice, qualifying, race)

  • šŸ“Š Detailed telemetry & lap-by-lap analysis

  • šŸŒ¤ļø Session weather conditions

  • 🚦 Race control messages & incidents

  • ⚔ Fast caching for improved performance

  • šŸŽÆ Type-safe responses with Pydantic models

Quick Start

Prerequisites

  • Python 3.13+

  • uv package manager

Installation

git clone https://github.com/praneethravuri/pitstop.git cd pitstop uv sync

Configure Claude Desktop

Windows: Edit %APPDATA%\Claude\claude_desktop_config.json

macOS: Edit ~/Library/Application Support/Claude/claude_desktop_config.json

{ "mcpServers": { "pitstop": { "command": "C:\\projects\\pitstop\\.venv\\Scripts\\python.exe", "args": [ "-m", "mcp.server.fastmcp", "run", "C:\\projects\\pitstop\\server.py" ] } } }

Note: Adjust paths to match your installation location. Use double backslashes (\\) on Windows.

Restart Claude Desktop to activate the tools.

Available Tools

šŸŽÆ Composable & Generic Tools - Each tool is designed to handle multiple use cases with flexible parameters, reducing complexity and improving usability.

Tools Reference Table

All tools return Pydantic models in JSON-serializable format for consistent data exchange.

Tool Name

Category

Description

Key Parameters

Return Type

Usage

get_f1_news

šŸ“° News & Updates

Get F1 news with flexible filtering options

source

(str),

limit

(int),

category

(str),

filter_text

(str),

date_from

(str),

date_to

(str)

NewsResponse

General news, transfer rumors, contracts, technical updates, regulations

get_standings

šŸ† Championships

Get driver/constructor championship standings

year

(int),

round

(int|str),

type

(str),

driver_name

(str),

team_name

(str)

StandingsResponse

Find champions, get standings, check positions

get_session_details

šŸ Session Data

Get comprehensive session details

year

(int),

gp

(str|int),

session

(str),

include_weather

(bool),

include_fastest_lap

(bool)

SessionDetailsResponse

Complete session overview with results and weather

get_session_results

šŸ Session Data

Get session results/classification

year

(int),

gp

(str|int),

session

(str)

SessionResultsResponse

Race/qualifying/practice results with driver data

get_laps

šŸ Session Data

Get lap data with flexible filtering

year

(int),

gp

(str|int),

session

(str),

driver

(str|int),

lap_type

(str)

LapsResponse|FastestLapResponse

All laps, driver laps, or fastest lap with full data

get_session_drivers

šŸ Session Data

Get list of drivers in a session

year

(int),

gp

(str|int),

session

(str)

SessionDriversResponse

Driver abbreviations who participated

get_tire_strategy

šŸ Session Data

Get tire strategy and compound usage

year

(int),

gp

(str|int),

session

(str),

driver

(str|int)

TireStrategyResponse

Tire compounds, life, and stint data per lap

get_lap_telemetry

šŸ“Š Telemetry

Get detailed telemetry for a specific lap

year

(int),

gp

(str|int),

session

(str),

driver

(str|int),

lap_number

(int)

LapTelemetryResponse

High-frequency speed, throttle, brake, gear, RPM, DRS

compare_driver_telemetry

šŸ“Š Telemetry

Compare telemetry between two drivers

year

(int),

gp

(str|int),

session

(str),

driver1

(str|int),

driver2

(str|int),

lap1

(int),

lap2

(int)

TelemetryComparisonResponse

Side-by-side telemetry comparison for two drivers

get_session_weather

šŸŒ¤ļø Weather

Get weather data throughout a session

year

(int),

gp

(str|int),

session

(str)

SessionWeatherDataResponse

Time-series weather data (temp, humidity, wind, rain)

get_race_control_messages

🚦 Race Control

Get official race control messages

year

(int),

gp

(str|int),

session

(str)

RaceControlMessagesResponse

Flags, safety cars, penalties, investigations

Tool Details

šŸ“° News & Updates

get_f1_news

Get Formula 1 news with flexible filtering options - a single composable tool for all news needs.

Parameters:

  • source (str, optional): News source - "formula1", "fia", "autosport", "the-race", "racefans", "planetf1", "motorsport", or "all" (default: "formula1")

  • limit (int, optional): Max articles 1-50 (default: 10)

  • category (str, optional): News category - "general", "transfers", "management", "contracts", "silly_season" (default: "general")

  • driver (str, optional): Filter by driver name (works with transfers, contracts, silly_season)

  • team (str, optional): Filter by team name (works with management, contracts, silly_season)

  • year (int, optional): Filter by year (works with silly_season)

Returns: News articles with titles, links, dates, summaries, and sources. Filtered news includes relevance scores.

Example Prompts:

What's the latest F1 news? Show me driver transfer rumors Get contract news about Hamilton Any management changes at Ferrari? What's the silly season news for 2025? Show me all Red Bull silly season news

šŸ† Championships

get_standings

Get F1 World Championship standings for drivers and constructors.

Parameters:

  • year (int): Season year (1950+)

  • round (int | str, optional): Round number or GP name (e.g., "Monaco", 10)

  • type (str, optional): "driver" or "constructor" (default: both)

  • driver_name (str, optional): Filter by driver name

  • team_name (str, optional): Filter by team name

Returns: Championship standings with positions, points, wins, and nationality.

Example Prompts:

Who won the 2021 drivers championship? Show me the 2024 constructor standings Get standings after Monaco 2024 What's Verstappen's championship position?

šŸ Session Data

get_session_details

Get comprehensive details of a specific F1 session.

Parameters:

  • year (int): Season year (2018+)

  • gp (str | int): Grand Prix name (e.g., "Monza", "Monaco") or round number

  • session (str): Session type - "FP1", "FP2", "FP3", "Q", "S", "R"

  • include_weather (bool, optional): Include weather data (default: True)

  • include_fastest_lap (bool, optional): Include fastest lap (default: True)

Returns: Complete session details including results, weather, fastest lap, and session stats.

Example Prompts:

Give me the session details of free practice 1 of the 2019 Monza GP Get the race details from the 2024 Monaco GP Show me qualifying session details for 2023 Silverstone

get_session_results

Get results/classification from a specific session.

Parameters:

  • year (int): Season year (2018+)

  • gp (str | int): Grand Prix name or round number

  • session (str): Session type - "FP1", "FP2", "FP3", "Q", "S", "R"

Returns: Session results with positions, driver info, times, teams, and status.

Example Prompts:

Get the race results from the 2024 Monaco Grand Prix Show me qualifying results from 2023 Singapore What were the FP1 results for the 2024 Bahrain GP?

get_laps

Get lap data from an F1 session with flexible filtering - a single composable tool for all lap queries.

Parameters:

  • year (int): Season year (2018+)

  • gp (str | int): Grand Prix name or round number

  • session (str): Session type - "FP1", "FP2", "FP3", "Q", "S", "R"

  • driver (str | int, optional): Driver identifier - 3-letter code or number (default: all drivers)

  • lap_type (str, optional): "all" or "fastest" (default: "all")

Returns: Lap data with times, sectors, tire compounds, track status, and speed data.

Example Prompts:

Get all laps from the 2024 Monza race Show me Verstappen's laps in Monaco 2024 What was the fastest lap in qualifying? Get Hamilton's fastest lap from the race

get_session_drivers

Get list of drivers who participated in a session.

Parameters:

  • year (int): Season year (2018+)

  • gp (str | int): Grand Prix name or round number

  • session (str): Session type

Returns: List of driver identifiers who participated.

Example Prompts:

Which drivers participated in the 2024 Monza race? Show me all drivers from FP1 at Monaco 2024

get_tire_strategy

Get tire strategy and compound usage for a session.

Parameters:

  • year (int): Season year (2018+)

  • gp (str | int): Grand Prix name or round number

  • session (str): Session type

  • driver (str | int, optional): Driver identifier (if None, returns all drivers)

Returns: Tire data per lap including compound, tire life, and stint information.

Example Prompts:

What was the tire strategy in the 2024 Monza race? Show me Verstappen's tire strategy for the Monaco race Analyze tire usage in qualifying at Singapore 2023

šŸ“Š Telemetry

get_lap_telemetry

Get detailed telemetry data for a specific lap.

Parameters:

  • year (int): Season year (2018+)

  • gp (str | int): Grand Prix name or round number

  • session (str): Session type

  • driver (str | int): Driver identifier

  • lap_number (int): Specific lap number

Returns: High-frequency telemetry including speed, throttle, brake, gear, RPM, and DRS.

Example Prompts:

Get telemetry for Verstappen's lap 15 in the 2024 Monza race Show me Hamilton's fastest lap telemetry from Monaco qualifying Analyze Leclerc's lap 10 telemetry from Singapore 2023

compare_driver_telemetry

Compare telemetry data between two drivers.

Parameters:

  • year (int): Season year (2018+)

  • gp (str | int): Grand Prix name or round number

  • session (str): Session type

  • driver1 (str | int): First driver identifier

  • driver2 (str | int): Second driver identifier

  • lap1 (int, optional): Lap number for driver1 (uses fastest if None)

  • lap2 (int, optional): Lap number for driver2 (uses fastest if None)

Returns: Tuple of telemetry DataFrames for side-by-side comparison.

Example Prompts:

Compare the telemetry between Verstappen and Hamilton in 2024 Monza qualifying Compare Leclerc and Sainz fastest laps from Monaco 2024 Show me telemetry comparison for lap 20 between VER and NOR at Silverstone

šŸŒ¤ļø Weather

get_session_weather

Get weather data throughout a session.

Parameters:

  • year (int): Season year (2018+)

  • gp (str | int): Grand Prix name or round number

  • session (str): Session type

Returns: Weather data including air/track temps, humidity, pressure, wind, and rainfall.

Example Prompts:

What was the weather like during the 2024 Spa race? Show me weather conditions for Monaco qualifying 2024 Get weather data from FP1 at Singapore 2023

🚦 Race Control

get_race_control_messages

Get official race control messages for a session.

Parameters:

  • year (int): Season year (2018+)

  • gp (str | int): Grand Prix name or round number

  • session (str): Session type

Returns: Race control messages including flags, safety car periods, investigations, and penalties.

Example Prompts:

What race control messages were issued during the 2024 Monaco race? Show me all flags and safety car periods from Spa 2024 Get race control messages from Singapore qualifying 2023

Setup

1. Install Dependencies

uv sync

This installs:

  • FastF1 - Formula 1 data access

  • feedparser - RSS feed parsing

  • MCP - Model Context Protocol

  • Pydantic - Data validation

  • httpx - HTTP client

2. Configure Claude Desktop

Add the following to your Claude Desktop config:

Windows: %APPDATA%\Claude\claude_desktop_config.json

{ "mcpServers": { "pitstop": { "command": "[ABSOLUTE PATH TO uv]\\.local\\bin\\uv.EXE", "args": [ "run", "--directory", [ABSOLUTE PATH TO PROJECT]\\pitstop", "mcp", "run", "[ABSOLUTE PATH TO PROJECT]\\pitstop\\server.py" ] } } }

3. Restart Claude Desktop

Completely quit and restart Claude Desktop for changes to take effect.

Usage Examples

Once configured, you can use Pitstop through Claude Desktop with natural language:

News & Updates:

What's the latest F1 news? Show me transfer rumors about Hamilton Any contract news for McLaren?

Session Analysis:

Give me the session details of free practice 1 of the 2019 Monza GP What was the tire strategy in the 2024 Monaco race? Show me qualifying results from 2023 Singapore

Telemetry & Performance:

Compare the telemetry between Verstappen and Hamilton in qualifying Get Leclerc's fastest lap data from the Monaco race Show me the weather during the 2024 Spa race

Race Control:

What penalties were given in the Monaco race? Show me all safety car periods from the 2024 season

Development

Run Locally

Test the server using the MCP CLI:

uv run mcp run server.py

Testing

Each tool can be tested individually using its built-in test function. All tools include a if __name__ == "__main__" block for standalone testing.

Test Individual Tools

# Test news tool python tools/media/news.py # Test standings python tools/standings/standings.py # Test session results python tools/session/results.py # Test telemetry python tools/telemetry/lap_telemetry.py # Test any other tool by running its Python file directly

Quick Command-Line Tests

# Test F1 news python -c "from tools.media.news import get_f1_news; news = get_f1_news(limit=3); print(news.articles[0].title)" # Test standings python -c "from tools.standings.standings import get_standings; result = get_standings(2024, type='driver'); print(f'{result.drivers[0].given_name} {result.drivers[0].family_name}')" # Test session laps python -c "from tools.session.laps import get_laps; laps = get_laps(2024, 'Monaco', 'R', driver='VER', lap_type='fastest'); print(laps['LapTime'])"

Cache Management

FastF1 caches data in cache/ for performance. To clear:

# Unix/macOS rm -rf cache/ # Windows rmdir /s cache

Troubleshooting

Import Errors:

  • Run uv sync to install dependencies

  • Verify Python 3.13+ is installed

Connection Issues:

  • Check paths in Claude Desktop config are correct

  • Ensure double backslashes on Windows

  • Restart Claude Desktop after config changes

Data Issues:

  • Clear cache if data seems corrupted

  • Verify year is 2018+ for session data

  • Check that Grand Prix names are spelled correctly

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT License - see LICENSE file for details.

Acknowledgments


Built with ā¤ļø for F1 fans and data enthusiasts

Deploy Server
A
security – no known vulnerabilities
-
license - not tested
A
quality - confirmed to work

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

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.

  1. šŸ“‹ Table of Contents
    1. Overview
      1. Quick Start
        1. Prerequisites
        2. Installation
        3. Configure Claude Desktop
      2. Available Tools
        1. Tools Reference Table
        2. Tool Details
        3. šŸ“° News & Updates
        4. šŸ† Championships
        5. šŸ Session Data
        6. šŸ“Š Telemetry
        7. šŸŒ¤ļø Weather
        8. 🚦 Race Control
      3. Setup
        1. 1. Install Dependencies
        2. 2. Configure Claude Desktop
        3. 3. Restart Claude Desktop
      4. Usage Examples
        1. Development
          1. Run Locally
        2. Testing
          1. Test Individual Tools
          2. Quick Command-Line Tests
          3. Cache Management
        3. Troubleshooting
          1. Contributing
            1. License
              1. Acknowledgments

                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/praneethravuri/pitstop'

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