Sigrok Mcp Server について
Sigrok Mcp Serverは、AIクライアントからsigrok-cliを操作し、ロジックアナライザーや測定機器の信号を扱うMCPサーバーです。信号の取得やプロトコル解析、構造化された結果の確認に対応し、ハードウェアデバッグに利用できます。
主な機能
- 01接続デバイスの検出
- 02信号データのファイル保存
- 03取得データのプロトコル解析
- 04ハードウェアとデコーダー情報の確認
- 05ファームウェアの有無を確認
活用シーン
- 01I2C、SPI、UART通信の取得
- 02保存済み信号データの解析
- 03デバイス検出やファームウェア問題の調査
MCP 対応
stdio上のJSON-RPCで通信するMCPサーバーです。sigrok-cliによるハードウェア検出、信号取得、デコード、情報照会のツールをMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの 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 用の Model Context Protocol (MCP) サーバーです。Claude Code、Codex、Cursor などの AI エージェントが、ロジックアナライザーや測定デバイスから信号を取得、デコード、解析できるようにします。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 | (empty) | 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 への唯一のインターフェースとして sigrok-cli を使用します
- 取得とデコード:
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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。