Skip to main content
Glama
emilioSp

iRacing Data MCP Server

by emilioSp

iRacing Data MCP Server 🏎️

A Node.js Model Context Protocol (MCP) server that provides seamless access to iRacing's racing simulation data API. This project serves as both a standalone CLI tool and an MCP server for AI assistant integration.

npm version License: MIT

🌟 Features

🤖 MCP Server Integration

  • AI Assistant Ready: Seamlessly integrate with Claude, ChatGPT, and other AI assistants

  • Real-time Data Access: Live access to iRacing's comprehensive racing data

  • Automatic Authentication: Handles login and session management automatically

  • Type-safe Operations: Full TypeScript support with Zod schema validation

📊 Data Access

  • Member Profiles: Detailed driver information including licenses and ratings

  • Team Information: Comprehensive team data and statistics

  • Career Statistics: Complete racing career history and achievements

  • Season Recaps: Detailed season performance and progression

  • Driver Lookup: Search and find drivers by name

  • API Documentation: Built-in access to iRacing's API documentation

🛠️ Dual Interface

  • MCP Server: For AI assistant integration

  • CLI Tool: For direct command-line access and automation

Related MCP server: OpenF1 MCP Server

📖 Usage

As MCP Server

Configuration for LLM Clients

To use this MCP server with AI assistants like Claude Desktop, add the following configuration to your MCP settings file: For Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "iracing-data-mcp-server": {
      "command": "npx",
      "args": [
        "iracing-data-mcp-server@latest",
        "@modelcontextprotocol/server-filesystem",
        "/path/to/your/cookie-jar-file"
      ]
      "env": {
        "COOKIE_JAR": "/path/to/your/cookie-jar-file",
        "EMAIL": "your.email@example.com",
        "API_KEY": "your_api_key_here"
      }
    }
  }
}

Available MCP Tools

The server will run and provide the following tools to AI assistants:

Tool

Description

Parameters

login

Authenticate with iRacing

None

get_members_profile

Get member profile data

member_ids: number[]

get_team

Retrieve team information

team_id: string

get_member_recap

Get season recap data

member_id: number, year?: number, season?: number

get_member_career

Get career statistics

member_id: number

driver_lookup

Search for drivers

driver_name: string

📹 Watch the video

Watch the video

As CLI Tool

Environment Setup

Create a .env file in your project directory:

# Required: Path to store authentication cookies
COOKIE_JAR=./cookies.txt

# Required: Your iRacing account credentials
EMAIL=your.email@example.com

# Option 1: Use your iRacing password
PASSWORD=your_password

# Option 2: Use pre-generated API key (recommended for security)
# API_KEY=your_api_key_here

Initial Authentication

Before using the cli, authenticate with iRacing:

npm run login

Use the command-line interface for direct data access:

Get Member Profile

# Single member
npm run api member 123456

# Multiple members
npm run api member 123456,789012

Get Team Information

npm run api team 123456

Get Member Career Data

npm run api member-career 123456

Get Season Recap

# Current season recap
npm run api member-recap --member-id 123456

# Specific year and season
npm run api member-recap --member-id 123456 --year 2024 --season 1

Driver Lookup

npm run api driver-lookup "Max Verstappen"

API Documentation

npm run api documentation

🔧 Development Setup

Prerequisites

  • Node.js 24+

  • npm

  • iRacing account with active subscription

Clone and Install

git clone https://github.com/yourusername/iracing-data-mcp-server.git
cd iracing-data-mcp-server
npm install

🔐 Authentication & Security

API Key vs Password

Recommended: Use an API key for enhanced security:

  1. Generate API Key:

    const crypto = require('crypto');
    const apiKey = crypto.createHash('sha256')
      .update(password + email)
      .digest('base64');
  2. Set in Environment:

    API_KEY=your_generated_api_key
    # Remove PASSWORD variable when using API_KEY

The server automatically manages authentication cookies:

  • Stores cookies in the path specified by COOKIE_JAR

  • Automatically refreshes expired sessions

  • Handles authentication errors gracefully

Available Tools

6 tools
driver_lookupD
ParametersJSON Schema
NameRequiredDescriptionDefault
driver_nameYes

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_member_careerD
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYes

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_member_recapD
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYes
yearNo
seasonNo

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_members_profileD
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idsYes

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_teamD
ParametersJSON Schema
NameRequiredDescriptionDefault
team_idYes

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

loginD
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 6 tool updatesv1.3.2
    • First observeddriver_lookup
    • First observedget_member_career
    • First observedget_member_recap
    • First observedget_members_profile
    • First observedget_team
    • First observedlogin

TDQS

D1.7/5.0
Disambiguation3/5

The tools are mostly distinct in purpose (e.g., driver_lookup vs. get_team vs. login), but there is some overlap between get_member_career, get_member_recap, and get_members_profile, which all seem to retrieve member-related data with unclear boundaries. Without descriptions, it's ambiguous whether these tools serve different aspects of member information or could be consolidated.

Naming Consistency4/5

The naming follows a consistent snake_case pattern throughout, with a mix of verb_noun (e.g., driver_lookup, get_member_career) and noun-only (e.g., login) styles. While not perfectly uniform in verb usage, the structure is readable and predictable, with only minor deviations from a strict convention.

Tool Count4/5

With 6 tools, the count is reasonable for a data server focused on iRacing, covering key operations like login, member data retrieval, and team info. It's slightly lean but not overly sparse, as it includes essential functions without obvious bloat, though more tools might be expected for a comprehensive racing data service.

Completeness2/5

The tool set is significantly incomplete for an iRacing data server, lacking obvious gaps such as tools for race results, standings, schedules, or car/track data. It focuses narrowly on member and team profiles without covering broader racing data, which will likely cause agent failures when trying to perform common tasks like fetching race outcomes or event details.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables access to Formula 1 data from the openF1.org API, including driver information, race results, lap times, telemetry, pit stops, weather conditions, and live position data across multiple seasons.
    -
  • A
    license
    A
    quality
    D
    maintenance
    Integrates iRacing with the Model Context Protocol to retrieve profile statistics and iRating charts for any category.
    2
    9
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides live Formula 1 data such as driver standings, race results, and schedule for the current season, enabling users to ask about F1 without stale training data.
    1
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/emilioSp/iracing-data-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server