uMouse MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| UMSDK_ASR_LANID | No | Sinicloud ASR lanid. Overrides the value in the local sinicloud_asr.json configuration file. | |
| UMSDK_ASR_APP_ID | No | Sinicloud ASR application ID. Overrides the value in the local sinicloud_asr.json configuration file. | |
| UMSDK_ASR_API_KEY | No | Sinicloud ASR API key. Overrides the value in the local sinicloud_asr.json configuration file. | |
| UMSDK_ASR_USER_ID | No | Sinicloud ASR user ID. Overrides the value in the local sinicloud_asr.json configuration file. | |
| UMSDK_ASR_PROVIDER | No | ASR provider to use. Supported values include sinicloud (default on Windows), windows-speech, whisper-cpp, http, and disabled. | |
| UMSDK_ASR_TOKEN_URL | No | Sinicloud ASR token endpoint URL. Overrides the value in the local sinicloud_asr.json configuration file. | |
| UMSDK_ASR_API_SECRET | No | Sinicloud ASR API secret. Overrides the value in the local sinicloud_asr.json configuration file. | |
| UMSDK_ASR_STREAM_URL | No | Sinicloud ASR streaming endpoint URL. Overrides the value in the local sinicloud_asr.json configuration file. |
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 | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| umouse_statusA | 查看 uMouse SDK 服务状态:SDK 版本、运行时长、配置摘要、在线设备数、事件缓冲水位、录音状态、旧进程接管记录。排查问题先调它。 |
| umouse_list_devicesA | 枚举当前在线的声云智能鼠标:[{id(SN), connMode(USB/BLE), battery(%), status(normal/meeting), lastSeen}]。 |
| umouse_get_eventsA | 非阻塞拉取自上次游标以来的设备事件。返回 {events:[{seq,ts,deviceId,type,payload}], nextSince, buffer}。务必把返回的 nextSince 作为下次调用的 since 续读(seq 严格递增,不重放)。可用 type:connected | disconnected | keyEvent | deviceInfo | dpiChanged | meetingCreated | meetingDestroyed(origin=device-frame 设备确认 / transport-down 异常结束) | meetingBusy | meetingCreateFailed | audioSegmentComplete(本段音频已全部交付:segment 采集代次 + reason) | queueOverflow | warning | lavalierMicStatus | lavalierMicBattery | speechCaptured(server 生成:语音键自动录音完成,payload 含 WAV 路径) | speechTranscribed(转写状态已落盘,payload 含 eventId/status;全文用 umouse_voice_inbox) | sleepReset(120 秒重置睡眠计时,写入与 ACK 独立记录) | voiceSession / voiceBusy / voiceUnavailable / voiceCloseUnconfirmed / voiceKeyHoldIsolation(v2 语音编排会话事件)。keyEvent payload={key: speech|translation|m|ai|capture|raw, action: down|up|hold|click, index(M 键序号)};speechCaptured payload={path(WAV), durationMs, bytes, autoStopped}。 |
| umouse_wait_eventsA | 长轮询等待新设备事件:有匹配立即返回,超时返回空(timedOut:true)。等待用户物理操作的标准工具。推荐范式:等用户语音输入 → types:["speechCaptured"](用户按住语音键说话、松开后事件自带 WAV 路径 payload.path,直接取用,无需编排录音);等按键 → types:["keyEvent"](payload={key: speech|translation|m|ai|capture|raw, action: down|up|hold|click, index})。可用 type:connected | disconnected | keyEvent | deviceInfo | dpiChanged | meetingCreated | meetingDestroyed(origin=device-frame 设备确认 / transport-down 异常结束) | meetingBusy | meetingCreateFailed | audioSegmentComplete(本段音频已全部交付:segment 采集代次 + reason) | queueOverflow | warning | lavalierMicStatus | lavalierMicBattery | speechCaptured(server 生成:语音键自动录音完成,payload 含 WAV 路径) | speechTranscribed(转写状态已落盘,payload 含 eventId/status;全文用 umouse_voice_inbox) | sleepReset(120 秒重置睡眠计时,写入与 ACK 独立记录) | voiceSession / voiceBusy / voiceUnavailable / voiceCloseUnconfirmed / voiceKeyHoldIsolation(v2 语音编排会话事件)。宿主超时提示:宿主对工具调用本身可能设有更短超时——单次 timeout_ms 建议不超过 25000,更久等待以返回的 nextSince 游标分轮续等。 |
| umouse_voice_inboxA | 读取物理语音键产生的持久化转写消息。默认只读未确认消息,读取不删除。status=ready 的 text 是用户语音转写,可能有识别错误;queued/transcribing 请等待,empty 不创建对话,failed 查看 errorCode。处理或向明确宿主成功交付后用 umouse_ack_voice。日志通知不保证唤醒新回合。 |
| umouse_wait_voiceA | 在当前活动对话内等待语音键转写完成,返回未确认的 ready/empty/failed 消息(最多 25 秒)。已存在未确认结果会立即返回;处理后 ack 才不会重复读取。不能保证客户端在当前回合结束后自动唤醒。 |
| umouse_ack_voiceA | 按 event_id 确认语音消息已经处理或已被目标宿主接受。幂等;未完成转写的消息不可确认。仅改变收件箱状态,不执行语音内容。 |
| umouse_set_dpiA | DPI 档位的固件字节(协议 03 22 ,非索引非 DPI 数值)。主流固件映射:800→21, 1200→32, 1600→42, 2400→63, 4000→4, 6000→5;其它固件族编码不同。注意:固件对软件设置不回执——返回 1 仅代表字节已写入通道,生效与否以 dpiChanged 事件/光标速度旁证判断。 |
| umouse_meeting_createA | 开启会议模式(设备进入会议态,音频持续流入)。会议全局独占:另一台设备会议中时本指令被拦截(返回 meetingBusy 事件的 owner)。结果异步经 meetingCreated/meetingDestroyed 事件上报。 |
| umouse_meeting_destroyA | 结束会议模式(归属解除,其它设备方可开会)。会议全局独占:另一台设备会议中时本指令被拦截(返回 meetingBusy 事件的 owner)。结果异步经 meetingCreated/meetingDestroyed 事件上报。 |
| umouse_meeting_pauseA | 暂停会议(暂停期间豁免 SDK 断流裁决)。会议全局独占:另一台设备会议中时本指令被拦截(返回 meetingBusy 事件的 owner)。结果异步经 meetingCreated/meetingDestroyed 事件上报。 |
| umouse_meeting_resumeA | 恢复被暂停的会议。会议全局独占:另一台设备会议中时本指令被拦截(返回 meetingBusy 事件的 owner)。结果异步经 meetingCreated/meetingDestroyed 事件上报。 |
| umouse_set_channel_prefA | 设置通道偏好(运行时可切,切换瞬间断开当前通道重新探测):AUTO=USB 优先静默转 BLE(默认);USB=仅 2.4G 接收器;BLE=仅蓝牙(接收器在位但鼠标切到蓝牙、USB 假在线时用它)。 |
| umouse_set_audio_sourceA | 指定语音音频源设备(多台在线时语音识别会话应锁定单源):设置后仅该设备音频被采集录音,其它设备在 SDK 层静音。不传 device_id = 恢复默认先到先得策略。语音会话进行中被仲裁拒绝。 |
| umouse_audio_recordA | 设备录音(16kHz/16bit/mono,WAV 落盘返回路径,不进对话流)。【推荐】语音键自动采集默认开启:让用户按住语音键说话、松开即可,等 speechCaptured 事件(umouse_wait_events,payload 含 WAV 路径),无需本工具编排。本工具用于手动场景:action=start 开始(用于会议等持续音频),action=stop 收尾(若会话已被语音键松开/超时自动收尾,返回 file=最近完成的录音而非错误),action=status 查看进行中会话。 |
| umouse_reconfigureA | 修改须在 SDK 启动前锁定的配置并受控重启会话(工作模式/USB/BLE 识别标识/设备上限/语音键自动录音)。注意:重启会断开所有在线设备(事件缓冲保留,设备重连后自动恢复)。一般保持环境变量配置不变,仅在接入非默认设备时使用。 |
| umouse_get_capabilitiesA | 查询设备能力(voice / mouse_control / keyboard_control)与当前可执行状态:每台设备返回能力声明的 support、来源(当前 product-default/test-profile;hardware-info 仅预留,尚无硬件上报接线)、连接代次与在线状态,以及因此被隐藏的工具和原因。能力未声明(unknown)的操作会被执行层拒绝——注入工具只对声明 supported 的设备开放(可用 UMSDK_TEST_CAPS 声明测试能力)。 |
| umouse_voice_startA | 开启一次 Agent 语音问答会话:经设备麦克风采集(会议模式),就绪(会议确认+首段 PCM 到达)后返回 listening/sessionId。随后用 umouse_voice_wait 等待最终文字(VAD 静音/完成按钮/上限结束)。同一时间仅一个会话;重复 client_request_id 幂等返回。本工具只采集语音,最终文字作为工具结果返回——不向任何输入框打字。 |
| umouse_voice_waitA | 等待语音会话结果(有界等待,单次 ≤25s;更久以分轮续等)。pending 与终态明确区分;终态返回最终文字 text、结束原因 stopReason、会议关麦确认与音频段边界事实。仅返回 agent-reply 会话的文字。 |
| umouse_voice_finishA | 结束指定语音会话(对话内完成按钮/VAD 之外的手动入口;幂等:重复调用返回已有状态)。收尾顺序:会议销毁→等待设备确认与音频段完成→识别终态→结果可取。 |
| umouse_voice_cancelA | 取消指定语音会话:立即禁止结果投递并启动设备清理;不把"取消等待"冒充"设备已关麦"。已输入的字符不撤回。 |
| umouse_voice_statusA | 语音编排状态:ASR/typer 就绪、活动会话(状态机位置、目的、设备)、未确认关麦的隔离记录与最近会话摘要。可选 session_id 返回单会话详情(含分段耗时)。默认不回传听写正文。 |
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
Voice/audio surfaces overlap: umouse_audio_record, umouse_voice_start, umouse_wait_voice, umouse_voice_wait, and umouse_voice_inbox all involve microphone capture or transcription. The near-identical names wait_voice and voice_wait especially invite misselection, though descriptions do clarify intended flows.
All tools share the umouse_ snake_case prefix, which is readable and predictable. However, conventions alternate between verb_noun (list_devices, get_events, set_dpi) and resource_verb (voice_start, meeting_create, audio_record), with a bare status tool.
At 22 tools the set is heavy for an MCP server, though the domain includes devices, events, meetings, voice sessions, and audio recording. Several voice/event tools are specialized, but the total surface feels borderline overgrown.
Core lifecycle coverage exists for devices, events, meetings, voice sessions, and audio recording. However, capabilities mention mouse_control and keyboard_control injection, yet no such tools appear, and connection/pairing management is largely absent.