Local MCP server for NI Multisim component placement and wiring
Server defines 9 tools with explicit schemas and annotations. Naming follows verb_noun pattern (multisim_*). Descriptions are present but brief (avg 95 chars, below 194-char baseline). All tools have input schemas with type definitions. Critical gaps: parameter descriptions are sparse or missing (e.g., multisim_wire via points lack description; multisim_auto_route direction enum has no description). No output schemas documented. Error handling is minimal, tool responses are opaque JSON from CLI subprocess with no recovery guidance. Tool annotations (readOnlyHint, idempotentHint) are present but inconsistently applied (multisim_launch marked idempotent=true despite side effects). Composition is sound, each tool has one responsibility. Security: CLI subprocess spawning with user-controlled paths (multisim_launch --file, multisim_screenshot --path) lacks path validation, risking directory traversal.
Draw a Manhattan-style wire with one bend, choosing horizontal-first or vertical-first routing.
Inspect Multisim native windows and child controls. Use this to calibrate a different Multisim language/version.
Launch NI Multisim, optionally opening an existing design file.
Create a new blank Multisim design using the active Multisim window.
Search the Multisim master database for a component and place it at window-relative canvas coordinates. Coordinates refer to the Multisim main window screenshot.
Save the active design. With path, uses Save As and writes to that absolute path.
Parameter descriptions missing or incomplete. multisim_wire 'via' array items lack description; multisim_auto_route 'direction' enum has no description text; multisim_launch 'file' description is vague ('Optional absolute path'). LLMs cannot infer parameter semantics from names alone.
No output schemas documented. Tool responses are opaque JSON from CLI subprocess. LLMs cannot plan downstream calls or extract required fields (e.g., what does multisim_status return? window handle? process ID?). Breaks tool chaining.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2025-06-18+ | v2 |
Capture the Multisim window to a PNG file and return its absolute path.
Check whether NI Multisim is installed/running and report its main window.
Draw a wire between two pin coordinates. Optional via points create a deterministic orthogonal route.
Path parameters lack validation. multisim_launch --file and multisim_screenshot --path accept user-controlled paths without sanitization. Risk of directory traversal or command injection via subprocess args. Paths should be validated against a safe directory or use path.resolve() with a base directory.
Error handling is opaque. CLI subprocess errors are returned as raw stderr or exit codes with no recovery guidance. 'multisim-cli exited with code 1' tells the LLM nothing about what failed or how to retry. No error classification (retryable vs fatal).
Inconsistent idempotent annotations. multisim_launch marked idempotent=true despite launching an application (side effect). multisim_new_design marked idempotent=false but creating a blank design is idempotent if no file is open. Misleads LLM retry logic.