逻辑分析仪自动化工具

Saleae Logic2自动化MCP服务器,通过gRPC协议将Saleae Logic2自动化服务器暴露为MCP工具。

  • by AkiyukiOkayasu
  • Rust
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 AkiyukiOkayasu/saleae-logic2-automation-mcp

使用说明

Saleae Logic2自动化MCP

一个MCP(模型上下文协议)服务器,它将Saleae Logic2自动化服务器(gRPC)作为MCP工具公开。

先决条件

  • Logic2正在运行
  • 启用自动化服务器 在首选项中启用
  • 自动化服务器端口(默认 10430)已知且可访问

安装

从crates.io安装:

cargo install saleae-logic2-automation-mcp

或者从源代码安装:

cargo install --path .

可选择通过环境变量设置配置:

export SALEAE_ADDRESS=127.0.0.1        # gRPC server address (default: 127.0.0.1)
export SALEAE_PORT=10430               # gRPC server port (default: 10430)
export SALEAE_MCP_CONFIG_DIR=~/.saleae-mcp  # Session storage directory (default: ~/.saleae-mcp)

跑步

运行已安装的二进制文件:

SALEAE_ADDRESS=127.0.0.1 SALEAE_PORT=10430 saleae-logic2-automation-mcp

或者运行从源代码构建的发布二进制文件:

SALEAE_ADDRESS=127.0.0.1 SALEAE_PORT=10430 \
  target/release/saleae-logic2-automation-mcp

冒烟测试

cargo run --bin smoke

提供的工具

  • saleae_connect:连接到Logic2并验证连接 GetAppInfo (连接超时:10秒)
  • saleae_get_app_info:获取Logic2应用程序信息
  • saleae_list_devices:列出已连接的设备
  • saleae_start_capture:开始捕获(手动、定时或数字触发)
  • saleae_stop_capture:停止手动捕获
  • saleae_wait_capture:等待定时/触发器捕获完成(超时:300秒)
  • saleae_export_raw_csv:将原始数据导出为CSV
  • saleae_save_capture:将捕获保存到 .sal 文件
  • saleae_close_capture:关闭捕获选项卡并释放资源
  • saleae_save_session:将捕获配置另存为会话模板
  • saleae_list_sessions:列出所有已保存的会话模板
  • saleae_get_session:获取特定的会话模板配置
  • saleae_update_session_channels:更新会话模板中的频道
  • saleae_update_session_sample_rates:更新会话模板中的采样率
  • saleae_update_session_trigger:更新会话模板中的定时/数字触发器设置
  • saleae_capture_from_template:使用已保存的会话模板开始新的捕获
  • saleae_start_loop_capture:启动循环捕获作业(定时/数字触发会话)
  • saleae_stop_loop_capture:停止循环捕获作业
  • saleae_get_loop_status:获取循环捕获状态
  • saleae_screenshot:截图(macOS screencapture)

JSON示例(工具调用)

许多MCP客户端将工具调用表示为:

{ "tool": "tool_name", "arguments": { "...": "..." } }

以下示例使用该格式。

克劳德代码(MCP JSON-RPC tools/call)

Claude Code通过JSON-RPC讲MCP。等效请求形状为:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "saleae_get_app_info",
    "arguments": {}
  }
}

GitHub Copilot(VS代码MCP工具)

配置后,副驾驶可以调用MCP工具。对于Copilot来说,最实用的方法是粘贴 { "tool": ..., "arguments": ... } 对象并要求Copilot执行它。

1) 保存数字触发器会话模板

{
  "tool": "saleae_save_session",
  "arguments": {
    "session_name": "spi_trigger_rise_ch0",
    "device_id": "YOUR_DEVICE_ID",
    "digital_channels": [0, 1, 2, 3],
    "analog_channels": [],
    "digital_sample_rate": 10000000,
    "digital_threshold_volts": 3.3,
    "buffer_size_megabytes": 256,

    "capture_mode": "digital_trigger",
    "digital_trigger": {
      "trigger_type": "rising",
      "after_trigger_seconds": 0.2,
      "trim_data_seconds": 0.0,
      "trigger_channel_index": 0,
      "min_pulse_width_seconds": 0.0,
      "max_pulse_width_seconds": 0.0,
      "linked_channels": [
        { "channel_index": 1, "state": "high" },
        { "channel_index": 2, "state": "low" }
      ]
    }
  }
}

2) 更新数字触发器设置(部分更新)

{
  "tool": "saleae_update_session_trigger",
  "arguments": {
    "session_name": "spi_trigger_rise_ch0",
    "capture_mode": "digital_trigger",
    "digital_trigger": {
      "trigger_type": "pulse_high",
      "trigger_channel_index": 0,
      "after_trigger_seconds": 0.05,
      "min_pulse_width_seconds": 0.000001,
      "max_pulse_width_seconds": 0.01,
      "linked_channels": [
        { "channel_index": 1, "state": "high" }
      ]
    }
  }
}

3) 从已保存的会话开始捕获

{
  "tool": "saleae_capture_from_template",
  "arguments": {
    "session_name": "spi_trigger_rise_ch0"
  }
}

4) 启动循环捕获(定时/数字触发会话)

{
  "tool": "saleae_start_loop_capture",
  "arguments": {
    "session_name": "spi_trigger_rise_ch0",
    "iterations": 10,
    "delay_seconds": 0.5
  }
}

5) 获取循环捕获状态

{
  "tool": "saleae_get_loop_status",
  "arguments": {}
}

6) 停止循环捕获

{
  "tool": "saleae_stop_loop_capture",
  "arguments": {}
}

MCP客户端配置示例

桌面版Claude示例(~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "saleae": {
      "command": "saleae-logic2-automation-mcp",
      "args": [],
      "env": {
        "SALEAE_ADDRESS": "127.0.0.1",
        "SALEAE_PORT": "10430"
      }
    }
  }
}

参考文献

许可证

该项目在MIT或Apache-2.0下获得双重许可。

此项目使用 proto/saleae.proto 来自Saleae Logic2 Automation API, 其根据Apache许可证2.0获得许可。 有关详细信息,请参阅NOTICE.md。