{
  "markdown": "# sigrok-mcp-server\n\n[![CI](https://github.com/KenosInc/sigrok-mcp-server/actions/workflows/ci.yml/badge.svg)](https://github.com/KenosInc/sigrok-mcp-server/actions/workflows/ci.yml)\n[![Go Version](https://img.shields.io/github/go-mod/go-version/KenosInc/sigrok-mcp-server)](https://github.com/KenosInc/sigrok-mcp-server)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![GitHub Release](https://img.shields.io/github/v/release/KenosInc/sigrok-mcp-server)](https://github.com/KenosInc/sigrok-mcp-server/releases)\n\nA [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server for [sigrok](https://sigrok.org/) — enables AI agents like [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex](https://developers.openai.com/codex), and [Cursor](https://www.cursor.com/) to capture, decode, and analyze signals from logic analyzers and measurement devices. Supports I2C, SPI, UART, CAN, and 100+ protocols via sigrok-cli.\n\n**[Documentation](https://kenosinc.github.io/sigrok-mcp-server)** | **[Getting Started](https://kenosinc.github.io/sigrok-mcp-server/getting-started/installation/)**\n\n## Tools\n\n| Tool | Description |\n|---|---|\n| `list_supported_hardware` | List all supported hardware drivers |\n| `list_supported_decoders` | List all supported protocol decoders |\n| `list_input_formats` | List all supported input file formats |\n| `list_output_formats` | List all supported output file formats |\n| `show_decoder_details` | Show detailed info about a protocol decoder (options, channels, documentation) |\n| `show_driver_details` | Show detailed info about a hardware driver (functions, scan options, devices) |\n| `show_version` | Show sigrok-cli and library version information |\n| `scan_devices` | Scan for connected hardware devices |\n| `capture_data` | Capture communication data from a device and save to file |\n| `decode_protocol` | Decode protocol data from a captured file using protocol decoders |\n| `check_firmware_status` | Check firmware file availability in sigrok firmware directories |\n\n## Quickstart\n\n### Docker\n\n```bash\ndocker pull ghcr.io/kenosinc/sigrok-mcp-server\ndocker run -i ghcr.io/kenosinc/sigrok-mcp-server\n```\n\n### From source\n\nRequires Go 1.25+ and `sigrok-cli` installed on your system.\n\n```bash\ngo build -o sigrok-mcp-server ./cmd/sigrok-mcp-server\n./sigrok-mcp-server\n```\n\nThe server communicates over stdio (stdin/stdout JSON-RPC).\n\n## Configuration\n\nConfiguration is via environment variables:\n\n| Variable | Default | Description |\n|---|---|---|\n| `SIGROK_CLI_PATH` | `sigrok-cli` | Path to the sigrok-cli binary |\n| `SIGROK_TIMEOUT_SECONDS` | `30` | Command execution timeout in seconds |\n| `SIGROK_WORKING_DIR` | (empty) | Working directory for sigrok-cli execution |\n\n## MCP Client Configuration\n\n### Claude Desktop\n\nAdd to your `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"sigrok\": {\n      \"command\": \"docker\",\n      \"args\": [\"run\", \"-i\", \"--rm\", \"ghcr.io/kenosinc/sigrok-mcp-server\"]\n    }\n  }\n}\n```\n\nTo access USB devices from the container:\n\n```json\n{\n  \"mcpServers\": {\n    \"sigrok\": {\n      \"command\": \"docker\",\n      \"args\": [\"run\", \"-i\", \"--rm\", \"--privileged\", \"ghcr.io/kenosinc/sigrok-mcp-server\"]\n    }\n  }\n}\n```\n\nTo also provide firmware files for devices that require them (e.g. Kingst LA2016):\n\n```json\n{\n  \"mcpServers\": {\n    \"sigrok\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\", \"-i\", \"--rm\", \"--privileged\",\n        \"-v\", \"/path/to/sigrok-firmware:/usr/local/share/sigrok-firmware:ro\",\n        \"ghcr.io/kenosinc/sigrok-mcp-server\"\n      ]\n    }\n  }\n}\n```\n\n### Claude Code\n\n```bash\nclaude mcp add sigrok -- docker run -i --rm ghcr.io/kenosinc/sigrok-mcp-server\n```\n\nWith USB access and firmware:\n\n```bash\nclaude 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\n```\n\n## Firmware\n\nSome hardware drivers require firmware files that cannot be bundled with this server due to licensing restrictions. The server works without firmware for devices that don't need it (e.g. `demo`, protocol-only analysis). For devices that require firmware (e.g. Kingst LA2016, Saleae Logic16), mount your firmware directory into the container at `/usr/local/share/sigrok-firmware`.\n\nUse the `check_firmware_status` tool to verify firmware availability and diagnose device detection issues.\n\nSee the [sigrok wiki](https://sigrok.org/wiki/Firmware) for firmware extraction instructions for your device.\n\n## Architecture\n\n```\nMCP Client (LLM)\n    |  stdio (JSON-RPC)\n    v\nsigrok-mcp-server (Go)\n    |  exec.Command\n    v\nsigrok-cli\n    |\n    v\nlibsigrok / libsigrokdecode\n```\n\n- **Transport**: stdio (stdin/stdout JSON-RPC)\n- **No C bindings**: sigrok-cli is the sole interface to sigrok\n- **Capture & decode**: `capture_data` acquires data from devices; all other tools are read-only queries\n- **Structured output**: Raw sigrok-cli text output is parsed into JSON\n\n## Workflow Example\n\nA typical signal analysis workflow using Claude:\n\n1. `scan_devices` — Discover connected hardware\n2. `show_driver_details` — Check driver capabilities\n3. `capture_data` — Capture communication data to file\n4. `decode_protocol` — Decode captured data with protocol decoders\n5. Claude analyzes the decoded output and explains the communication\n\n## Development\n\n```bash\n# Build\ngo build ./...\n\n# Test\ngo test ./... -race\n\n# Lint\ngolangci-lint run ./...\n```\n\n### Project Structure\n\n```\ncmd/sigrok-mcp-server/     Entry point\ninternal/\n  config/                  Environment-based configuration\n  sigrok/\n    executor.go            sigrok-cli command execution with timeout\n    parser.go              Output parsing (list, decoder, driver, version, scan)\n    testdata/              Real sigrok-cli output fixtures\n  tools/\n    tools.go               MCP tool definitions and registration\n    handlers.go            Tool handler implementations\n```\n\n## License\n\nMIT (Kenos, Inc.)\n\n<!-- mcp-name: io.github.KenosInc/sigrok-mcp-server -->\n",
  "bytes": 6067,
  "sha": "2dda1376606e3200260dbfc25c6743c801877b2d5d21b5f1c720e62211685cb0",
  "repo_slug": "kenosinc/sigrok-mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_kenosinc_sigrok_mcp_server_f8247f13/readme"
}