MCP server exposing Dahua/Imou camera control capabilities as MCP tools (pure device capabilities, no AI dependencies). Supports PTZ movement/absolute positioning/presets/image capture/microphone recording/speaker audio playback.
Server has 10 tools with complete input schemas and descriptions visible in source. However, descriptions are minimal (10-80 chars, well below the 194-char baseline), lack actionable context for LLM selection, and parameter descriptions are absent. No output schemas documented. Error handling returns generic JSON objects without recovery guidance. Tool names are reasonable but descriptions do not explain WHEN to use each tool or dependencies between them (e.g., ptz_move vs ptz_abs_move distinction). No parameter descriptions for optional fields like 'speed' and 'seconds' defaults. Security: credentials loaded from config file (not visible in source), but no evidence of secret injection pattern. Composition is reasonable (single responsibility per tool), but no idempotency guarantees or batch operations.
查询摄像头详细信息(序列号/通道数/设备类型)
查询摄像头在线状态
抓取一帧画面, 返回保存路径
把音频文件通过摄像头扬声器播放。path: 音频文件路径(如 wav/mp3/g711 文件)
操作云台预置点。op: set/goto/del; index: 预置点序号
绝对定位水平角(pan_deg): 0=正面/90=左/180=背面/270=右。tilt_deg 可选
读取云台当前水平/垂直角度
控制云台移动。action: up/down/left/right/leftup/leftdown/rightup/rightdown; speed: 1-255; seconds: 移动时长(秒)
Descriptions are too brief (10-80 chars vs 194-char baseline). Missing WHEN to use each tool and dependencies. E.g., 'ptz_move' vs 'ptz_abs_move' distinction unclear; no guidance on when to call ptz_get_position first.
No parameter descriptions. 'speed' (1-255) and 'seconds' (0.2-10) in ptz_move lack explanation of what they control or why ranges matter. 'codec' in play_audio has no description of valid values or default behavior.
No output schemas documented. Callers cannot predict response structure (e.g., does camera_info return nested objects or flat fields?). Breaks downstream tool chaining and forces LLM to parse unstructured JSON.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
立即停止云台所有移动
采集摄像头麦克风音频, 保存为 wav 文件并返回路径/采样率。seconds: 录音时长(默认5)
Error handling returns generic {'ok': False, 'error': str(e)} without recovery guidance. LLM cannot determine if error is retryable, user-fixable, or fatal. No actionable next steps provided.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLM cannot distinguish safe read-only tools from destructive ones (e.g., preset 'del' operation). Increases risk of unintended side effects.