Pitwall MCP server
✓ 인증됨Claude에게 실시간 F1 텔레메트리, 레이스 전략 데이터, 그리고 75년 동안의 역사적인 레이싱 통계 데이터를 제공합니다.
다른 이름 darshjoshi/pitwall, pitwall, f1pitwall
- 스타
- 9
- Tools
- 14
- 다운로드, 30일
- 148
- 최신 버전
- 1.1.1
- 마지막 커밋
- 2026년 8월 2일
- 라이선스
- MIT
Pitwall MCP란?
Pitwall은(는) MCP server입니다. Claude에게 실시간 F1 텔레메트리, 레이스 전략 데이터, 그리고 75년 동안의 역사적인 레이싱 통계 데이터를 제공합니다. 14개 도구를 제공합니다. 예: list_seasons, list_races, get_race_info.
프로젝트 README에서 생성된 요약
Pitwall MCP server 정보
Pitwall은 Formula 1 팬과 분석가들이 Claude를 가상 레이스 엔지니어로 변환할 수 있게 해줍니다. 이 MCP server는 실시간 텔레메트리, 레이스 전략 데이터, 그리고 75년의 레이싱 통계를 아우르는 방대한 역사적 아카이브에 대한 접근을 제공합니다. 사용자는 Claude Desktop 또는 Claude Code를 통해 서버와 상호작용할 수 있으며, 30개의 도구가 포함된 Lite 모드나 고급 시각적 플롯 및 심층 텔레메트리 분석이 포함된 79개의 도구 기반 Full 모드 중 하나를 선택하여 사용할 수 있습니다.
설정은 uvx 또는 pip를 사용하여 간편하게 진행할 수 있으며, 핵심 데이터 접근을 위해 API 키나 계정이 필요하지 않습니다. Lite 모드는 세션 중 실시간 피드를 읽어오는 16개의 라이브 타이밍 도구를 제공하며, Full 모드는 FastF1 스택을 통합하여 시각적인 속도 추적 비교, 기어 변속 맵, 상세한 브레이크 포인트 분석을 제공합니다. 타이어 마모도를 비교하거나 1950년의 챔피언십 순위를 확인해야 하는 경우, Pitwall은 모델의 환각 대신 정확한 데이터를 전달합니다.
활용 사례
- 1드라이버 텔레메트리 분석레이스 랩 동안 특정 드라이버 두 명의 속도 추적 시각적 비교를 요청합니다.
- 2레이스 전략 평가각 팀이 타이어 컴파운드와 스틴트를 어떻게 관리했는지에 대한 상세한 분석을 요청합니다.
- 3역사적 레이싱 데이터 조회수십 년 전의 챔피언십 우승자나 레이스 결과에 대해 문의합니다.
- 4라이브 세션 업데이트 모니터링라이브 이벤트 중 트랙 상태, 세이프티 카 또는 현재 순위에 대한 실시간 정보를 가져옵니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
Pitwall MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 Pitwall MCP 설치
$ claude mcp add pitwall -- uvx f1pitwallCursor에 Pitwall MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"pitwall": {
"command": "uvx",
"args": [
"f1pitwall"
]
}
}
}VS Code에 Pitwall MCP 설치
.vscode/mcp.json
{
"servers": {
"pitwall": {
"type": "stdio",
"command": "uvx",
"args": [
"f1pitwall"
]
}
}
}VS Code CLI에 Pitwall MCP 설치
$ code --add-mcp '{"name":"pitwall","type":"stdio","command":"uvx","args":["f1pitwall"]}'Claude Desktop에 Pitwall MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"pitwall": {
"command": "uvx",
"args": [
"f1pitwall"
]
}
}
}Codex에 Pitwall MCP 설치
$ codex mcp add pitwall -- uvx f1pitwallCodex config.toml에 Pitwall MCP 설치
~/.codex/config.toml
[mcp_servers.pitwall] command = "uvx" args = ["f1pitwall"]
Gemini CLI에 Pitwall MCP 설치
$ gemini mcp add -s user pitwall uvx -- f1pitwallGemini settings.json에 Pitwall MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"pitwall": {
"command": "uvx",
"args": [
"f1pitwall"
]
}
}
}Pitwall MCP 도구 14
README에서 감지됨list_seasonslist_racesget_race_infoget_standingsget_lap_timesget_telemetryget_tyre_strategyget_pit_stopsget_race_controlget_weatherget_speed_trapsget_driver_comparison
| list_seasons | — | |
| list_races | — | |
| get_race_info | — | |
| get_standings | — | |
| get_lap_times | — | |
| get_telemetry | — | |
| get_tyre_strategy | — | |
| get_pit_stops | — | |
| get_race_control | — | |
| get_weather | — | |
| get_speed_traps | — | |
| get_driver_comparison | — |
도구 14개 모두 보기도구 수 줄이기
get_historical_resultsget_championship_standings
| get_historical_results | — | |
| get_championship_standings | — |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능darshjoshi/pitwall is public and reachablegithub.com/darshjoshi/pitwall ↗통과
- 패키지가 이 저장소를 소스로 명시f1pitwall names darshjoshi/pitwall as sourcepypi.org/project/f1pitwall/ ↗통과
- 빌드 출처(Sigstore 증명)Sigstore attestation for f1pitwallpypi.org/project/f1pitwall/ ↗통과
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-08-02github.com/darshjoshi/pitwall ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from f1pitwall통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음41 resolved dependencies checked; no critical advisoryosv.dev ↗통과
- 모델에 대한 숨겨진 지침 없음14 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨No tool named like delete, drop or exec통과
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기Quick Start
Claude Code — one command, all 79 tools:
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.
Skips pandas/numpy/matplotlib/FastF1. Still includes all 16 live-timing tools.
claude mcp add pitwall -- uvx --from f1pitwall f1pitwall
pip install "f1pitwall[full]" # or just f1pitwall for lite
claude mcp add pitwall -- f1pitwall
git clone https://github.com/darshjoshi/pitwall.git && cd pitwall
pip install -r requirements.txt # lite (incl. live timing)
pip install -r requirements-full.txt # full
claude 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):
{
"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
| Question | Tool 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:
| Category | What You Get |
|---|---|
| Visual Plots | Speed trace comparisons, gear shift maps, multi-lap telemetry overlays |
| Deep Telemetry | Brake point analysis, RPM patterns, DRS usage, throttle traces |
| Advanced Strategy | Stint degradation, compound comparisons, tire age performance |
| Race Intelligence | Overtake detection, gap tracking, position changes, qualifying progression |
Lite Tools (always available)
| Tool | Description |
|---|---|
list_seasons |
Available seasons (2018-present) |
list_races |
Full season calendar with dates |
get_race_info |
Session details and available data feeds |
get_standings |
Race classification — positions, gaps, best laps, pits |
get_lap_times |
Lap-by-lap times, filterable by driver and lap range |
get_telemetry |
Speed, RPM, throttle, brake, gear, DRS for a specific lap |
get_tyre_strategy |
Compound, stint length, new/used for every driver |
get_pit_stops |
All pit stops sorted by fastest |
get_race_control |
Flags, penalties, safety cars, investigations |
get_weather |
Air/track temp, rain, humidity, wind |
get_speed_traps |
Speed at 4 measurement points per driver |
get_driver_comparison |
Head-to-head: position, pace, strategy, pit stops |
get_historical_results |
Race results from 1950 to present |
get_championship_standings |
Driver/constructor championships from 1950+ |
Live Timing (lite — no auth, reads F1's real-time SignalR feed during a session)
| Tool | Description |
|---|---|
get_live_session_status |
Session name, flag/track status, lap count |
get_live_positions |
Live running order with gap + interval |
get_live_lap_times |
Last + best lap per driver |
get_live_sector_times |
Sector times + speed trap for one driver |
get_live_time_gaps |
Gap to leader + interval to car ahead (mode-aware) |
get_live_best_sectors |
Personal-best sectors + best lap, ranked |
get_live_speed_trap |
Speed-trap (ST) ranking across the field |
get_live_speed_comparison |
Best speed at I1/I2/FL/ST per driver |
get_live_tyres |
Compound, age (laps), stint number per driver |
get_live_stint_history |
Full compound sequence per driver |
get_live_pit_activity |
Pit count + in-pit / out-lap flags |
get_live_weather |
Air/track temp, humidity, wind, rain |
get_live_race_control |
Flags, penalties, track-limit deletions, SC/VSC |
get_live_session_clock |
Time remaining in the session |
get_live_track_status_history |
Chronological track/session status log |
get_live_mini_sectors |
Mini-sector status (green/purple/yellow) per driver |
FastF1 Tools (requires FastF1)
| Category | Tools |
|---|---|
| Visual Plots | plot_telemetry_comparison, plot_gear_shifts, plot_multi_telemetry_comparison, plot_driver_telemetry_comparison |
| Telemetry Analysis | analyze_brake_points, analyze_rpm_data, analyze_drs_usage |
| Lap Analysis | get_lap_times_fastf1, get_deleted_laps, analyze_lap_consistency, get_fastest_sectors, get_personal_best_laps, compare_sector_times |
| Strategy | get_driver_tyre_detail, get_stint_analysis, compare_tire_compounds, compare_tire_age_performance, analyze_starting_tires, compare_strategies |
| Race Analysis | get_race_results, get_sprint_results, get_session_summary, get_fastest_lap_data, detect_overtakes, compare_grid_to_finish, get_qualifying_progression |
| Pit Stops | get_pit_stop_detail, get_fastest_pit_stops |
| Driver & Team | get_driver_info, get_driver_standings, get_constructor_standings, team_head_to_head, get_team_laps, analyze_long_run_pace |
| Track & Safety | get_circuit_info, get_track_status, get_track_record, get_race_control_messages, get_penalties, get_dnf_list |
| Speed & Position | get_speed_trap_comparison, get_position_changes, get_gap_to_leader |
| History | get_race_winners_history |
| Live (auth-gated) | get_live_telemetry, get_live_gps_positions — live car telemetry + GPS, need an F1 TV token |
| Session | get_schedule, get_session_info, get_weather_data |
Setup
Claude Code:
claude mcp add pitwall -- python3 /absolute/path/to/pitwall.py
Claude Desktop — add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"pitwall": {
"command": "python3",
"args": ["/absolute/path/to/pitwall.py"]
}
}
}
1. Find your Python path:
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):
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 theClaudefolder orclaude_desktop_config.jsondoesn't exist, create them.
{
"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 ispython(notpython3) on Windows.
Claude Code:
claude mcp add pitwall -- python3 /absolute/path/to/pitwall.py
Claude Desktop — add to ~/.config/Claude/claude_desktop_config.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.
| Source | Coverage | What it provides |
|---|---|---|
| F1 Static Live Timing | 2018-present | Telemetry, timing, strategy, pit stops, weather, race control |
| Jolpica-F1 | 1950-present | Historical results and championships |
| FastF1 (optional) | 2018-present | Enhanced telemetry analysis and visual plots |
| F1 SignalR Core (optional) | Live only | Real-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
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.
| Data | Free | F1 TV |
|---|---|---|
| Race positions, gaps, lap times | Yes | Yes |
| Race control, flags, penalties | Yes | Yes |
| Weather, track status | Yes | Yes |
| Tyre compounds, stint info | Yes | Yes |
| Team radio URLs | Yes | Yes |
| Car telemetry (speed, RPM, throttle, brake) | No | Yes |
| GPS positions (X/Y/Z coordinates) | No | Yes |
All data (including telemetry and GPS) becomes free in the static archive ~30 minutes after a session ends.
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.
import asyncio
from 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):
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 = Leclerc
ANT = Antonelli RUS = Russell PIA = Piastri BEA = Bearman
GAS = Gasly LAW = Lawson HAD = Hadjar SAI = Sainz
ALO = Alonso STR = Stroll OCO = Ocon BOT = Bottas
ALB = Albon HUL = Hulkenberg COL = Colapinto LIN = Lindblad
Project Files
| File | Purpose |
|---|---|
pitwall.py |
MCP server — 79 tools, auto-degrades to 30 without FastF1 |
signalr_client.py |
Raw SignalR Core WebSocket client for live race data |
decompressor.py |
Zlib decompression for CarData.z / Position.z |
merger.py |
Keyframe + delta state management for F1's incremental format |
topics.py |
All 20 SignalR topics with auth/compression metadata |
auth_setup.py |
F1 TV token setup — browser-based OAuth flow |
Contributing
Found a bug? Want to add a tool? Contributions are welcome.
- Fork the repo
- Create a feature branch
- Make your changes
- Run the test suite:
python3 tests/pitwall_tool_validation.py - 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
License
MIT
Pitwall MCP 질문
Pitwall MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add pitwall -- uvx f1pitwall를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
Pitwall MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
Pitwall MCP는 어떤 도구를 제공하나요?
14개 도구를 제공합니다. 예: list_seasons, list_races, get_race_info, get_standings, get_lap_times.
Pitwall 사용 시 API 키가 필요한가요?
아니요, 모든 핵심 데이터는 무료이며 기본 도구 사용을 위해 별도의 계정이 필요하지 않습니다.
어떤 종류의 텔레메트리 데이터를 얻을 수 있나요?
차량당 4Hz 주기로 속도, RPM, 스로틀, 브레이크, 기어, DRS를 포함한 랩 단위 텔레메트리에 접근할 수 있습니다.
역사적 데이터는 얼마나 제공되나요?
이 MCP server는 1950년 이후의 모든 레이스 결과와 챔피언십 데이터에 대한 접근을 제공합니다.
Lite 모드와 Full 모드의 차이점은 무엇인가요?
Lite 모드는 무거운 의존성 없이 30개의 도구와 라이브 타이밍을 제공하며, Full 모드는 79개의 도구와 함께 시각적 플롯 및 FastF1을 이용한 심층 텔레메트리 분석을 포함합니다.