关于 Pitwall — F1 Data for Claude
Pitwall 是一款 MCP 服务,为 Claude 提供 F1 实时计时、遥测、策略和历史赛果数据。它兼有比赛进行时的数据与分析工具,完整模式还可生成图表。
主要功能
- 01读取比赛实时计时
- 02查询单圈遥测并进行比较
- 03查看轮胎、进站和天气数据
- 04分析赛道管制与比赛策略
- 05查询 1950 年以来的赛果和冠军榜
- 06完整模式提供遥测图表
适用场景
- 01查看实时排名、间隔和单圈时间
- 02比较车手速度曲线
- 03检查轮胎使用阶段和进站情况
- 04查询历史赛果与冠军榜
MCP 相关
Pitwall 向 MCP 兼容客户端(包括 Claude Code 和 Claude Desktop)提供 F1 数据与分析工具。实时计时工具读取 F1 实时数据流;实时遥测和 GPS 需要 F1 TV 令牌。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
30收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
Pitwall
让 Claude 成为你的 F1 比赛工程师。
真实遥测数据。真实策略数据。75 年历史。
快速开始
Claude Code——一条命令,启用全部 79 个工具:
claude mcp add pitwall -- uvx --from "f1pitwall[full]" f1pitwall
然后询问 Claude:“谁赢得了 2025 年澳大利亚大奖赛?”
需要 uv(
curl -LsSf https://astral.sh/uv/install.sh | sh)。无需 pip、虚拟环境,也不用查找“哪个是 python3”——而且你始终可以获得最新版本。首次启动会下载 FastF1 技术栈(约 540 MB),大约需要 25 秒。之后每次启动都不到 1 秒。如果首次启动超时,只需重启 Claude Code——下载内容已缓存。
想改用插件,同时获取 f1 技能和服务?请参阅安装为 Claude Code 插件。
轻量安装(30 个工具,无图表)
不安装 pandas/numpy/matplotlib/FastF1。仍包含全部 16 个实时计时工具。
claude mcp add pitwall -- uvx --from f1pitwall f1pitwall
改用 pip 安装
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
安装为 Claude Code 插件
该插件同时提供 MCP 服务和 f1 技能——该技能会教 Claude 如何选择 79 个工具,以及如何向从未看过比赛的人讲解 F1。
/plugin marketplace add darshjoshi/pitwall
/plugin install pitwall@pitwall
Claude Desktop
将以下内容添加到 claude_desktop_config.json(Settings → Developer → Edit Config):
{
"mcpServers": {
"pitwall": {
"command": "uvx",
"args": ["--from", "f1pitwall[full]", "f1pitwall"]
}
}
}
为什么选择 Pitwall?
Claude 能从训练数据中了解 F1,但无法查询上周的比赛,也无法向你展示 Verstappen 通过 1 号弯时的油门曲线。它不知道谁先进入维修区,也不知道安全车何时出动。
Pitwall 将 Claude 连接到真实 F1 数据:
- 真实数据,而非幻觉——来自 formula1.com 的实际计时数据流
- 逐圈遥测数据——每辆车以 4Hz 频率记录速度、RPM、油门、刹车、挡位和 DRS
- 可视化图表——以图像形式返回速度曲线对比和挡位切换图
- 75 年历史——自 1950 年以来的每场比赛结果和锦标赛数据
- 每场比赛后及时更新——自 2018 年以来,每场比赛结束约 30 分钟后发布完整遥测和计时数据
- 无需 API 密钥——所有核心数据均免费,无需账户
可以询问什么
"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
查看所有示例问题
| 问题 | 使用的工具 |
|---|---|
| "谁赢得了中国大奖赛?" | get_standings |
| "维斯塔潘在第 25 圈的速度是多少?" | get_telemetry |
| "比较汉密尔顿和勒克莱尔" | get_driver_comparison |
| "每位车手使用了什么轮胎?" | get_tyre_strategy |
| "2025 年澳大利亚站最快的进站用时是多少?" | get_pit_stops |
| "安全车什么时候出动的?" | get_race_control |
| "比赛期间下雨了吗?" | get_weather |
| "2024 年蒙扎站的最高速度是多少?" | get_speed_traps |
| "诺里斯在比赛中的圈速" | get_lap_times |
| "谁赢得了 2005 年车手总冠军?" | get_championship_standings |
| "绘制维斯塔潘与汉密尔顿的速度曲线对比图" | plot_telemetry_comparison |
| "显示摩纳哥站的换挡图" | plot_gear_shifts |
| "谁提升的名次最多?" | compare_grid_to_finish |
| "比赛中的超车" | detect_overtakes |
| "比较维斯塔潘第 5 圈与第 50 圈" | plot_multi_telemetry_comparison |
| "法拉利车队排位赛正面对比" | team_head_to_head |
| "排位赛中被删除的圈速" | get_deleted_laps |
| "整个比赛期间与领先者的差距" | get_gap_to_leader |
功能
两种模式共提供 79 个工具。Pitwall 会自动检测已安装的内容,无需更改配置。
轻量模式(30 个工具)
pip install f1pitwall — 仅依赖轻量级库(mcp、requests,以及用于实时计时的 websockets/aiohttp);不需要 pandas/numpy/FastF1。
比赛结果、圈速、遥测数据、轮胎策略、进站、天气、比赛控制、速度检测点、车手对比,以及自 1950 年以来的历史数据。另有 16 个实时计时工具(行驶顺序、间隔、圈速/分段时间、轮胎、天气、比赛控制、速度检测点、迷你赛段等),可在比赛期间读取 F1 的实时 SignalR 数据流,无需身份验证。(实时赛车遥测数据和 GPS 需要身份验证,仅在完整模式中提供。)使用 F1 的免费静态档案和 Jolpica API。
完整模式(79 个工具)
pip install -r requirements-full.txt — 增加 FastF1。
包含轻量模式的所有内容,另有:
| 类别 | 提供内容 |
|---|---|
| 可视化图表 | 速度曲线对比、换挡图、多圈遥测数据叠加 |
| 深度遥测 | 刹车点分析、RPM 模式、DRS 使用情况、油门曲线 |
| 高级策略 | 轮胎使用阶段的性能衰退、配方对比、轮胎使用时长与性能 |
| 比赛洞察 | 超车检测、间隔跟踪、名次变化、排位赛进程 |
完整工具列表(79 个工具)
轻量模式工具(始终可用)
| 工具 | 描述 |
|---|---|
list_seasons | 可用赛季(2018 年至今) |
list_races | 完整赛季赛历及日期 |
get_race_info | 比赛场次详情和可用数据流 |
get_standings | 比赛排名 — 名次、间隔、最快圈速、进站 |
get_lap_times | 逐圈圈速,可按车手和圈数范围筛选 |
get_telemetry | 指定圈的速度、RPM、油门、刹车、挡位、DRS 数据 |
get_tyre_strategy | 每位车手的轮胎配方、使用时长、新旧状态 |
get_pit_stops | 所有进站记录,按用时从快到慢排序 |
get_race_control | 旗帜、处罚、安全车、调查 |
get_weather | 气温/赛道温度、降雨、湿度、风速 |
get_speed_traps | 每位车手在 4 个测速点的速度 |
get_driver_comparison | 正面对比:名次、速度、策略、进站 |
get_historical_results | 1950 年至今的比赛结果 |
get_championship_standings | 1950 年以来的车手/车队锦标赛排名 |
FastF1 工具(需要 FastF1)
| 类别 | 工具 |
|---|---|
| 可视化图表 | plot_telemetry_comparison、plot_gear_shifts、plot_multi_telemetry_comparison、plot_driver_telemetry_comparison |
| 遥测分析 | analyze_brake_points、analyze_rpm_data、analyze_drs_usage |
| 圈速分析 | get_lap_times_fastf1、get_deleted_laps、analyze_lap_consistency、get_fastest_sectors、get_personal_best_laps、compare_sector_times |
| 策略 | get_driver_tyre_detail、get_stint_analysis、compare_tire_compounds、compare_tire_age_performance、analyze_starting_tires、compare_strategies |
| 比赛分析 | get_race_results、get_sprint_results、get_session_summary、get_fastest_lap_data、detect_overtakes、compare_grid_to_finish、get_qualifying_progression |
| 进站 | get_pit_stop_detail、get_fastest_pit_stops |
| 车手与车队 | get_driver_info、get_driver_standings、get_constructor_standings、team_head_to_head、get_team_laps、analyze_long_run_pace |
| 赛道与安全 | get_circuit_info、get_track_status、get_track_record、get_race_control_messages、get_penalties、get_dnf_list |
| 速度与位置 | get_speed_trap_comparison、get_position_changes、get_gap_to_leader |
| 历史 | get_race_winners_history |
| 实时(需授权) | get_live_telemetry、get_live_gps_positions——实时赛车遥测数据和 GPS,需要 F1 TV 令牌 |
| 比赛 | get_schedule、get_session_info、get_weather_data |
设置
macOS
Claude Code:
claude mcp add pitwall -- python3 /absolute/path/to/pitwall.py
Claude Desktop — 添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"pitwall": {
"command": "python3",
"args": ["/absolute/path/to/pitwall.py"]
}
}
}
Windows
1. 查找 Python 路径:
where python
这将返回类似 C:\Users\YourName\AppData\Local\Programs\Python\Python313\python.exe 或 C:\Python313\python.exe 的路径。
2. 记下克隆 Pitwall 的位置:
例如:C:\Users\YourName\Projects\pitwall\pitwall.py
Claude Code(PowerShell):
claude mcp add pitwall -- python C:\Users\YourName\Projects\pitwall\pitwall.py
Claude Desktop — 添加到 %APPDATA%\Claude\claude_desktop_config.json:
要打开此文件夹,请按
Win + R,输入%APPDATA%\Claude,然后按 Enter。如果Claude文件夹或claude_desktop_config.json不存在,请创建它们。
{
"mcpServers": {
"pitwall": {
"command": "python",
"args": ["C:\\Users\\YourName\\Projects\\pitwall\\pitwall.py"]
}
}
}
注意: JSON 路径中请使用双反斜杠(
\\)或正斜杠(/)——两者均可。在 Windows 上,命令是python(不是python3)。
Linux
Claude Code:
claude mcp add pitwall -- python3 /absolute/path/to/pitwall.py
Claude Desktop — 添加到 ~/.config/Claude/claude_desktop_config.json:
{
"mcpServers": {
"pitwall": {
"command": "python3",
"args": ["/absolute/path/to/pitwall.py"]
}
}
}
设置完成后,重启 Claude Code 或 Claude Desktop。可与任何兼容 MCP 的客户端配合使用。
可选:适合初学者的技能(Claude Desktop)
将 SKILL.md 作为技能上传到 Claude Desktop(Settings → Skills → Upload)。Claude 会在对话中解释 F1 行话——DRS、undercut、compound、safety car 等。
数据来源
所有核心数据均免费且无需 API 密钥。
| 来源 | 覆盖范围 | 提供内容 |
|---|---|---|
| F1 Static Live Timing | 2018 年至今 | 遥测、计时、策略、进站、天气、比赛控制信息 |
| Jolpica-F1 | 1950 年至今 | 历史赛果和锦标赛数据 |
| FastF1(可选) | 2018 年至今 | 增强型遥测分析和可视化图表 |
| F1 SignalR Core(可选) | 仅实时 | 比赛进行期间的实时数据 |
工作原理
Pitwall 从 F1 公开提供的静态计时档案中读取数据——这与官方 F1 应用使用的数据相同。每场比赛结束后(约 30 分钟),F1 会发布 33 个数据流,其中包括完整的赛车遥测数据(每辆赛车约以 4 Hz 的频率记录速度、转速、油门、刹车、挡位和 DRS)、GPS 位置、轮胎数据、进站信息和比赛控制消息。
遥测工具(get_telemetry)会将计时数据流与赛车数据流关联起来,提取特定车手在特定圈次的遥测数据——其他 F1 MCP 服务均无法做到这一点。
架构
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)
运行服务
python3 pitwall.py # MCP stdio (Claude Code / Claude Desktop)
python3 pitwall.py --http # MCP HTTP (remote / self-hosted)
python3 pitwall.py --http --port 3000
实时比赛数据
Pitwall 包含一个原始 SignalR Core WebSocket 客户端,用于在 F1 赛事进行期间获取实时数据。大多数数据免费——赛车遥测和 GPS 需要 F1 TV Pro 或 Premium 订阅。
注意:
get_live_*MCP 工具直接读取此客户端的实时 SignalR 数据流。16 个计时工具(比赛顺序、差距、单圈/分段时间、轮胎、天气、赛事控制、测速区间、迷你分段,等等)在 lite 安装中无需身份验证即可使用;实时赛车遥测和 GPS(get_live_telemetry、get_live_gps_positions)需要 F1 TV 令牌,并包含在 full 安装中。赛后数据——遥测、计时、策略——在每场赛事结束后仍可通过主工具获取。
免费数据与需要 F1 TV 的数据
| 数据 | 免费 | F1 TV |
|---|---|---|
| 比赛位置、差距、单圈时间 | 是 | 是 |
| 赛事控制、旗帜、处罚 | 是 | 是 |
| 天气、赛道状态 | 是 | 是 |
| 轮胎配方、轮胎使用阶段信息 | 是 | 是 |
| 车队无线电 URL | 是 | 是 |
| 赛车遥测(速度、RPM、油门、刹车) | 否 | 是 |
| GPS 位置(X/Y/Z 坐标) | 否 | 是 |
所有数据(包括遥测和 GPS)都会在赛事结束约 30 分钟后,通过静态档案免费提供。
身份验证设置
python3 auth_setup.py
这会打开浏览器以登录 F1 TV。令牌会保存在本地:
<project_dir>/.f1token~/Library/Application Support/fastf1/f1auth.json(macOS)
令牌每约 4 天过期一次。重新运行即可刷新。令牌绝不会上传到任何地方。
实时客户端用法
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())
要获取完整的遥测数据(速度、RPM、油门、刹车、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
...
参考
比赛名称
比赛名称会进行模糊匹配。以下名称均可使用:
"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
车手代码
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
项目文件
| 文件 | 用途 |
|---|---|
pitwall.py | MCP 服务 — 79 个工具;没有 FastF1 时会自动降级为 30 个 |
signalr_client.py | 用于实时比赛数据的原始 SignalR Core WebSocket 客户端 |
decompressor.py | 用于 CarData.z / Position.z 的 Zlib 解压缩 |
merger.py | 用于 F1 增量格式的关键帧 + 差量状态管理 |
topics.py | 全部 20 个 SignalR 主题及其身份验证/压缩元数据 |
auth_setup.py | F1 TV 令牌设置 — 基于浏览器的 OAuth 流程 |
贡献
发现了错误?想添加工具?欢迎贡献。
- Fork 此仓库
- 创建功能分支
- 进行修改
- 运行测试套件:
python3 tests/pitwall_tool_validation.py - 提交拉取请求
鸣谢
- FastF1,由 @theOehrly 开发 — F1 Python 库的黄金标准
- Jolpica-F1 — Ergast API 的继任者
- drivenrajat/f1 — FastF1 工具模式的灵感来源
作者
Darsh Joshi — AI 工程师
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。