USBTMC MCP Server
by NaoNaoMe
README.md
# USBTMC MCP Server
[](https://opensource.org/licenses/MIT)
A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server for controlling multiple USBTMC (USB Test and Measurement Class) devices simultaneously using SCPI commands.
## Features
- **Multi-Device Support**: Connect and control up to 16 instruments at once.
- **Unified Interface**: Use standard SCPI commands via a simplified MCP toolset.
- **Keysight Support**: Includes specialized tools to unlock Keysight modular instruments from firmware mode to USBTMC mode.
- **Screenshot Capture**: Take screenshots from Keysight/Agilent and Tektronix oscilloscopes.
- **State Management**: Automatic tracking of device IDs and connection states.
## Requirements
- Python >= 3.13
- `mcp[cli]` **2.x** (v0.2.0 and later; use `usbtmc-lite-mcp` 0.1.x if you are pinned to `mcp` 1.x)
### Windows Additional Setup
This project uses libUSB as a backend for USB communication. On Windows, you need to install a compatible USB driver for your device using [Zadig](https://zadig.akeo.ie/).
1. Download and run Zadig
2. Select your target USB device from the dropdown (enable **Options → List All Devices** if it does not appear)
3. Select **WinUSB** as the driver and click **Replace Driver**
> **Note:** Replacing the driver will remove the device's original functionality (e.g., HID recognition). To restore it, uninstall the driver from Device Manager and reconnect the device.
## Installation
Using `uv` (recommended):
```bash
uv pip install usbtmc-lite-mcp
```
Or via `pip`:
```bash
pip install usbtmc-lite-mcp
```
Or from source:
```bash
git clone https://github.com/NaoNaoMe/usbtmc-lite-mcp.git
cd usbtmc-lite-mcp
uv sync
```
## Configuration
### Claude Desktop Config
Add the server to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"usbtmc-lite-mcp": {
"command": "uvx",
"args": [
"usbtmc-lite-mcp"
]
}
}
}
```
## Tools Overview
### Connection
- `usbtmc_list_devices`: Scan the USB bus for available USBTMC instruments.
- `usbtmc_list_connected_devices`: List all currently active device connections.
- `usbtmc_connect`: Establish a connection to a specific device (returns a `device_id`).
- `usbtmc_disconnect`: Close the connection to a device.
### Communication
- `usbtmc_query`: Send a SCPI query (e.g., `*IDN?`) and receive the response.
- `usbtmc_send`: Send a SCPI command.
- `usbtmc_receive`: Manually reads the response.
- `usbtmc_clear`: Clear device buffers and reset communication state.
### Keysight / Tektronix Utilities
- `usbtmc_unlock_keysight_devices`: Switch Keysight modular instruments to USBTMC mode.
- `usbtmc_screenshot_keysight_display`: Capture a screenshot from a Keysight/Agilent oscilloscope.
- `usbtmc_screenshot_tektronix_display`: Capture a screenshot from a Tektronix oscilloscope.
## Example Workflow
1. **List Devices**: Call `usbtmc_list_devices` to find your instrument's serial number.
2. **Connect**: Call `usbtmc_connect` with the `serial_number`. It will return a `device_id` (e.g., `0`).
3. **Identify**: Call `usbtmc_query` with `device_id: 0` and `command: "*IDN?"`.
4. **Configure**: Call `usbtmc_send` to set parameters.
5. **Disconnect**: Call `usbtmc_disconnect` when finished.
## License
This project is licensed under the MIT License — see the [LICENSE](LICENSE) file for details.
TDQS
A4.3/5.0
Scored across 11 tools
Disambiguation5/5
Each tool targets a distinct operation: discovery, connection, communication, recovery, vendor unlock, and vendor-specific screenshots. The only potential confusion between list_devices and list_connected_devices is resolved by clear descriptions.
Naming Consistency5/5
All tools follow a usbtmc_<verb>_<noun> pattern in lowercase snake_case, with consistent verb-first ordering and vendor qualifiers where needed.
Tool Count5/5
11 tools is well-scoped for a USBTMC server, covering the full workflow without excessive fragmentation.
Completeness5/5
The tool set covers the complete lifecycle from discovery to disconnection, including send/receive/query for SCPI communication, recovery via clear, and vendor-specific features for Keysight and Tektronix.
Maintenance
ActivityMaintained
ResponsivenessNo issues