MCP server for automating COMSOL Multiphysics GUI interactions via Windows UI automation
Server has 13 tools with basic naming (verb_noun pattern mostly followed) but critical gaps in descriptions and schemas. Most tool descriptions are present but generic (avg ~80 chars, below 194-char baseline). Input schemas visible for all tools with proper types, but parameter descriptions are minimal. No output schemas documented. Error handling is absent, tools return raw exceptions rather than actionable recovery guidance. No tool annotations (readOnlyHint/destructiveHint). Security concern: tools like execute_java_command accept arbitrary code with no validation or sandboxing. Composition is reasonable (single responsibility per tool), but missing pagination, result limits, and chaining IDs in responses.
Click on a UI element in the COMSOL window by its automation ID or name
Execute a COMSOL Java command in the Java Shell
Find all running COMSOL processes by name
Find a UI element by automation ID or name pattern
Get the text content of a UI element
Get detailed information about a COMSOL window
List all visible COMSOL windows with their window handles, process IDs, and titles
List all UI elements in a COMSOL window
execute_java_command accepts arbitrary COMSOL Java code with no validation, sandboxing, or injection protection. Blocked patterns exist (model.save) but are easily bypassed. Critical security vulnerability.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., window_index from list_comsol_windows). Breaks tool chaining.
Tool descriptions are generic and under 100 chars (avg ~80). Missing WHEN to use, prerequisites, and side effects. E.g., 'Type text into a focused text field' does not explain that a field must be focused first or what happens if it is not.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Open or focus the COMSOL Java Shell window for executing COMSOL commands
Press a keyboard key or key combination
Take a screenshot of the COMSOL window and save it to disk
Type text into a focused text field in the COMSOL window
Wait for a UI element to appear in the COMSOL window
No error handling or recovery guidance. Tools will raise raw exceptions (e.g., 'pywinauto.FindElementError') instead of actionable messages like 'Element not found. Available elements: [list]. Try find_element() first.'
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe read-only tools from destructive ones (e.g., click_element vs type_text). Increases risk of unintended side effects.