zemax-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ZEMAX_MCP_ZEMAX_ROOT | No | Zemax root whose Glasscat subdirectory should be searched | |
| ZEMAX_MCP_INSTALL_DIR | No | OpticStudio installation root | |
| ZEMAX_MCP_INSTANCE_ID | No | Interactive Extension instance ID | 0 |
| ZEMAX_MCP_WORKER_NAME | No | Internal serialized ZOS worker name | zemax-zos-worker |
| ZEMAX_MCP_ZOSAPI_PATH | No | ZOS-API directory or full path to ZOSAPI.dll | |
| ZEMAX_MCP_GLASSCAT_DIR | No | Explicit Glasscat search root(s), separated by the Windows path separator | |
| ZEMAX_MCP_CONNECTION_MODE | No | standalone or extension | standalone |
| ZEMAX_MCP_ALLOW_DESTRUCTIVE | No | Must be 1 in addition to explicit tool confirmation for destructive Design Lockdown |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| zemax_add_configuration_operandD | Add an MCE operand. |
| zemax_add_material_catalogB | Add a material catalog to the current optical system. |
| zemax_add_operandC | Add an optimization operand to the merit function. |
| zemax_add_surfaceC | Insert a new sequential surface. |
| zemax_analysis_seriesC | Run an arbitrary series analysis and return decimated curves. |
| zemax_batch_ray_traceC | Trace a batch of normalized sequential rays. |
| zemax_cardinal_pointsC | Calculate focal lengths, principal planes, and other cardinal points. |
| zemax_chromatic_focal_shiftB | Calculate longitudinal chromatic focal shift versus wavelength. |
| zemax_close_fileA | Close the current optical system while retaining the application connection. |
| zemax_connectC | Connect to OpticStudio in standalone or interactive-extension mode. |
| zemax_constrained_optimizeC | Run the custom bound-constrained Levenberg-Marquardt optimizer. |
| zemax_delete_configuration_operandC | Delete an MCE operand row. |
| zemax_design_lockdownC | Apply destructive Design Lockdown to an owned disposable sequential system. |
| zemax_diffraction_encircled_energyC | Calculate FFT diffraction encircled energy versus radius. |
| zemax_disconnectC | Disconnect cleanly and close an owned OpticStudio application. |
| zemax_evalC | Advanced backend-defined diagnostic/evaluation escape hatch; disabled unless explicitly allowed. |
| zemax_export_analysisB | Export an analysis result as text, bitmap, or structured data. |
| zemax_export_glass_catalogC | Export filtered glasses to a new AGF catalog. |
| zemax_fft_mtfC | Calculate diffraction FFT MTF curves for all fields. |
| zemax_fft_mtf_vs_fieldB | Calculate polychromatic FFT MTF versus Y field for up to six frequencies. |
| zemax_fft_psfC | Calculate a diffraction FFT point-spread function. |
| zemax_field_curvature_distortionC | Calculate tangential/sagittal field curvature and distortion. |
| zemax_filter_glassesC | Filter glasses by preferred state, optical coordinates, cost, TCE, coverage, and melt frequency. |
| zemax_forbes_merit_functionC | Build explicit OPD operands using Forbes 1988 Gaussian quadrature sampling. |
| zemax_geometric_encircled_energyB | Calculate ray-based geometric encircled energy versus radius. |
| zemax_geometric_image_analysisC | Run geometric image analysis and return/export the image grid. |
| zemax_geometric_mtfC | Calculate geometric MTF curves for all fields. |
| zemax_geometric_mtf_vs_fieldC | Calculate geometric MTF versus field for up to six frequencies. |
| zemax_get_afocal_modeB | Get the sequential afocal-mode setting. |
| zemax_get_apodizationB | Get aperture apodization settings. |
| zemax_get_aspheric_surfaceC | Get Even Asphere conic and alpha1-alpha8 coefficients. |
| zemax_get_clear_semi_diameter_marginC | Get the clear semi-diameter margin. |
| zemax_get_configurationA | Get number of configurations and current configuration. |
| zemax_get_configuration_operandsB | Get MCE operands and values across configurations. |
| zemax_get_extra_dataC | Read surface Extra Data (XDAT) values. |
| zemax_get_glass_catalogsB | List glass catalog names installed in Glasscat. |
| zemax_get_glassesB | List glasses and optical/manufacturing properties from catalogs. |
| zemax_get_merit_functionC | Retrieve merit-function operands and optional calculated values. |
| zemax_get_mtf_unitsB | Get MTF spatial-frequency units. |
| zemax_get_polarizationB | Get the current optical system's default input polarization settings. |
| zemax_get_ray_aimingB | Get the ray-aiming setting. |
| zemax_get_surfaceC | Get detailed data for a sequential surface. |
| zemax_get_surface_solvesB | Get solve, pickup, and variable states for all surface properties. |
| zemax_get_systemC | Get optical-system data, optionally including surfaces, fields, and wavelengths. |
| zemax_get_system_unitsB | Get the current optical system's lens units. |
| zemax_get_title_notesA | Get the current optical system's title, notes, and author. |
| zemax_get_variablesB | Scan the system for optimization variables and constraint states. |
| zemax_global_searchC | Run native global optimization with optional glass substitution. |
| zemax_hammerC | Run native Hammer optimization. |
| zemax_huygens_mtfC | Calculate Huygens MTF by direct pupil integration. |
| zemax_huygens_psfC | Calculate a Huygens point-spread function. |
| zemax_infoC | Report the current session and optical-system information. |
| zemax_lateral_colorB | Calculate lateral color versus field. |
| zemax_lde_insert_surfaceC | Insert a surface at a zero-based LDE position. |
| zemax_lde_set_surfaceC | Legacy wrapper for editing common surface properties. |
| zemax_lde_summaryA | Return a compact sequential Lens Data Editor prescription. |
| zemax_list_surface_typesB | List surface types supported by the installed OpticStudio build. |
| zemax_load_merit_function_fileC | Load a .MF merit-function file. |
| zemax_longitudinal_aberrationB | Calculate longitudinal aberration versus pupil position. |
| zemax_mce_add_configC | Legacy wrapper to append a configuration. |
| zemax_mce_add_operandC | Legacy wrapper to append an MCE operand. |
| zemax_mce_summaryD | Legacy compact MCE summary. |
| zemax_merit_valueB | Calculate the current merit-function value. |
| zemax_merit_wizardC | Legacy merit-function wizard wrapper. |
| zemax_multistart_optimizeB | Start non-blocking randomized multistart constrained optimization. |
| zemax_multistart_statusB | Poll multistart progress without blocking. |
| zemax_multistart_stopB | Request graceful stop of multistart optimization. |
| zemax_new_systemB | Create a blank sequential or non-sequential optical system. |
| zemax_nsc_add_objectC | Append a non-sequential object. |
| zemax_nsc_clear_detectorsA | Clear all or one non-sequential detector. |
| zemax_nsc_convert_to_nonsequentialB | Convert or make the current optical system non-sequential. |
| zemax_nsc_convert_to_sequentialC | Convert an eligible NSC group to sequential mode. |
| zemax_nsc_detector_dataC | Read full detector data and aggregate statistics. |
| zemax_nsc_detector_pixelC | Read one detector pixel or aggregate index. |
| zemax_nsc_detector_viewerC | Run bounded Detector Viewer extraction for scalar or RGB data. |
| zemax_nsc_get_objectB | Get a non-sequential object and its common/type-specific data. |
| zemax_nsc_get_object_parameterC | Get a type-specific NSC object parameter. |
| zemax_nsc_get_source_spectrumC | Get typed spectrum settings for an NSC source object. |
| zemax_nsc_insert_objectC | Insert a non-sequential object. |
| zemax_nsc_load_detectorC | Load detector data from a type-compatible detector data file. |
| zemax_nsc_polar_detector_dataC | Read bounded full Detector Polar data. |
| zemax_nsc_polar_detector_pixelC | Read one Detector Polar pixel or aggregate value. |
| zemax_nsc_ray_traceC | Run a non-sequential ray trace. |
| zemax_nsc_remove_objectC | Remove a non-sequential object. |
| zemax_nsc_save_detectorC | Save detector data to a type-compatible detector data file. |
| zemax_nsc_set_objectC | Set common placement, material, comment, and reference properties of an NSC object. |
| zemax_nsc_set_object_parameterC | Set a type-specific NSC object parameter. |
| zemax_nsc_set_source_spectrumC | Set typed spectrum settings for an NSC source object. |
| zemax_nsc_summaryB | List non-sequential objects and common properties. |
| zemax_opd_fanB | Calculate optical-path-difference fans for all fields and wavelengths. |
| zemax_open_fileC | Open a Zemax .zmx or .zos lens file. |
| zemax_operand_helpC | Get detailed documentation for an optimization operand. |
| zemax_optimization_wizardC | Construct a merit function using Optimization Wizard criteria. |
| zemax_optimizeC | Run native local optimization. |
| zemax_popC | Run Physical Optics Propagation (POP). |
| zemax_pupil_aberration_fanB | Calculate entrance-pupil aberration fans. |
| zemax_quick_focusC | Run Quick Focus to adjust back focal distance. |
| zemax_ray_fanB | Calculate transverse ray aberration fans for all fields and wavelengths. |
| zemax_ray_traceC | Trace one normalized sequential ray. |
| zemax_relative_illuminationB | Calculate relative illumination and effective F-number versus field. |
| zemax_remove_material_catalogC | Remove a material catalog from the current optical system. |
| zemax_remove_operandB | Remove a merit-function operand. |
| zemax_remove_surfaceC | Remove a sequential surface. |
| zemax_restartA | Restart the OpticStudio connection when the current session is unhealthy. |
| zemax_rms_spotC | Calculate an RMS spot radius for a normalized field point. |
| zemax_run_analysisC | Run an arbitrary AnalysisIDM by name and extract sample results. |
| zemax_run_tolerancingC | Run bounded Monte Carlo tolerancing. |
| zemax_save_fileB | Save the current lens, optionally using Save As. |
| zemax_save_merit_function_fileC | Save the merit function to a .MF file. |
| zemax_scale_lensC | Scale a disposable lens by factor or convert it to another lens unit. |
| zemax_search_operandsB | Search operand names and descriptions. |
| zemax_seidel_coefficientsC | Calculate third-order Seidel and chromatic aberration coefficients. |
| zemax_set_afocal_modeA | Enable or disable sequential afocal mode. |
| zemax_set_apertureC | Set the system aperture type and value. |
| zemax_set_apodizationC | Set aperture apodization type and factor. |
| zemax_set_aspheric_surfaceC | Convert to Even Asphere and set conic and alpha coefficients. |
| zemax_set_clear_semi_diameter_marginC | Set the clear semi-diameter margin. |
| zemax_set_configuration_operand_valueC | Set a value or pickup solve for one configuration operand cell. |
| zemax_set_current_configurationC | Set the active configuration. |
| zemax_set_extra_dataC | Set one or more surface Extra Data (XDAT) values. |
| zemax_set_fieldsC | Set all field points and the field coordinate type. |
| zemax_set_mtf_unitsC | Set MTF spatial-frequency units. |
| zemax_set_number_of_configurationsC | Set the number of configurations. |
| zemax_set_number_of_fieldsC | Set the number of field rows. |
| zemax_set_number_of_wavelengthsC | Set the number of wavelength rows. |
| zemax_set_polarizationC | Update the current optical system's default input polarization settings. |
| zemax_set_ray_aimingB | Set ray aiming to Off, Paraxial, or Real. |
| zemax_set_surfaceC | Modify common properties and variable states of a sequential surface. |
| zemax_set_surface_parameterC | Set a type-specific surface parameter. |
| zemax_set_surface_solveD | Set the solve type for a surface property. |
| zemax_set_surface_typeC | Change a surface to a named Zemax surface type. |
| zemax_set_system_unitsC | Set the current optical system's lens units. |
| zemax_set_title_notesC | Update the current optical system's title, notes, and author. |
| zemax_set_variableC | Legacy wrapper to make a surface cell variable. |
| zemax_set_variable_constraintsC | Set hard min/max constraints on optimization variables. |
| zemax_set_wavelengthsB | Replace wavelength definitions and select the primary wavelength. |
| zemax_spot_diagramC | Calculate spot-size analysis for one field. |
| zemax_spot_rmsB | Legacy RMS spot radius analysis for every field. |
| zemax_statusA | Return connection, ownership, license, and current-system status. |
| zemax_tde_summaryB | Return tolerance operands and bounds. |
| zemax_tolerance_wizardC | Populate default sequential tolerances. |
| zemax_zrd_readC | Read a bounded nested ray and segment sample from a ZRD. |
| zemax_zrd_summaryB | Stream an existing ZRD and return bounded aggregate metadata. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| zemax_analyze_system | Plan a concise quality review of the current optical system. |
| zemax_optimize_system | Plan a bounded, inspectable sequential optimization workflow. |
| zemax_build_nsc_system | Plan a non-sequential illumination or stray-light workflow. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| zemax-tool-manifest | Complete Zemax MCP union tool manifest. |
| zemax-capability-evidence | Derived production capability and live-evidence summary. |
| zemax-session-status | Current CLR-free session status snapshot. |
TDQS
Scored across 143 tools
Many tools overlap heavily, including legacy wrappers alongside modern equivalents (e.g., zemax_set_surface vs zemax_lde_set_surface, zemax_optimization_wizard vs zemax_merit_wizard) and multiple spot/MTF/detector variants. Descriptions sometimes clarify legacy status, but the boundaries remain unclear and misselection is likely.
Almost all tools use a consistent zemax_ prefix and snake_case, and getter/setter pairs follow predictable verb_noun patterns. However, many analysis tools use noun phrases (e.g., zemax_fft_mtf, zemax_ray_fan) and legacy wrappers introduce minor naming deviations.
With 143 tools, this server is far beyond any reasonable MCP tool surface, even for a complex optical design domain. The set includes many legacy wrappers and overlapping analysis/detector variants, making it an extreme mismatch rather than a well-scoped collection.
The surface covers sequential and non-sequential systems, surface/object CRUD, optimization, tolerancing, numerous analyses, file lifecycle, and configuration handling. No obvious core gaps are apparent for the stated optical design purpose.