春风元力千面 2 Pro MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TFPTPRO_WEB_BRIDGE | No | When 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_NAME | No | The 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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": false,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 22 tools
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.
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.
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.
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.