Skip to main content
Glama
carmaker-mcp
by dimitr-io

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_yaw to 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 doctor

2. 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, cursor

For 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

CM_PROJECT

read from the running CarMaker GUI

CarMaker project folder. The server writes nowhere else. Needed to start a session from scratch

CM_MODEL

none

Simulink model to open when a session is started

CM_MATLAB_INIT

none

Your project's own MATLAB setup script, run once when a session is started. Without it the model may not compile

CM_POPUP_TIMEOUT

not set

Seconds after which CarMaker pop-ups answer themselves with their default choice. Not set: they wait for your click. See Safety

CM_DISABLE

none

Tool groups to switch off, for a shorter tool list: standalone, study, matlab, movie

CM_ENABLE

none

Optional tools to switch on: tcl (raw Tcl in the CarMaker GUI), experimental (add and delete Simulink blocks)

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_all undoes 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 matlab.engine.shareEngine('cm_mcp') in MATLAB

uvx fails while installing matlabengine

The pin must match your MATLAB release, and that MATLAB must be installed. Use the arguments doctor prints

"CarMaker ships no cmapi for Python 3.x"

Add --python 3.12 (or another version the message lists)

A tool call hangs at load or start

The CarMaker GUI is showing a question. Answer it, or see CM_POPUP_TIMEOUT

"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; doctor shows its end date

The wait tool returns finished: false

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 .erg files (checked against MATLAB's cmread).

Nothing of IPG's or MathWorks' is bundled or redistributed.

Documentation and contributing

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 tools
cm_changelogChange logB
Read-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 filesA
Read-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 setupA
Read-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 adaptionA
Destructive

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 fileA
Destructive

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 variableA
Read-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 guideC
Read-only

A section of this server's guide (the same text as the resource carmaker://guide).

Inputs: topic. Returns: result

cm_listList project data filesB
Read-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 variablesA
Read-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 quantitiesA
Read-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 logA
Read-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 parameterB
Read-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 modelA
Destructive

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 parameterA
Destructive

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 quantitiesB
Read-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 quantitiesA
Destructive

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 themselvesA
Destructive

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 fileB
Read-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 sessionB
Destructive

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 valuesA
Read-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 filesB
Read-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 fileB
Read-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 fileB
Read-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 changesA
Destructive

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 variableA
Destructive

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 instanceA
Destructive

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

Inputs: instance. Returns: object

cm_standalone_controlControl a standalone runB
Destructive

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 runA
Read-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 programsB
Read-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 statusC
Read-only

State of a standalone instance plus live values.

Inputs: instance, quantities. Returns: object

cm_standalone_wait_endWait for a standalone run to endA
Read-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 statusA
Read-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 simulationA
Destructive

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 studyA
Destructive

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 resultsA
Read-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 studyA
Read-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 endA
Read-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

    B3.4/5.0

    Scored across 54 tools

    Disambiguation3/5

    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.

    Naming Consistency4/5

    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.

    Tool Count2/5

    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.

    Completeness5/5

    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

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables 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.
      4
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI agents to automate COMSOL Multiphysics simulations, including model management, geometry building, physics configuration, meshing, solving, and results visualization via the MCP protocol.
      MIT
    • A
      license
      C
      quality
      C
      maintenance
      Enables 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.
      23
      1
      MIT