cyanheads/pixoo-mcp-server
Render and push styled pixel art, text, dashboards, and animations to Divoom Pixoo LED displays on your local network via MCP. STDIO or Streamable HTTP.
Changelog
All notable changes to this project. Each entry links to its full per-version file in changelog/.
1.5.0 — 2026-10-28
Publishes the pixoo-guide agent skill over MCP and in every package, moves to mcp-ts-core 0.13.18 (fixing a per-request HTTP memory leak under Bun), and corrects four tool-description statements.
1.4.1 — 2026-10-24
Runs on mcp-ts-core 0.13.16: tool error and recovery text in content[] is Markdown-escaped, numeric and boolean strings in tool arguments are repaired before validation, an out-of-range framework environment value stops startup with the variable named, and device and page text this server echoes into content[] is escaped too.
1.4.0 — 2026-09-27
New pixoo_render_html renders agent-authored HTML, CSS, and Canvas in an isolated headless browser on a virtual clock, with a pixoo page runtime for crisp bitmap text and icons. Animations of more than 40 frames, up to 800, play as one GIF the device downloads from this host.
1.3.0 — 2026-09-26 · ⚠️ Breaking
Stricter tool inputs: unknown nested keys, relative image paths, and effect with animate now fail -32602 instead of being dropped or resolved silently. layout[].action reports only what the frames do, standard and compact text names the characters it draws as ?, and errors carry the request ID.
1.2.2 — 2026-09-26
Adopts @cyanheads/pixoo-toolkit 0.10.0: animated GIF and WebP push as animations, images take a palette finish, scene elements take blend modes and stroke widths, and text gains a numerals face. Undecodable images fail as invalid_image, and filled circles and JPEG/WebP images render differently.
1.2.1 — 2026-09-26
pixoo_compose_scene checks animate keyframes per property and caps image, icon, and sprite sizes; stroke icons, icon palettes, keyframed colors, and layout fits now render and report as documented. mcp-ts-core ^0.13.6 → ^0.13.9.
1.2.0 — 2026-09-23 · ⚠️ Breaking
pixoo_display_text adds scroll/float/pulse effects, align, and an honored font; animated previews return a full frame grid; failed pushes keep their render; design_brief's suggestion shape and overlay_text's x/y/width bounds change (breaking); scene image sizing and per-source caching are fixed.
1.1.4 — 2026-09-23 · 🛡️ Security
Push-capable tools now declare device_http_error and carry retryable; pixoo_compose_scene's image opacity and missing local-asset errors are fixed; pixoo_control_device no longer drops failed-setter notices; pixoo_push_image's fetch cap now holds while the body streams.
1.1.3 — 2026-09-21
Errors thrown in the tool handlers now forward their declared recovery hint to callers; invalid_color hints match what resolveColor accepts; pixoo_control_device drops two error reasons it could never emit (#8). mcp-ts-core ^0.13.2 → ^0.13.6 adds a Recovery: hint on argument rejections and key normalization for tool calls.
1.1.2 — 2026-09-16
@cyanheads/mcp-ts-core ^0.13.2 adoption: explicit stateless session mode, a structured -32602 argument-rejection envelope, unset-env normalization for PIXOO_* vars, and the framework skill tree moved to framework-skills/. Claude and Codex plugin manifests now forward PIXOO_IP/PIXOO_SIZE.
1.1.1 — 2026-08-22
Docker build stage pinned to $BUILDPLATFORM — 1.1.0 published no GHCR image; this restores the multi-arch (linux/amd64 + linux/arm64) publish.
1.1.0 — 2026-08-22 · ⚠️ Breaking · 🛡️ Security
SDK v2 adoption: rendered previews move from output to content[] (previewData/previewMimeType removed from 3 tools); fixes a dead path-traversal guard in pixoo_compose_scene's output path (#5).
1.0.0 — 2026-06-12 · ⚠️ Breaking
Ground-up 1.0 rebuild on mcp-ts-core 0.10.6 — pure renderer pipeline, 7 tools, 4 resources, 166 tests.
0.1.0 — 2026-06-12
Project scaffold from @cyanheads/mcp-ts-core.