Pitwall — F1 Data for Claude

io.github.darshjoshi由 GitHub 帳號 darshjoshi 發布v1.1.1更新於 Oct 25, 2026

F1 race engineer for Claude — 79 tools for live timing, telemetry, strategy, and 75 years of history

發布方自己的服務:Claude Platform Docs

概覽

AI 產生的概覽

Pitwall 讓 Claude 接上真實的一級方程式資料:透過 79 個工具查詢比賽結果、單圈遙測、輪胎策略、進站與即時計時。

可以做什麼
查詢賽季、賽曆、場次資訊與比賽排名,以及可回溯至 1950 年的歷史成績與年度冠軍。讀取逐圈圈速、單圈遙測(速度、轉速、油門、煞車、檔位、DRS)、輪胎策略、進站、天氣、賽事控制與測速點。進行車手與車隊正面對比,分析 stint、配方與輪胎年齡,辨識超車與名次變化。追蹤即時場次:排名、差距、圈速與分段、輪胎、進站活動、天氣與賽事控制。完整安裝還可產生速度曲線對比與換檔圖等視覺化圖表。
適用情境
適合希望助理依據真實計時與遙測資料、而非訓練資料回答 F1 問題的情境,無論是關於過去某場比賽、車手對比,或正在進行的場次。
執行需求
需在本機執行 Python 程序,從 PyPI 套件 f1pitwall 安裝,可透過 uvx 或 pip 啟動;完整安裝會加入 FastF1,首次啟動約下載 540 MB。需要連線至 F1 靜態計時封存與 Jolpica API 的網路。核心資料無需 API 金鑰;即時車載遙測與 GPS 需要 F1 TV 訂閱權杖,透過瀏覽器登入產生。
安裝前請注意
選用的 F1 TV 登入會在專案檔案與 FastF1 驗證檔中本機儲存權杖,約每幾天過期需重新更新。即時遙測與 GPS 受訂閱限制。此伺服器對公開資料來源為唯讀,但會向第三方 F1 與 Jolpica 端點送出請求。首次啟動下載量大,可能逾時。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Pitwall — F1 Data for Claude,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Pitwall

Turn Claude into your F1 race engineer.
Real telemetry. Real strategy data. 75 years of history.

[PyPI] [Downloads] [License: MIT] [Python 3.10+] [MCP Compatible] [GitHub Stars]

[Verstappen vs Norris — Abu Dhabi 2024 Qualifying Speed Trace]


Quick Start

Claude Code — one command, all 79 tools:

bash
claude mcp add pitwall -- uvx --from "f1pitwall[full]" f1pitwall

Then ask Claude: "Who won the 2025 Australian GP?"

