iRacing MCP服务器
用于通过pyirsdk收集iRacing遥测数据的MCP(模型上下文协议)服务器。此服务器遵循MCP标准,可以使用SSE(服务器发送事件)或HTTPS流与ElevenLabs集成。
快速开始
在一个终端中启动服务器,并在另一个终端上建立隧道,这样ElevenLabs远程客户端就可以到达可流式传输的HTTP端点。
- 启动MCP服务器(命令提示符或PowerShell#1)
cd C:\Users\dusti\OneDrive\Desktop\iracing-mcp-server
# Optional if you haven't created a venv yet:
# py -3.11 -m venv .venv
.\.venv\Scripts\activate
python -m iracing_mcp_server.server --transport http --host 0.0.0.0 --port 8000 --http-path /mcp --http-json-response让这扇窗户开着;它现在服务 http://localhost:8000/mcp 加 GET /health.
- 通过HTTPS公开它(命令提示符或PowerShell#2)
cd C:\Users\dusti\OneDrive\Desktop\iracing-mcp-server
cloudflared.exe tunnel --url http://localhost:8000 --no-autoupdateCloudflare打印公开 https://.trycloudflare.com URL。用以下方法进行测试:
curl https://.trycloudflare.com/health- 配置ElevenLabs Web用户界面
- 传输:流式HTTP - 端点: https://.trycloudflare.com/mcp - 健康检查: https://.trycloudflare.com/health
一旦ElevenLabs确认了健康探测,它就可以通过HTTPS调用每个MCP工具。
特性
- 实时遥测:收集实时遥测数据,包括速度、转速、档位、油门、刹车、转向和燃油液位
- 会话信息:访问轨迹名称、会话类型、天气状况和剩余时间
- 汽车信息:获取车辆ID、类别和轨道状态
- 位置和立场:赛道位置、班级位置、圈数和完成的圈数
- 态势感知:列出前方/后方附近的汽车,并注明相对间隙和速度
- Live Pass活动:当玩家获得位置时,自动发出MCP日志通知,以便ElevenLabs可以实时做出反应
- 符合MCP标准:与ElevenLabs和其他MCP客户端兼容
- SSE/HTTPS支持:适用于服务器发送事件和HTTPS流
需求
- Python 3.10或更高版本
- iRacing模拟器(必须正在运行才能收集数据)
- Windows操作系统(iRacing和pyirsdk需要)
安装
来源
# Clone the repository
git clone https://github.com/consolecowboy0/iracing-mcp-server.git
cd iracing-mcp-server
# Install dependencies
pip install -e .
# Or install from requirements.txt
pip install -r requirements.txt使用pip(发布时)
pip install iracing-mcp-server用法
运行服务器
默认(stdio)传输
在stdio上运行,这是MCP客户端在本地生成进程时的理想选择:
iracing-mcp-server
# or
python -m iracing_mcp_server.server服务器发送事件传输
通过HTTP公开服务器,以便ElevenLabs web UI等工具可以通过SSE连接:
# GET /sse streams responses, POST /messages/ receives client JSON-RPC payloads
iracing-mcp-server --transport sse --host 0.0.0.0 --port 8000 --sse-path /sse --messages-path /messages一个简单的健康探头可在 GET /health.
可流式HTTP传输
或者,使用流式HTTP传输(单个端点上的GET/POST/DELETE):
iracing-mcp-server --transport http --host 0.0.0.0 --port 8000 --http-path /mcp旗帜:
--http-json-response–使用JSON有效载荷而不是SSE事件进行响应。--http-stateless–如果您的客户端无法举行会话,请为每个请求创建一个新的MCP会话。
服务器暴露 GET /health 加上您通过配置的任何路径 --http-path.
与ElevenLabs集成
根据您的环境,您有两个选择:
- 本地MCP配置(stdio) -如前所述,将ElevenLabs指向本地命令:
{
"mcpServers": {
"iracing": {
"command": "iracing-mcp-server"
}
}
}- 基于HTTP/SSE的Web用户界面 -运行其中一个网络传输,并在ElevenLabs界面中输入URL:
- 上海证券交易所: - SSE流: http://: (默认值 /sse) - 消息POST端点: http://: (默认值 /messages/) - 流式HTTP: http://: (默认值 /mcp)
使用 GET /health 在将ElevenLabs指向服务器之前验证连接。
现场比赛活动
一旦客户端列出了工具或调用了任何MCP工具,服务器就会注册 与内部活动广播公司会面。当玩家的比赛位置 改进后,广播公司发出 notifications/message 记录器事件 名字 iracing.pass_events 包含描述过程的结构化JSON (type=player_pass、先前/当前位置以及经过的汽车)。 ElevenLabs将这些通知视为 客户端到服务器事件, 因此,代理人可以立即讲述真实世界的比赛时刻,而无需等待 另一个工具调用。
ElevenLabs无头客户端(SDK)
如果ElevenLabs UI无法启动本地stdio命令,请使用捆绑的SDK客户端:
# .env should define ELEVENLABS_API_KEY and ELEVENLABS_AGENT_ID
python -m iracing_mcp_server.elevenlabs_client亮点:
- 自动加载
.env(通过python-dotenv)并回落到ELEVENLABS_API_KEY/ELEVENLABS_AGENT_ID环境变量,因此您很少需要CLI标志 - 通过stdio启动MCP服务器(使用自定义
--command,--server-arg,--server-env,--server-cwd) - 实时将每个MCP工具注册为ElevenLabs客户端工具,以便代理可以调用它们
- 运行轻量级REPL(类型
/quit退出)。添加--text-only或--audio只有当您的代理明确允许覆盖对话模式时 - 与需要签名URL的私人代理配合使用
--requires-auth
您仍然可以显式覆盖任何值,例如。 --agent-id, --api-key,或运输标志。可用的入口点与 iracing-elevenlabs-client 通过安装时 pip.
可用工具
服务器提供以下工具:
- connect_iracing -连接到iRacing模拟器
- 断开连接 -断开与iRacing的连接
- check_connection -检查连接状态
- 遥测 -获取当前遥测数据(速度、RPM等)
- get_session_info -获取会话信息(轨迹、天气等)
- get_car_info -获取汽车信息
- get_position_info -获取位置和圈速数据
- get_周围环境 -显示前方/后方有相对间隙的附近车辆
- 获取所有数据 -在一次通话中获取所有可用数据
示例用法
- 启动iRacing并进入一个环节(练习、资格赛或比赛)
- 运行MCP服务器
- 使用连接到iRacing
connect_iracing工具 - 使用任何数据收集工具检索信息
- 使用完毕后断开连接
disconnect_iracing
发展
设置开发环境
# Clone the repository
git clone https://github.com/consolecowboy0/iracing-mcp-server.git
cd iracing-mcp-server
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install in development mode with dev dependencies
pip install -e ".[dev]"运行测试
pytest建筑
服务器由两个主要组件组成:
- IRacingDataCollector (
iracing_data.py):使用pyirsdk处理来自iRacing的连接和数据收集 - MCP服务器 (
server.py):实现模型上下文协议并公开数据访问工具
数据流
iRacing Simulator → pyirsdk → IRacingDataCollector → MCP Server → Client (ElevenLabs/etc)遥测数据可用
- 速度(m/s)
- RPM(每分钟转数)
- 档位(当前档位)
- 油门位置(0-1)
- 制动器位置(0-1)
- 方向盘角度
- 圈数
- 圈距百分比
- 燃油液位和百分比
- 发动机警告
可用会话信息
- 轨道名称和配置
- 训练类型(练习、资格赛、比赛)
- 会话时间和剩余时间
- 空气温度
- 轨道温度
- 天空情况
许可证
MIT许可证-有关详细信息,请参阅许可证文件
贡献
欢迎投稿!请随时提交拉取请求。
支持
有关问题和疑问,请使用 页面。
