MCP server for building and running Simcenter Amesim circuits via the Circuit API
Server has 20 tools with consistent naming (verb_noun pattern) and descriptions present for all. However, input schemas lack critical details: most parameters are missing type constraints, enums, and validation guidance. Parameter descriptions are present but often generic (e.g., 'Alias path of the component' repeated 8+ times). Output schemas are entirely undocumented, LLMs cannot predict return structure. Error handling is minimal; tools return plain strings with no recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. The execute_python tool is a powerful escape hatch but lacks safeguards and clear scope boundaries.
Add a component to the sketch of the active circuit.
Assign a submodel to a component or line.
Close the active circuit.
Connect to Simcenter Amesim. Starts a background worker process if none is running. Each worker serves exactly one session — calling connect() again while already connected is a no-op; call disconnect() first to switch versions or restart.
Connect a port of one component/line to a port of another with a line.
Create a new, empty Amesim circuit (.ame file) and make it active.
Group components into a supercomponent (a reusable sub-circuit block).
Output schemas completely undocumented. Tools return strings with no structured format specification. LLMs cannot predict return fields, forcing them to parse unstructured text and guess at downstream tool compatibility.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Tools marked DESTRUCTIVE (remove_component, remove_line) lack confirmation or dry-run support. Agents cannot distinguish safe reads from irreversible writes.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Release the Amesim license token and stop the background worker process.
Execute Python code in the live Amesim worker process (persistent namespace). Pre-bound (in the remote namespace, persists between calls): ame_apy — the Circuit API module amesim — the Simulation Scripting module Use this for anything with no dedicated tool, or to discover a function's exact signature with help(ame_apy.SOME_FUNCTION) before calling it. Returns captured stdout (print your results!) or a traceback on error.
Flip a component (mirror it) in the sketch.
Get the type, title and unit of a parameter.
Get the current value (and unit) of a parameter or state variable.
Move a component to a new position. Connected lines are not moved with it.
Open an existing .ame circuit file and make it active.
Remove a component from the active circuit.
Remove a connection line from the active circuit.
Rotate a component's icon by -90 degrees, one or more times.
Save the active circuit.
Set the value of a parameter or the initial value of a state.
Check connection status and the Circuit API version.
Parameter descriptions are generic and repetitive ('Alias path of the component' appears 8+ times). No validation constraints (ranges, enums, formats) documented. LLMs cannot self-correct invalid inputs like negative coordinates or invalid port indices.
Error handling returns plain strings with no recovery guidance. Failures like 'Circuit not found' or 'Invalid port index' do not suggest next steps. Agents cannot distinguish retryable errors from user-fixable ones.
execute_python tool is a powerful escape hatch with no scope boundaries or input validation. Agents can execute arbitrary Python code in the Amesim worker process. No safeguards against injection, resource exhaustion, or unintended side effects.