carmaker-mcp
An MCP server that lets an AI agent drive IPG CarMaker on your machine: start sessions, run test runs and parameter sweeps, read and plot results, change vehicle/driver/Simulink parameters, and undo changes.
Session & setup: start a CarMaker for Simulink session (MATLAB, model, GUI), check the install setup (
cm_doctor), read simulation status, session log and GUI pop-ups.Run simulations: load test runs, start/stop the simulation, wait for it to end, read live quantities, and override values during a run via Direct Variable Access.
Results: list and summarise
.ergfiles, read time series, inspect/change output quantities (including an IPGMovie replay preset), and (per the README) export MAT/CSV, lap and sector times and IPGControl plots.IPGMovie: open the 3D animation window and take snapshot pictures of a run or a saved result file.
Project data & parameters: list, read, edit, copy and create CarMaker infofiles (test runs, vehicles, drivers, tyres...), read/set MATLAB workspace variables, read/set Simulink parameters, save models, and save Simulink logged data to a MAT file.
Standalone runs (no MATLAB): launch, attach to, control, monitor, override and close independent CarMaker programs, with their result files.
Parameter studies: run a test run up to 50 times with varied infofile keys and workspace values in the background, then poll progress, wait, and cancel.
History & safety: change log with old/new values, undo all session changes, restore files from an earlier session; files are backed up before editing and only written inside the project folder while the simulation is idle.
Scope: Windows only, CarMaker's built-in controllers or CarMaker for Simulink vehicles; not Linux, TruckMaker, HIL, Test Manager, scenarios or non-
.ergformats.
Click on "Deploy 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., "@carmaker-mcp Run the braking test run and tell me the stopping distance."
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.
carmaker-mcp
https://github.com/user-attachments/assets/6093b1a3-8ef5-43ef-8134-b214d534720f
Claude Desktop with this server (CarMaker without MATLAB, IPGMovie open) and MathWorks' MATLAB MCP server for the figure. A 68-run sweep of the driver's limits on a Formula Student skid pad; the agent's work is shown 30 times faster.
Open Carmaker (standalone) and run Skidpad tests with the Rhea vehicle (torque vectoring disabled). Run a parameter sweep for the IPGDriver's lateral acceleration limits and gg exponents to get the best lap time. Open IPGMovie first so I can see the runs. Evaluate lap time based on the average time between the second lap on the right and the second lap on the left. Plot out the yaw rate and lateral acceleration of the best run using MATLAB (MCP).
An MCP server that lets an AI agent drive IPG CarMaker on your computer: start a session, run test runs and parameter studies, read and plot the results, change vehicle, driver 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.
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."
"Sweep the driver's lateral acceleration limit and g-g exponents on the skid pad and give me the best lap time." (lap times come from the test run's own timing markers, as CarMaker's instrument shows them)
"Plot the yaw rate of the last two runs over distance."
"The car got heavier. Run a driver adaption, then the autocross again."
"The last run aborted. Why?"
"Undo everything you changed."
Runs go at CarMaker's maximum speed unless you ask for a slower one. Parameter studies run in the
background, one run after another, with IPGMovie open if you want to watch. The server also teaches the agent
how IPGDriver works (cm_guide): which driver to choose, how its limits and g-g exponents set the lap time,
and when a driver adaption is worth its minutes.
It works in two ways, and the agent picks the one that fits the vehicle:
MATLAB-connected session | Standalone run | |
Use it for | vehicles whose controller is a Simulink model (CarMaker for Simulink) | vehicles with CarMaker's built-in controllers |
Needs | MATLAB with your model, and the CarMaker GUI (the server can start both) | only CarMaker; no MATLAB, no window (IPGMovie on request) |
Not covered: Linux, TruckMaker and MotorcycleMaker, CarMaker HIL, Test Manager and test series, building
roads, traffic or scenarios, Movie NX, result formats other than .erg, and remote machines. The full list
is in docs/scope.md, and more worked
examples are in docs/examples.md.
Related MCP server: SimuBridge
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 (only R2024b has been tested)
uv (it fetches the server and its Python environment; pip also works)
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:
uvx carmaker-mcp doctor2. Register the server. This prints the entry for your client, with those arguments filled in:
uvx carmaker-mcp config --client claude-code # or claude-desktop, vscode, codex, antigravity, cursorFor most clients the entry looks like this:
{
"mcpServers": {
"carmaker": {
"command": "uvx",
"args": ["--python", "3.12", "--with", "matlabengine==24.2.*", "carmaker-mcp"],
"env": {
"CM_PROJECT": "C:\\CM_Projects\\my-project",
"CM_MODEL": "MyModel"
}
}
}
}In Claude Desktop you can instead drag the .mcpb bundle for your MATLAB release from the
latest release into Settings > Extensions;
uv must be installed. docs/setup.md
has the steps for each client and the versions that belong to each MATLAB release.
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. Standalone runs need neither. If you would rather open MATLAB and CarMaker yourself, run this once per MATLAB session so that the server can attach:
matlab.engine.shareEngine('cm_mcp')Settings
Settings are environment variables in the client entry. These are the ones you are likely to need; docs/setup.md has the rest.
Variable | Default | Meaning |
| read from the running CarMaker GUI | CarMaker project folder. The server writes nowhere else. Needed to start a session from scratch |
| none | Simulink model to open when a session is started |
| none | Your project's own MATLAB setup script, run once when a session is started. Without it the model may not compile |
| not set | Seconds after which CarMaker pop-ups answer themselves with their default choice. Not set: they wait for your click. See Safety |
| none | Tool groups to switch off, for a shorter tool list: |
| none | Optional tools to switch on: |
Tools
Session and runs: start MATLAB and CarMaker, check the setup, load, start, stop and follow runs, read the session log and GUI pop-ups.
Results: summaries, time series, lap and sector times, IPGControl plots, MAT and CSV export, IPGMovie pictures.
Project data and parameters: list, read, compare, edit and copy project files, workspace and Simulink parameters, parameter studies, driver adaption.
Standalone runs: launch, follow and close independent CarMaker programs, without MATLAB.
History: what a session changed, undo it, restore an earlier session.
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 tool and parameter is described in docs/tools.md.
Using it with the MATLAB MCP server
For CarMaker for Simulink work it is worth connecting MathWorks'
MATLAB MCP Core Server as well: this server handles
CarMaker, and that one writes and runs MATLAB code. Let both work on the same MATLAB session, in the release
CarMaker uses. What is changed through the MATLAB server is not in this server's change log, and cm_revert_all
does not undo it.
More in docs/setup.md.
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.
Symptom | Cause and fix |
"No shared MATLAB session" | MATLAB is closed or has not shared its engine. Let the agent start the session, or run |
| The pin must match your MATLAB release, and that MATLAB must be installed. Use the arguments |
"CarMaker ships no cmapi for Python 3.x" | Add |
A tool call hangs at load or start | The CarMaker GUI is showing a question. Answer it, or see |
"too many licenses in use" on a standalone run | Another CarMaker program holds the licence: an open MATLAB with CarMaker for Simulink, or a standalone program the server left open |
"license has expired" | The licence must be renewed; |
The wait tool returns | Not an error: waits are limited to 50 s per call and are simply repeated |
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.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
Contributing: test reports from other CarMaker and MATLAB versions are especially welcome
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.
Available Tools
54 toolscm_changelogChange logBRead-only
Recorded changes (file keys, workspace variables, model parameters, GUI settings) with old and new values.
Inputs: limit, session. Returns: result
cm_cloneCopy a project data fileA
Copy a project file to a new name in the same kind's folder. Never overwrites. A copied test run
keeps the source's driver and knowledge (driver): check them for another vehicle.
Inputs: base (required), kind (required), new_name (required). Returns: object
cm_createCreate a project data fileA
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.
Inputs: kind (required), name (required), content (required). Returns: object
cm_diffCompare two project data filesARead-only
Keys only in a, only in b, and those whose values differ ([a, b]), e.g. two vehicles or a test run and its clone.
Inputs: a (required), b (required), kind (required), prefix. Returns: object
cm_doctorCheck the setupARead-only
Check the setup: CarMaker install, Python version, MATLAB release and engine, shared MATLAB session, GUI, project folder. Each failed check comes with its fix. ok: at least one mode is ready (see ready); all_checks_passed: everything, the MATLAB session included.
Inputs: no named parameters. Returns: object
cm_driver_adaptionDriver adaptionADestructive
Let IPGDriver learn the car (basic) or the car on this circuit (race), and save the knowledge. It takes minutes (basic about 2 standalone, 5 to 20 with MATLAB; race as long as the test run allows): run it only when the car changed noticeably, the race driver lacks knowledge, or the user asks, and tell the user the duration first. Start returns at once; then 'wait' until state is done/failed.
Inputs: action (required), kind, mode, save, +4 more. Returns: object
cm_dva_releaseRelease DVA overridesA
Release all quantities from DVA control.
Inputs: no named parameters. Returns: object
cm_dva_writeOverwrite a quantity (DVA)C
Overwrite a quantity during a run via Direct Variable Access.
Inputs: name (required), value (required), mode, duration_ms. Returns: object
cm_editEdit a project data fileADestructive
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. Driver parameters belong in the driver template (kind 'driver', 'Template/'), which other test runs share: say which changed.
Inputs: kind (required), name (required), overrides (required). Returns: object
cm_get_workspace_varRead a workspace variableARead-only
Value of a variable or field. MATLAB objects are described, not converted: read their fields.
Inputs: name (required), scope.
cm_guideRead a section of the guideCRead-only
A section of this server's guide (the same text as the resource carmaker://guide).
Inputs: topic. Returns: result
cm_listList project data filesBRead-only
Names of project data files of one kind (test runs, vehicles, drivers, tyres...).
Inputs: kind (required), pattern, include_hidden. Returns: object
cm_list_workspace_varsList workspace variablesARead-only
Variables (name, class, size) of the MATLAB base workspace or of a Simulink model's workspace. Controller parameters usually live in the model workspace.
Inputs: scope, pattern. Returns: object
cm_liveRead live quantitiesARead-only
Current values of CarMaker quantities during a run (or the last values after it).
Inputs: quantities (required). Returns: object
cm_load_testrunLoad a test runA
Load a test run into the CarMaker GUI. Requires an idle simulation. Find names with cm_list('testrun').
Inputs: name (required), force. Returns: object
cm_logRead the CarMaker session logARead-only
Last lines of the newest CarMaker session log of the project. Use it when a run aborts or does not start.
Inputs: level, lines. Returns: object
cm_model_getRead a Simulink parameterBRead-only
get_param on a loaded Simulink model or block.
Inputs: path (required), param (required).
cm_model_logs_saveSave Simulink's logged data to a MAT fileA
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); the answer lists signal_names. Requires an idle simulation. The result file (.erg) holds CarMaker's quantities, this the Simulink side. To see whether a signal is logged, run with save_logs=true and read signal_names.
Inputs: file, logs, model, format, +4 more. Returns: object
cm_model_saveSave a Simulink modelADestructive
Save a loaded Simulink model. The file must be inside the project; it is backed up first.
Inputs: model (required). Returns: object
cm_model_setSet a Simulink parameterADestructive
set_param on a loaded Simulink model or block. Logged; cm_revert_all restores the old value.
Inputs: path (required), param (required), value (required), save. Returns: object
cm_movie_openOpen IPGMovieA
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. Needs the MATLAB session; without it use cm_standalone_launch(movie=true).
Inputs: restart. Returns: object
cm_movie_snapshotTake a picture in IPGMovieA
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. Needs the MATLAB session's IPGMovie (cm_movie_open); a standalone IPGMovie (movie=true) has no pictures.
Inputs: erg, width, camera, height, +1 more.
cm_output_quantitiesRead the output quantitiesBRead-only
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='*').
Inputs: no named parameters. Returns: object
cm_output_quantities_editChange the output quantitiesADestructive
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.
Inputs: add, rate, preset, remove. Returns: object
cm_popupsRead GUI pop-upsA
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'.
Inputs: no named parameters. Returns: object
cm_popup_timeoutLet GUI pop-ups answer themselvesADestructive
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.
Inputs: seconds (required). Returns: object
cm_readRead a project data fileBRead-only
Key / value pairs of a CarMaker infofile, 300 at a time: filter by keys, prefix or search, or page
with offset. For a test run first driver (its template or 'TestRun', knowledge, main limits) and,
also for a vehicle, standalone: false names the vehicle's Simulink parts (runs need the MATLAB
session).
Inputs: kind (required), name (required), keys, offset, +2 more. Returns: object
cm_restoreRestore files of an earlier sessionBDestructive
Restore project files from the backups of an earlier session. Files only.
Inputs: session (required). Returns: object
cm_results_crossingsTimes at which a quantity reaches valuesARead-only
Interpolated times at which a quantity crosses each value, and the time between the first
crossings of consecutive values (lap or sector times from distance gates); with at, the values of
other quantities there (the speed at 75 m).
Inputs: erg (required), values (required), quantity (required), at, +1 more. Returns: object
cm_results_exportExport a result fileA
Write quantities of a result file at full resolution (no thinning) to a MAT file (one double variable per quantity, dots as underscores, plus quantity_names and units) or a CSV file (header 'Time [s],Car.v [m/s],...': name and unit), in any folder of this computer. Never overwrites.
Inputs: erg (required), file, t_max, t_min, +2 more. Returns: object
cm_results_listList result filesBRead-only
Newest .erg result files under the project's SimOutput folder, CM_RESULT_DIRS and the folders this session's runs wrote to.
Inputs: limit. Returns: result
cm_results_plotPlot result files in IPGControlA
Plot quantities of result files in IPGControl, IPG's plotting program; needs no MATLAB. The window stays open for the user (the next plot replaces it) and a picture comes back as an image. This server has no MATLAB evaluation: for MATLAB figures use a MATLAB server, or cm_results_export.
Inputs: ergs (required), quantities (required), x, picture.
cm_results_readRead time series from a result fileBRead-only
Time series from a result file, decimated to at most max_points samples.
Inputs: erg (required), quantities (required), t_max, t_min, +1 more. Returns: object
cm_results_summarySummarise a result fileBRead-only
First / last / min / max / mean and unit of quantities in a result file, plus rows and duration.
Inputs: erg (required), search, quantities. Returns: object
cm_revert_allUndo this session's changesADestructive
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.
Inputs: no named parameters. Returns: object
cm_session_startStart the CarMaker for Simulink sessionA
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.
Inputs: init, model, max_wait_s. Returns: object
cm_set_workspace_varSet a workspace variableADestructive
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.
Inputs: name (required), value (required), scope. Returns: object
cm_standalone_attachAttach to a running CarMaker programA
Attach to a CarMaker simulation program that is already running, for example one started from a CarMaker Office window.
Inputs: pid (required), speed, start, testrun, +3 more. Returns: object
cm_standalone_closeClose a standalone instanceADestructive
Disconnect; for instances this server launched, also stop the CarMaker process.
Inputs: instance. Returns: object
cm_standalone_controlControl a standalone runBDestructive
Start, pause, resume or stop the simulation of a standalone instance, or open its IPGMovie. A study with movie=true runs on one instance: cm_standalone_status shows it.
Inputs: action (required), instance. Returns: object
cm_standalone_dva_writeOverwrite a quantity in a standalone run (DVA)B
Overwrite a quantity in a running standalone simulation (Direct Variable Access).
Inputs: name (required), value (required), instance, duration_ms. Returns: object
cm_standalone_launchLaunch a standalone CarMaker runA
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. start=false only opens CarMaker (and IPGMovie).
Inputs: testrun (required), movie, speed, start, +5 more. Returns: object
cm_standalone_resultsResult files of a standalone runARead-only
Result .erg files of the instance's run (read them with cm_results_summary / cm_results_read).
Inputs: instance. Returns: object
cm_standalone_serversList running CarMaker programsBRead-only
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.
Inputs: no named parameters. Returns: result
cm_standalone_statusStandalone instance statusCRead-only
State of a standalone instance plus live values.
Inputs: instance, quantities. Returns: object
cm_standalone_wait_endWait for a standalone run to endARead-only
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.
Inputs: instance, timeout_s. Returns: object
cm_start_simStart the simulationA
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.
Inputs: save, speed, save_logs, start_timeout_s. Returns: note, state, popups, after_s, +4 more
cm_statusSimulation statusARead-only
The MATLAB session (CarMaker for Simulink) only; standalone work needs none of it (cm_doctor). Simulation state (sim_status; sim_status_code is CarMaker's raw value, -2 idle, 0 or more running), matlab_simstate (Simulink's model state: 'terminated' is normal when idle), active 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).
Inputs: no named parameters. Returns: details, connected, save_mode, end_status, +8 more
cm_stop_simStop the simulationADestructive
Stop the running simulation. With wait_s > 0 it returns what cm_wait_end returns.
Inputs: wait_s. Returns: live, note, state, popups, +15 more
cm_study_cancelCancel a parameter studyADestructive
Stop the run in progress, skip the remaining ones and restore the changed workspace values. Only cancel a study this conversation started.
Inputs: study (required). Returns: object
cm_study_startStart a parameter studyA
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 (use scope=); Driver.* keys that a driver template overrides are refused (use 'driver'). Rows give valid and wall_s, the clock time of the run. A study stops at the first run that finds no CarMaker licence.
Inputs: grid, keys, mode, gates, +11 more. Returns: object
cm_study_statusParameter study progress and resultsARead-only
State of a study (running, done, cancelled, failed) and one row per finished run, which also maps every label to its result file. The ranking names each run's result file. To wait use cm_study_wait.
Inputs: top, study, detail, labels, +2 more. Returns: object
cm_study_waitWait for a parameter studyARead-only
Wait until another run of the study has finished or the study has ended, at most timeout_s, and return the rows no earlier call returned (cm_study_status has the whole table and rank_by). Call it again while state is 'running'. Use this for studies instead of cm_wait_end.
Inputs: study, detail, timeout_s, until_done. Returns: object
cm_wait_endWait for the simulation to endARead-only
Wait until the simulation is idle again. finished=true: end status, simulation time and distance, result_file, new log errors and warnings (settings CarMaker ignored show up there) and pop-ups. finished=false: current state and live values; call again to keep waiting.
Inputs: poll_s, timeout_s. Returns: live, note, state, popups, +15 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 54 tools
Detailed descriptions distinguish most tools, but the set has parallel 'twins' for two execution worlds (e.g. cm_status vs cm_standalone_status, cm_start_sim vs cm_standalone_control, cm_wait_end vs cm_standalone_wait_end, cm_dva_write vs cm_standalone_dva_write) that agents can easily pick wrongly. Tools like cm_live, cm_status, cm_standalone_status, and cm_results_read overlap in 'show me current/result values' intent, so boundary clarity depends on reading the long descriptions.
All tools share a cm_ prefix and snake_case, which is highly predictable. However, some names are bare nouns (cm_live, cm_log, cm_status, cm_doctor, cm_read) while others follow a verb_noun pattern (cm_load_testrun, cm_list_workspace_vars, cm_set_workspace_var), giving a minor inconsistency in convention.
With 54 tools this server is far above the typical 3-15 range, and the surface includes many near-duplicated variants for MATLAB-attached vs standalone operation. The CarMaker domain is genuinely broad, so the count is not arbitrary, but it is too heavy for an agent to navigate reliably.
Coverage is unusually thorough: session lifecycle (start/status/doctor/stop/wait), standalone launch/attach/control/close, file list/read/edit/clone/create/diff/restore, workspace and model get/set/save, result listing/summary/read/plot/export/crossings, studies, movie capture, popups, logging, changelog, and revert-all. Almost every workflow implied by the domain has a supporting tool.
Maintenance
Related MCP Connectors
Use your Mac, Windows or Linux computer from ChatGPT, Claude or Codex: files, commands, documents.
Connect ChatGPT, Claude, Cursor or VS Code to your Windows PC: files, terminal, browser, apps.
Build, validate, and deploy multi-agent AI solutions from any AI environment.
Connect AI assistants to your approved computer for files, commands, browser and desktop tasks.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server that connects any AI agent to MATLAB — execute code, async jobs, interactive Plotly plots, custom tools, and monitoring dashboard2020 PyPI4MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to control MATLAB Simulink models through natural language, providing tools for model creation, block management, wiring, simulation, and more via a local MCP backend.4MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to automate COMSOL Multiphysics simulations, including model management, geometry building, physics configuration, meshing, solving, and results visualization via the MCP protocol.MIT
- AlicenseCqualityCmaintenanceEnables AI agents to read and write .mph model files, control the COMSOL desktop GUI in real time, and run complete modeling, meshing, solving, and post-processing workflows.231MIT