这是一个全面的MCP(模型上下文协议)服务器,用于处理iRacing的遥测数据。它能提供实时赛车建议、车辆监测、遥测数据分析,以及关于赛车数据的对话交互功能。
本MCP服务器通过以下方式将iRacing的遥测数据转化为可付诸行动的赛车洞察:
# 克隆仓库
git clone
cd race-mcp
# 创建虚拟环境
python -m venv .venv
source .venv/bin/activate # 在Windows上使用:.venv\Scripts\activate
# 安装带有依赖项的包
pip install -e .
如果您更喜欢手动安装:
pip install mcp pyirsdk pydantic aiofiles
# 激活虚拟环境
source .venv/bin/activate
# 直接运行MCP服务器
python -m race_mcp_server
# 或者使用便捷的启动脚本
./start_server.sh
# 以调试日志模式运行
./start_server.sh --debug
# 在模拟模式下运行(无需iRacing)
./start_server.sh --simulation
在开发过程中,如果没有模拟器,可以使用独立进程通过TCP发送逼真的iRacing风格遥测数据。
# 在端口9000上启动模拟遥测数据流
python -m race_mcp_server.mock_iracing_stream --port 9000
客户端可以连接到指定的主机和端口,接收以换行符分隔的JSON遥测数据帧,这些数据帧模拟了真实iRacing数据流的结构。
安装完成后,您可以使用一个小型图形界面启动服务器:
race-mcp-gui
该图形界面提供启动/停止控制,并显示服务器日志,方便快速准备赛车赛事。
# 运行全面测试
python test_client.py
# 或者使用启动脚本进行测试
./start_server.sh --test
通过可选的音频工具支持实时语音通信。
OPENAI_API_KEY中设置OpenAI API密钥pip install race-mcp-server[voice]import asyncio
from race_mcp_server.openai_client import OpenAIClient
from race_mcp_server.voice_interface import VoiceInterface
async def main():
client = OpenAIClient()
voice = VoiceInterface(client)
await voice.chat_once()
asyncio.run(main())
此代码会录制一段简短的麦克风音频,将其发送到OpenAI进行转录,并将模型的响应语音反馈给用户。
get_telemetry用途:获取当前遥测数据并进行高级分析
{
"name": "get_telemetry",
"arguments": {
"include_analytics": true,
"format": "detailed"
}
}
返回值:完整的遥测数据,包括速度、转速、位置、G力和赛车线分析
spot_cars用途:识别和分析附近车辆,以增强态势感知
{
"name": "spot_cars",
"arguments": {
"radius_meters": 100,
"include_predictions": true
}
}
返回值:附近车辆列表,包含相对位置、速度和轨迹预测
get_racing_advice用途:根据当前情况获取人工智能教练建议
{
"name": "get_racing_advice",
"arguments": {
"context": "在3号弯入弯速度上遇到困难",
"focus_area": "弯道驾驶"
}
}
返回值:个性化建议,包含优先级和具体推荐
analyze_lap用途:详细分析圈速表现并给出改进建议
{
"name": "analyze_lap",
"arguments": {
"lap_number": 5,
"compare_to_best": true
}
}
返回值:各赛段时间、赛车线效率、一致性评级和具体改进区域
track_session用途:监测整个赛事进程和性能趋势
{
"name": "track_session",
"arguments": {
"include_trends": true,
"format": "summary"
}
}
返回值:赛事统计数据、速度趋势、燃油消耗和轮胎磨损分析
telemetry://live-stream持续的遥测数据流式传输,实时更新
session://current-info当前赛事信息,包括赛道、条件和赛事类型
track://layout-info赛道特定信息,包括弯道位置和赛车线数据
racing_coach角色:专业赛车教练 重点:技术改进和战略建议 用例:一般赛车改进和学习
car_spotter角色:经验丰富的监测员,专注于安全和定位 重点:交通管理和态势感知 用例:比赛情况和交通导航
setup_analyst角色:技术调校工程师 重点:车辆调校优化和操控分析 用例:车辆调校和技术调整
测试客户端提供了一种全面的方式来与服务器的所有功能进行交互:
# 测试服务器所有功能
python test_client.py
# 使用启动脚本进行自动化测试
./start_server.sh --test
# 手动启动服务器并使用直接的JSON - RPC调用进行测试
python -m race_mcp_server
# 在另一个终端中,您可以通过标准输入发送JSON - RPC消息
# (高级用法 - 使用test_client.py会更简单)
# 启用调试日志
export MCP_DEBUG=1
# 强制进入模拟模式
export RACE_MCP_SIMULATION=1
# 设置自定义iRacing数据路径(如果需要)
export IRSDK_PATH=/path/to/irsdk
修改src/race_mcp_server/main.py中的设置:
./start_server.sh --help # 显示所有可用选项
./start_server.sh --check # 验证系统要求
“pyirsdk连接失败”
“工具执行失败”
“资源访问失败”
# 启用详细日志记录
python -m race_mcp_server --debug
# 查看详细的遥测数据处理信息
export MCP_DEBUG=1 python -m race_mcp_server
race-mcp/
├── src/race_mcp_server/
│ ├── __init__.py # 包初始化
│ ├── __main__.py # CLI入口点
│ ├── main.py # 核心MCP服务器(580 + 行)
│ └── telemetry_processor.py # 高级分析引擎
├── start_server.sh # 便捷的启动脚本
├── pyproject.toml # 项目配置
├── test_client.py # 全面的测试套件
└── README.md # 本文件
main.py的RaceMCPServer类中添加方法telemetry_processor.py# 修改后进行测试
python test_client.py
# 以调试输出模式进行测试
./start_server.sh --debug --test
mcp = ">=1.0.0" # 模型上下文协议框架
pyirsdk = ">=1.3.0" # iRacing SDK集成
pydantic = ">=2.0.0" # 数据验证和序列化
aiofiles = ">=0.8.0" # 异步文件操作
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ iRacing Sim │───▶│ pyirsdk Stream │───▶│ MCP Server │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Claude/AI │◀───│ MCP Protocol │◀───│ Tool Handlers │
└─────────────────┘ └─────────────────┘ └─────────────────┘
# 运行测试
pytest
# 格式化代码
black src/
isort src/
# 类型检查
mypy src/
本项目采用MIT许可证 - 详情请参阅LICENSE文件。
准备好提升您的圈速了吗?启动服务器并运行测试客户端,见证它的强大功能! 🏎️💨
服务器可以通过环境变量进行配置:
IRACING_TELEMETRY_INTERVAL - 遥测数据更新间隔(秒)(默认值:1.0)RACE_MCP_LOG_LEVEL - 日志级别(默认值:INFO)RACE_MCP_ENABLE_SPOTTING - 启用车辆监测功能(默认值:true)