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:将原始数据导出为CSVsaleae_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:截图(macOSscreencapture)
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。
