F1数据服务

提供全面的F1赛车数据访问服务,包括实时遥测、天气、赛道状态和历史数据分析。

  • by Zalberth
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 zalberth/f1_mcp

使用说明

F1 MCP服务器

该存储库包含两个全面的MCP(模型上下文协议)服务器,用于访问一级方程式赛车数据:

  1. FastF1 MCP服务器 (fastf1_mcp_server.py)-使用FastF1库的高级服务器
  2. 基本F1 MCP服务器 (f1_mcp_server.py)-使用Ergast API的简单服务器

FastF1 MCP服务器(推荐)

使用 FastF1库 它提供了对F1数据的完整访问,包括遥测、天气、赛道状态和高级分析。

特性

  • 完整会话数据:练习、资格赛和比赛
  • 遥测数据:速度、油门、刹车、档位、转速数据
  • 天气信息:温度、湿度、风况
  • 轨道状态:安全车时段、VSC、危险信号
  • 搭接分析:详细的圈速、扇区、化合物
  • 冠军榜:车手和建造师锦标赛
  • 历史数据:1950年至今的结果
  • 高级分析:驱动程序比较、统计数据、性能指标
  • 缓存系统:使用本地缓存优化数据检索

安装

先决条件

  • Python 3.8或更高版本
  • 所需的Python包:
    pip install fastf1 pandas numpy matplotlib scipy tqdm requests urllib3
    

设置

  1. 安装依赖项:

    pip install -r requirements.txt
    
  2. 运行服务器:

    python fastf1_mcp_server.py
    

可用工具

核心会话工具

  • get_event_schedule -获取F1赛事日历
  • get_session -加载特定会话数据
  • get_session_results -获取会话结果

遥测和搭接数据

  • get_lap_times -获取驾驶员圈速
  • get_telemetry -获取详细的遥测数据

天气和赛道状态

  • get_weather_data -获取天气状况
  • get_track_status -获取跟踪状态更改

驾驶员和车队信息

  • get_driver_info -获取驾驶员详细信息
  • get_team_info -获取团队信息

冠军榜

  • get_driver_standings -获得车手冠军
  • get_constructor_standings -获得建筑商冠军

历史数据

  • get_historical_results -获取历史比赛结果
  • get_lap_records -获取赛道圈记录

高级分析

  • calculate_driver_statistics -计算驾驶员统计数据
  • compare_drivers -比较两位驾驶员的表现

配置

  • configure_cache -配置缓存设置
  • get_cache_info -获取缓存信息

使用示例

{
  "name": "get_session",
  "arguments": {
    "year": 2024,
    "gp": "Monaco",
    "session": "R"
  }
}
{
  "name": "get_telemetry",
  "arguments": {
    "year": 2024,
    "gp": "Monaco",
    "session": "R",
    "driver": "VER",
    "lap": 10
  }
}

支持的会话

  • FP1、FP2、FP3:自由练习课程
  • Q:资格
  • 平方:Sprint资格赛
  • R:种族
  • 冲刺:短跑比赛

支持的驱动程序代码

  • 版本作者 : Max Verstappen
  • 火腿:刘易斯·汉密尔顿
  • 英雄联盟欧洲冠军联赛查尔斯·勒克莱尔
  • SAI:卡洛斯·塞恩斯
  • 或非:兰多·诺里斯
  • 俄语:乔治·拉塞尔
  • 每塞尔吉奥·佩雷斯
  • 自动亮度优化费尔南多·阿隆索
  • 还有更多。..

基本F1 MCP服务器

一个简单的MCP服务器,使用Ergast API提供基本的F1数据访问。

特性

  • 驾驶员信息:获取任何F1赛季的全面车手名单
  • 比赛结果:检索特定车手和赛季的详细比赛结果
  • 统计分析:计算平均职位和绩效指标
  • MCP合规性:完全符合MCP协议版本2024-11-05
  • 稳健的错误处理:内置重试机制和错误响应

安装

先决条件

  • Python 3.7或更高版本
  • 所需的Python包:
    pip install requests urllib3
    

设置

python f1_mcp_server.py

可用工具

  • get_drivers -获取一个赛季的车手名单
  • get_driver_results -获取车手比赛结果
  • calculate_average_position -计算平均完成位置

MCP客户端集成

两台服务器都支持标准的MCP协议方法:

  • initialize -初始化服务器连接
  • tools/list -列出可用工具
  • tools/call -执行工具功能
  • resources/list -列出可用资源
  • resources/read -读取资源内容

配置示例

添加到MCP客户端配置中:

{
  "mcpServers": {
    "fastf1": {
      "command": "python",
      "args": ["/path/to/DATA_F1_MCP/fastf1_mcp_server.py"]
    }
  }
}

可用资源

FastF1服务器

  • f1://schedule/current -当前赛季时间表
  • f1://standings/drivers -车手冠军榜
  • f1://standings/constructors -建筑商锦标赛排名

基本服务器

  • f1://drivers/2025 -本赛季车手名单

API数据源

FastF1服务器

  • FastF1库:来自官方来源的F1综合数据
  • 埃加斯特API:历史数据和锦标赛信息
  • F1官方API:实时数据和遥测

基本服务器

  • 埃加斯特API1950年至今的F1历史数据

错误处理

两台服务器都实现了全面的错误处理:

  • 网络错误:使用指数回退自动重试
  • API错误:优雅地处理API速率限制和服务器错误
  • 数据错误:丢失或无效数据的验证和回退
  • MCP错误:标准JSON-RPC错误响应

常见错误代码

  • -32700:解析错误(JSON无效)
  • -32601:未找到方法
  • -32602:无效参数
  • -32603:内部错误

发展

项目结构

DATA_F1_MCP/
├── fastf1_mcp_server.py    # Advanced FastF1-based server
├── f1_mcp_server.py        # Basic Ergast API server
├── requirements.txt        # Python dependencies
├── setup.py               # Package setup
├── examples.py            # Usage examples
├── mcp-config.json       # MCP configuration template
├── temp/                 # Temporary files
└── README.md             # This file

测试

要手动测试服务器,请执行以下操作:

# Test FastF1 server
echo '{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {}}' | python fastf1_mcp_server.py

# Test basic server
echo '{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {}}' | python f1_mcp_server.py

例子

运行示例以查看使用模式:

python examples.py

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

许可证

这个项目是开源的。请检查存储库以了解许可证详细信息。

致谢

支持

对于问题、疑问或贡献,请使用GitHub存储库的问题跟踪器。