fastf1-mcp-server
fastf1-mcp
一个 MCP 服务器,通过 FastF1 库向 AI 助手提供一级方程式 (F1) 数据。您可以向 Claude(或任何兼容 MCP 的客户端)询问有关比赛结果、单圈时间、遥测数据、积分榜等信息。
功能特性
21 个工具,涵盖积分榜、比赛结果、单圈时间、遥测数据、进站记录和排位赛
4 个 MCP 资源,用于获取赛程、车手、车队和赛道参考数据
5 个引导式提示词,用于比赛回顾、排位赛分析、策略深度解析和周末前瞻
异步安全的 LRU 会话缓存 — 首次加载后,重复查询可瞬间完成
基于距离的遥测采样 — 将大型原始数据集压缩至 ≤ 500 个点
所有错误均以结构化字典形式返回 — 服务器绝不会因输入错误而崩溃
要求
Python 3.12+
uv (推荐) 或 pip
安装
使用 uv (推荐)
git clone https://github.com/yourname/fastf1-mcp
cd fastf1-mcp
uv sync使用 pip
pip install fastf1-mcp-server运行服务器
# via uv (development)
uv run fastf1-mcp-server
# or directly
python -m fastf1_mcpMCP Inspector (开发/调试)
# Option A — official npx inspector
npx @modelcontextprotocol/inspector uv --directory . run fastf1-mcp-server
# Option B — fastmcp wrapper
uv run fastmcp dev inspector -m fastf1_mcp.server --with-editable .两者都会在 http://localhost:6274 打开检查器。
Claude Desktop 配置
将以下内容添加到 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) 或 %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"fastf1": {
"command": "uv",
"args": ["run", "fastf1-mcp-server"],
"cwd": "/absolute/path/to/fastf1-mcp",
"env": {
"FASTF1_MCP_LOG_LEVEL": "INFO",
"FASTF1_MCP_MAX_CACHED_SESSIONS": "10"
}
}
}
}保存后重启 Claude Desktop。工具面板中将出现 fastf1 服务器。
配置
所有设置均从带有 FASTF1_MCP_ 前缀的环境变量中读取。
变量 | 默认值 | 描述 |
|
| FastF1 会话文件的磁盘缓存路径 |
|
| 内存中保留的最大会话数 (LRU) |
|
| 默认遥测采样点数 |
|
| 遥测采样点数上限 |
|
| Python 日志级别 |
工具
快速查询 (Ergast API — 1950 年至今)
工具 | 描述 |
| 获取某赛季的 F1 赛历。 |
| 获取车手年度积分榜。 |
| 获取车队年度积分榜。 |
| 获取车手信息。 |
| 获取历史比赛结果(2018 年之前或会话数据不可用时)。 |
| 获取赛道信息。 |
会话数据 (FastF1 实时计时 — 2018 年至今)
工具 | 描述 |
| 获取会话分类/结果。 |
| 获取某位车手在某场会话中的所有单圈时间。 |
| 获取某场会话中的最快圈速(每位车手一圈)。 |
| 计算所有车手的平均比赛配速。 |
| 分析某场比赛的轮胎停站策略。 |
| 获取某场比赛的所有进站记录。 |
| 获取按 Q1/Q2/Q3 分段的排位赛结果。 |
遥测数据 (FastF1 实时计时 — 2018 年至今)
工具 | 描述 |
| 获取特定单圈的遥测数据。 |
| 比较同一会话中两位车手的遥测数据。 |
| 获取某场会话中所有车手的测速陷阱和最高速度数据。 |
| 获取每位车手的最佳分段时间和理论最佳单圈。 |
实用工具
工具 | 描述 |
| 列出某赛季的所有赛事。 |
| 列出某赛季的所有车手,可选择筛选特定赛事。 |
| 检查服务器内存中会话缓存的状态。 |
| 清除内存存储中的缓存会话。 |
资源
URI | 描述 |
| 某赛季的完整赛历 |
| 某赛季参赛的所有车手 |
| 某赛季的所有车队 |
| 所有 F1 赛道(历史总计) |
提示词
提示词 | 参数 | 功能 |
|
| 调用结果 + 最快圈速 + 进站记录 + 停站分析,然后叙述比赛过程 |
|
| Q 分段 + 分段计时 + 最快圈速分析 |
|
| 赛季级对比:积分榜、比赛、排位赛 |
|
| 停站 + 进站时机 + 比赛配速 — 解释谁赢得了策略博弈 |
|
| 赛道详情 + 近期历史 + 冠军争夺背景 |
查询示例 (Claude Desktop)
Who won the 2024 Monaco Grand Prix and what was the strategy?
→ use race_recap prompt or call get_session_results + get_stint_analysis
Compare Verstappen and Leclerc's telemetry in 2024 Monaco qualifying
→ compare_telemetry(2024, "Monaco", "Q", "VER", "LEC")
Who had the fastest theoretical lap in 2024 Silverstone qualifying?
→ get_sector_times(2024, "Silverstone", "Q")
Show me the 2024 constructor standings after round 10
→ get_constructor_standings(2024, after_round=10)开发
# Install dev dependencies
uv sync --dev
# Run tests
uv run pytest
# Run tests with coverage
uv run pytest --cov=fastf1_mcp
# Lint
uv run ruff check src/数据源与覆盖范围
数据源 | 覆盖范围 | 用途 |
Ergast API (通过 FastF1) | 1950 年至今 | 积分榜、赛历、历史结果、赛道信息 |
2018 年至今 | 单圈时间、遥测、排位赛、进站、轮胎数据 |
注意: FastF1 会话数据仅从 2018 年起可用。对于更早的赛季,请使用
get_race_results_historical。
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Surya96t/fastf1-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server