PicoScope

STDIO MCP server for controlling PicoScope oscilloscopes with AI assistants
  • python

3

GitHub Stars

python

Language

6 months ago

First Indexed

2 months ago

Catalog Refreshed

Documentation & install

Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.

Installation

Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "markuskreitzer-picoscope_mcp": {
      "command": "uv",
      "args": [
        "run",
        "picoscope-mcp"
      ]
    }
  }
}

You can run a PicoScope MCP Server that lets LLMs and other clients control PicoScope oscilloscopes for automated signal capture, analysis, and AWG control. This server uses FastMCP and PicoSDK bindings, and communicates over STDIO so your MCP clients can issue commands to discover devices, configure channels, acquire data, perform measurements, and drive the built-in waveform generator.

How to use

Start by running the MCP server locally so your client can connect. The server operates in STDIO mode and accepts commands from MCP clients to perform device discovery, channel setup, triggering, data capture, and analysis. You can chain commands to perform end-to-end experiments, such as discovering a PicoScope, configuring channel A, triggering on a signal, capturing data, and computing frequency or FFT.

How to install

Prerequisites: You need PicoSDK C libraries installed for your platform and Python 3.11 or newer with the uv package manager.

Steps to install and run the server:

  1. Install PicoSDK C libraries appropriate for your OS (see platform notes for exact packages or installers).

  2. Install Python 3.11 or newer if you do not have it yet.

  3. Install the uv package manager if you do not have it yet, then synchronize dependencies and run the server as shown below.

Additional sections

Configuration and runtime flow. The server is designed to be started from your MCP tooling environment and is intended to be used with clients such as Claude Desktop through a standard STDIO interface.

Testing without hardware. You can start the server even when PicoScope hardware is not connected. Device operations will fail until PicoSDK libraries are installed and a PicoScope device is connected.

Development and testing. You can explore the MCP tool set to discover devices, configure channels, perform captures, and run measurements. See the tool list in the next sections for available actions.

Example usage with Claude

  1. Discover devices and connect to a PicoScope in your workflow. 2) Enable channel A and set a suitable voltage range. 3) Configure an auto-trigger on the channel. 4) Capture a block of data with pre/post samples. 5) Analyze the results to extract frequency, amplitude, or FFT.

Configuration snippets

{
  "mcpServers": {
    "picoscope": {
      "type": "stdio",
      "name": "picoscope",
      "command": "uv",
      "args": ["run", "picoscope-mcp"]
    }
  }
}

Discovery & Connection tools

These tools help you find and connect to PicoScope devices: list_devices, connect_device, get_device_info, disconnect_device.

Channel Configuration tools

Configure channel parameters, query current settings, and review the timebase: configure_channel, get_channel_config, set_timebase.

Triggering tools

Set up edge triggering with simple configurations: set_simple_trigger.

Data Acquisition tools

Capture single snapshots or stream data, then retrieve it for analysis: capture_block, start_streaming, stop_streaming, get_streaming_data.

Analysis tools

Measure signal properties and perform frequency-domain analysis: measure_frequency, measure_amplitude, measure_rise_time, measure_pulse_width, compute_fft, get_statistics, measure_thd.

Advanced tools

Control the AWG, perform mathematical channel operations, export data, and adjust downsampling: set_signal_generator, stop_signal_generator, configure_math_channel, export_waveform, configure_downsampling.

Testing without hardware (repeat)

The server runs without PicoScope hardware connected, but device operations will fail until the PicoSDK libraries are installed and a device is connected.

Configuration and environment

The server is intended to run under the uv package manager. Ensure the required PicoSDK libraries are installed for your platform and that Python 3.11+ is available in your environment.

Troubleshooting

If PicoSDK cannot be found, install the PicoSDK C libraries for your platform. If no device is detected, verify USB connection and that drivers are installed, then reconnect the device.

Development

To extend support to additional PicoScope series, update the device management layer to detect the series and map the appropriate API calls. Run the test suite to validate changes.

Available tools

list_devices

Discover all connected PicoScope devices

connect_device

Connect to a specific device by serial or to the first available device

get_device_info

Retrieve details about the connected device

disconnect_device

Disconnect from the current device

configure_channel

Set channel parameters such as range, coupling, and offset

get_channel_config

Query current channel configuration

set_timebase

Configure the sampling rate or timebase (informational)

set_simple_trigger

Configure an edge trigger (rising, falling, or both)

capture_block

Capture a single block of data with pre/post trigger samples

start_streaming

Begin continuous data capture in streaming mode

stop_streaming

End streaming mode

get_streaming_data

Retrieve the latest data from streaming

measure_frequency

Calculate signal frequency from captured data

measure_amplitude

Measure amplitude metrics (pk-pk, RMS, etc.)

measure_rise_time

Analyze edge timing and rise time

measure_pulse_width

Characterize pulse width and related metrics

compute_fft

Perform frequency-domain FFT analysis on captured data

get_statistics

Return basic statistics (min, max, mean, std) of the signal

measure_thd

Compute Total Harmonic Distortion of the signal

set_signal_generator

Configure the built-in arbitrary waveform generator (AWG)

stop_signal_generator

Disable the AWG output

configure_math_channel

Perform channel math operations (A+B, A-B, etc.)

export_waveform

Export captured data to CSV/JSON/NumPy formats

configure_downsampling

Set downsampling mode for data

Built by
VeilStrat
AI signals for GTM teams
© 2026 VeilStrat. All rights reserved.All systems operational