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