An MCP server for allowing LLMs to interact with MATLAB and Simulink
Server has 6 tools with basic schemas and descriptions, but significant gaps limit production readiness. Tool names follow verb_noun convention (good), but descriptions are inconsistent in depth. Most critical: parameters lack detailed constraints, error handling is absent, and output schemas are not documented. No tool annotations (readOnlyHint/destructiveHint). The 'save_matlab_code' and 'run_matlab_code' tools are destructive but lack confirmation patterns or detailed error guidance. Descriptions range from adequate (read_simulink_system at ~150 chars) to minimal (access_matlab at ~20 chars). Parameters have types but lack format constraints, ranges, or validation rules. No evidence of pagination, batching, or composition patterns.
Connect to MATLAB.
Read the contents of a MATLAB script (.m) or text file. Optionally open the file in MATLAB desktop.
View a Simulink system/subsystem as either a PNG image or a JSON dictionary (if detail=True). Optionally open the object in MATLAB desktop. Dictionary recommended as image can be cost intensive.
Execute MATLAB code and return command window output as a string and images (if asked). Interact programatically with Simulink if the action is not covered by a tool.
Validate and save MATLAB code to a .m file. Optionally overwrite if the file already exists.
Search the Simulink block library for a block name and return matching source paths.
access_matlab has trivial description ('Connect to MATLAB.'), 20 chars, below 34-char baseline. LLM cannot determine when/why to call it vs other tools.
save_matlab_code and run_matlab_code are destructive (WRITE risk) but lack confirmation patterns, dry-run options, or detailed error recovery guidance. No idempotentHint or destructiveHint annotations.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., does search_library return block_id, block_name, block_path?). Breaks tool chaining.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | <=2025-11-25 | v2 |
Parameters lack format constraints and validation rules. 'path' params have no regex pattern, length limit, or allowed-character guidance. 'code' param has no length bounds. Invites invalid input from LLMs.
No error handling or recovery guidance. Tools return raw MATLAB errors or stack traces instead of actionable messages. LLM cannot self-correct or retry intelligently.