# sigrok MCP Server

A bridge from your AI agent to sigrok-cli: find a connected logic analyzer, record a trace to a file, then decode protocols such as I2C, SPI or UART.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 12
- Author: KenosInc
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/KenosInc/sigrok-mcp-server
- Updated: 2026-08-17
- HTML: https://affpapa.org/en/nevibecode/mcp/sigrok-mcp-server

## What it does

The server sits between the model and `sigrok-cli`. It shells out via `exec.Command` and turns the plain-text replies into JSON. Of the eleven tools, exactly one touches hardware for writing: `capture_data`. The rest ask questions. `scan_devices` lists what is plugged in, `show_driver_details` and `show_decoder_details` explain a driver or decoder, four `list_supported_*` tools return hardware, decoder, input and output format catalogues, `show_version` and `check_firmware_status` cover version and firmware, and `decode_protocol` works on a file you already captured.

Transport is stdio with JSON-RPC. Written in Go, with no C bindings: sigrok is reachable only through its CLI. The fastest start is the container, `ghcr.io/kenosinc/sigrok-mcp-server`. Building yourself means Go 1.25+ plus `sigrok-cli` already on the machine.

Some drivers need firmware that licensing keeps out of the image, so it is not bundled. Devices that don't ask for it, like `demo` or pure protocol work on a saved file, run fine anyway. Kingst LA2016 and Saleae Logic16 owners have to mount a firmware folder at `/usr/local/share/sigrok-firmware`; `check_firmware_status` tells you whether it was picked up. Note that USB access from Docker requires `--privileged` — without it the scan comes back empty. Three variables shape execution: `SIGROK_CLI_PATH` (default `sigrok-cli`), `SIGROK_TIMEOUT_SECONDS` (`30`) and `SIGROK_WORKING_DIR`.

## Requirements
- Needs: Docker
- Environment variables: `SIGROK_CLI_PATH`, `SIGROK_TIMEOUT_SECONDS`, `SIGROK_WORKING_DIR` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env SIGROK_CLI_PATH=<SIGROK_CLI_PATH> --env SIGROK_TIMEOUT_SECONDS=<SIGROK_TIMEOUT_SECONDS> --env SIGROK_WORKING_DIR=<SIGROK_WORKING_DIR> --transport stdio sigrok-mcp-server -- docker run -i --rm -e SIGROK_CLI_PATH -e SIGROK_TIMEOUT_SECONDS -e SIGROK_WORKING_DIR ghcr.io/kenosinc/sigrok-mcp-server:0.2.0
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
codex mcp add sigrok-mcp-server --env SIGROK_CLI_PATH=<SIGROK_CLI_PATH> --env SIGROK_TIMEOUT_SECONDS=<SIGROK_TIMEOUT_SECONDS> --env SIGROK_WORKING_DIR=<SIGROK_WORKING_DIR> -- docker run -i --rm -e SIGROK_CLI_PATH -e SIGROK_TIMEOUT_SECONDS -e SIGROK_WORKING_DIR ghcr.io/kenosinc/sigrok-mcp-server:0.2.0
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "sigrok-mcp-server": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "-e",
                "SIGROK_CLI_PATH",
                "-e",
                "SIGROK_TIMEOUT_SECONDS",
                "-e",
                "SIGROK_WORKING_DIR",
                "ghcr.io/kenosinc/sigrok-mcp-server:0.2.0"
            ],
            "env": {
                "SIGROK_CLI_PATH": "<SIGROK_CLI_PATH>",
                "SIGROK_TIMEOUT_SECONDS": "<SIGROK_TIMEOUT_SECONDS>",
                "SIGROK_WORKING_DIR": "<SIGROK_WORKING_DIR>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "sigrok-mcp-server": {
            "type": "stdio",
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "-e",
                "SIGROK_CLI_PATH",
                "-e",
                "SIGROK_TIMEOUT_SECONDS",
                "-e",
                "SIGROK_WORKING_DIR",
                "ghcr.io/kenosinc/sigrok-mcp-server:0.2.0"
            ],
            "env": {
                "SIGROK_CLI_PATH": "<SIGROK_CLI_PATH>",
                "SIGROK_TIMEOUT_SECONDS": "<SIGROK_TIMEOUT_SECONDS>",
                "SIGROK_WORKING_DIR": "<SIGROK_WORKING_DIR>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e SIGROK_CLI_PATH=<SIGROK_CLI_PATH> -e SIGROK_TIMEOUT_SECONDS=<SIGROK_TIMEOUT_SECONDS> -e SIGROK_WORKING_DIR=<SIGROK_WORKING_DIR> sigrok-mcp-server docker run -i --rm -e SIGROK_CLI_PATH -e SIGROK_TIMEOUT_SECONDS -e SIGROK_WORKING_DIR ghcr.io/kenosinc/sigrok-mcp-server:0.2.0
```
Replace <…> with your own values

## When to use it
- list attached logic analyzers without typing sigrok-cli commands yourself
- record traffic from a device pin into a capture file
- decode a saved trace with an I2C, SPI, UART or CAN decoder
- look up channels and options of a given driver or decoder
- confirm a firmware file is present when a board stays invisible

## Example prompts
- Scan for connected devices and tell me what you find
- Capture from channel D0 into a file, keep the 30 second timeout
- Decode `capture.sr` with the SPI decoder and explain what is on the bus

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119160
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47392
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43872

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
