MCP server for IQMS / DELMIAworks (EnterpriseIQ) — read manufacturing ERP data via Oracle and post transactional updates via the WebAPI module
16 tools with complete schemas and descriptions, but quality is uneven. Naming follows verb_noun convention well (navigate, list, get, create, post, adjust, explode, trace). Descriptions are present but often generic, many lack context on WHEN to use the tool or what prerequisites exist. Parameter descriptions are sparse; many params lack guidance on format/range. Output schemas are not documented. Error handling is minimal, no recovery guidance or categorization. Missing tool annotations (readOnlyHint/destructiveHint). No pagination guidance despite list tools accepting limits. Overall: functional but below production baseline.
Explode a BOM. Single-level by default; pass max_level to recurse deeper.
Find every parent item that consumes a given component. Single-level by default.
Post an inventory adjustment (positive or negative quantity). Requires WebAPI credentials.
Walk lot genealogy. Direction "from_components" walks back through inputs that produced the lot; "where_produced" walks forward to lots derived from it.
List on-hand inventory by item, location, or lot. By default hides zero-quantity rows.
Navigate to an IQMS domain to see its tools. Domains: workorders, inventory, boms, sales_orders, purchase_orders, schedule, quality. - workorders: list/get work orders, post production - inventory: on-hand quantities, lot trace, inventory adjustments - boms: BOM explosion + where-used - sales_orders: open SOs, ship status - purchase_orders: open POs, expected receipts - schedule: machine schedule + capacity load - quality: non-conformances / CARs / CAPAs
Output schemas not documented. LLMs cannot plan downstream calls or extract required fields. No guidance on pagination structure, total counts, or next_cursor for list tools.
Parameter descriptions are minimal or missing. E.g., 'limit' lacks guidance on default/max; 'reason_code' in iqms_inventory_adjust has no format hint; 'direction' in iqms_inventory_lot_trace lacks explanation of what each enum value does.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes without explicit hints. Write tools (create, post_production, adjust, create_ncr) should be marked destructiveHint=true.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
List purchase orders. Filter by status, supplier, or expected receipt date.
Open a non-conformance record. Requires WebAPI credentials.
List non-conformances / Corrective Action Requests (CARs / CAPAs). Filter by status, item, or reported date.
List sales orders. Filter by status, customer, or requested ship date.
List scheduled work-center slots within a date range.
Check IQMS connection status — reports whether Oracle credentials are configured and whether the optional WebAPI (write) driver is enabled.
Create a new work order. Requires WebAPI credentials (licensed module). Returns DriverNotConfiguredError when WebAPI is not configured.
Get a single work order by ID, including routings.
List work orders. Filter by status, customer, item, or due date. Returns up to `limit` rows (default 50, max 500).
Post production quantities (made / scrapped) against a work order. Requires WebAPI credentials.
Error handling lacks recovery guidance. Generic error messages ('Error: ...') do not tell LLMs what to do next. No categorization of retryable vs user-fixable vs fatal errors.
Tool descriptions lack context on WHEN to use them and prerequisites. E.g., iqms_workorders_create says 'Requires WebAPI credentials' but does not explain what happens if they are missing or how to check status first.