# CarMaker (pypi · carmaker-mcp)

Drive IPG CarMaker for Simulink: run test runs, read results, edit vehicle data and parameters.

- Trust score: 88/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- pypi · `carmaker-mcp`: 88/100 (this document), [markdown](https://verifymcp.io/servers/de-ioannidis-carmaker-mcp/carmaker-mcp.md), [page](https://verifymcp.io/servers/de-ioannidis-carmaker-mcp/carmaker-mcp)

## Channel facts

- Registry: `pypi`
- Package: `carmaker-mcp`
- Version: `0.2.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs setuptools.build_meta at install time, a recognised build step with no custom scripting around it.
  - 1 of 16 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 74/100
  - Repository check failed: the declared repository URL redirects; it must resolve directly.
  - Cryptographically verified build provenance (signed, bound to De-Ioannidis/carmaker-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 3 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 83/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 5177 tokens (~99/item across 52 items; 48 tools + 4 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 73/100
  - Stability observed for 22 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (94% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 50 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the CarMaker MCP server?

CarMaker runs locally as a PyPI package, launched with uvx carmaker-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add de-ioannidis-carmaker-mcp -- uvx carmaker-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "de-ioannidis-carmaker-mcp": {
      "command": "uvx",
      "args": [
        "carmaker-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "de-ioannidis-carmaker-mcp": {
      "command": "uvx",
      "args": [
        "carmaker-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add de-ioannidis-carmaker-mcp -- uvx carmaker-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "de-ioannidis-carmaker-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "carmaker-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add de-ioannidis-carmaker-mcp --command uvx --arg carmaker-mcp
```

### Hermes

```yaml
mcp_servers:
  de-ioannidis-carmaker-mcp:
    command: "uvx"
    args: ["carmaker-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "de-ioannidis-carmaker-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "carmaker-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add de-ioannidis-carmaker-mcp -t stdio -c uvx -a carmaker-mcp
```

### Other

```json
{
  "mcpServers": {
    "de-ioannidis-carmaker-mcp": {
      "command": "uvx",
      "args": [
        "carmaker-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 88, +1)

No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-02 (score 87, +16)

- [security improvement] Malware scan: unverified → pass

### 2026-11-01 (score 71, −15)

- [security regression] Malware scan: pass → unverified

### 2026-10-31 (score 86, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-29 (score 85, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-27 (score 84, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-25 (score 83, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-22 (score 82, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (48)

### `cm_session_start` (~242 tokens)

Start the CarMaker for Simulink session

Bring up a CarMaker for Simulink session as far as it is missing: start MATLAB (visible, in the
project's src_cm4sl folder, engine shared), run cmenv, open the Simulink model and open the CarMaker
GUI. Nothing is restarted or closed. Returns ready=true, or ready=false with what it is waiting
for: call again until ready. Without a model it opens none and lists models_loaded and
models_found to choose from. Many projects need their own setup script before the model compiles:
if init_scripts_found lists one, pass it as init.

Input parameters:

- `init`: The project's own MATLAB setup script, run once per MATLAB session before the model is opened (default: CM_MATLAB_INIT). A name from init_scripts_found, or a full path
- `max_wait_s` (number): Longest time to wait in seconds; keep it below your client's tool time-out and call again if not finished
- `model`: Simulink model to open: a name on the MATLAB path, a path as listed in models_found, or a full path (default: CM_MODEL)

### `cm_doctor` (~43 tokens)

Check the setup

Check the setup: CarMaker install, Python version, MATLAB release and engine, shared MATLAB
session, GUI, project folder. Each failed check comes with its fix.

### `cm_status` (~70 tokens)

Simulation status

Simulation state, active Simulink model, project directory, last end status, the GUI's storage
mode (save_mode) and gui_all_saved (false: the GUI holds unsaved data and will ask before a load;
true is no guarantee, an edit in an open editor window is not counted).

Output parameters:

- `active_model`
- `connected` (boolean)
- `details` (object)
- `end_status`
- `gui_all_saved` (boolean)
- `matlab_simstate`
- `project_dir`
- `save_mode` (string)
- `session_id`
- `sim_status` (string)
- `sim_status_code`

### `cm_load_testrun` (~89 tokens)

Load a test run

Load a test run into the CarMaker GUI. Requires an idle simulation. Find names with
cm_list('testrun').

Input parameters:

- `force` (boolean): Do not let the GUI ask about unsaved data; that data is discarded
- `name` (string, required): Test run relative to Data/TestRun, e.g. 'Examples/BasicFunctions/Driver/BackAndForth'

### `cm_start_sim` (~158 tokens)

Start the simulation

Start the loaded test run. Returns once it is running; fails at once, with Simulink's error,
if the model does not compile. Then call cm_wait_end until it reports finished.

Input parameters:

- `save` (string): save: write a result file (GUI storage mode becomes 'Save all', cm_revert_all puts it back). collect: buffer only. keep: leave the GUI setting alone
- `save_logs` (boolean): Also save what Simulink logged in this run to a MAT file next to the result file, as cm_model_logs_save does; cm_wait_end returns it as logs_file
- `start_timeout_s` (number): How long the start may take (a Simulink model may compile first)

Output parameters:

- `after_s` (number)
- `carmaker_project_restored` (object)
- `matlab_folder_restored` (object)
- `note` (string)
- `popups` (array)
- `save_mode`
- `started` (boolean)
- `state` (string)

### `cm_stop_sim` (~51 tokens)

Stop the simulation

Stop the running simulation. With wait_s > 0 it returns what cm_wait_end returns.

Input parameters:

- `wait_s` (number): Wait this long for the simulation to become idle (0: do not wait)

Output parameters:

- `distance_m` (number)
- `elapsed_s` (number)
- `end_status`
- `finished` (boolean)
- `live` (object)
- `log_errors` (array)
- `logs_error` (string)
- `logs_file` (string)
- `note` (string)
- `poll_errors` (integer)
- `popups` (array)
- `result_file`
- `sim_time_s` (number)
- `simulink_error` (string)
- `state` (string)
- `stop_requested` (boolean)
- `testrun` (string)
- `waited_s` (number)

### `cm_wait_end` (~96 tokens)

Wait for the simulation to end

Wait until the simulation is idle again. finished=true: end status, simulation time and
distance, result_file, new log errors and pop-ups. finished=false: current state and live values;
call again to keep waiting.

Input parameters:

- `poll_s` (number): Seconds between status polls
- `timeout_s` (number): Longest time to wait in seconds; keep it below your client's tool time-out and call again if not finished

Output parameters:

- `distance_m` (number)
- `elapsed_s` (number)
- `end_status`
- `finished` (boolean)
- `live` (object)
- `log_errors` (array)
- `logs_error` (string)
- `logs_file` (string)
- `note` (string)
- `poll_errors` (integer)
- `popups` (array)
- `result_file`
- `sim_time_s` (number)
- `simulink_error` (string)
- `state` (string)
- `stop_requested` (boolean)
- `testrun` (string)
- `waited_s` (number)

### `cm_log` (~65 tokens)

Read the CarMaker session log

Last lines of the newest CarMaker session log of the project. Use it when a run aborts or does
not start.

Input parameters:

- `level` (string): warning: warnings and errors only; error: errors only
- `lines` (integer): Number of lines from the end

### `cm_live` (~46 tokens)

Read live quantities

Current values of CarMaker quantities during a run (or the last values after it).

Input parameters:

- `quantities` (array, required): CarMaker quantity names, e.g. ['Time', 'Car.v']

### `cm_dva_write` (~98 tokens)

Overwrite a quantity (DVA)

Overwrite a quantity during a run via Direct Variable Access.

Input parameters:

- `duration_ms` (integer): How long the override lasts in ms (-1: until released or the run ends)
- `mode` (string): Absolute value, offset or factor; Ramp variants blend in
- `name` (string, required): Quantity to overwrite, e.g. 'DM.Gas'
- `value` (number, required): Value, offset or factor, depending on mode

### `cm_dva_release` (~18 tokens)

Release DVA overrides

Release all quantities from DVA control.

### `cm_popups` (~125 tokens)

Read GUI pop-ups

Pop-up messages the CarMaker GUI raised for this server's commands (type info/warn/err/question,
text, index of the answer given) and the current pop-up timeout. Also the "Internal Debugger" dialog
that the GUI or IPGMovie shows after an error of its own (type 'internal error', with the program
and the call stack): it is read and then closed. Reading empties the GUI's buffer (it keeps five).
cm_load_testrun, cm_start_sim and cm_wait_end already return new ones as 'popups'.

### `cm_popup_timeout` (~125 tokens)

Let GUI pop-ups answer themselves

Let GUI pop-ups raised by this server's commands answer themselves with their DEFAULT choice, so
that a question such as 'Vehicle not saved. All changes will be lost. OK to continue?' cannot block
a run. The default answer there discards the unsaved changes. Read what was answered with
cm_popups. Stays until set back, cm_revert_all or a GUI restart.

Input parameters:

- `seconds` (number, required): Seconds until a pop-up answers itself; 0 = never shown; -1 = wait for a click in the GUI (the normal setting)

### `cm_results_list` (~48 tokens)

List result files

Newest .erg result files under the project's SimOutput folder, CM_RESULT_DIRS and the folders
this session's runs wrote to.

Input parameters:

- `limit` (integer): Maximum number of files

Output parameters:

- `result` (array)

### `cm_results_summary` (~103 tokens)

Summarise a result file

First / last / min / max / mean and unit of quantities in a result file, plus rows and duration.

Input parameters:

- `erg` (string, required): Result file (.erg): absolute path, or relative to the project
- `quantities`: Quantities to summarise (default: Time, Car.v)
- `search`: Instead of a summary, list the quantity names that contain this text ('PT.') or match this wildcard pattern ('Car.v*'; '*' lists all)

### `cm_results_read` (~111 tokens)

Read time series from a result file

Time series from a result file, decimated to at most max_points samples.

Input parameters:

- `erg` (string, required): Result file (.erg): absolute path, or relative to the project
- `max_points` (integer): Samples are thinned to at most this many per quantity
- `quantities` (array, required): CarMaker quantity names, e.g. ['Time', 'Car.v']
- `t_max`: End of the time window in s
- `t_min`: Start of the time window in s

### `cm_output_quantities` (~73 tokens)

Read the output quantities

The quantities the next run writes to its result file, per storage rate (names may hold
wildcards), with the sample times. movie_replay says whether such a result file can be replayed in
IPGMovie. What a finished result file holds: cm_results_summary(erg, search='*').

### `cm_output_quantities_edit` (~160 tokens)

Change the output quantities

Add quantities to, or remove them from, the project's output-quantities file (backed up first,
logged, restored by cm_revert_all). Applies from the next start. Requires an idle simulation. Find
names with cm_live (it reads any quantity) or in another result file.

Input parameters:

- `add`: Quantities to store as well, e.g. ['Car.az', 'PT.Motor*.Trq']; wildcards * and ? allowed
- `preset`: movie: add what IPGMovie needs to replay the vehicle from a result file
- `rate` (string): Storage rate for added quantities (sample times: cm_output_quantities)
- `remove`: Entries to take out, spelled as they are listed

### `cm_movie_open` (~95 tokens)

Open IPGMovie

Open IPGMovie, CarMaker's 3D animation window (or take over one that is open). Open it BEFORE a
run: it records a run only while it is open, and cm_movie_snapshot can then show any moment of it.

Input parameters:

- `restart` (boolean): Close a running IPGMovie and start it anew: the way out when its pictures fail with an internal error. It then holds no run

### `cm_movie_snapshot` (~257 tokens)

Take a picture in IPGMovie

A picture of IPGMovie's 3D view, returned as an image. After a run it shows any moment of the last
run (time_s), provided IPGMovie was open during that run. During a run, without time_s, it shows the
IPGMovie window as it is at that moment (in the window's own size). With erg it replays a saved
result file, which must hold the vehicle's motion (cm_output_quantities_edit(preset='movie') before
that run). Do not pass time_s during a run: that makes IPGMovie stop following the run.

Input parameters:

- `camera`: Camera view: 'DEFAULT', "Bird's Eye View", 'Left Side', 'Right Side', 'Sitting In Vehicle (A)', or one from the project (default: keep the view)
- `erg`: Replay this result file instead of the last run (absolute path, or relative to the project)
- `height` (integer): Picture height in pixels (not during a run)
- `time_s`: Simulation time of the picture in s (default: the latest moment IPGMovie holds)
- `width` (integer): Picture width in pixels (not during a run)

### `cm_list` (~81 tokens)

List project data files

Names of project data files of one kind (test runs, vehicles, drivers, tyres...).

Input parameters:

- `include_hidden` (boolean): Also list names starting with a dot
- `kind` (string, required): Kind of project data; selects the folder below <project>/Data
- `pattern`: Wildcard filter on the name, e.g. '*Brak*'

### `cm_read` (~101 tokens)

Read a project data file

Key / value pairs of a CarMaker infofile. Large files are truncated: filter by keys or prefix.

Input parameters:

- `keys`: Only these keys
- `kind` (string, required): Kind of project data; selects the folder below <project>/Data
- `name` (string, required): File name relative to the kind's folder, as cm_list returns it
- `prefix`: Only keys starting with this, e.g. 'Vehicle' or 'DrivMan.'

### `cm_edit` (~110 tokens)

Edit a project data file

Change keys in a project file in place (backed up first, logged; only the edited lines change).
Requires an idle simulation; load the test run again afterwards.

Input parameters:

- `kind` (string, required): Kind of project data; selects the folder below <project>/Data
- `name` (string, required): File name relative to the kind's folder
- `overrides` (object, required): Keys to set, e.g. {'Road.FName': 'SKIDPAD.rd5'}; a null value removes the key

### `cm_clone` (~74 tokens)

Copy a project data file

Copy a project file to a new name in the same kind's folder. Never overwrites.

Input parameters:

- `base` (string, required): Existing file to copy
- `kind` (string, required): Kind of project data; selects the folder below <project>/Data
- `new_name` (string, required): Name of the copy (must not exist)

### `cm_create` (~125 tokens)

Create a project data file

Write a new project file, for example a tyre property file that differs from an existing one.
Never overwrites; the file is logged and cm_revert_all moves it to the trash folder. To change a
file that exists use cm_edit, to copy one cm_clone.

Input parameters:

- `content` (string, required): The whole text of the file, at most 2 MB
- `kind` (string, required): Kind of project data; selects the folder below <project>/Data
- `name` (string, required): Name of the new file relative to the kind's folder (must not exist)

### `cm_list_workspace_vars` (~92 tokens)

List workspace variables

Variables (name, class, size) of the MATLAB base workspace or of a Simulink model's workspace.
Controller parameters usually live in the model workspace.

Input parameters:

- `pattern`: Wildcard filter on the name, e.g. 'Kp_*'
- `scope` (string): 'base' for the MATLAB base workspace, or the name of a loaded Simulink model for that model's workspace

### `cm_get_workspace_var` (~84 tokens)

Read a workspace variable

Value of a variable or field. MATLAB objects are described, not converted: read their fields.

Input parameters:

- `name` (string, required): Variable or field, e.g. 'Kp_12' or 'Table.Value'
- `scope` (string): 'base' for the MATLAB base workspace, or the name of a loaded Simulink model for that model's workspace

### `cm_set_workspace_var` (~147 tokens)

Set a workspace variable

Set a variable or field. The old value is logged and cm_revert_all restores it. Model-workspace
changes live in memory until cm_model_save. Requires an idle simulation. overruled_by in the answer:
the model has a variable of that name in its own workspace and uses that one, so set it there.

Input parameters:

- `name` (string, required): Variable or field, e.g. 'Kp_12' or 'Table.Value'
- `scope` (string): 'base' for the MATLAB base workspace, or the name of a loaded Simulink model for that model's workspace
- `value` (required): Number, string, list or nested list (matrix)

### `cm_model_get` (~58 tokens)

Read a Simulink parameter

get_param on a loaded Simulink model or block.

Input parameters:

- `param` (string, required): Parameter name, e.g. 'Gain'
- `path` (string, required): Model or block path, e.g. 'MyModel/Controller/Gain'

### `cm_model_set` (~85 tokens)

Set a Simulink parameter

set_param on a loaded Simulink model or block. Logged; cm_revert_all restores the old value.

Input parameters:

- `param` (string, required): Parameter name
- `path` (string, required): Model or block path
- `save` (boolean): Also back up and save the model file
- `value` (required): New value (numbers are converted to text as Simulink expects)

### `cm_model_save` (~43 tokens)

Save a Simulink model

Save a loaded Simulink model. The file must be inside the project; it is backed up first.

Input parameters:

- `model` (string, required): Name of the loaded model

### `cm_model_logs_save` (~276 tokens)

Save Simulink's logged data to a MAT file

After a CarMaker for Simulink run: write what Simulink logged (signals marked for logging and
To Workspace blocks) to a MAT file, with the base workspace and the model workspace as one struct
each (variables: signals, base_workspace, model_workspace, info). Requires an idle simulation.
The result file (.erg) holds CarMaker's quantities; this holds the Simulink side.

Input parameters:

- `base_workspace` (boolean): Include the base workspace's variables
- `file`: MAT file to write, inside the project (default: next to the last result file, with the same name)
- `format` (string): dataset: a Simulink.SimulationData.Dataset. struct: plain arrays (name, time, values, units, block) that load without Simulink
- `logs` (string): inspector: every signal the Simulation Data Inspector holds for the last run (logged signals and To Workspace blocks, complete). workspace: the logging variables in the base workspace as they are
- `model`: Loaded Simulink model (default: the active one)
- `model_workspace` (boolean): Include the model workspace's variables
- `overwrite` (boolean): Replace the file if it exists
- `timeout_s` (number): Longest time MATLAB may take to write the file

### `cm_standalone_servers` (~47 tokens)

List running CarMaker programs

CarMaker simulation programs running on this machine (pid, description, whether this server
manages it). A CarMaker Office window you opened shows up once its application is started.

Output parameters:

- `result` (array)

### `cm_standalone_launch` (~206 tokens)

Launch a standalone CarMaker run

Start a NEW independent CarMaker simulation program (not connected to MATLAB) and run a test run
on it. Only for test runs whose vehicle does not need a Simulink controller. Results go to the
project's SimOutput; see cm_standalone_results.

Input parameters:

- `executable`: CarMaker executable (default: the stock one of the install)
- `overrides`: Test-run keys to change in memory only, e.g. {'Vehicle.DriverTemplate.FName': 'X'}
- `quantities`: Quantities to store (default: Time, Car.v, Car.YawRate, Car.ax, Car.ay, Car.Distance)
- `realtime_factor` (number): Simulation speed relative to real time (larger is faster)
- `start` (boolean): Start the run at once
- `stop_after_s`: Safety stop at this simulation time in s (null: none)
- `testrun` (string, required): Test run relative to Data/TestRun

### `cm_standalone_attach` (~147 tokens)

Attach to a running CarMaker program

Attach to a CarMaker simulation program that is already running, for example one started from a
CarMaker Office window.

Input parameters:

- `overrides`: Test-run keys to change in memory only, e.g. {'Vehicle.DriverTemplate.FName': 'X'}
- `pid` (integer, required): Process id from cm_standalone_servers
- `quantities`: Quantities to store
- `realtime_factor` (number): Speed relative to real time
- `start` (boolean): Start the run at once (needs testrun)
- `stop_after_s`: Safety stop at this simulation time in s
- `testrun`: Test run to configure (needed to start a run)

### `cm_standalone_status` (~60 tokens)

Standalone instance status

State of a standalone instance plus live values.

Input parameters:

- `instance`: Standalone instance id such as 'sa1' (may be omitted while there is only one)
- `quantities`: Live quantities to read (default: Time, Car.v)

### `cm_standalone_control` (~59 tokens)

Control a standalone run

Start, pause, resume or stop the simulation of a standalone instance.

Input parameters:

- `action` (string, required): What to do
- `instance`: Standalone instance id such as 'sa1' (may be omitted while there is only one)

### `cm_standalone_wait_end` (~98 tokens)

Wait for a standalone run to end

Wait until the instance's simulation has finished. finished=true: simulation time and distance,
error flag and log errors. finished=false: call again to keep waiting.

Input parameters:

- `instance`: Standalone instance id such as 'sa1' (may be omitted while there is only one)
- `timeout_s` (number): Longest time to wait in seconds; keep it below your client's tool time-out and call again if not finished

### `cm_standalone_dva_write` (~92 tokens)

Overwrite a quantity in a standalone run (DVA)

Overwrite a quantity in a running standalone simulation (Direct Variable Access).

Input parameters:

- `duration_ms` (integer): How long the override lasts in ms (-1: until the run ends)
- `instance`: Standalone instance id such as 'sa1' (may be omitted while there is only one)
- `name` (string, required): Quantity to overwrite
- `value` (number, required): Absolute value

### `cm_standalone_results` (~56 tokens)

Result files of a standalone run

Result .erg files of the instance's run (read them with cm_results_summary / cm_results_read).

Input parameters:

- `instance`: Standalone instance id such as 'sa1' (may be omitted while there is only one)

### `cm_standalone_close` (~50 tokens)

Close a standalone instance

Disconnect; for instances this server launched, also stop the CarMaker process.

Input parameters:

- `instance`: Standalone instance id such as 'sa1' (may be omitted while there is only one)

### `cm_study_start` (~339 tokens)

Start a parameter study

Run one test run several times with different parameter values, one after another, in the
background. Returns a study id at once; wait with cm_study_wait. Nothing is written to project files.
The answer names values that will change nothing: keys_not_found, workspace_not_found and
workspace_overruled (the model has the variable in its own workspace: use scope=<model>).

Input parameters:

- `max_run_s` (number): A run is stopped after this wall time in s
- `mode` (string): cm4sl: the MATLAB-connected session. standalone: a separate CarMaker process per run (no 'workspace' values)
- `quantities`: Quantities to summarise per run (default: Time, Car.v)
- `save_logs` (boolean): After every run, save what Simulink logged and the workspaces as that run used them to a MAT file next to its result file (mode cm4sl; logs_file per row)
- `scope` (string): 'base' for the MATLAB base workspace, or the name of a loaded Simulink model for that model's workspace
- `testrun` (string, required): Test run relative to Data/TestRun
- `variations` (array, required): One entry per run: {'label': 'heavy', 'keys': {'Body.mass': 320}, 'workspace': {'Kp_yaw': 1.5}}. 'keys' are infofile keys applied in memory for that run only (prefix a place such as 'Vehicle:' if nee…

### `cm_study_status` (~111 tokens)

Parameter study progress and results

State of a study (running, done, cancelled, failed) and one row per finished run, which also maps
every label to its result file. To wait for progress use cm_study_wait.

Input parameters:

- `detail` (string): compact: per run its label, end status, time, distance, result file and min / max / mean / last of the quantities. full: also every run's keys and workspace values and all statistics
- `study`: Study id (default: the latest)

### `cm_study_wait` (~108 tokens)

Wait for a parameter study

Wait until another run of the study has finished or the study has ended, at most timeout_s, and
return the compact table (new_rows says how many runs finished meanwhile). Call it again while
state is 'running'. Use this for studies instead of cm_wait_end.

Input parameters:

- `study`: Study id (default: the latest)
- `timeout_s` (number): Longest time to wait in seconds; keep it below your client's tool time-out and call again if not finished

### `cm_study_cancel` (~70 tokens)

Cancel a parameter study

Stop the run in progress, skip the remaining ones and restore the changed workspace values. Only
cancel a study this conversation started.

Input parameters:

- `study` (string, required): Id of the study to cancel, as cm_study_start returned it. It must be named: a study is not cancelled by default

### `cm_changelog` (~55 tokens)

Change log

Recorded changes (file keys, workspace variables, model parameters, GUI settings) with old and
new values.

Input parameters:

- `limit` (integer): Newest entries to return
- `session`: Session id (default: this session)

Output parameters:

- `result` (array)

### `cm_revert_all` (~47 tokens)

Undo this session's changes

Undo every change made in this server session: workspace values and model parameters in reverse
order, backed-up files put back (created files go to a trash folder), GUI settings restored.

### `cm_restore` (~37 tokens)

Restore files of an earlier session

Restore project files from the backups of an earlier session. Files only.

Input parameters:

- `session` (string, required): Session id as shown by cm_changelog

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/de-ioannidis-carmaker-mcp/carmaker-mcp#diagnostics

## Score history

- 2026-11-05: 88
- 2026-11-04: 88
- 2026-11-03: 87
- 2026-11-02: 87
- 2026-11-01: 71
- 2026-10-31: 86
- 2026-10-30: 85
- 2026-10-29: 85
- 2026-10-28: 84
- 2026-10-27: 84
- 2026-10-26: 83
- 2026-10-25: 83
- 2026-10-24: 82
- 2026-10-23: 82
- 2026-10-22: 82
- 2026-10-21: 81
- 2026-10-20: 81
- 2026-10-19: 80
- 2026-10-18: 80
- 2026-10-17: 79
- 2026-10-16: 79
- 2026-10-15: 83
- 2026-10-14: 83
- 2026-10-13: 50
- 2026-10-12: 50
- 2026-10-08: 35

## Common questions

### What is the CarMaker MCP server?

CarMaker is an MCP server listed in the public MCP registry as io.github.De-Ioannidis/carmaker-mcp. Drive IPG CarMaker for Simulink: run test runs, read results, edit vehicle data and parameters. This page covers its PyPI package (carmaker-mcp).

### Is the CarMaker MCP server safe to use?

CarMaker scores 88 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the CarMaker MCP server expose?

CarMaker exposes 48 tools: cm_session_start, cm_doctor, cm_status, cm_load_testrun, cm_start_sim, and 43 more. Their descriptions and schemas cost roughly 4,931 tokens of context every time the server is loaded.

### Is the CarMaker MCP server still maintained?

CarMaker is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the CarMaker MCP server under?

CarMaker declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- PyPI project: https://pypi.org/project/carmaker-mcp/
- Socket report: https://socket.dev/pypi/package/carmaker-mcp
- Changelog RSS feed: https://verifymcp.io/servers/de-ioannidis-carmaker-mcp/carmaker-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/de-ioannidis-carmaker-mcp/carmaker-mcp.json
- HTML version of this page: https://verifymcp.io/servers/de-ioannidis-carmaker-mcp/carmaker-mcp