Needs uv (curl -LsSf https://astral.sh/uv/install.sh | sh). No pip, no virtualenv, no "which python3" — and you always get the latest release.

First launch downloads the FastF1 stack (~540 MB) and takes about 25 seconds. Every launch after that is under a second. If the very first start times out, just restart Claude Code — the download is already cached.

Want the plugin instead, so you get the f1 skill along with the server? See Install as a Claude Code plugin.

Lighter install (30 tools, no plots)

Skips pandas/numpy/matplotlib/FastF1. Still includes all 16 live-timing tools.

bash
claude mcp add pitwall -- uvx --from f1pitwall f1pitwall
Install with pip instead
bash
pip install "f1pitwall[full]"        # or just f1pitwall for liteclaude mcp add pitwall -- f1pitwall
Install from source instead
bash
git clone https://github.com/darshjoshi/pitwall.git && cd pitwallpip install -r requirements.txt        # lite (incl. live timing)pip install -r requirements-full.txt   # fullclaude mcp add pitwall -- python3 $(pwd)/pitwall.py

Install as a Claude Code plugin

The plugin ships the MCP server and the f1 skill together — the skill teaches Claude which of the 79 tools to reach for and how to explain F1 to someone who's never watched a race.

/plugin marketplace add darshjoshi/pitwall/plugin install pitwall@pitwall

Claude Desktop

Add to claude_desktop_config.json (Settings → Developer → Edit Config):

json
{  "mcpServers": {    "pitwall": {      "command": "uvx",      "args": ["--from", "f1pitwall[full]", "f1pitwall"]    }  }}

Why Pitwall?

Claude knows F1 from training data — but it can't look up last week's race. It can't show you Verstappen's throttle trace through Turn 1. It doesn't know who pitted first or when the safety car came out.

Pitwall connects Claude to real F1 data:

  • Real data, not hallucinations — actual timing feeds from formula1.com
  • Lap-level telemetry — speed, RPM, throttle, brake, gear, DRS at 4Hz per car
  • Visual plots — speed trace comparisons, gear shift maps returned as images
  • 75 years of history — every race result and championship since 1950
  • Fresh after every session — full telemetry and timing published ~30 min after each session ends, back to 2018
  • Zero API keys — all core data is free, no account needed

What You Can Ask

"Who won the 2025 Australian GP?"           → Race results and classification"Verstappen's speed on lap 25 at Monaco"    → Lap telemetry at 4Hz"Plot Hamilton vs Norris speed trace"       → Visual speed comparison chart"Compare Ferrari's tyre strategy"           → Stint-by-stint breakdown"Who won the 1994 championship?"            → 75 years of history"When was the safety car at Silverstone?"   → Race control messages and flags
See all example questions
QuestionTool Used
"Who won the Chinese GP?"get_standings
"What was Verstappen's speed on lap 25?"get_telemetry
"Compare Hamilton vs Leclerc"get_driver_comparison
"What tyres did everyone use?"get_tyre_strategy
"Fastest pit stop at Australia 2025?"get_pit_stops
"When was the safety car?"get_race_control
"Was it raining during the race?"get_weather
"Top speeds at Monza 2024?"get_speed_traps
"Norris's lap times in the race"get_lap_times
"Who won the 2005 championship?"get_championship_standings
"Plot Verstappen vs Hamilton speed trace"plot_telemetry_comparison
"Show me the gear shift map at Monaco"plot_gear_shifts
"Who gained the most positions?"compare_grid_to_finish
"Overtakes in the race"detect_overtakes
"Compare Verstappen lap 5 vs lap 50"plot_multi_telemetry_comparison
"Ferrari head-to-head in qualifying"team_head_to_head
"Deleted laps in qualifying"get_deleted_laps
"Gap to leader throughout the race"get_gap_to_leader

Features

79 tools across two modes. Pitwall auto-detects what's installed — no config changes needed.

Lite Mode (30 tools)

pip install f1pitwall — light deps only (mcp, requests, plus websockets/aiohttp for live timing); no pandas/numpy/FastF1.

Race results, lap times, telemetry, tyre strategy, pit stops, weather, race control, speed traps, driver comparison, and historical data back to 1950. Plus 16 live-timing tools (running order, gaps, lap/sector times, tyres, weather, race control, speed traps, mini-sectors, …) that read F1's real-time SignalR feed during a session — no auth needed. (Live car telemetry + GPS are auth-gated and live in Full mode.) Uses F1's free static archive and the Jolpica API.

Full Mode (79 tools)

pip install -r requirements-full.txt — adds FastF1.

Everything in Lite, plus:

CategoryWhat You Get
Visual PlotsSpeed trace comparisons, gear shift maps, multi-lap telemetry overlays
Deep TelemetryBrake point analysis, RPM patterns, DRS usage, throttle traces
Advanced StrategyStint degradation, compound comparisons, tire age performance
Race IntelligenceOvertake detection, gap tracking, position changes, qualifying progression
Full tool list (79 tools)
Lite Tools (always available)
ToolDescription
list_seasonsAvailable seasons (2018-present)
list_racesFull season calendar with dates
get_race_infoSession details and available data feeds
get_standingsRace classification — positions, gaps, best laps, pits
get_lap_timesLap-by-lap times, filterable by driver and lap range
get_telemetrySpeed, RPM, throttle, brake, gear, DRS for a specific lap
get_tyre_strategyCompound, stint length, new/used for every driver
get_pit_stopsAll pit stops sorted by fastest
get_race_controlFlags, penalties, safety cars, investigations
get_weatherAir/track temp, rain, humidity, wind
get_speed_trapsSpeed at 4 measurement points per driver
get_driver_comparisonHead-to-head: position, pace, strategy, pit stops
get_historical_resultsRace results from 1950 to present
get_championship_standingsDriver/constructor championships from 1950+
Live Timing (lite — no auth, reads F1's real-time SignalR feed during a session)
ToolDescription
get_live_session_statusSession name, flag/track status, lap count
get_live_positionsLive running order with gap + interval
get_live_lap_timesLast + best lap per driver
get_live_sector_timesSector times + speed trap for one driver
get_live_time_gapsGap to leader + interval to car ahead (mode-aware)
get_live_best_sectorsPersonal-best sectors + best lap, ranked
get_live_speed_trapSpeed-trap (ST) ranking across the field
get_live_speed_comparisonBest speed at I1/I2/FL/ST per driver
get_live_tyresCompound, age (laps), stint number per driver
get_live_stint_historyFull compound sequence per driver
get_live_pit_activityPit count + in-pit / out-lap flags
get_live_weatherAir/track temp, humidity, wind, rain
get_live_race_controlFlags, penalties, track-limit deletions, SC/VSC
get_live_session_clockTime remaining in the session
get_live_track_status_historyChronological track/session status log
get_live_mini_sectorsMini-sector status (green/purple/yellow) per driver
FastF1 Tools (requires FastF1)
CategoryTools
Visual Plotsplot_telemetry_comparison, plot_gear_shifts, plot_multi_telemetry_comparison, plot_driver_telemetry_comparison
Telemetry Analysisanalyze_brake_points, analyze_rpm_data, analyze_drs_usage
Lap Analysisget_lap_times_fastf1, get_deleted_laps, analyze_lap_consistency, get_fastest_sectors, get_personal_best_laps, compare_sector_times
Strategyget_driver_tyre_detail, get_stint_analysis, compare_tire_compounds, compare_tire_age_performance, analyze_starting_tires, compare_strategies
Race Analysisget_race_results, get_sprint_results, get_session_summary, get_fastest_lap_data, detect_overtakes, compare_grid_to_finish, get_qualifying_progression
Pit Stopsget_pit_stop_detail, get_fastest_pit_stops
Driver & Teamget_driver_info, get_driver_standings, get_constructor_standings, team_head_to_head, get_team_laps, analyze_long_run_pace
Track & Safetyget_circuit_info, get_track_status, get_track_record, get_race_control_messages, get_penalties, get_dnf_list
Speed & Positionget_speed_trap_comparison, get_position_changes, get_gap_to_leader
Historyget_race_winners_history
Live (auth-gated)get_live_telemetry, get_live_gps_positions — live car telemetry + GPS, need an F1 TV token
Sessionget_schedule, get_session_info, get_weather_data

Setup

macOS

Claude Code:

bash
claude mcp add pitwall -- python3 /absolute/path/to/pitwall.py

Claude Desktop — add to ~/Library/Application Support/Claude/claude_desktop_config.json:

json
{  "mcpServers": {    "pitwall": {      "command": "python3",      "args": ["/absolute/path/to/pitwall.py"]    }  }}
Windows

1. Find your Python path:

cmd
where python

This will return something like C:\Users\YourName\AppData\Local\Programs\Python\Python313\python.exe or C:\Python313\python.exe.

2. Note where you cloned Pitwall: For example: C:\Users\YourName\Projects\pitwall\pitwall.py

Claude Code (PowerShell):

powershell
claude mcp add pitwall -- python C:\Users\YourName\Projects\pitwall\pitwall.py

Claude Desktop — add to %APPDATA%\Claude\claude_desktop_config.json:

To open this folder, press Win + R, type %APPDATA%\Claude, and hit Enter. If the Claude folder or claude_desktop_config.json doesn't exist, create them.

json
{  "mcpServers": {    "pitwall": {      "command": "python",      "args": ["C:\\Users\\YourName\\Projects\\pitwall\\pitwall.py"]    }  }}

Note: Use double backslashes (\\) in the JSON path, or forward slashes (/) — both work. The command is python (not python3) on Windows.

Linux

Claude Code:

bash
claude mcp add pitwall -- python3 /absolute/path/to/pitwall.py

Claude Desktop — add to ~/.config/Claude/claude_desktop_config.json:

json
{  "mcpServers": {    "pitwall": {      "command": "python3",      "args": ["/absolute/path/to/pitwall.py"]    }  }}

Restart Claude Code or Claude Desktop after setup. Works with any MCP-compatible client.

Optional: Beginner-Friendly Skill (Claude Desktop)

Upload SKILL.md as a skill in Claude Desktop (Settings → Skills → Upload). Claude will explain F1 jargon inline — DRS, undercut, compound, safety car, etc.


Data Sources

All core data is free and requires no API keys.

SourceCoverageWhat it provides
F1 Static Live Timing2018-presentTelemetry, timing, strategy, pit stops, weather, race control
Jolpica-F11950-presentHistorical results and championships
FastF1 (optional)2018-presentEnhanced telemetry analysis and visual plots
F1 SignalR Core (optional)Live onlyReal-time race data during active sessions

How It Works

Pitwall reads from F1's publicly available static timing archive — the same data that powers the official F1 app. After each session ends (~30 minutes), F1 publishes 33 data feeds per session including full car telemetry (speed, RPM, throttle, brake, gear, DRS at ~4Hz per car), GPS positions, tyre data, pit stops, and race control messages.

The telemetry tool (get_telemetry) correlates the timing stream with the car data stream to extract telemetry for a specific driver on a specific lap — something no other F1 MCP server does.

Architecture

Claude ──MCP──> Pitwall ──HTTP──> livetiming.formula1.com/static/ (free)                       ──HTTP──> api.jolpi.ca/ergast/f1/ (free)                       ──lib──>  FastF1 (optional, local)                       ──WS───> SignalR Core (optional, live races)

Running the Server

bash
python3 pitwall.py              # MCP stdio (Claude Code / Claude Desktop)python3 pitwall.py --http       # MCP HTTP (remote / self-hosted)python3 pitwall.py --http --port 3000

Live Race Data

Pitwall includes a raw SignalR Core WebSocket client for real-time data during active F1 sessions. Most data is free — car telemetry and GPS require an F1 TV Pro or Premium subscription.

Note: The get_live_* MCP tools read this client's live SignalR feed directly. 16 timing tools (running order, gaps, lap/sector times, tyres, weather, race control, speed traps, mini-sectors, …) work in the lite install with no auth; live car telemetry and GPS (get_live_telemetry, get_live_gps_positions) need an F1 TV token and ship in the full install. Post-session data — telemetry, timing, strategy — also remains available through the main tools after each session ends.

What's free vs what needs F1 TV
DataFreeF1 TV
Race positions, gaps, lap timesYesYes
Race control, flags, penaltiesYesYes
Weather, track statusYesYes
Tyre compounds, stint infoYesYes
Team radio URLsYesYes
Car telemetry (speed, RPM, throttle, brake)NoYes
GPS positions (X/Y/Z coordinates)NoYes

All data (including telemetry and GPS) becomes free in the static archive ~30 minutes after a session ends.

Authentication setup
bash
python3 auth_setup.py

This opens a browser for F1 TV login. The token is saved locally:

  • <project_dir>/.f1token
  • ~/Library/Application Support/fastf1/f1auth.json (macOS)

Token expires every ~4 days. Re-run to refresh. Never uploaded anywhere.

Live client usage
python
import asynciofrom signalr_client import F1LiveClient
async def main():    # Free mode — timing, weather, race control (no auth needed)    client = F1LiveClient(no_auth=True)
    @client.on("TimingData")    def on_timing(data, timestamp):        for num, info in data.get("Lines", {}).items():            print(f"P{info.get('Position','?')} #{num} Gap: {info.get('GapToLeader','')}")
    @client.on("RaceControlMessages")    def on_rc(data, timestamp):        for msg in data.get("Messages", {}).values():            print(f"[{msg.get('Flag', '')}] {msg.get('Message', '')}")
    await client.connect()
asyncio.run(main())

For full telemetry (speed, RPM, throttle, brake, GPS):

python
from auth_setup import load_token
client = F1LiveClient(no_auth=False, auth_token=load_token())
@client.on("CarData.z")def on_telemetry(data, timestamp):    # Speed, RPM, throttle, brake, gear, DRS at ~4Hz per car    ...
@client.on("Position.z")def on_position(data, timestamp):    # GPS X/Y/Z coordinates at ~4Hz per car    ...

Reference

Race Names

Race names are fuzzy-matched. All of these work:

"china", "chinese", "shanghai"           → Chinese Grand Prix"australia", "melbourne", "aus"          → Australian Grand Prix"monaco", "monte carlo"                  → Monaco Grand Prix"silverstone", "great britain", "british" → British Grand Prix

Driver Codes

VER = Verstappen    HAM = Hamilton    NOR = Norris     LEC = LeclercANT = Antonelli     RUS = Russell     PIA = Piastri    BEA = BearmanGAS = Gasly         LAW = Lawson      HAD = Hadjar     SAI = SainzALO = Alonso        STR = Stroll      OCO = Ocon       BOT = BottasALB = Albon         HUL = Hulkenberg  COL = Colapinto  LIN = Lindblad

Project Files

FilePurpose
pitwall.pyMCP server — 79 tools, auto-degrades to 30 without FastF1
signalr_client.pyRaw SignalR Core WebSocket client for live race data
decompressor.pyZlib decompression for CarData.z / Position.z
merger.pyKeyframe + delta state management for F1's incremental format
topics.pyAll 20 SignalR topics with auth/compression metadata
auth_setup.pyF1 TV token setup — browser-based OAuth flow

Contributing

Found a bug? Want to add a tool? Contributions are welcome.

  1. Fork the repo
  2. Create a feature branch
  3. Make your changes
  4. Run the test suite: python3 tests/pitwall_tool_validation.py
  5. Open a pull request

Credits

  • FastF1 by @theOehrly — the gold standard F1 Python library
  • Jolpica-F1 — the Ergast API successor
  • drivenrajat/f1 — inspiration for FastF1 tool patterns

Built by

Darsh Joshi — AI Engineer

[LinkedIn] [GitHub] [Email]

License

MIT

來源:README.md,提交 2a70ceb

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.1.1最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Claude 整合