Skip to content
github-actions[bot] edited this page Nov 12, 2026 · 35 revisions

uni-t-uts-mcp

A Model Context Protocol (MCP) server that lets an AI assistant control a UNI-T UTS series spectrum analyzer (UTS1000B/T, UTS3000B) over your local network. It talks SCPI over VXI-11 when the analyzer offers it, or over a raw TCP socket (port 5025), so there are no VISA drivers to install.

Status: release v1.1.0 is out. It has 85 tools in 15 groups, verified on a UNI-T UTS3036B, firmware V1.04.0040, over LAN. See the Roadmap. You can install it from the npm registry (npx -y uni-t-uts-mcp), the release tarball, the git tag or a Docker image (see Getting Started).

What you can do today

Group Tools
Connection connect, discover_instruments, disconnect, list_instruments, identify
Raw SCPI scpi_query, scpi_command
Frequency get_frequency, set_frequency
Amplitude get_amplitude, set_amplitude
Bandwidth, sweep and detector get_bandwidth, set_bandwidth, get_sweep, set_sweep, get_detector, set_detector
Acquisition get_acquisition, set_acquisition, single_sweep, start_sweep, wait_for_sweep_complete
Trace get_trace, set_trace, restart_trace, set_trace_math, get_trace_data
Markers get_marker, set_marker, marker_search, marker_to_instrument, markers_all_off, get_peak_criteria, set_peak_criteria, get_marker_function, set_marker_function, get_marker_ndb, set_marker_ndb, get_frequency_counter, set_frequency_counter
Limit lines get_limit_line, set_limit_line, delete_limit_line
Tracking generator get_tracking_generator, set_tracking_generator
Measurement function module get_instrument_module, select_instrument_module
Analog demodulation module enter_analog_demod, exit_analog_demod, get_ad_settings, set_ad_frequency, set_ad_demod_timing, set_ad_filters, set_ad_audio, get_demod_result, set_ad_display, ad_marker, ad_marker_search, get_ad_marker, ad_markers_all_off
EMI function get_emi_settings, set_emi_scan_table, set_emi_measurement, get_emi_limit_line, set_emi_limit_line, delete_emi_limit_line, get_emi_correction, set_emi_correction, get_emi_marker, set_emi_marker, emi_marker_search, emi_markers_all_off, get_emi_peak_criteria, set_emi_peak_criteria, emi_signal_list, get_emi_signal_list_sort, set_emi_signal_list_sort, emi_run, emi_stop
Measurements get_measurement, configure_measurement, read_measurement, exit_measurement, measure
Screenshot screenshot

Example requests to your assistant once the server is connected:

  • "Identify the analyzer and show me its current frequency, amplitude and bandwidth settings."
  • "Set the center to 100 MHz with a 10 MHz span and a 10 kHz RBW."
  • "Set the reference level to -20 dBm with 5 dB per division."
  • "Show trace 2 as max hold, then restart it."
  • "Take a single sweep and tell me when it is finished."

Every setter reads the instrument back and tells you when the analyzer changed or clamped a value (this unit clamps silently), and reports instrument errors with their code and text. Parallel tool calls are safe: the server runs tool calls one at a time per instrument, in arrival order (see Architecture).

Wiki pages

  • Getting Started: requirements, install paths, configuring your MCP client
  • Tools: every tool with its parameters and behavior
  • Instrument Behavior: what was verified on the real analyzer, including the quirks that shape the design
  • Architecture: how the server is built and how a tool call flows through it
  • Safety and Security: the command denylist and how to report vulnerabilities
  • Troubleshooting: common problems and what they mean
  • Manual Testing: check every tool group on a real analyzer
  • Development: workflow, tests, adding a tool, hardware testing rules, how this wiki is kept up to date
  • Roadmap: open and completed issues

Also available

Where this wiki comes from

This wiki is built from the repository by scripts/sync-wiki.mjs and published automatically after every change to main, so edits made directly in the GitHub wiki editor are overwritten. Tools, Instrument Behavior, Home (the status and tool table) and Roadmap are generated from docs/tools-reference.md, docs/verified-hardware.md, package.json and the issue tracker; the other pages live in docs/wiki/ and change through pull requests. See Development.

License

MIT

Clone this wiki locally