mcpField
P
Pitwall — F1 Data for Claude

Pitwall — F1 Data for Claude

本地服务
github.com游戏娱乐912 周前更新

关于 Pitwall — F1 Data for Claude

Pitwall 是一款 MCP 服务,为 Claude 提供 F1 实时计时、遥测、策略和历史赛果数据。它兼有比赛进行时的数据与分析工具,完整模式还可生成图表。

主要功能

  1. 01读取比赛实时计时
  2. 02查询单圈遥测并进行比较
  3. 03查看轮胎、进站和天气数据
  4. 04分析赛道管制与比赛策略
  5. 05查询 1950 年以来的赛果和冠军榜
  6. 06完整模式提供遥测图表

适用场景

  1. 01查看实时排名、间隔和单圈时间
  2. 02比较车手速度曲线
  3. 03检查轮胎使用阶段和进站情况
  4. 04查询历史赛果与冠军榜

MCP 相关

Pitwall 向 MCP 兼容客户端(包括 Claude Code 和 Claude Desktop)提供 F1 数据与分析工具。实时计时工具读取 F1 实时数据流;实时遥测和 GPS 需要 F1 TV 令牌。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"darshjoshi-pitwall": {
"command": "uvx",
"args": [
"f1pitwall"
]
}
}
}
启动命令uvx f1pitwall

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypif1pitwall1.1.1

工具

30

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

Pitwall

让 Claude 成为你的 F1 比赛工程师。
真实遥测数据。真实策略数据。75 年历史。

PyPI 下载量 许可证:MIT Python 3.10+ 兼容 MCP GitHub 星标

Verstappen 与 Norris——2024 年阿布扎比大奖赛排位赛速度曲线


快速开始

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_results1950 年至今的比赛结果
get_championship_standings1950 年以来的车手/车队锦标赛排名
#### 实时计时(轻量版——无需身份验证,可在比赛期间读取 F1 的实时 SignalR 数据流) | 工具 | 描述 | |------|-------------| | `get_live_session_status` | 比赛名称、旗帜/赛道状态、圈数 | | `get_live_positions` | 实时名次顺序,包含差距和间隔 | | `get_live_lap_times` | 每位车手的上一圈和最快圈速 | | `get_live_sector_times` | 单位车手的分段时间和速度陷阱数据 | | `get_live_time_gaps` | 与领跑者的差距,以及与前车的间隔(根据模式调整) | | `get_live_best_sectors` | 个人最快分段和最快圈速排名 | | `get_live_speed_trap` | 全场速度陷阱(ST)排名 | | `get_live_speed_comparison` | 每位车手在 I1/I2/FL/ST 的最高速度 | | `get_live_tyres` | 每位车手的轮胎配方、使用圈数和停站编号 | | `get_live_stint_history` | 每位车手完整的轮胎配方序列 | | `get_live_pit_activity` | 进站次数及进站/出站圈标记 | | `get_live_weather` | 气温/赛道温度、湿度、风力、降雨情况 | | `get_live_race_control` | 旗帜、罚则、赛道限制违规导致的成绩取消、SC/VSC | | `get_live_session_clock` | 比赛剩余时间 | | `get_live_track_status_history` | 按时间顺序排列的赛道/比赛状态日志 | | `get_live_mini_sectors` | 每位车手的小扇区状态(绿色/紫色/黄色) |
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 Timing2018 年至今遥测、计时、策略、进站、天气、比赛控制信息
Jolpica-F11950 年至今历史赛果和锦标赛数据
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.pyMCP 服务 — 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.pyF1 TV 令牌设置 — 基于浏览器的 OAuth 流程

贡献

发现了错误?想添加工具?欢迎贡献。

  1. Fork 此仓库
  2. 创建功能分支
  3. 进行修改
  4. 运行测试套件:python3 tests/pitwall_tool_validation.py
  5. 提交拉取请求

鸣谢

  • FastF1,由 @theOehrly 开发 — F1 Python 库的黄金标准
  • Jolpica-F1 — Ergast API 的继任者
  • drivenrajat/f1 — FastF1 工具模式的灵感来源

作者

Darsh Joshi — AI 工程师

LinkedIn GitHub Email

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。