设备控制服务器

Analog Discovery 2 MCP服务器是一个用于控制Digilent Analog Discovery 2设备的服务器,提供通过MCP协议与设备的示波器、波形发生器等功能交互的工具。

  • by amahpour
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 amahpour/analog-discovery-mcp-server

使用说明

模拟发现2 MCP服务器

用于控制Digilent Analog Discovery 2设备的MCP(模型上下文协议)服务器。该服务器提供工具,通过MCP协议与Analog Discovery 2的示波器、波形发生器和其他功能进行交互。

特性

  • 设备管理:列出、连接和断开Analog Discovery 2设备
  • 示波器:从通道0和1捕获模拟波形
  • 波形发生器:在输出通道上生成各种波形(正弦、方形、三角形、斜坡、直流)
  • 设备信息:获取版本和设备详细信息

先决条件

1.安装WaveForms SDK

在使用此MCP服务器之前,您必须安装Digilent的WaveForms SDK:

  1. 从下载WaveForms Digilent网站
  2. 将WaveForms.app安装到 /Applications/
  3. 对macOS至关重要:复制 dwf.framework 到系统框架目录:
    sudo cp -R /Applications/WaveForms.app/Contents/Frameworks/dwf.framework /Library/Frameworks/
    
    此步骤是SDK正确枚举设备所必需的。没有它,您可能会遇到ERC 3090错误。
  4. 确保Analog Discovery 2通过USB连接

2.Python要求

  • Python 3.11或更高版本
  • pip包管理器

安装

  1. 克隆或下载此存储库:
cd analog-discovery-msp-server
  1. 安装Python依赖项:
pip install -r requirements.txt
  1. 验证安装:
python server.py

服务器将启动并等待MCP客户端通过stdio连接。

MCP服务器配置

要将此服务器与MCP客户端(如Claude Desktop)一起使用,请将其添加到MCP配置文件中。

适用于克劳德桌面

增添 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "analog-discovery-2": {
      "command": "python",
      "args": ["/absolute/path/to/analog-discovery-msp-server/server.py"]
    }
  }
}

对于其他MCP客户端

服务器使用FastMCP,并使用MCP协议通过stdio进行通信。配置您的客户端以运行:

python /path/to/server.py

可用工具

list_devices

列出连接到系统的所有可用Analog Discovery 2设备。

参数:无

示例:

{
  "tool": "list_devices"
}

connect_device

连接到Analog Discovery 2设备。

参数:

  • device_name (字符串,可选):设备名称过滤器(无表示第一个可用,“模拟发现2”表示特定)

示例:

{
  "tool": "connect_device",
  "arguments": {
    "device_name": "Analog Discovery 2"
  }
}

disconnect_device

断开与当前设备的连接。

参数:无

get_device_info

获取有关当前连接设备的信息。

参数:无

capture_waveform

从通道捕获模拟波形(示波器功能)。

参数:

  • channel (整数,必填):通道号(1或2)
  • sampling_frequency (数字,可选):采样频率(Hz)(默认值:20MHz)
  • buffer_size (整数,可选):样本中的缓冲区大小(0=最大值,默认值:0)
  • offset (数字,可选):通道偏移,单位为伏特(默认值:0.0)
  • amplitude_range (数字,可选):通道范围,单位为伏特(默认值:5.0)

示例:

{
  "tool": "capture_waveform",
  "arguments": {
    "channel": 1,
    "sampling_frequency": 1000000,
    "buffer_size": 4096,
    "offset": 0.0,
    "amplitude_range": 5.0
  }
}

generate_waveform

在通道上生成波形(波形发生器功能)。

参数:

  • channel (整数,必填):通道号(1或2)
  • function (字符串,必填):波形类型:“正弦”、“方形”、“三角形”、“ramp_up”、“ramp_down”、“dc”、“噪声”、“脉冲”或“梯形”
  • frequency (数字,必填):频率(Hz)
  • amplitude (数字,必填):振幅(单位:伏特)
  • offset (数字,可选):直流偏移,单位为伏特(默认值:0.0)

示例:

{
  "tool": "generate_waveform",
  "arguments": {
    "channel": 1,
    "function": "sine",
    "frequency": 1000,
    "amplitude": 2.5,
    "offset": 0.0
  }
}

stop_waveform

停止通道上的波形生成。

参数:

  • channel (整数,必填):通道号(1或2)

示例:

{
  "tool": "stop_waveform",
  "arguments": {
    "channel": 1
  }
}

使用示例

基本工作流程

  1. 列出可用设备:

    list_devices
    
  2. 连接到设备:

    connect_device
    

    或具有明确的设备名称:

    connect_device {"device_name": "Analog Discovery 2"}
    
  3. 捕获波形:

    capture_waveform {"channel": 1, "sampling_frequency": 20000000}
    
  4. 生成正弦波:

    generate_waveform {"channel": 1, "function": "sine", "frequency": 1000, "amplitude": 2.5}
    
  5. 停止波形生成:

    stop_waveform {"channel": 1}
    
  6. 断开:

    disconnect_device
    

故障排除

“未找到模拟发现设备”或ERC 3090错误(macOS)

这是macOS上最常见的问题。 错误“Adept NOK dmgrEnumDevicesEx ERC:3090”表示SDK无法枚举设备。

解决方案:确保 dwf.framework 已复制到 /Library/Frameworks/:

sudo cp -R /Applications/WaveForms.app/Contents/Frameworks/dwf.framework /Library/Frameworks/

附加检查:

  • 确保Analog Discovery 2通过USB连接
  • 验证 dwf.framework 存在: ls -la /Library/Frameworks/dwf.framework
  • 检查macOS上的USB权限(系统设置>隐私和安全>USB访问)
  • 确保终端/Python具有USB访问权限
  • 复制框架后,尝试拔下并重新插入设备

“找不到WF_SDK”或导入错误

  • 确保已安装WaveForms SDK(从Digilent网站下载)
  • 确保 WF_SDK 文件夹位于项目目录中(包含在此存储库中)
  • 这 PYTHONPATH 环境变量应包括项目目录(在中自动设置 .cursor/mcp.json)

“未找到fastmcp包”

  • 安装依赖项: pip install -r requirements.txt

导入错误

  • 验证Python版本是否为3.11或更高版本: python --version
  • 重新安装依赖关系: pip install -r requirements.txt --force-reinstall

设备连接问题

  • 确保一次只有一个进程访问设备
  • 关闭正在运行的WaveForms应用程序(它对设备具有独占访问权限)
  • 尝试断开和重新连接设备
  • 如果USB权限似乎卡住,请重新启动Mac

测试装置

运行测试脚本以验证一切正常:

python3 test_device.py

这将测试设备连接、示波器捕获和波形生成。

技术细节

  • 框架:FastMCP(Pythonic MCP服务器框架)
  • 协议:stdio上的MCP(模型上下文协议)
  • Python库:用途 WF_SDK 包装材料 Digilent官方WaveForms SDK入门示例
  • 设备:Digilent模拟探索2
  • 支持的功能:模拟输入(示波器)、模拟输出(波形发生器)
  • 备注:根据WF_SDK惯例,通道为1索引(1-2)

许可证

本项目按原样提供,用于Analog Discovery 2设备。

测试

包含一个测试脚本来验证您的安装:

python3 test_device.py

这将测试:

  • 设备连接
  • 示波器波形捕获
  • 波形发生器

资源