CODESYS PLC migration assistant. Recovers, analyzes, and migrates CODESYS V2.x projects to V3.5+. Accepts .exp, .st, .xml, and .pro files.
Server has 4 tools with complete descriptions and basic input schemas. All tools are verb-noun named (analyze_, migrate_, recover_, extract_). Descriptions are substantive (100-200 chars), exceeding the 10-char minimum. However, parameter descriptions are minimal or absent, most params lack detail on format, constraints, or dependencies. Output schemas are not documented; tools return JSON strings without declared structure. Error handling is implicit (exceptions bubble up) rather than explicit recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles (analyze=READ_ONLY, migrate/recover/extract=WRITE). Missing pagination, rate limiting, and per-item error reporting for batch operations.
Analyze a CODESYS project for migration issues. Detects unresolved symbols, deprecated patterns, V2/V3 compatibility problems, and unsafe code patterns. Accepts a path to a project file (.exp, .st, .xml, .pro) or a directory containing extracted .st files.
Extract logic from a CODESYS project file into individual Structured Text files. Accepts .exp, .xml, .st, or .pro files.
Migrate a CODESYS V2.x project to V3.5+ compatible format. Handles type mapping, library resolution, deprecated FB replacement, and syntax transformation. Optionally adapts for Raspberry Pi. Returns a summary and writes output files to output_path.
Recover a broken CODESYS V2.x project. Resolves library references, generates stub function blocks for missing libraries, and extracts usable logic. Returns a summary of resolved/unresolved items.
Parameter descriptions are minimal. 'project_path' and 'output_path' lack format guidance (absolute vs relative paths, required file extensions, max length). 'target_device' enum values are documented in description but not in schema as formal enum constraint.
Output schemas are not documented. Tools return JSON strings (via json.dumps) but callers cannot know the structure of 'report', 'migrated', or 'summary' objects. LLMs cannot plan downstream operations or extract specific fields.
No tool annotations despite clear risk profiles. 'analyze_project' is READ_ONLY; 'migrate_project', 'recover_project', 'extract_project' are WRITE/destructive. FastMCP supports readOnlyHint and destructiveHint, these should be declared to guide agent planning and confirmation logic.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Error handling is implicit. Exceptions (FileNotFoundError, ValueError) are raised but not caught with actionable recovery guidance. LLMs receive raw exception messages instead of 'Try search_projects() first' or 'Ensure file is .exp, .st, .xml, or .pro format'.
No pagination or result limits. If a project contains thousands of POUs or data types, migrate_project writes all to disk and returns a summary. Large result sets risk context window exhaustion and token waste. No limit parameter or pagination cursor.