Planned integration for accessing F1 news and headlines through RSS feeds
Pitstop šļø
Your one-stop shop for Formula 1 data and insights via the Model Context Protocol (MCP).
š 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
Configure Claude Desktop
Windows: Edit %APPDATA%\Claude\claude_desktop_config.json
macOS: Edit ~/Library/Application Support/Claude/claude_desktop_config.json
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 |
| š° News & Updates | Get F1 news with flexible filtering options |
(str),
(int),
(str),
(str),
(str),
(str) |
| General news, transfer rumors, contracts, technical updates, regulations |
| š Championships | Get driver/constructor championship standings |
(int),
(int|str),
(str),
(str),
(str) |
| Find champions, get standings, check positions |
| š Session Data | Get comprehensive session details |
(int),
(str|int),
(str),
(bool),
(bool) |
| Complete session overview with results and weather |
| š Session Data | Get session results/classification |
(int),
(str|int),
(str) |
| Race/qualifying/practice results with driver data |
| š Session Data | Get lap data with flexible filtering |
(int),
(str|int),
(str),
(str|int),
(str) |
| All laps, driver laps, or fastest lap with full data |
| š Session Data | Get list of drivers in a session |
(int),
(str|int),
(str) |
| Driver abbreviations who participated |
| š Session Data | Get tire strategy and compound usage |
(int),
(str|int),
(str),
(str|int) |
| Tire compounds, life, and stint data per lap |
| š Telemetry | Get detailed telemetry for a specific lap |
(int),
(str|int),
(str),
(str|int),
(int) |
| High-frequency speed, throttle, brake, gear, RPM, DRS |
| š Telemetry | Compare telemetry between two drivers |
(int),
(str|int),
(str),
(str|int),
(str|int),
(int),
(int) |
| Side-by-side telemetry comparison for two drivers |
| š¤ļø Weather | Get weather data throughout a session |
(int),
(str|int),
(str) |
| Time-series weather data (temp, humidity, wind, rain) |
| š¦ Race Control | Get official race control messages |
(int),
(str|int),
(str) |
| 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:
š 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 nameteam_name(str, optional): Filter by team name
Returns: Championship standings with positions, points, wins, and nationality.
Example Prompts:
š 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 numbersession(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:
get_session_results
Get results/classification from a specific session.
Parameters:
year(int): Season year (2018+)gp(str | int): Grand Prix name or round numbersession(str): Session type -"FP1","FP2","FP3","Q","S","R"
Returns: Session results with positions, driver info, times, teams, and status.
Example Prompts:
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 numbersession(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_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 numbersession(str): Session type
Returns: List of driver identifiers who participated.
Example Prompts:
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 numbersession(str): Session typedriver(str | int, optional): Driver identifier (if None, returns all drivers)
Returns: Tire data per lap including compound, tire life, and stint information.
Example Prompts:
š 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 numbersession(str): Session typedriver(str | int): Driver identifierlap_number(int): Specific lap number
Returns: High-frequency telemetry including speed, throttle, brake, gear, RPM, and DRS.
Example Prompts:
compare_driver_telemetry
Compare telemetry data between two drivers.
Parameters:
year(int): Season year (2018+)gp(str | int): Grand Prix name or round numbersession(str): Session typedriver1(str | int): First driver identifierdriver2(str | int): Second driver identifierlap1(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:
š¤ļø Weather
get_session_weather
Get weather data throughout a session.
Parameters:
year(int): Season year (2018+)gp(str | int): Grand Prix name or round numbersession(str): Session type
Returns: Weather data including air/track temps, humidity, pressure, wind, and rainfall.
Example Prompts:
š¦ 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 numbersession(str): Session type
Returns: Race control messages including flags, safety car periods, investigations, and penalties.
Example Prompts:
Setup
1. Install Dependencies
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
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:
Session Analysis:
Telemetry & Performance:
Race Control:
Development
Run Locally
Test the server using the MCP CLI:
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
Quick Command-Line Tests
Cache Management
FastF1 caches data in cache/ for performance. To clear:
Troubleshooting
Import Errors:
Run
uv syncto install dependenciesVerify 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
FastF1 - Excellent Formula 1 data library
Model Context Protocol - MCP specification
F1 community for open data support
Built with ā¤ļø for F1 fans and data enthusiasts
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.
Tools
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.