WebSocket控制MCP服务器

一个用于通过二进制WebSocket命令控制OSSM设备的模型上下文协议(MCP)服务器,使AI能够精确控制OSSM运动模式。

  • by clbhundley
  • JavaScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 clbhundley/ossm-mcp-server

使用说明

OSSM WebSocket控制MCP服务器

一种模型上下文协议(MCP)服务器,用于通过二进制WebSocket命令控制OSSM设备。该工具使AI能够以精确的时间控制OSSM运动模式。

特性

  • 流畅的点对点移动 具有可定制的缓震曲线
  • 连续循环模式 具有独立的推/拉行程特性
  • 局部振动模式 频率和波形可调
  • 全球速度和加速度限制 为了安全
  • 动态范围控制 用于运动边界
  • 紧急暂停功能 来自多个控制源

MCP服务器设置

需求

  • 具有兼容固件的OSSM设备
  • 在端口8081上运行的Godot WebSocket网桥应用程序
  • MCP兼容AI
  1. 在中安装依赖项 ossm-mcp-server 目录:
npm install
  1. 添加到MCP配置(示例: claude_desktop_config.json):
{
  "mcpServers": {
    "ossm-websocket-control": {
      "command": "node",
      "args": ["/absolute/path/to/ossm-mcp-server.js"]
    }
  }
}
  1. 重新启动AI桌面应用程序以加载新的MCP服务器

可用功能

ossm_smooth_move

通过缓和曲线执行平滑的点对点运动。

参数:

  • durationMs (必填):移动持续时间(毫秒)
  • position (必填):目标位置(0-10000,其中10000=满轨)
  • transition:转换类型-LINEAR、SINE、CIRC、EXPO、QUAD、CUBIC、QUART、QUINT(默认值:SINE)
  • ease:简化类型-EASE_IN、EASE_OUT、EASE_IN_OUT、EASE_ OUT_IN(默认:EASE_IN_ OUT)
  • aux:辅助功能位掩码(默认值:0)

例子:

// Smooth 2-second move to 75% position with sine transition
ossm_smooth_move(2000, 7500, "SINE", "EASE_IN_OUT", 0)

ossm_loop

定义连续的来回运动模式。

参数:

  • pushStroke (必填):定义前进运动的对象
    • durationMs:持续时间(毫秒)
    • transition:过渡类型(必填)
    • ease:缓解型(必填)
    • aux:辅助功能(默认值:0)
  • pullStroke (必填):定义返回运动的对象(与pushStroke结构相同)

重要提示: 循环运动范围由全局范围限制控制(请参见 ossm_set_range_limit),而不是位置参数。

例子:

// Fast loop with different characteristics for each stroke
ossm_loop(
  {durationMs: 800, transition: "SINE", ease: "EASE_IN", aux: 0},
  {durationMs: 1200, transition: "CIRC", ease: "EASE_OUT", aux: 0}
)

ossm_vibrate

配置具有可调波形的局部振动模式。

参数:

  • durationMs (必填):持续时间(毫秒)(-1表示无限,0表示停止)
  • halfPeriodMs (必填):半周期(毫秒)(控制频率,最小10ms)
  • position (必填):振动中心位置(0-10000)
  • range (必填):行程范围百分比(0-20%)
  • smooth:波形平滑(100=三角形,200=正方形,默认值:112)

安全指南:

  • 高频+小范围:使用10-50ms半周期,范围为2-10%,用于强烈的局部振动
  • 低频+更大范围:使用50-200ms的半周期,范围为10-20%,用于明显的振荡
  • 避免:范围大(>10%),频率很高(<20ms)-可能会对硬件造成压力

例子:

// Gentle 25Hz vibration at center position
ossm_vibrate(-1, 20, 5000, 5, 112)

ossm_pause

立即暂停所有当前运动。可作为任何控制源的紧急停止装置。

参数: 无

ossm_set_speed_limit

在所有运动模式下设置全局电机速度限制。

参数:

  • speedHz (必填):最大速度(步/秒)

ossm_set_acceleration

在所有运动模式下设置全局电机加速度限制。

参数:

  • accel (必填):最大加速度(步/秒²)

ossm_set_range_limit

设置位置控制的运动范围边界。

参数:

  • range (必填):设置哪个限制-“最小范围”或“最大范围”
  • limit (必填):位置限制(0-10000)

注: 范围限制会自动影响循环命令,但需要重新发送振动命令才能生效。

重要的行为差异

循环命令

  • 自动更新 全局设置更改(范围限制、速度限制)
  • 由全局范围限制控制的运动边界
  • 非常适合全轨道模式和序列

振动命令

  • 需要手动更新 -更改全局设置后必须重新发送命令
  • 独立的位置和范围参数
  • 非常适合局部效果和高频模式

安全指南

应急控制

  • 暂停命令 从MCP或设备UI立即工作
  • 模式切换 在不同运动类型之间平滑过渡
  • UI覆盖 -设备接口始终可以停止MCP发起的运动

参数限制

  • 振动频率:测试安全高达50Hz(20ms半周期ms),更高的频率可能会跳过步骤
  • 范围边界:系统自动将运动限制在物理轨道限制范围内
  • 速度限制:全局限制可防止所有模式下的电机应力过大

最佳实践

  1. 逐步测试 -从保守设置开始并进行调整
  2. 监控电机行为 -注意跳步、过热或拉伤
  3. 使用适当的组合 -高频小范围,低频大范围
  4. 紧急停止准备就绪 -总是知道如何快速暂停动作