MCP server for ThingsPanel IoT platform enabling natural language interaction with IoT devices and data management
ThingsPanel MCP exhibits significant quality gaps across definition standards. While tool names follow verb_noun convention (list_devices, get_device_detail, check_device_status), descriptions contain Chinese language content mixed with English, parameter descriptions lack proper formatting, and critical output schemas are not visible in source code. The server has 13 tools, but output schemas are not documented for any of them. Chinese-language descriptions create barriers for LLM understanding and reduce consistency with production standards. Parameter descriptions exist but are often generic or reference external documentation (e.g., 'Device ID' without format specification). Critical issues: (1) output schemas completely undocumented, (2) Chinese descriptions reduce LLM alignment, (3) write operations lack idempotency guarantees or dry-run options, (4) no clear error recovery guidance in descriptions.
检查设备的在线状态 参数: device_id: 设备ID示例"4f7040db-8a9c-4c81-d85b-fe574b8a3fa9",如果只知道设备名称,请先模糊搜索列表确认具体是哪个设备ID
发送遥测数据控制设备 - 通用接口,可用于控制任何类型的遥测数据,物模型中带可写权限的遥测数据 参数: device_id: 设备ID示例"4f7040db-8a9c-4c81-d85b-fe574b8a3fa9",如果只知道设备名称,请先模糊搜索列表确认具体是哪个设备ID control_data: 控制数据,格式如 {"temperature": 28.5, "light": 2000, "switch": true}
带物模型检查的设备控制 - 自动查询物模型验证后执行控制
根据设备ID获取设备详细信息 参数: device_id: 设备ID示例"4f7040db-8a9c-4c81-d85b-fe574b8a3fa9",如果只知道设备名称,请先模糊搜索列表确认具体是哪个设备ID
获取设备物模型信息 参数: device_id: 设备ID示例"4f7040db-8a9c-4c81-d85b-fe574b8a3fa9",如果只知道设备名称,请先模糊搜索列表确认具体是哪个设备ID model_type: 物模型类型,可选值:'all'、'telemetry'、'attributes'、'commands'、'events';在控制设备前,建议使用all查询。 返回: 格式化的物模型信息文本
根据设备ID获取设备最新遥测数据 参数: device_id: 设备ID示例"4f7040db-8a9c-4c81-d85b-fe574b8a3fa9",如果只知道设备名称,请先模糊搜索列表确认具体是哪个设备ID
Output schemas completely undocumented. No tool returns a documented schema structure. Tools return unstructured strings (markdown formatted text) rather than structured JSON objects with typed fields. This forces LLMs to parse free-text responses, wasting tokens and increasing hallucination risk.
Descriptions are in Chinese, creating language mismatch with English-primary LLMs and diverging from production standards. Chinese descriptions reduce semantic clarity and integration with multilingual agents. Example: 'get_tenant_summary' has description '获取租户信息总览' (15 chars, below 50-char baseline).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 17 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 33 | - | v1 |
获取设备在线趋势报告
根据指定的key获取设备遥测当前数据 参数: device_id: 设备ID示例"4f7040db-8a9c-4c81-d85b-fe574b8a3fa9",如果只知道设备名称,请先模糊搜索列表确认具体是哪个设备ID key: 要查询的遥测数据键名,如"status"、"temperature";请不要自行猜测,需要从设备物模型查询接口中确认是哪个key
获取设备遥测数据历史数据 参数: device_id: 设备ID示例"4f7040db-8a9c-4c81-d85b-fe574b8a3fa9",如果只知道设备名称,请先模糊搜索列表确认具体是哪个设备ID key: 要查询的遥测数据键名,如"status"、"temperature";请不要自行猜测,需要从设备物模型查询接口中确认是哪个key
获取租户信息总览
可以根据用户说出来的设备名称或设备编号进行模糊搜索,获取设备ID、设备名称、设备编号、在线状态、激活状态、创建时间 注意:支持大小写不敏感的模糊搜索,如果1次没搜索到可尝试分词搜索,按自然单词或者空格拆分,如果分词搜索也没搜索到就及时反馈用户
向设备下发命令 - 通用接口,可用于下发任何类型的命令
设置设备属性 - 通用接口,可用于设置任何类型的设备属性 参数: device_id: 设备ID示例"4f7040db-8a9c-4c81-d85b-fe574b8a3fa9",如果只知道设备名称,请先模糊搜索列表确认具体是哪个设备ID attribute_data: 属性数据,格式如 {"ip": "127.0.0.1", "mac": "xx:xx:xx:xx:xx:xx", "port": 1883}
Descriptions under 50 characters lack actionable context. 'check_device_status' (25 chars), 'get_device_telemetry' (25 chars), and 'get_tenant_summary' (15 chars) provide insufficient guidance on when to use vs similar tools. Baseline is 50-200 chars for A+ tools.
Write operations (control_device_telemetry, set_device_attributes, send_device_command) lack dry-run or confirmation mechanisms. Agents making mistakes risk irreversible device state changes without a safety gate. No idempotency guarantees documented.
Parameter descriptions are minimal or generic. 'device_id' across all tools simply states 'Device ID' or provides an example UUID without format/pattern constraints. LLMs cannot distinguish when to pass a name vs an ID. No guidance on how to handle name-to-ID resolution.
No pagination limits documented. list_devices accepts page and page_size but source code does not show validation or upper bounds. Unbounded page_size could allow LLMs to request 10,000+ items, exceeding context windows. Baseline pattern requires caps at 20-50 results per page.
Error messages in implementation return free-text strings (e.g., 'Failed to get devices: <message>') without structured error codes or recovery guidance. Baseline requires categorization: retryable vs user-fixable vs fatal, plus actionable next steps.
control_device_with_model_check has ambiguous naming ('control_device_with_model_check' vs 'send_device_command'). The naming convention includes a qualifier that is not standard verb_noun. This creates cognitive load for LLMs deciding between overlapping tools (e.g., send_device_command vs control_device_with_model_check).
No composition guidance. Descriptions do not indicate which tools must be called first. E.g., 'list_devices' or 'get_device_model_info' should be listed as prerequisites before calling 'control_device_telemetry', but this is not documented.