ac-race-engineer
Supports an in-game Lua app (via CSP) that provides driver complaint tagging, status overlay, and message display from Claude.
Example car reference (ks_mazda_mx5_cup.ini) used to demonstrate setup range clamping with setup.ini files.
Provides the runtime environment for the MCP server, with tools for managing Python execution paths and packages.
Stores lap telemetry data persistently, allowing lap storage, retrieval, and comparison for analysis.
Assetto Corsa is distributed via Steam; the server integrates with the game's installation directory and shared memory telemetry.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ac-race-engineerread my current telemetry and tell me if I'm oversteering in T3"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ac-race-engineer
MCP server that turns Claude into a race engineer for original Assetto Corsa. It reads AC's shared memory telemetry, stores laps in SQLite, reduces them to engineer-grade summaries, and can read/write setup files that appear directly in the in-game setup menu.
Runs on the Windows machine running Assetto Corsa. Original AC only (uses the
acpmf_* shared memory layout, not ACC's).
Install (Windows — the easy way)
Prerequisite: Python 3.10+ from python.org. On the installer's first screen tick "Add python.exe to PATH". Don't use the Microsoft Store build — its sandboxing breaks shared-memory access.
Then, in this folder: right-click install-windows.bat → Open (or just
double-click it).
That's it. The installer finds Python, installs the package, writes the Claude
Desktop config (merging with any MCP servers you already have, and taking a
backup first), locates your Assetto Corsa install, and copies the in-game Lua
app into place. Re-run it any time after a git pull; it updates in place.
If it can't find Assetto Corsa, tell it where to look. Flags go on the .bat,
not the .ps1 — Windows blocks .ps1 files from running directly under the
default execution policy, and the .bat exists to work around exactly that:
install-windows.bat -AcPath "D:\Games\steamapps\common\assettocorsa"Other flags: -SkipLuaApp, -Uninstall.
After installing, fully quit Claude Desktop and reopen it. Closing the
window isn't enough — right-click the Claude icon in the system tray (bottom
right, possibly hidden under the ^ arrow) and choose Quit.
Related MCP server: fastf1-mcp-server
Install (manual)
python -m pip install -e .Then add the server to claude_desktop_config.json. The fastest way to open
that file is Claude Desktop → Settings → Developer → Edit Config, which
creates it if missing and opens the containing folder — no filesystem
archaeology required.
%APPDATA% is an environment variable, not a literal path. It expands to
C:\Users\<you>\AppData\Roaming — and AppData is a hidden folder, so
browsing to it in Explorer shows nothing unless you enable View → Hidden items.
The bigger gotcha: %VAR% is cmd.exe syntax. Windows Terminal defaults to
PowerShell, where the same variable is spelled $env:VAR. So:
Where | What to type |
PowerShell / Windows Terminal |
|
cmd.exe |
|
Explorer address bar |
|
Win+R (Run dialog) |
|
To open the folder rather than the file, use explorer $env:APPDATA\Claude
in PowerShell.
{
"mcpServers": {
"ac-race-engineer": {
"command": "C:\\Users\\<you>\\AppData\\Local\\Programs\\Python\\Python312\\python.exe",
"args": ["-m", "ac_race_engineer.server"]
}
}
}Use the absolute path to python.exe, not bare "python". Claude Desktop
launches MCP servers without your shell's PATH, so a bare command frequently
fails silently. Get the correct path with:
py -c "import sys; print(sys.executable)"Don't use (Get-Command python).Source — on stock Windows that often returns
...\WindowsApps\python.exe, the Microsoft Store alias stub, which is the
wrong answer. Remember JSON needs backslashes doubled (\\).
(If you use Claude Code instead:
claude mcp add ac-race-engineer -- python -m ac_race_engineer.server)
Optional environment overrides:
AC_DOCS_DIR— AC documents folder (default~/Documents/Assetto Corsa)AC_ENGINEER_DATA— DB + ranges location (default~/.ac-race-engineer)AC_ENGINEER_BRIDGE_PORT— in-game app bridge port (default9666)
Troubleshooting
Claude doesn't list the tools. Confirm you fully quit and reopened Claude Desktop (tray icon → Quit). Then read the server log:
notepad $env:APPDATA\Claude\logs\mcp-server-ac-race-engineer.logTyping python opens the Microsoft Store (or says "not recognized").
Windows ships an app-execution-alias stub at
%LOCALAPPDATA%\Microsoft\WindowsApps\python.exe that hijacks the name when no
real Python is on PATH. Install Python from python.org with "Add python.exe to
PATH" ticked, or use the py launcher (py -3 -m pip install -e .) — the
python.org installer sets that up by default. You can also kill the stub in
Settings → Apps → Advanced app settings → App execution aliases.
The installer already ignores anything under WindowsApps, so this only bites
you on a manual install.
.ps1 cannot be loaded because running scripts is disabled. That's the
execution policy. Use install-windows.bat instead — it bypasses the policy
for that one script without changing any system setting.
Setup values don't stick in-game. You're writing outside the car's legal range and AC is silently ignoring them — see the next section.
The tuning loop
Start AC, get on track.
Tell Claude: "start recording and confirm you can see the session" (
start_recording,live_snapshot).Drive 3–5 laps. Laps store automatically as they complete; off-track excursions (>2 tyres out) mark a lap invalid.
"Summarize my last lap and read my current setup" (
list_laps,lap_summary,read_setup). The summary includes per-corner min speed, brake points, tyre pressures/temps, and a slip-balance metric (positive = understeer, negative = oversteer).Discuss what the car is doing; Claude writes a revised setup with
write_setup(e.g. asclaude_v1).Pit, load
claude_v1from the setup screen, drive again."Compare my best lap on the new setup against lap N" (
compare_laps) — corner-by-corner min speed and brake point deltas show whether the change actually worked.
Setup value clamping (recommended)
AC silently ignores setup values outside the ranges defined in the car's
setup.ini (inside data.acd). To let the server clamp and snap values to
each car's legal min/max/step:
In Content Manager: car page → unpack data (or use QuickBMS).
Copy the car's
setup.iniinto the ranges folder, named after the car's folder name — e.g.ks_mazda_mx5_cup.ini.
To open that folder (the installer already created it):
explorer $env:USERPROFILE\.ac-race-engineer\ranges(cmd.exe: explorer %USERPROFILE%\.ac-race-engineer\ranges)
Without a ranges file, writes still work but come back with a warning, and you should sanity-check the values in the setup screen.
In-game app (CSP Lua)
install-windows.bat copies this in for you. To do it by hand, copy
lua_app/race_engineer/ to assettocorsa/apps/lua/race_engineer/ (requires
Custom Shaders Patch; you already have it if you use Content Manager with CSP
enabled). Enable it from the in-game apps sidebar — move the mouse to the right
edge of the screen while in a session.
Not sure where Assetto Corsa is installed? In Steam, right-click Assetto Corsa → Manage → Browse local files.
What it does:
Complaint tags while driving — Understeer / Oversteer / Braking / Traction buttons, each bindable to a wheel button via the app's Settings window (they show up as CSP control bindings). Pressing one records your exact spline position, lap, and speed. Claude reads them with
get_driver_notesand correlates them with corner telemetry: "you flagged understeer twice at spline 0.34 — that's the corner where front slip exceeds rear by 0.09".Status overlay — recording indicator + laps stored, so you never alt-tab to check.
Messages from Claude —
send_driver_messageputs a note on the overlay ("claude_v2 saved — pit and load it"); dismiss with OK.
The app talks to the server's HTTP bridge on 127.0.0.1:9666 (change with
AC_ENGINEER_BRIDGE_PORT, and edit BASE in the Lua to match). The bridge
binds localhost only.
Layout
ac_race_engineer/
sim_info.py shared memory structs (physics / graphics / static)
collector.py background sampler -> SQLite, lap boundary detection
db.py schema + storage
analysis.py corner detection, lap summaries, lap comparison
setups.py setup INI read/write, range clamping
bridge.py localhost HTTP bridge for the in-game app
server.py MCP tools
lua_app/
race_engineer/ CSP Lua in-game app (copy to apps/lua/)
install-windows.ps1 one-shot Windows installer
install-windows.bat double-clickable wrapper for the aboveNotes / future ideas
Sampling is 25Hz — plenty for setup work while keeping the DB tiny. Bump
TARGET_HZin collector.py if you want finer traces.Out-laps (no valid time) are skipped automatically.
Corner detection is generic (speed minima); a per-track corner-name map would make Claude's advice read nicer ("T3/Variante" vs "corner at 0.34").
CSP/Lua could expose damper velocities and more channels than stock shared memory if you ever want deeper suspension work — Telemetrick's source is a good reference.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceEnables AI-powered racing coaching and telemetry analysis for iRacing, providing real-time racing advice, car spotting, lap analysis, and conversational interaction with racing data through live telemetry streaming.2MIT
- AlicenseAqualityCmaintenanceMCP server for Formula 1 data via the FastF1 library. Ask Claude (or any MCP-compatible client) about race results, lap times, telemetry, standings, pit stops, and qualifying — with historical data back to 1950 via the Ergast API.21MIT
- AlicenseAqualityCmaintenanceA local MCP server that gives Claude (or any MCP-compatible AI client) access to Formula 1 race data. Load any session from 2018 onwards, ask questions in natural language, and get answers backed by real telemetry, timing, and strategy data.171MIT
- AlicenseAqualityAmaintenanceTurn Claude into your F1 race engineer.307MIT
Related MCP Connectors
Garmin data in Claude: 135 tools — activities, sleep, HRV, training, workouts. Free, open source.
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Persistent context for Claude. Your AI always knows your projects and next actions across sessions.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/mishan/assetto-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server