Sigrok MCP Server
Servidor MCP para sigrok — permite que LLMs controlem analisadores lógicos e decodifiquem protocolos
Documentação
sigrok-mcp-server
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.
Ferramentas
| Ferramenta | Descrição |
|---|---|
list_supported_hardware | Listar todos os drivers de hardware suportados |
list_supported_decoders | Listar todos os decodificadores de protocolo suportados |
list_input_formats | Listar todos os formatos de arquivo de entrada suportados |
list_output_formats | Listar todos os formatos de arquivo de saída suportados |
show_decoder_details | Mostrar informações detalhadas sobre um decodificador de protocolo (opções, canais, documentação) |
show_driver_details | Mostrar informações detalhadas sobre um driver de hardware (funções, opções de varredura, dispositivos) |
show_version | Mostrar informações de versão do sigrok-cli e da biblioteca |
scan_devices | Escanear dispositivos de hardware conectados |
capture_data | Capturar dados de comunicação de um dispositivo e salvar em arquivo |
decode_protocol | Decodificar dados de protocolo de um arquivo capturado usando decodificadores de protocolo |
check_firmware_status | Verificar 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ável | Padrão | Descrição |
|---|---|---|
SIGROK_CLI_PATH | sigrok-cli | Caminho para o binário do sigrok-cli |
SIGROK_TIMEOUT_SECONDS | 30 | Tempo 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_dataadquire 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:
scan_devices— Descobrir hardware conectadoshow_driver_details— Verificar capacidades do drivercapture_data— Capturar dados de comunicação em arquivodecode_protocol— Decodificar dados capturados com decodificadores de protocolo- 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.)