MCP Server for PLECS 4.7 Standalone - provides tools to control PLECS circuit simulation via XML-RPC interface
Server has 11 tools with consistent naming (verb_noun pattern: plecs_connect, plecs_load, etc.) and detailed descriptions in Chinese. However, critical gaps exist: (1) Input schemas are visible but lack formal JSON Schema type declarations in the source code excerpt, parameters are documented in docstrings but not in structured schema definitions; (2) Output schemas are entirely undocumented, no structured response format specified for any tool; (3) Error handling is present but generic ('✗ {e}') without recovery guidance or error classification; (4) No parameter validation rules (e.g., enums for analysis_type, constraints on numeric ranges); (5) Tool descriptions are lengthy (200+ chars) and narrative rather than LLM-optimized. Strengths: clear verb-noun naming, comprehensive parameter descriptions in docstrings, and logical tool composition (connect → load → get/set → simulate → close).
调用 plecs.analyze(modelName, analysisType, opts) 运行频域/稳态分析。
调用 plecs.close(modelName) 关闭已打开的模型。 注意:PLECS 不会自动保存未保存的修改。 如需保留修改,请在调用此工具前先用 plecs_set 确认所有参数, 或在 PLECS 界面中手动保存。
调用 plecs.codegen(modelName, opts) 触发代码生成。
连接到正在运行的 PLECS 4.7 Standalone 实例。 每次 Agent 会话开始时必须首先调用此工具。 底层调用 plecs.statistics() 验证连接并获取版本信息。
调用 plecs.get(path, param) 读取模型或组件的参数值。
调用 plecs.load(path) 在 PLECS 中打开一个 .plecs 模型文件。
调用 plecs.scope(scopePath, command, ...) 操作 Scope 组件。
Output schemas completely undocumented. No tool specifies what fields/structure it returns. LLMs cannot plan downstream calls or extract required data (e.g., what does plecs_load return besides a string? Is it structured JSON or plain text?).
Input schemas lack formal JSON Schema type declarations. Parameters documented in docstrings but not registered with @mcp.tool() decorator schema. FastMCP may infer types from function signatures, but this is not visible in the source excerpt and cannot be verified.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | <=2025-11-25 | v2 |
调用 plecs.set(path, param, value) 修改模型或组件的参数值。
调用 plecs.simulate(modelName, opts) 运行时域仿真。
调用 plecs.statistics() 获取 PLECS 当前状态。 无需参数。返回 PLECS 版本、build 信息、当前所有已打开的模型名称。 可用于确认连接是否仍然有效,以及查看哪些模型处于打开状态。
调用 plecs.webserver(command, ...) 控制 PLECS Web 仿真服务器。
No enum constraints for parameters accepting fixed sets of values. plecs_analyze 'analysis_type' should be enum (SteadyState|ACSweep|FreqResp|ImpulseResp|Multitone); plecs_scope 'command' should be enum (ClearTraces|HoldTrace|SaveTrace|ExportCSV|ExportBitmap|GetCursorData). Free-form strings invite hallucinated values.
Error handling is generic and non-actionable. All errors return 'f"✗ {e}"' without recovery guidance. plecs_connect has better error messaging with troubleshooting steps, but other tools lack this. No error classification (retryable vs user-fixable vs fatal).
No parameter validation rules documented. Numeric parameters (port, StopTime, MaxStep, NumPoints, Amplitude) lack min/max constraints. JSON string parameters (opts, args) lack format/schema hints. LLMs cannot self-validate inputs before calling.