Skip to main content
Glama
linyuye

春风元力千面 2 Pro MCP

by linyuye

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TFPTPRO_WEB_BRIDGENoWhen set to "1", enables WebBridge mode where the MCP calls the WSL web controller through a locally token-protected API instead of directly holding the BLE connection. Omit this (and DOKIDOKI_DEVICE_NAME) if the MCP host system directly owns the BLE adapter.
DOKIDOKI_DEVICE_NAMENoThe BLE device name to pin/fix, e.g. "TF-PTPRO". A device name or Bluetooth address can be set via environment variables to fix a specific device; the public repo does not store real device addresses.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": true
}
resources
{
  "subscribe": false,
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_devicesC

扫描附近所有 BLE 设备;结果会标明本 MCP 可识别的设备型号。

connect_deviceB

按扫描列表中的 BLE 地址连接设备,并通过名称与 GATT 服务匹配已支持协议。

get_device_statusA

读取 MCP 自己持有的设备连接、profile 和 GATT 状态。

set_suctionA

触发已匹配 TF-PTPRO 的一次吮吸;level 为协议强度 1–100,非零必须 confirm=true。

set_vibrationA

设置支持设备的震动强度并持续运行,直到调用 stop_vibration 或 stop_device;TF-PTPRO 使用前须通过设备实体键切换到震动模式。非零值必须 confirm=true。

set_linearB

设置 DK-META2 伸缩强度;非零值必须 confirm=true。

set_rotaryA

设置 DK-META2 旋转强度;非零值必须 confirm=true。

stop_deviceA

将当前设备所有已支持输出归零;可重复调用。

stop_vibrationA

发送震动通道归零指令;TF-PTPRO 的单通道停止帧与吮吸通道的隔离效果仍需真机验证。若需立即停止所有输出,请调用 stop_device。

disconnect_deviceB

停止心跳并断开 MCP 持有的 BLE 连接。

create_sine_waveformC

创建并本地保存正弦强度曲线。吮吸是按间隔触发的单次动作;可选叠加持续震动。

create_intent_waveformA

把用户的自然语言强度意图确定性映射为波形预设并本地保存。支持温柔/轻柔、普通/适中、猛烈/强烈及英文同义词;温柔档默认低强度且角频率较大,猛烈档默认强度较高且角频率较小。支持覆盖强度范围、angular_frequency(ω)、phase_radians(b) 和震动强度。返回参数及完整事件序列供Agent检查;此工具只创建不播放。

save_waveformB

按时间偏移保存自定义动作序列,事件为 [{at:秒, action:suction|vibration|stop_vibration|stop_device, level?:1-100}]。

list_waveformsB

列出本机保存的波形名称。

get_waveformB

查看已保存波形的完整动作时间序列。

start_waveformA

经 confirm=true 后在已连接设备上异步播放已保存波形。结束时默认保持震动,需单独 stop_vibration;停止波形本身不会停止震动。

get_waveform_statusC

查看波形播放状态、已发送命令、回报和录制状态。

stop_waveformA

停止后续波形事件;默认不停止当前震动,stop_vibration=true 时另行发送震动停止。

start_action_recordingA

开始记录本 MCP 发送的命令和设备回报;不测量实际吮吸或震动强度。

stop_action_recordingC

结束并本地保存命令录制。

get_action_recordingB

查看已保存的动作录制,包括命令时间、强度和设备回报。

save_recording_as_waveformC

将成功发送的录制动作保存为可重复播放的波形。

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.3/5.0

Scored across 22 tools

Disambiguation4/5

Most tools map to a distinct resource+action: device lifecycle, per-actuator setters (suction/vibration/linear/rotary), stop commands, and waveform/recording lifecycles. The only real overlap cluster is stop_device vs stop_vibration (and set_suction vs set_vibration), but the descriptions explicitly disambiguate them by stating stop_device zeroes everything and that single-channel stop is unverified. Waveform creation has three entry points (sine, intent, custom save) but each is clearly scoped differently.

Naming Consistency4/5

Nearly all tools follow a consistent snake_case verb_noun pattern (list_devices, connect_device, set_suction, create_sine_waveform, start_action_recording). Minor deviation: the recording lifecycle is named 'action_recording' in three tools but shortened to 'recording' in save_recording_as_waveform, and create_sine_waveform/create_intent_waveform embed an adjective mid-name. Readable and predictable overall.

Tool Count3/5

22 tools is on the heavy side for a BLE device controller. Several per-channel setters (set_suction/set_vibration/set_linear/set_rotary) and three separate waveform-creation tools could plausibly be collapsed into generic parameterized tools, suggesting some surface bloat. The count is not absurd given multi-device and recording support, but it is borderline.

Completeness4/5

Strong coverage: device scan/connect/disconnect/status, per-channel actuator control, global stop, full waveform create/list/get/start/stop/status, and a complete recording start/stop/get/save-as-waveform cycle. The notable gap is waveform management — no delete_waveform or rename, so stored waveforms accumulate with no cleanup path. Minor: no per-device capability/model query beyond the scan annotation.

Maintenance

ActivityMaintained
ResponsivenessNo issues