Skip to main content
Glama
ellettie

iRacing MCP Server

by ellettie
README.md
# iRacing MCP Server

An MCP (Model Context Protocol) server for accessing iRacing telemetry data and game functionality.

## Overview

This project provides real-time telemetry data, leaderboard information, camera control, pit commands, replay functionality, and more from iRacing through the MCP protocol. It enables AI assistants and other applications to easily access iRacing data.

## Key Features

### šŸ“Š Telemetry Data
- Retrieve real-time telemetry values
- Get list of available telemetry variables

### šŸ Race Information
- Get leaderboard (competitive positions only)
- Access driver information, session information, weekend information, and split time information
- Monitor current flags and engine warnings

### šŸ“¹ Camera Control
- Get available camera groups
- Switch cameras (by car number, position, group specification)
- Check current camera status

### šŸ”§ Pit Operations
- Check pit service status
- Execute pit commands (refueling, tire changes, repairs, etc.)
- Manage safe pit operations

### šŸŽ¬ Replay Features
- Search and navigate replays
- Move between sessions, laps, and frames
- Jump to incident markers

## Requirements

- Python 3.13 or higher
- iRacing (must be running)
- uv

## Usage

### 1. Configure mcp.json
```json
{
    "mcpServers": {
        "iracing-mcp-server": {
            "command": "uvx",
            "args":["iracing-mcp-server"]
        }
    }
}
```

## Available Tools

### Telemetry Related
- `get_telemetry_names()` - Get available telemetry variables
- `get_telemetry_values(names)` - Get specified telemetry values

### Race Information
- `get_leaderboard()` - Get leaderboard
- `get_driver_info()` - Get driver information
- `get_session_info()` - Get session information
- `get_qualify_results_info()` - Get qualification results information
- `get_weekend_info()` - Get weekend information
- `get_split_time_info()` - Get split time information
- `get_radio_info()` - Get radio infomation
- `get_current_flags()` - Get current flags
- `get_current_engine_warnings()` - Get engine warnings

### Camera Control
- `get_camera_info()` - Get camera information
- `get_current_camera_status()` - Get current camera status
- `cam_switch(group_number, car_number_raw, position)` - Switch camera

### Pit Operations
- `get_current_pit_service_status()` - Get current pit service status
- `pit_command(commands_and_values)` - Execute pit command

### Replay Features
- `replay_search(search_commands)` - Search and navigate replay

## Development

### Dependencies
- `mcp[cli]>=1.12.2` - MCP protocol implementation
- `pyirsdk>=1.3.5` - iRacing SDK Python bindings

### Project Structure
```
iracing-mcp-server/
ā”œā”€ā”€ src/iracing_mcp_server/
│   ā”œā”€ā”€ __init__.py          # Main entry point
│   ā”œā”€ā”€ server.py            # MCP server implementation
│   ā”œā”€ā”€ leaderboard.py       # Leaderboard processing
│   └── prompt.py            # Prompt templates
ā”œā”€ā”€ pyproject.toml           # Project configuration
└── README.md               # This file
```

## License

This project is released under the MIT License.

## Acknowledgments

- [pyirsdk](https://github.com/kutu/pyirsdk) - Python bindings for iRacing SDK
- [MCP](https://modelcontextprotocol.io/) - Model Context Protocol

TDQS

C2.5/5.0

Scored across 17 tools

Disambiguation4/5

Most tools have clearly distinct purposes, but the camera-related tools (cam_switch, get_camera_info, get_current_camera_status) could cause confusion for an agent due to overlapping focus.

Naming Consistency3/5

The majority of tools follow a 'get_*' pattern, but there are exceptions like 'cam_switch', 'pit_command', and 'replay_search' that break the convention, making it somewhat inconsistent.

Tool Count5/5

With 17 tools, the set is well-scoped for an iRacing simulation server. Each tool serves a clear purpose without being excessive or insufficient.

Completeness4/5

The tool surface covers a broad range of simulation aspects (session, driver, leaderboard, telemetry, etc.), with only minor gaps such as missing dedicated live timing updates or additional race control commands.

Maintenance

ActivityInactive
ResponsivenessNo issues