MCP bridge for controlling Igor Pro via its ZeroMQ-XOP CallFunction interface
Server has 16 tools with basic naming (verb_noun pattern mostly followed) and descriptions present, but significant gaps in schema completeness, parameter documentation, and error handling. Most tools lack detailed input parameter descriptions beyond the parameter name itself. Output schemas are not documented. No evidence of error recovery guidance, validation rules, or actionable error messages. Tool descriptions are adequate (50-150 chars) but lack context on when to use each tool vs. alternatives. Parameters like 'command' and 'timeout_seconds' have minimal guidance on constraints, valid ranges, or format expectations. No evidence of idempotency markers, confirmation patterns for destructive operations, or permission gates.
Checks if Igor Pro's procedure code is compiled and returns compilation status
Configures Igor Pro launch parameters including executable path and ZeroMQ port
Dismisses any open Igor Pro compilation error dialog window
Executes an arbitrary Igor Pro command string and returns the captured output
Executes an Igor Pro command in an unattended instance (launches Igor Pro if needed)
Returns the bridge version, Python interpreter path, and pyzmq version
Returns the current state of Igor Pro's debugger
Parameter descriptions lack constraint documentation. 'timeout_seconds' and 'command' parameters have minimal guidance on valid ranges, format expectations, or error conditions. No min/max bounds, regex patterns, or enum constraints visible.
Output schemas not documented. Tools return data but no schema definition visible for what fields are returned, their types, or structure. LLMs cannot plan downstream calls without knowing response shape.
Destructive operations lack confirmation or dry-run patterns. load_experiment, set_wave, and execute_igor_command are irreversible but have no confirmation step or dry-run mode to prevent accidental data loss.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Returns a summary of the Igor Pro environment including version, experiment file, and available procedures
Retrieves a wave from Igor Pro by name, returning its data, dimensions, units, and metadata
Launches Igor Pro in unattended mode with optional experiment file
Loads an Igor Pro experiment file, restarting the Igor Pro process
Polls the status of a previously submitted Igor Pro command
Reads Igor Pro help documentation for a specified topic
Sets a wave in Igor Pro with the provided data
Submits an Igor Pro command for asynchronous execution and returns a token for polling
Submits an Igor Pro command in an unattended instance for asynchronous execution
No error recovery guidance. Tool descriptions do not explain what to do if a call fails, whether errors are retryable, or what the LLM should try next. No actionable error messages visible.
Duplicate/overlapping tool names reduce clarity. execute_igor_command vs execute_igor_command_unattended, and submit_igor_command vs submit_igor_command_unattended, are similar enough that LLMs may conflate them. Distinguish more clearly in descriptions.