Model Context Protocol (MCP) server bridging OpenAI Codex and LLMs with MATLAB & Simulink execution environments
Server has 5 tools with complete schemas and descriptions, but quality is mediocre. Tool names lack clear action verbs (evaluate_matlab_code vs execute_matlab_code). Descriptions are present (avg 140 chars) but lack context on when to use each tool or what distinguishes them. Parameters have types and descriptions, but no enums, ranges, or validation guidance. No output schemas documented. Error handling is minimal, errors return raw messages without recovery guidance. No security considerations for code execution (critical for a MATLAB execution server). Tool composition is reasonable but lacks idempotency guarantees for destructive operations.
Statically analyzes a MATLAB file using checkcode (mlint) for syntax, performance issues, and standards compliance.
Queries installed MATLAB toolboxes, versions, and active licenses (e.g. Control System Toolbox, Simscape).
Executes inline MATLAB code or statements in the local MATLAB session and returns console output.
Executes a specified MATLAB script (.m) or function file.
Runs MATLAB automated unit test files using the matlab.unittest framework.
No output schemas documented. LLMs cannot predict response structure or plan downstream calls. Tools return unstructured text via exec() output.
Weak error handling. Errors return raw exception messages without recovery guidance. E.g., 'Error: Command failed' tells LLM nothing about retry strategy or next steps.
No security validation. evaluate_matlab_code and run_matlab_file execute arbitrary code via shell. Basic quote escaping is insufficient against command injection. No permission gates or audit logging.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Tool names lack action verbs. 'evaluate_matlab_code' is vague (evaluate vs execute vs run?). 'detect_matlab_toolboxes' is unclear (detect installed vs detect available?). Naming should be verb_noun and unambiguous.
No parameter constraints or validation hints. 'filePath' accepts any string; no guidance on absolute vs relative paths, file existence checks, or .m extension requirements. No enums, ranges, or patterns documented.