关于 Sigrok Mcp Server
Sigrok Mcp Server 让 AI 客户端通过 sigrok-cli 检查逻辑分析仪和测量设备的信号,支持采集、协议解码及结构化结果,适用于硬件调试。
主要功能
- 01发现已连接设备
- 02采集信号并保存文件
- 03解码已采集的协议数据
- 04查看硬件与解码器详情
- 05检查固件可用情况
适用场景
- 01采集 I2C、SPI 或 UART 通信
- 02解码已保存的信号记录
- 03排查设备检测或固件问题
MCP 相关
这是通过 stdio 和 JSON-RPC 通信的 MCP 服务,向 MCP 客户端提供 sigrok-cli 的硬件发现、信号采集、解码和信息查询工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e SIGROK_CLI_PATH -e SIGROK_TIMEOUT_SECONDS -e SIGROK_WORKING_DIR ghcr.io/kenosinc/sigrok-mcp-server:0.2.0SIGROK_CLI_PATHPath to sigrok-cli binarySIGROK_TIMEOUT_SECONDSCommand execution timeout in secondsSIGROK_WORKING_DIRWorking directory for sigrok-cli execution本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/kenosinc/sigrok-mcp-server:0.2.0stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
sigrok-mcp-server
一个适用于 sigrok 的 模型上下文协议(MCP) 服务,可让 Claude Code、Codex 和 Cursor 等 AI Agent 从逻辑分析仪和测量设备采集、解码和分析信号。通过 sigrok-cli 支持 I2C、SPI、UART、CAN 和 100 多种协议。
工具
| 工具 | 说明 |
|---|---|
list_supported_hardware | 列出所有受支持的硬件驱动程序 |
list_supported_decoders | 列出所有受支持的协议解码器 |
list_input_formats | 列出所有受支持的输入文件格式 |
list_output_formats | 列出所有受支持的输出文件格式 |
show_decoder_details | 显示协议解码器的详细信息(选项、通道、文档) |
show_driver_details | 显示硬件驱动程序的详细信息(功能、扫描选项、设备) |
show_version | 显示 sigrok-cli 和库的版本信息 |
scan_devices | 扫描已连接的硬件设备 |
capture_data | 从设备采集通信数据并保存到文件 |
decode_protocol | 使用协议解码器解码采集文件中的协议数据 |
check_firmware_status | 检查 sigrok 固件目录中固件文件的可用情况 |
快速入门
Docker
docker pull ghcr.io/kenosinc/sigrok-mcp-server
docker run -i ghcr.io/kenosinc/sigrok-mcp-server
从源代码构建
需要 Go 1.25+,并且系统中已安装 sigrok-cli。
go build -o sigrok-mcp-server ./cmd/sigrok-mcp-server
./sigrok-mcp-server
服务通过 stdio(stdin/stdout JSON-RPC)进行通信。
配置
通过环境变量进行配置:
| 变量 | 默认值 | 说明 |
|---|---|---|
SIGROK_CLI_PATH | sigrok-cli | sigrok-cli 二进制文件的路径 |
SIGROK_TIMEOUT_SECONDS | 30 | 命令执行超时时间(秒) |
SIGROK_WORKING_DIR | (空) | sigrok-cli 的工作目录 |
MCP 客户端配置
Claude Desktop
将以下内容添加到你的 claude_desktop_config.json:
{
"mcpServers": {
"sigrok": {
"command": "docker",
"args": ["run", "-i", "--rm", "ghcr.io/kenosinc/sigrok-mcp-server"]
}
}
}
若要从容器访问 USB 设备:
{
"mcpServers": {
"sigrok": {
"command": "docker",
"args": ["run", "-i", "--rm", "--privileged", "ghcr.io/kenosinc/sigrok-mcp-server"]
}
}
}
若要为需要固件的设备(例如 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
启用 USB 访问并提供固件:
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
固件
由于许可限制,部分硬件驱动程序所需的固件文件无法随此服务一起分发。不需要固件的设备(例如 demo、仅进行协议分析)无需固件即可使用此服务。对于需要固件的设备(例如 Kingst LA2016、Saleae Logic16),请将你的固件目录挂载到容器中的 /usr/local/share/sigrok-firmware。
使用 check_firmware_status 工具验证固件是否可用,并诊断设备检测问题。
有关设备固件的提取说明,请参阅 sigrok wiki。
架构
MCP Client (LLM)
| stdio (JSON-RPC)
v
sigrok-mcp-server (Go)
| exec.Command
v
sigrok-cli
|
v
libsigrok / libsigrokdecode
- 传输:stdio(stdin/stdout JSON-RPC)
- 无 C 绑定:sigrok-cli 是与 sigrok 交互的唯一接口
- 采集与解码:
capture_data从设备采集数据;所有其他工具都只进行只读查询 - 结构化输出:将 sigrok-cli 的原始文本输出解析为 JSON
工作流示例
使用 Claude 进行信号分析的典型工作流:
scan_devices— 发现已连接的硬件show_driver_details— 检查驱动程序功能capture_data— 将通信数据捕获到文件decode_protocol— 使用协议解码器解码捕获的数据- Claude 分析解码后的输出并解释通信内容
开发
# Build
go build ./...
# Test
go test ./... -race
# Lint
golangci-lint run ./...
项目结构
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
许可证
MIT(Kenos, Inc.)
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。