mcp-divoom-lan
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DIVOOM_TIMEOUT_MS | No | Request timeout in milliseconds, default 45000 | 45000 |
| DIVOOM_DEVICE_HOST | No | Device LAN IP (e.g., 192.168.1.120). If unset, each tool call must pass target.host. | |
| DIVOOM_DEVICE_PORT | No | HTTP port, default 9000 | 9000 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| watchface_get_localC | Call Device/GetLocalClockInfo for current or explicit clock id. |
| watchface_patch_localB | Patch local dial via Device/PatchLocalClockInfo with precheck. Defaults to POST /divoom_api (JSON only) for pure metadata edits. Prefer ItemPatchList (per-index field diff) — DO NOT include item_id inside patch.* unless the user explicitly asks to rename a slot, since the firmware will overwrite the device-side item_id and break menu/config bindings. When dialAssetsPath is set, switches to multipart POST /patch_local_clock: first JSON part (Device/PatchLocalClockInfo, optional DialAssets), second part single JPEG/WebP dial backdrop or clock_bg.tar.gz bundle. Element slots inside the tarball must be JPEG, WebP, or PNG (validated by firmware wf_validate_bundle_slot_image_file). Use ItemPatchList[].patch.bundle_image= to bind a tar leaf to that slot's img_addr; supplying ItemList alone is a full-table replace and should be avoided unless the row count actually changes. Pointer fixes (131/132/233 = DIVOOM_CLOCK_DISP_SUPPORT_*_POINT_IMAGE): shared square x/y/w/h, w×w PNGs, center rotation; ref ClockId 60012; transp 100; hier 0/1/2 only — docs/tool-examples.md §5b. Avoid duplicate image-backed disp rows (NET_PIC family); docs/disp-usage.md. Multipart framing: watchface_upload_file description and resources/skill-quick-reference.md. |
| watchface_get_fonts_localC | Call Device/GetLocalFontList. |
| watchface_get_store_market_listC | Call Device/GetStoreClockMarketList after device prefetch has populated in-memory store data. |
| watchface_set_clock_selectD | Call Channel/SetClockSelectId with ClockId. |
| watchface_get_brightnessD | Call Sys/GetBrightness. |
| watchface_set_brightnessC | Call Channel/SetBrightness with Brightness. |
| watchface_onoff_screenC | Call Channel/OnOffScreen with OnOff (1=on, 0=off). |
| watchface_replace_dial_bg_fileA | POST /replace_clock_dial_bg using multipart (Device/ReplaceClockDialBgFile). Replaces the cached dial bitmap only — does NOT modify cfg DeviceImageUrl, and does NOT accept tar.gz. Backdrop is validated by divoom_watchface_replace_clock_dial_bg_validate_saved_file: JPEG (FF D8) or WebP (RIFF…WEBP) only, ≤ 500 KiB (DIVOOM_REPLACE_DIAL_BG_MAX_FILE_BYTES), recommended 800x1280 portrait. Multipart framing notes: watchface_upload_file description. |
| watchface_upload_fileC | POST /upload with multipart. First JSON part is caller-provided metadata (product-specific Command). 传输文件打包要求:固件在 divoom_http_server_upload_get_file_info 中要求每个文件段必须有 Content-Length,而浏览器 FormData 通常只使用 boundary 分隔、不包含每段 Content-Length。正在实现固件在无 Content-Length 时用 boundary 终止解析,并修复 JSON 段之后定位文件数据的指针计算;编辑器侧改为手动构造带 Content-Length 的 multipart 以提高兼容性。This server builds multipart with per-part Content-Length. |
| watchface_create_local_clockA | POST /create_local_clock (multipart) — Device/CreateLocalClock. metadata.DialAssets accepts 'auto' (default; sniffs gzip magic on the file part), 'image' (single JPEG/WebP backdrop), or 'bundle' (clock_bg.tar.gz). Legacy UseDialAssetBundle (0=image, non-0=bundle) is honored when DialAssets is omitted. Backdrop is JPEG/WebP only; element slots inside the tarball accept JPEG/WebP/PNG (firmware wf_validate_bundle_slot_image_file). Each ItemList[i] needs disp/font/x/y/w/h/size/alig numbers and color_1/color_2/item_id non-empty strings; ItemIdList must be a parallel non-empty string array. alig: 3=center, 4=left, 5=right. Pointer slots DIVOOM_CLOCK_DISP_SUPPORT_HOUR_POINT_IMAGE=131, MIN_POINT_IMAGE=132, SECOND_POINT_IMAGE=233: mandatory shared square w=h and identical x,y,w,h on all three rows; w×w bitmaps; center pivot, hand toward 12 o'clock — never full-screen 800×1280 layers or mismatched thin rects; reference ClockId 60012 export. transp: MUST use 100 for visible layers — LLMs often emit 0 → invisible on device. hier: ONLY 0=auto, 1=bottom, 2=top (no tier 3+). See docs/tool-examples.md §5b. Uniqueness: do not duplicate the same image-backed disp in one dial — later rows overwrite earlier ones; especially NET_PIC family (disp 13, 125–130, 173–175, DIVOOM_CLOCK_DISP_SUPPORT_NET*_PIC); see docs/disp-usage.md. Multipart framing (Content-Length per part): see watchface_upload_file description. |
| watchface_reset_local_then_cloudA | Call Device/ResetLocalClockFromServer. This deletes local sys-side files before optional cloud refresh. |
| watchface_raw_commandB | Raw POST /divoom_api command wrapper. Command is required; payload object is merged with enforced ReturnCode=0. |
| watchface_protocol_quick_referenceC | Return concise operational constraints extracted from the public guide and skill. |
| watchface_disp_catalogA | Return the full |
| watchface_font_catalogA | Return a curated font catalog so agents can pick |
| watchface_template_searchA | Search the curated template library ( |
| watchface_layout_suggestA | Return layout hints for a single disp id by combining disp-catalog metadata with aggregated typography (median size/x/y/w/h, frequent colors, alignment mode) mined from bundled marketplace templates. Use before authoring a new ItemList row or ItemPatchList.patch fragment — values are soft guidance, not firmware-enforced. Always clamp boxes to the logical canvas (typically 800×1280). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Divoom Watchface Guide Quick Reference | Key LAN API constraints and command flow for watchface customization. |
| Divoom Watchface Skill Prompt | Compact prompt that teaches agents how to safely operate the Divoom LAN API. |
| Divoom Watchface Font Catalog | Curated TTF and image-font catalog (id, type, name, charset, script, style tags, recommended scenarios) sourced from the visual editor's font_info.cfg. Use it to pick `ItemList[i].font` ids without guessing. |
| Divoom Watchface Font AI Guide | Human-readable guide for all 157 editor fonts: visual style, mood, recommended use cases, scenario index, TTF vs image_glyph styling rules, and per-id descriptions. Read this before `divoom://font/catalog` when choosing fonts for themed dials. |
| Divoom Watchface Disp Catalog | Catalog of every `disp` id supported by this firmware (194 entries) with English symbol, Chinese description, and heuristic hints for whether the slot expects an image asset or vector text. Use to pick `ItemList[i].disp` and to decide whether the slot needs an `image_addr` asset. |
| Divoom Watchface JSON Schema | JSON Schema (draft 2020-12) for the editor's watchface config (`ItemList[]`, `ItemIdList`, `ClockId`, names). Validate generated payloads before sending them to PatchLocalClockInfo / CreateLocalClock. |
| Minimal Watchface Example | Smallest valid watchface JSON (single time row at 800x1280). Use as a starting template before adding more `ItemList` rows. |
| AI Watchface Authoring Guide | Editor-side narrative on AI-assisted watchface authoring: canvas conventions, font rules, where the catalogs come from, regeneration workflow. |
| Curated Watchface Templates | ~20 designer-made skeleton watchfaces mined from the HTML editor's bundled marketplace configs (`public/template/config`). Each entry lists tags (weather, lunar, pixel_theme, …), stats, and a stripped `watchface` JSON (ClockId, names, ItemIdList, ItemList) safe to clone before swapping fonts/colors. Does not include DeviceImageUrl. |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DivoomDevelop/mcp-divoom-lan'
If you have feedback or need assistance with the MCP directory API, please join our Discord server