mcpField
F
fastf1

fastf1

github.com/machina-sports数据与数据库261486 次安装今天更新
代码仓库

关于 fastf1

fastf1 是面向 F1 数据查询与分析的技能,供 Agent 获取赛历、赛果及赛季和比赛数据。它通过 sports-skills CLI 或 Python SDK 提供多类查询,并指导按赛季时间选择年份。

主要功能

  1. 01查询赛历与比赛结果
  2. 02获取车手和车队信息
  3. 03分析逐圈计时与进站
  4. 04比较车手、车队及赛季数据

适用场景

  1. 01查看某赛季赛历和积分榜
  2. 02分析某场比赛的逐圈速度与轮胎策略
  3. 03比较两位车手或两支车队表现

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/machina-sports/sports-skills --skill fastf1

安装后在 Claude Code 中输入/fastf1确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
api-reference.md
commands.md
schemas.md
scripts/
validate_params.sh

详细介绍

FastF1 — Formula 1 数据

编写查询前,请查阅 references/api-reference.md,了解端点、ID 约定和数据结构。

快速开始

优先使用 CLI,避免 Python 导入路径问题:

sports-skills f1 get_race_schedule --year=2025
sports-skills f1 get_race_results --year=2025 --event=Monza

Python SDK(备选):

from sports_skills import f1

schedule = f1.get_race_schedule(year=2025)
results = f1.get_race_results(year=2025, event="Monza")

重要:执行任何查询前

重要:调用任何数据端点前,请确认:

  • 年份根据系统提示中的 currentDate 推导,绝不可硬编码。
  • 如果当前是 1 月或 2 月,请使用 year = current_year - 1(赛季开始前;新 F1 赛季尚未开始)。

选择年份

根据系统提示中的日期推导当前年份(例如,currentDate: 2026-02-16 → 当前年份为 2026)。

  • 如果用户指定了年份,请按原样使用。
  • 如果用户说“最新”“近期”“上赛季”或未指定年份:F1 赛季大致从 3 月持续到 12 月。如果当前是 1 月或 2 月,请使用 year = current_year - 1。从 3 月起,使用当前年份。

工作流

大奖赛周末分析
  1. get_race_schedule --year=<year> — 查找赛事名称和日期
  2. get_race_results --year=<year> --event=<name> — 最终排名(名次、时间、积分)
  3. get_lap_data --year=<year> --event=<name> --session_type=R — 逐圈节奏分析
  4. get_tire_analysis --year=<year> --event=<name> — 策略细分(配方、单次连续使用时长、磨损情况)
车手/车队对比
  1. get_championship_standings --year=<year> — 锦标赛背景信息(积分、获胜次数、领奖台次数)
  2. get_team_comparison --year=<year> --team1=<t1> --team2=<t2> 或 get_driver_comparison --year=<year> --driver1=<d1> --driver2=<d2>
  3. get_season_stats --year=<year> — 汇总表现(最快圈速、最高速度)
赛季概览
  1. get_race_schedule --year=<year> — 包含日期和赛道的完整赛历
  2. get_championship_standings --year=<year> — 车手和车队积分榜
  3. get_season_stats --year=<year> — 赛季范围内的最快圈速、最高速度和积分领先者
  4. get_driver_info --year=<year> — 当前参赛车手阵容(车手号码、车队、国籍)

命令

命令描述
get_race_schedule包含日期和赛道的完整赛季赛历
get_race_results最终比赛排名(名次、时间、积分)
get_session_data原始比赛阶段信息(Q、FP1、FP2、FP3、R)
get_driver_info参赛车手详情
get_team_info车队信息和车手阵容
get_lap_data包含分段计时和轮胎数据的逐圈计时
get_pit_stops进站信息,包括维修区通道用时(非静止时间)和车队平均值
get_speed_data速度检测点和中间测速数据
get_championship_standings车手和车队锦标赛积分榜(使用 --round=N 查询第 N 轮后的积分榜)
get_season_stats赛季表现汇总
get_team_comparison车队正面对比:排位赛、正赛节奏、分段成绩
get_driver_comparison车手正面对比:排位赛对决、正赛对决、节奏差值
get_tire_analysis轮胎策略、单次连续使用时长、磨损速率

完整参数列表和返回数据结构请参阅 references/api-reference.md。

示例

示例 1:F1 赛历 用户说:“显示 F1 赛历” 操作:

  1. 从 currentDate 推导年份
  2. 调用 get_race_schedule(year=<derived_year>) 结果:包含赛事名称、日期和赛道的完整赛历

示例 2:车手比赛表现 用户说:“维斯塔潘在蒙扎表现如何?” 操作:

  1. 从 currentDate(或上下文)推导年份
  2. 调用 get_race_results(year=<year>, event="Monza") 获取最终排名
  3. 调用 get_lap_data(year=<year>, event="Monza", session_type="R", driver="VER") 获取单圈用时 结果:完赛名次、与领先者的差距、最快单圈和轮胎策略

示例 3:季前查询最新赛果 用户说:“F1 最新赛果是什么?”(于 2026 年 2 月提问) 操作:

  1. 当前月份是 2 月 → 赛季尚未开始 → 使用 year = 2025
  2. 调用 get_race_schedule(year=2025) 查找该赛季的最后一场赛事
  3. 调用 get_race_results(year=2025, event=<last_event>) 获取最后一场比赛的赛果 结果:2025 年最后一场比赛的赛果

不存在的命令——切勿调用

  • get_qualifying / get_practice — 不存在。排位赛请使用 get_session_data,并设置 session_type="Q";练习赛请使用 session_type="FP1"/"FP2"/"FP3"。
  • get_standings — 不存在。请改用 get_championship_standings。
  • get_results — 不存在。请改用 get_race_results。
  • get_calendar — 不存在。请改用 get_race_schedule。

如果某个命令未列在上方的命令表中,则该命令不存在。

故障排除

错误:未找到赛事名称 原因:赛事名称拼写与 FastF1 的内部命名不一致 解决方案:先调用 get_race_schedule(year=<year>) 获取准确的赛事名称,然后使用正确的名称重试

错误:赛段数据为空 原因:该赛段尚未进行 解决方案:FastF1 仅返回已完成赛段的数据。请检查 get_race_schedule,确认该赛段的计划时间

错误:get_race_results 未返回 fastest_lap_time 原因:FastF1 没有该场比赛的单圈数据(fastest_lap_time 根据单圈数据计算得出) 解决方案:使用 get_lap_data(session_type="R"),并找出所有车手中的最小 lap_time

错误:在 1 月或 2 月查询当前年份时没有返回数据 原因:新的 F1 赛季尚未开始 解决方案:3 月之前的查询请使用 year = current_year - 1;3 月之前不要查询当前年份

评论

支持 Markdown