AI 클라이언트가 LAN을 통해 PIXOO64, TimeGate, AstroToo와 같은 Divoom 하드웨어를 제어하여 워치페이스, 애니메이션 및 디스플레이 설정을 관리할 수 있게 합니다.
다른 이름 DivoomDevelop/mcp-divoom-lan, mcp-divoom-lan
- 스타
- 8
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- 0.1.1
- 마지막 커밋
- 2026년 10월 27일
- 라이선스
- MIT
Divoom LAN Watchface MCP란?
Divoom LAN Watchface은(는) MCP server입니다. AI 클라이언트가 LAN을 통해 PIXOO64, TimeGate, AstroToo와 같은 Divoom 하드웨어를 제어하여 워치페이스, 애니메이션 및 디스플레이 설정을 관리할 수 있게 합니다.
프로젝트 README에서 생성된 요약
Divoom LAN Watchface MCP server 정보
이 MCP server는 개발자와 애호가들이 자연어로 Divoom 하드웨어 디스플레이를 제어할 수 있도록 지원합니다. Claude Desktop 또는 Cursor와 같은 AI 클라이언트와 PIXOO64, TimeGate, AstroToo, TimesFrame을 포함한 다양한 LAN 연결 장치 사이의 가교 역할을 합니다. 이 server를 사용하면 사용자는 LLM 인터페이스에서 직접 워치페이스 관리, 밝기 조절, 텍스트 또는 RGB 애니메이션 전송, 화면 전원 설정 제어를 수행할 수 있습니다.
이 server는 로컬 네트워크 통신을 통해 작동하며 장치 IP 주소 및 포트와 같은 특정 환경 변수가 필요합니다. TimeGate 하드웨어의 경우 인증된 호출을 위해 장치 설정에서 가져온 LocalToken이 필요합니다. PIXOO64 96 또는 TimeGate 402와 같이 하드웨어 버전별로 특화된 도구를 포함하고 있어, 애니메이션 재생이나 화면 스냅샷과 같은 명령이 특정 장치 펌웨어 요구 사항에 따라 실행되도록 보장합니다. 또한 AI가 레이아웃을 제안하고 적절한 글꼴이나 템플릿을 선택할 수 있도록 돕는 모델 인식 저작 도구도 제공합니다.
활용 사례
- 1하드웨어 워치페이스 커스텀AI 클라이언트가 AstroToo 또는 TimesFrame 장치의 로컬 워치페이스 구성을 생성하거나 업데이트할 수 있습니다.
- 2PIXOO64 애니메이션 제어개발자가 AI에게 특정 GIF를 재생하거나 PIXOO64 디스플레이로 RGB 애니메이션을 전송하도록 명령할 수 있습니다.
- 3TimeGate 화면 설정 관리사용자가 원격으로 TimeGate 장치의 5개 독립 화면에 대한 밝기를 조절하거나 전원을 켜고 끌 수 있습니다.
- 4장치 검색 자동화이 server는 로컬 네트워크에서 사용 가능한 Divoom 하드웨어를 식별하여 호환되는 포트와 모델을 결정할 수 있습니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
Divoom LAN Watchface MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 Divoom LAN Watchface MCP 설치
$ claude mcp add --env 'DIVOOM_DEVICE_HOST=<DIVOOM_DEVICE_HOST>' mcp-divoom-lan -- npx -y mcp-divoom-lanCursor에 Divoom LAN Watchface MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"mcp-divoom-lan": {
"command": "npx",
"args": [
"-y",
"mcp-divoom-lan"
],
"env": {
"DIVOOM_DEVICE_HOST": "<DIVOOM_DEVICE_HOST>"
}
}
}
}VS Code에 Divoom LAN Watchface MCP 설치
.vscode/mcp.json
{
"servers": {
"mcp-divoom-lan": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mcp-divoom-lan"
],
"env": {
"DIVOOM_DEVICE_HOST": "<DIVOOM_DEVICE_HOST>"
}
}
}
}VS Code CLI에 Divoom LAN Watchface MCP 설치
$ code --add-mcp '{"name":"mcp-divoom-lan","type":"stdio","command":"npx","args":["-y","mcp-divoom-lan"],"env":{"DIVOOM_DEVICE_HOST":"<DIVOOM_DEVICE_HOST>"}}'Claude Desktop에 Divoom LAN Watchface MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"mcp-divoom-lan": {
"command": "npx",
"args": [
"-y",
"mcp-divoom-lan"
],
"env": {
"DIVOOM_DEVICE_HOST": "<DIVOOM_DEVICE_HOST>"
}
}
}
}Codex에 Divoom LAN Watchface MCP 설치
$ codex mcp add mcp-divoom-lan --env 'DIVOOM_DEVICE_HOST=<DIVOOM_DEVICE_HOST>' -- npx -y mcp-divoom-lanCodex config.toml에 Divoom LAN Watchface MCP 설치
~/.codex/config.toml
[mcp_servers.mcp-divoom-lan] command = "npx" args = ["-y", "mcp-divoom-lan"] [mcp_servers.mcp-divoom-lan.env] DIVOOM_DEVICE_HOST = "<DIVOOM_DEVICE_HOST>"
Gemini CLI에 Divoom LAN Watchface MCP 설치
$ gemini mcp add -s user -e 'DIVOOM_DEVICE_HOST=<DIVOOM_DEVICE_HOST>' mcp-divoom-lan npx -- -y mcp-divoom-lanGemini settings.json에 Divoom LAN Watchface MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"mcp-divoom-lan": {
"command": "npx",
"args": [
"-y",
"mcp-divoom-lan"
],
"env": {
"DIVOOM_DEVICE_HOST": "<DIVOOM_DEVICE_HOST>"
}
}
}
}구성
DIVOOM_DEVICE_HOST필수Divoom device LAN IP address
DIVOOM_DEVICE_MODELDIVOOM_DEVICE_PORTDivoom device HTTP port
DIVOOM_TIMEOUT_MSHTTP request timeout in milliseconds
| 이름 | 설명 | 유형 |
|---|---|---|
| DIVOOM_DEVICE_HOST | Divoom device LAN IP address | 필수 |
| DIVOOM_DEVICE_MODEL | — | |
| DIVOOM_DEVICE_PORT | Divoom device HTTP port | |
| DIVOOM_TIMEOUT_MS | HTTP request timeout in milliseconds |
자동 검사
2026년 11월 13일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능통과
- 오픈 소스 라이선스 (OSI)통과
- 최근 1년 내 커밋 또는 릴리스통과
- 패키지 이름이 인기 패키지와 유사하지 않음통과
- 원격 엔드포인트가 HTTPS 사용검사되지 않음
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 모델에 대한 숨겨진 지침 없음통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음통과
README
GitHub에서 보기mcp-divoom-lan
mcp-divoom-lan is an open-source MCP server for TimesFrame/AstroToo watchfaces and PIXOO64/TimeGate LAN display control. TimesFrame/AstroToo query Device/GetHardwareVersion; PIXOO64/TimeGate use discovery Hardware or explicit hardware profiles. Unknown hardware is rejected. The TimesFrame no-response fallback is retained after checking available discovery data.
PIXOO64 Hardware 90/92 uses 80/post; 96 uses 9000/divoom_api. Its 10 dedicated tools send display elements, text, RGB animations and control commands. Hardware 96 command lists execute sequentially in MCP to match the reference firmware. See the PIXOO64 guide and examples. Device firmware is unchanged.
It works together with the v2 HTML visual editor for modifying watchfaces, switching faces, adjusting brightness, and creating new local watchfaces.
TimeGate Hardware 400 uses 80/post; 402 uses 9000/divoom_api. Its 10 dedicated tools control five independent 128×128 screens and require LocalToken from device settings. Hardware 402 batches run sequentially in MCP. See the TimeGate guide for per-version field, alignment and background differences. Device firmware is unchanged.
v2 visual editor (public):
- GitHub:
https://github.com/DivoomDevelop/divoom-watchface-visual-editor_v2 - Live site:
https://divoomdevelop.github.io/divoom-watchface-visual-editor_v2/
Your local clone path (e.g. D:\divoom-watchface-visual-editor) is machine-specific; use the v2 GitHub / GitHub Pages URLs above in docs and MCP metadata.
Goals
- Expose key capabilities from
Divoom_Watchface_Remote_Customization_Guide_EN.mdas MCP tools - Let MCP-enabled clients (Cursor, Claude Desktop, local LLMs, etc.) drive watchface actions via natural language
- Preserve safety boundaries (read before write, explicit warnings for risky operations, multipart rules)
Default safety policy (important)
- Select the product profile:
Hardware510/511/512 selects TimesFrame; 530 AstroToo; 90/92/96 PIXOO64; 400/402 TimeGate. Explicittarget.hardwareis a caller profile override. Usepixoo64_*ortimegate_*for those products; managed-watchface rules below apply to TimesFrame/AstroToo. - Internal managed slot: users and MCP clients omit
ClockIdfrom create and patch calls. The server injects its managed slot, reads it first, creates it when missing, and updates it when present. - Read before write: the MCP server prechecks its managed slot, writes, and then clients should read back to verify.
- If
GetLocalClockInforeturns an emptyItemList: stop writes; switch to an editable watchface first. - Prefer
watchface_patch_localfor edits. Usewatchface_create_local_clockwhen the user asks to create a watchface or when intentionally replacing the complete managed configuration and backdrop.
Implemented tools (42)
Discovery tool (1):
watchface_list_devices→ returns selectable TimesFrame/AstroToo/PIXOO64/TimeGate targets with product-specific default ports
Device tools (15):
watchface_get_device_info→ hardware identification and LAN capability reportwatchface_get_local→Device/GetLocalClockInfowatchface_patch_local→ managed-slot upsert with no caller-suppliedClockId. Existing configurations useDevice/PatchLocalClockInfo; a missing configuration is created when a backdrop and complete item tables are supplied.watchface_get_fonts_local→Device/GetLocalFontListwatchface_get_store_market_list→Device/GetStoreClockMarketListwatchface_set_clock_select→Channel/SetClockSelectId(TimesFrame queues a paired request inside one serialized MCP operation so a manual selection suppresses the active traditional schedule for the current period; AstroToo sends once)watchface_get_brightness→Sys/GetBrightnesswatchface_set_brightness→Channel/SetBrightnesswatchface_onoff_screen→Channel/OnOffScreen(1=on, 0=off)watchface_replace_dial_bg_file→POST /replace_clock_dial_bgwatchface_upload_file→ AstroToo-onlyPOST /upload_local_asset; returns a temporarylocal://staging reference consumed by a successful create/patch. AstroToo keeps product photo/pixelPOST /uploadseparate. TimesFrame generic/uploadis blocked in local-only MCP mode.watchface_create_local_clock→ managed-slot multipart upsert with no caller-suppliedClockId:/create_local_clockwhen missing and/patch_local_clockwhen already present.watchface_reset_local_then_cloud→Device/ResetLocalClockFromServerwatchface_get_screen_snapshot→Device/GetScreenSnapshot(downloads the returned AstroToo snapshot path; TimesFrame keeps its WebP fallback)watchface_raw_command→ genericPOST /divoom_api
Offline/model-aware authoring tools (6):
watchface_protocol_quick_reference→ key protocol constraints for the modelwatchface_clock_catalog→ product-specific ClockId, Chinese/English names, fonts, disp and item-id semantics; optional native configurationwatchface_disp_catalog→ model-specificdispcatalog and filterswatchface_font_catalog→ model-specific font catalog; with a live AstroToo target it merges local availability into the AstroToo nameswatchface_template_search→ curated TimesFrame or AstroToo watchface templateswatchface_layout_suggest→ model-specific layout hints; AstroToo never receives TimesFrame coordinate statistics
PIXOO64 tools (10): pixoo64_get_device_info, pixoo64_send_animation, pixoo64_send_items, pixoo64_send_text, pixoo64_clear_text, pixoo64_set_brightness, pixoo64_onoff_screen, pixoo64_set_channel, pixoo64_play_gif, and pixoo64_command_list. Read divoom://pixoo64/guide and divoom://pixoo64/example. A direct LAN target can be { "host":"192.168.1.100", "model":"pixoo64", "hardware":90 }; omit port and DIVOOM_DEVICE_PORT to select the version's default.
TimeGate tools (10): timegate_get_device_info, timegate_send_items, timegate_send_text, timegate_clear_text, timegate_set_brightness, timegate_get_brightness, timegate_onoff_screen, timegate_select_clock, timegate_play_gif, and timegate_command_list. Read divoom://timegate/guide and divoom://timegate/example; authenticated calls supply localToken from the actual device settings.
Resources (context for the model)
Product data is stored by directory: resources/timesframe, resources/astrotoo, resources/pixoo64, resources/timegate, and resources/common. resources/products.json records Hardware mappings, per-screen canvas sizes, directories and routes. Runtime loaders never fall back to another product's data.
The original resource URIs retain TimesFrame semantics. AstroToo has separate 480×480 resources:
divoom://products/catalogdivoom://guide/quick-referencedivoom://skill/watchface-customizationdivoom://font/catalogdivoom://font/guidedivoom://disp/catalogdivoom://watchface/schemadivoom://watchface/example-minimaldivoom://guide/ai-watchfacedivoom://templates/curateddivoom://astrotoo/guidedivoom://astrotoo/disp/summarydivoom://astrotoo/disp/catalogdivoom://astrotoo/disp/guide/endivoom://astrotoo/disp/guide/zh-cndivoom://astrotoo/font/catalogdivoom://astrotoo/clocks/catalogdivoom://astrotoo/clocks/configsdivoom://astrotoo/templates/curateddivoom://astrotoo/watchface/example-minimaldivoom://astrotoo/watchface/schema
MCP Bundle (.mcpb)
For MCPB-compatible hosts (e.g. Claude desktop connectors, Smithery stdio releases), build a local bundle:
- Install the packer:
npm install -g @anthropic-ai/mcpb - From this package root:
npm run mcpb:pack - Output:
mcp-divoom-lan.mcpb(gitignored). The staging directorymcpb/staging/is also gitignored.
The bundle includes dist/, resources/, production node_modules, and a manifest.json with user fields for device IP, port, product detection, and timeout.
Quick start
Published npm package:
{
"mcpServers": {
"divoom-lan": {
"command": "npx",
"args": ["-y", "mcp-divoom-lan@latest"],
"env": {
"DIVOOM_DEVICE_HOST": "192.168.1.120",
"DIVOOM_DEVICE_PORT": "9000",
"DIVOOM_DEVICE_MODEL": "auto",
"DIVOOM_TIMEOUT_MS": "45000"
}
}
}
}
DIVOOM_DEVICE_HOST is optional. Leave it unset and include target.host in each tool call when one MCP server controls multiple devices.
Build from source:
cd tools/mcp-divoom-lan # or your clone root for this package
npm install
npm run build
npm start
Development (watch rebuild):
npm run dev
Regenerate AstroToo resources from the simulator and Divoom command server:
$env:DIVOOM_ASTROTOO_SIMULATOR_ROOT='D:\work\divoom_product\timebox\trunck\device\tool_src\lv_sim_visual_studio\LvglAstroTooSimulator'
$env:DIVOOM_ASTROTOO_DEVICE_ID='300400436'
npm run build:astrotoo
The generator calls https://appchina.divoom-gz.com/ + command string with a JSON body. It obtains default IDs from Device/GetClockDefaultList (IsDefault=1), font names from Device/GetFontForAI, and missing configurations from Device/GetClockInfoV3.
Pre-release check (typecheck, build, pack dry-run):
npm run release:check
Documentation
docs/README.md— documentation indexdocs/quick-start.md— minimal setupdocs/mcp-tools.md— complete 42-tool API catalog and model-specific file policydocs/astrotoo-and-multiple-devices.md— hardware detection, multiple targets, and AstroToo local storagedocs/astrotoo-watchface-workflow.md— release-ready AstroToo create, update, switch, and screenshot workflowdocs/adding-products.md— product registry, isolated resource directories, and onboarding checksdocs/tool-examples.md— tool usage examples (includes §5b analog pointer layout)docs/disp-usage.md— choosingdispids (pointer layout131/132/233; net-gallery uniqueness13/125–130/173–175)docs/html-visual-editor.md— using the visual editor with MCPdocs/safety-and-troubleshooting.md— safety and FAQsdocs/reference/— condensed protocol rules (EN/ZH)docs/examples/— sample requests/responses and catalog
Environment variables
DIVOOM_DEVICE_HOST— device LAN IP (e.g.192.168.1.120)DIVOOM_DEVICE_PORT— optional override; omit for PIXOO64 90/92 or TimeGate 400 port80, otherwise9000DIVOOM_DEVICE_MODEL—auto(default),timesframe,astrotoo,pixoo64, ortimegateDIVOOM_DEVICE_HARDWARE— optional default-device profile: PIXOO6490/92/96or TimeGate400/402; omit to use discoveryDIVOOM_TIMEGATE_LOCAL_TOKEN— optional LocalToken from the default TimeGate settings; matched by host, otherwise supplylocalTokenper callDIVOOM_TIMEOUT_MS— request timeout ms, default45000
If DIVOOM_DEVICE_HOST is unset, each tool call must pass target.host. To control several devices, pass a different target on each call. The server serializes a complete operation per host while allowing independent devices to run concurrently.
Example client config (stdio)
Cursor / Claude Desktop
{
"mcpServers": {
"divoom-lan": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/to/tools/mcp-divoom-lan/dist/index.js"
],
"env": {
"DIVOOM_DEVICE_HOST": "192.168.1.120",
"DIVOOM_DEVICE_PORT": "9000",
"DIVOOM_DEVICE_MODEL": "auto",
"DIVOOM_TIMEOUT_MS": "45000"
}
}
}
}
You can also copy client-config.example.json in this directory as a starting point.
Publishing checklist (for maintainers)
- Use a dedicated repo (e.g.
mcp-divoom-lan) with this package at the repo root. - Verify metadata:
LICENSE,SECURITY.md,CONTRIBUTING.md,CHANGELOG.md,RELEASE.mdas applicable. - Run
npm run release:check. - Tag a GitHub release (e.g.
v0.3.0) with screenshots and sample requests if helpful. - Submit listings where appropriate (MCP Registry, Smithery, Glama, MCP.so, and community indexes). For Glama, follow
GLAMA_SUBMISSION_READY.md(includingDockerfileandglama.json). For MCP.so, followMCP_SO_SUBMISSION_READY.md. For the Volcengine MCP catalog, seeVOLCENGINE_SUBMISSION_READY.md(PR: https://github.com/volcengine/mcp-server/pull/398). For an Alibaba Cloud Bailian custom MCP deployed with npx, seeBAILIAN_MCP_SUBMISSION_READY.md. For publishing a Coze HTTP plugin, seeCOZE_SUBMISSION_READY.md. - Minimal demo flow:
watchface_get_local→watchface_patch_local(font size/color) →watchface_replace_dial_bg_file(background).
Files often used at release
Included in this repo (when present): LICENSE, CHANGELOG.md, CONTRIBUTING.md, SECURITY.md, RELEASE.md, optional checklist and directory templates, and .github/workflows/ci.yml.
Should the HTML visual editor ship inside this npm package?
Recommendation: no for the core MCP package — keep MCP lean. Offer the editor as a separate optional project.
- Core:
https://github.com/DivoomDevelop/mcp-divoom-lan - Visual editor v2:
https://github.com/DivoomDevelop/divoom-watchface-visual-editor_v2 - Hosted v2:
https://divoomdevelop.github.io/divoom-watchface-visual-editor_v2/
Benefits:
- Small MCP install suitable for all AI clients
- Non-developers can use the visual UI to understand
ItemList, then let the AI apply patches - Clear split between WYSIWYG editing and automated MCP writes
Alignment with upstream docs
This repo ships standalone docs under docs/, docs/reference/, and docs/examples/. If you maintain full guides elsewhere, keep this tree synced or treat it as the distribution subset.
Divoom LAN Watchface MCP 질문
Divoom LAN Watchface MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add --env 'DIVOOM_DEVICE_HOST=<DIVOOM_DEVICE_HOST>' mcp-divoom-lan -- npx -y mcp-divoom-lan를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
Divoom LAN Watchface MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
이 MCP server는 어떤 하드웨어 장치를 지원하나요?
TimesFrame, AstroToo, PIXOO64, TimeGate 워치페이스 및 디스플레이를 지원합니다.
여러 대의 Divoom 장치를 어떻게 제어하나요?
DIVOOM_DEVICE_HOST 환경 변수를 설정하지 않으면, 각 도구 호출 시 서로 다른 대상 호스트를 전달하여 여러 장치를 제어할 수 있습니다.
이 server를 사용하면 장치의 펌웨어가 변경되나요?
아니요, 도구를 사용해도 장치 펌웨어는 변경되지 않습니다.
TimeGate 장치를 제어하려면 무엇이 필요한가요?
TimeGate 하드웨어는 인증된 호출을 위해 장치 설정에서 얻은 LocalToken이 필요합니다.