
CarMaker
io.github.De-Ioannidisv0.1.1Updated Oct 7, 2026
Drive IPG CarMaker for Simulink: run test runs, read results, edit vehicle data and parameters.
Overview
Lets an assistant drive IPG CarMaker on Windows: start sessions, run test runs, read results, and edit vehicle and Simulink parameters.
- What it does
- Connects an AI agent to IPG CarMaker on the same Windows machine. It starts a session (MATLAB, the Simulink model and the CarMaker GUI, or a standalone CarMaker process), loads and runs test runs, waits for them, and reads .erg result files for summaries and time series. It also lists and edits project files, reads and sets MATLAB and Simulink workspace variables and block parameters, runs parameter studies, and keeps a change log with undo and restore.
- When to use it
- Use it for vehicle-dynamics and controller work in CarMaker, such as running a braking or slalom test run, comparing controller gains, or sweeping a vehicle parameter and tabulating results. It is aimed at standalone runs and CarMaker for Simulink runs; scenario building, Test Manager, HIL, other result formats and remote machines are out of scope.
- Requirements
- Windows 10 or 11, IPG CarMaker with its Python API, and uv (or pip) to run the PyPI package carmaker-mcp via uvx. MATLAB-connected sessions additionally need CarMaker for Simulink and MATLAB R2022b or newer with the matching matlabengine package. CM_PROJECT (the CarMaker project folder) is required; CM_MODEL, CM_MATLAB_INIT and other CM_ variables are optional. An MCP client is needed.
Installation
In SourceWeft
- Open CarMaker in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
carmaker-mcp
An MCP server that lets an AI agent drive IPG CarMaker on your computer: start a session, run test runs, read the results, change vehicle data and Simulink controller parameters, and undo what it changed.
Unofficial community project, not affiliated with or endorsed by IPG Automotive or MathWorks. You need your own CarMaker and MATLAB/Simulink licences. This repository contains no IPG or MathWorks code or data.
Status: alpha. Developed and tested on one setup (CarMaker 14.1.1, MATLAB R2024b, Windows 11). docs/verification.md lists what has been checked against real software and what has not.
Contents: What it does · What it does not cover · Requirements · Setup · With the MATLAB MCP server · Settings · Tools · Safety and privacy · Troubleshooting · How it works
What it does
Things you can ask an agent once the server is connected:
- "Run the braking test run and tell me the stopping distance."
- "Set
Kp_yawto 1.5 in the controller model, run the slalom again and compare the yaw rate." - "Try the lane change with a vehicle mass of 280, 300 and 320 kg and tabulate the lateral acceleration."
- "The last run aborted. Why?"
- "Undo everything you changed."
It works in two ways, and the agent picks the one that fits the vehicle:
More worked examples: docs/examples.md.
What it does not cover
The server was written for vehicle-dynamics and controller work in a Formula Student team, where every run was either a standalone run or a CarMaker for Simulink run. CarMaker can do much more than that, and the rest is outside what this server does or has been tried with.
Not supported (there are no tools for it):
- Other platforms and products: Linux; TruckMaker and MotorcycleMaker; CarMaker HIL and CarMaker Office Extended (real-time hardware, Fail Safe Tester, bus interfaces such as CAN, FlexRay, SOME/IP, XCP).
- CarMaker's own test automation: Test Manager and test series, test reports, parallel (HPC) execution, batch mode with start-up files. The server runs its own parameter studies instead, one run after another.
- Building scenarios: the Scenario Editor and roads, traffic, sensors, the environment, OpenSCENARIO import.
cm_editchanges keys in files that exist; it does not author these things. - Most visualisation: Movie NX, IPGControl, Instruments, video export, Model Check. Of IPGMovie, only single pictures.
- Other result formats: only
.ergfiles are read, not MDF or ASCII. - Rebuilding the simulation program: models in C code or generated with Simulink Coder.
- Remote machines: CarMaker and MATLAB must run on the computer the server runs on.
May work, never tested:
- FMUs, CarMaker exported as an FMU, third-party tyre models and other co-simulation tools.
- Encrypted or protected data files.
- CarMaker and MATLAB versions other than the ones named above; more than one MATLAB session or CarMaker GUI at a time.
- Several standalone runs in parallel, pausing and resuming a standalone run, parameter studies on standalone runs.
- Test runs with traffic, sensors or driver-assistance functions. Nothing stands in their way, but every check so far used vehicle-dynamics runs without them.
The state of each tool is in docs/verification.md. Reports from other setups are welcome.
Requirements
- Windows 10 or 11
- IPG CarMaker with its Python API (developed on 14.1.1)
- For the MATLAB-connected session: CarMaker for Simulink and MATLAB R2022b or newer, as far as your CarMaker supports it (see the table in step 1; only R2024b has been tested)
- uv (it fetches the server and its Python environment; pip also works, see docs/setup.md)
- An MCP client: Claude Code, Claude Desktop, VS Code with GitHub Copilot, Codex, Antigravity, Cursor, ...
Setup
1. Check your machine
This finds your CarMaker and MATLAB installs, tells you what does not fit and how to fix it, and prints the
uvx arguments for your machine. They look like this:
The two extra arguments matter, which is why the tool works them out for you:
--python 3.12selects a Python version that both your CarMaker and your MATLAB release work with. Without ituvxmay pick a newer Python that neither can use.--with "matlabengine==24.2.*"adds the MATLAB engine package for your MATLAB release. Leave it out if you only use standalone runs.
Both depend on the MATLAB release, because MathWorks publishes one engine package per release and each installs only on some Python versions:
Only the R2024b row has been run against real software. The others follow from the engine packages' published requirements and are untested; reports are welcome. MATLAB R2022a and older cannot be used for the MATLAB-connected session, because their engine packages need a Python older than this server supports (standalone runs still work).
To look at the tools without CarMaker installed: uvx carmaker-mcp --mock.
2. Register the server in your MCP client
Every client needs the same three things: the command uvx, the arguments from step 1, and your settings as
environment variables. The settings you will normally set:
CM_PROJECT: your CarMaker project folder.CM_MATLAB_INIT: if you normally start work by running a MATLAB script of your project (one that adds folders to the path and opens the model), name it here so that the agent runs it too.CM_MODEL: the Simulink model the agent opens when it starts a session. A name on the MATLAB path, or a path relative to the project'ssrc_cm4slfolder. If you leave it out, the agent is shown the models it finds and picks one or asks you.
Pick your client below. The examples assume MATLAB R2024b and Python 3.12; replace the arguments with the ones
doctor printed. Or let the server write the entry for you, with every CM_ variable set in your shell
filled in:
Claude Code
Run in a terminal:
Add further settings with more --env NAME="value" before the --. With --scope project the entry goes
into a .mcp.json in the current folder, where you can edit its env block later; otherwise remove and add
it again (claude mcp remove carmaker). claude mcp list shows whether the server connects.
Claude Desktop
One-click bundle. Download the .mcpb file for your MATLAB release from the
latest release (the table in step 1 names them) and drag
it into Settings > Extensions. Fill in the project folder, the model and, if your project has one, its
MATLAB setup script in the dialog; Configure changes them later. The bundle holds the server but not its
Python environment: Claude Desktop builds that with uv on first use, so uv must be installed.
By hand. Settings > Developer > Edit Config opens claude_desktop_config.json. Add the entry and
restart Claude Desktop:
GitHub Copilot in Visual Studio Code
Create .vscode/mcp.json in your workspace (for all workspaces: MCP: Open User Configuration in the
Command Palette):
Click Start above the entry, then use Copilot Chat in agent mode.
Codex
Run in a terminal:
or edit C:\Users\<username>\.codex\config.toml:
Codex starts servers with a reduced environment; env_vars = ["WINDIR"] passes on a Windows variable that
MATLAB's libraries need.
Antigravity
In the agent panel open the ... menu, then MCP Servers > Manage MCP Servers > View raw config. Add the
entry to the mcp_config.json that opens, save, and press Refresh in the server list:
Cursor and other clients
Cursor: create .cursor/mcp.json in your project (or ~/.cursor/mcp.json for all projects) with the same
content as shown for Antigravity. Most other clients use that mcpServers format too.
In JSON and TOML, write Windows paths with double backslashes or with forward slashes. So far only Claude Code has been used with this server; the other entries follow each client's documented format.
3. Start a session
Ask the agent, for example "start CarMaker and run the braking test run". It opens MATLAB, your model and the CarMaker GUI as far as they are not open yet, and never closes anything.
If you would rather open MATLAB and CarMaker yourself, run this once per MATLAB session (or put it into
startup.m) so that the server can attach:
Standalone runs need neither.
Using it with the MATLAB MCP server
For CarMaker for Simulink work it is worth connecting MathWorks' MATLAB MCP Core Server as well. It is optional, and standalone runs do not need it. The two servers do different jobs:
Things to know when you use both:
- Let both work on the same MATLAB session (set the MATLAB server up to use your open MATLAB, see its README), so that they see the same model and workspace. This is how the pair was used during development.
- MATLAB does one thing at a time. While a model compiles or a simulation runs, calls through the MATLAB server wait. This server's run tools are built around that (time-limited waits that are simply repeated).
- Start and stop runs with this server's tools, so that it can follow the run (result file, errors, storage mode).
- What is changed through the MATLAB server is not in this server's change log, and
cm_revert_alldoes not undo it.
Settings
All settings are environment variables in the client entry, set like CM_PROJECT and CM_MODEL above.
Common
Advanced
Tools
Each tool tells the client whether it is read-only, changes state, or is destructive, so that clients can ask for confirmation where it matters. Every parameter is described in docs/tools.md.
Session and runs
Results
Project data and parameters
Standalone runs (no MATLAB)
History
The server also provides resources (carmaker://guide, carmaker://status, carmaker://changelog,
carmaker://log) and three prompts (run_and_summarise, compare_settings, undo_session).
Safety and privacy
This server can start simulations and edit your project files and the live Simulink model in place. Connect it only to agents you trust.
What protects your work:
- Every file is backed up before its first change, every change is logged with its old value, and
cm_revert_allundoes a session. - Files are only written inside the project folder, and only while the simulation is idle. No tool deletes project files.
- Raw Tcl and Simulink structure edits are off unless you switch them on with
CM_ENABLE. - CarMaker pop-ups wait for your click by default. If you set
CM_POPUP_TIMEOUT, a question such as "Vehicle not saved. All changes will be lost. OK to continue?" is answered with its default, which discards unsaved changes in the CarMaker GUI.
Runs write result and log files into the project's SimOutput folder; a revert does not remove those.
The server collects no telemetry and makes no network connections of its own. It only talks to MATLAB and CarMaker on your machine. Details: docs/safety.md.
Troubleshooting
Run uvx carmaker-mcp doctor first: it names most setup problems together with their fix.
More: docs/troubleshooting.md.
The server's own log is server.log in the state folder.
How it works
- MATLAB-connected session: the server attaches to your MATLAB through the MATLAB Engine for Python and
sends commands to the CarMaker GUI through CarMaker for Simulink's own
cmguicmd(the GUI's Tcl / ScriptControl interface). - Standalone runs: it uses IPG's Python API
cmapi, loaded from your CarMaker install, to start and control a separate CarMaker process. - Project files are edited by a byte-preserving editor for CarMaker's infofile format, and results are
read by a NumPy reader for
.ergfiles (checked against MATLAB'scmread).
Nothing of IPG's or MathWorks' is bundled or redistributed.
Documentation and contributing
- Setup in detail (pip, updating, the single-file executable)
- Example sessions
- Tools reference
- What is verified
- Contributing: test reports from other CarMaker and MATLAB versions are especially welcome
- Security policy
Related work: pycarmaker talks to the command port of a standalone CarMaker program. This project also covers CarMaker for Simulink, uses IPG's own interfaces, and shares no code with it.
Licence
MIT, see LICENSE.
Source: README.md at commit 357af1d
Tools
0Version history
1- v0.1.1LatestOct 7, 2026


