scpi-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@scpi-mcpCapture the signal on channel 1"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
scpi-mcp
LabLink gives agents a SCPI wire; scpi-mcp gives agents oscilloscope expertise.
scpi-mcp is a Model Context Protocol server
that lets an agent operate an oscilloscope — not just push SCPI strings at one.
It exposes goal-level tools (capture this signal, measure that, characterize a
channel) backed by a clean, instrument-agnostic interface. All vendor SCPI lives
in the underlying instrument library; the MCP layer stays a thin, uniform wrapper
with no raw-SCPI escape hatch.
.-"""-.
/ .===. \ Skippi
\/ 6 6 \/ your bench-buddy scope gremlin
( \___/ ) "probe first, ask questions later"
___ooo___ooo___Skippi is the mascot — the little gremlin who lives in the scope and knows where all the signals hide.
Scope
First instrument: Rigol DS1054Z (unlocked to DS1104Z base) — 4 analog
channels, 100 MHz. No :SOURce (function generator) or :LA (logic analyzer)
support. Reachable over USB or LAN (TCPIP::<ip>::INSTR).
Related MCP server: rigol-mcp
Architecture
transport/— owns discovery. Enumerates USB, falls back to best-effort LAN auto-discovery, then to an IP prompt; resolves a single VISA resource string and hands it to the instrument layer. Discovery never leaks upward.instruments/— vendor-specific backends behind one abstractbase.pyinterface.rigol_ds1000z.pyis a thin wrapper over the (complete) library;mock.pyimplements the same interface with zero hardware. Adding an instrument is one new file here and zero changes totools/.tools/— instrument-agnostic MCP tools that call onlybase.py.config.py— permission tiers (read_only/read_config/full), enforced at the tool layer. The server refuses; the model never decides.
Status
Part 1 (this scaffold) runs entirely against a MockInstrument — no hardware,
no live VISA. Library completion (Part 2) and hardware-in-the-loop wiring
(Part 3) are bench tasks. See SCAFFOLD_TASK.md.
Quickstart
uv sync
uv run pytest # all green against the mock, zero hardware
uv run scpi-mcp # start the MCP server (mock backend by default)License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/armchairdeity/mcp-server-scpi'
If you have feedback or need assistance with the MCP directory API, please join our Discord server