Sigrok MCP Server

Servidor MCP para sigrok — permite que LLMs controlem analisadores lógicos e decodifiquem protocolos

Documentação

sigrok-mcp-server

CI Go Version License: MIT GitHub Release

Um servidor Model Context Protocol (MCP) para sigrok — permite que agentes de IA como Claude Code, Codex e Cursor capturem, decodifiquem e analisem sinais de analisadores lógicos e dispositivos de medição. Suporta I2C, SPI, UART, CAN e mais de 100 protocolos via sigrok-cli.

Documentação | Início Rápido

Ferramentas

FerramentaDescrição
list_supported_hardwareListar todos os drivers de hardware suportados
list_supported_decodersListar todos os decodificadores de protocolo suportados
list_input_formatsListar todos os formatos de arquivo de entrada suportados
list_output_formatsListar todos os formatos de arquivo de saída suportados
show_decoder_detailsMostrar informações detalhadas sobre um decodificador de protocolo (opções, canais, documentação)
show_driver_detailsMostrar informações detalhadas sobre um driver de hardware (funções, opções de varredura, dispositivos)
show_versionMostrar informações de versão do sigrok-cli e da biblioteca
scan_devicesEscanear dispositivos de hardware conectados
capture_dataCapturar dados de comunicação de um dispositivo e salvar em arquivo
decode_protocolDecodificar dados de protocolo de um arquivo capturado usando decodificadores de protocolo
check_firmware_statusVerificar disponibilidade de arquivos de firmware nos diretórios de firmware do sigrok

Início Rápido

Docker

docker pull ghcr.io/kenosinc/sigrok-mcp-server
docker run -i ghcr.io/kenosinc/sigrok-mcp-server

A partir do código-fonte

Requer Go 1.25+ e sigrok-cli instalado no seu sistema.

go build -o sigrok-mcp-server ./cmd/sigrok-mcp-server
./sigrok-mcp-server

O servidor se comunica via stdio (stdin/stdout JSON-RPC).

Configuração

A configuração é feita por meio de variáveis de ambiente:

VariávelPadrãoDescrição
SIGROK_CLI_PATHsigrok-cliCaminho para o binário do sigrok-cli
SIGROK_TIMEOUT_SECONDS30Tempo limite de execução do comando em segundos
SIGROK_WORKING_DIR(vazio)Diretório de trabalho para execução do sigrok-cli

Configuração do Cliente MCP

Claude Desktop

Adicione ao seu claude_desktop_config.json:

{
  "mcpServers": {
    "sigrok": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/kenosinc/sigrok-mcp-server"]
    }
  }
}

Para acessar dispositivos USB do contêiner:

{
  "mcpServers": {
    "sigrok": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "--privileged", "ghcr.io/kenosinc/sigrok-mcp-server"]
    }
  }
}

Para também fornecer arquivos de firmware para dispositivos que os exigem (por exemplo, Kingst LA2016):

{
  "mcpServers": {
    "sigrok": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm", "--privileged",
        "-v", "/path/to/sigrok-firmware:/usr/local/share/sigrok-firmware:ro",
        "ghcr.io/kenosinc/sigrok-mcp-server"
      ]
    }
  }
}

Claude Code

claude mcp add sigrok -- docker run -i --rm ghcr.io/kenosinc/sigrok-mcp-server

Com acesso USB e firmware:

claude mcp add sigrok -- docker run -i --rm --privileged -v /path/to/sigrok-firmware:/usr/local/share/sigrok-firmware:ro ghcr.io/kenosinc/sigrok-mcp-server

Firmware

Alguns drivers de hardware exigem arquivos de firmware que não podem ser incluídos neste servidor devido a restrições de licenciamento. O servidor funciona sem firmware para dispositivos que não precisam dele (por exemplo, demo, análise somente de protocolo). Para dispositivos que exigem firmware (por exemplo, Kingst LA2016, Saleae Logic16), monte seu diretório de firmware no contêiner em /usr/local/share/sigrok-firmware.

Use a ferramenta check_firmware_status para verificar a disponibilidade de firmware e diagnosticar problemas de detecção de dispositivos.

Consulte a wiki do sigrok para obter instruções de extração de firmware para o seu dispositivo.

Arquitetura

MCP Client (LLM)
    |  stdio (JSON-RPC)
    v
sigrok-mcp-server (Go)
    |  exec.Command
    v
sigrok-cli
    |
    v
libsigrok / libsigrokdecode
  • Transporte: stdio (stdin/stdout JSON-RPC)
  • Sem ligações C: sigrok-cli é a única interface para sigrok
  • Captura e decodificação: capture_data adquire dados de dispositivos; todas as outras ferramentas são consultas somente leitura
  • Saída estruturada: A saída de texto bruta do sigrok-cli é analisada em JSON

Exemplo de Fluxo de Trabalho

Um fluxo de trabalho típico de análise de sinais usando Claude:

  1. scan_devices — Descobrir hardware conectado
  2. show_driver_details — Verificar capacidades do driver
  3. capture_data — Capturar dados de comunicação em arquivo
  4. decode_protocol — Decodificar dados capturados com decodificadores de protocolo
  5. Claude analisa a saída decodificada e explica a comunicação

Desenvolvimento

# Build
go build ./...

# Test
go test ./... -race

# Lint
golangci-lint run ./...

Estrutura do Projeto

cmd/sigrok-mcp-server/     Entry point
internal/
  config/                  Environment-based configuration
  sigrok/
    executor.go            sigrok-cli command execution with timeout
    parser.go              Output parsing (list, decoder, driver, version, scan)
    testdata/              Real sigrok-cli output fixtures
  tools/
    tools.go               MCP tool definitions and registration
    handlers.go            Tool handler implementations

Licença

MIT (Kenos, Inc.)