iRacing MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_telemetry_valuesA | get telemetry values. to get available telemetry names, call get_telemetry_names. if you want to get all telemetry values, set names to None. Returns: dict: telemetry values |
| get_telemetry_namesD | get telemetry names Returns: list[str]: telemetry names |
| get_driver_infoC | get driver info Returns: dict: driver info |
| get_session_infoD | get session info Returns: dict: session info |
| get_weekend_infoD | get weekend info Returns: dict: weekend info |
| get_qualify_results_infoD | get qualify results info Returns: list[dict]: qualify results info |
| get_camera_infoC | get camera info Returns: list[dict]: camera info |
| get_radio_infoD | get radio info Returns: dict: radio info |
| get_split_time_infoB | Retrieves split time information for each sector of the track. Returns: dict: split time info |
| cam_switchD | switch camera |
| pit_commandC | apply pit command. before apply pit command, you should call get_current_pit_service_status. |
| replay_searchD | search replay |
| get_leaderboardB | get leaderboard Note: When filtering for competitive leaderboard results, exclude entries where: 1. if driver_name="Pace Car" (not a competitor. so ignore this row from leaderboard) 2. if is_missing_start=True (indicates missed start. so this car is not correct position) 3. if is_towing=True (indicates towing. so this car is not correct position) 4. if status="not_in_world" (not in world. so this car is not correct position) Returns: list: leaderboard each element is a dict with the following keys: - car_idx: int - position: int | None - class_position: int | None - car_number: int - car_number_raw: int (use this value for camera switching functions) - driver_name: str - team_name: str - irating: int - license_str: str - lap_and_lap_dist_pct: float - best_lap_time: float - last_lap_time: float - car_name: str - class_name: str - class_est_time: float - gap_to_leader_str: str - gap_to_next_str: str - gap_to_class_leader_str: str - gap_to_class_next_str: str - flags: list[str] (e.g. ["black", "repair", "furled", "servicible"]. "servicible" means no flags) - status: str (e.g. "off_track", "in_pit_stall", "approaching_pits", "on_track", "not_in_world") - is_missing_start: bool - is_towing: bool |
| get_current_pit_service_statusC | get current pit service status Returns: list[str]: current pit service status |
| get_current_engine_warningsA | get current engine warnings Returns: list[str]: current engine warnings |
| get_current_flagsD | get current flags Returns: list[str]: current flags |
| get_current_camera_statusB | get current camera status Returns: dict: current camera status - target_car_idx: int - camera_group_number: int - camera_number: int |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| iracing_tool_usage | iracing tool usage Returns: str: iracing tool usage |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
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.
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.
With 17 tools, the set is well-scoped for an iRacing simulation server. Each tool serves a clear purpose without being excessive or insufficient.
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.