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.
Install / Use
claude mcp add cyanheads -- npx -y github:cyanheads/pixoo-mcp-serverIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
MarketingSupported Platforms
Tags
Our assessment of pixoo-mcp-server
pixoo-mcp-server scores 76/100 on our quality scale, 569th of 597 Marketing skills we index.
Its MCP Server is 26 KB long, well organised into 30 sections with 11 code examples: a thorough specification that gives an agent plenty to work with.
It has 10 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 8 days ago, so pixoo-mcp-server is actively maintained.
- It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 97/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
pixoo-mcp-server compared with similar skills
All 4 of these similar skills score higher than pixoo-mcp-server; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| pixoo-mcp-server (this skill)by cyanheads | 76 | 10 | 8d ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 91.8k | 20d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.5k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.2k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 85.8k | 1d ago | MCP Server |
Frequently asked questions
- How do I install pixoo-mcp-server?
- Run
claude mcp add cyanheads -- npx -y github:cyanheads/pixoo-mcp-server. The install tabs above show the steps for each supported agent. - Which AI agents does pixoo-mcp-server work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is pixoo-mcp-server safe to use?
- It is Apache-2.0-licensed and scores 97/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is pixoo-mcp-server still maintained?
- The repository was last updated 8 days ago, so pixoo-mcp-server is actively maintained.
Skill content
View source on GitHubOverview
Divoom Pixoo LED matrix displays on the local network, with the Pixoo-64 as the primary target and the 16 and 32 also supported. Render and push styled text, layered scenes, dashboards, animations, and HTML pages, or read and change device state. Runs as a stdio process or a local Streamable HTTP server.
Tools
| Tool | Description |
|:---|:---|
| pixoo_display_text | Render styled text with themes, gradients, shadows, and auto-fit, static or animated, and push it |
| pixoo_compose_scene | Compose layered scenes of text, icons, widgets, shapes, bitmaps, images, and sprites, static or animated |
| pixoo_push_image | Resize a local or https image to the LED grid and push it, an animated GIF or WebP as an animation |
| pixoo_render_html | Render an HTML page (CSS, SVG, Canvas, WebGL) in a headless browser at the panel size, still or animated frame by frame on a virtual clock, and push it |
| pixoo_overlay_text | Set or clear a device-rendered scrolling text overlay |
| pixoo_control_device | Read or change brightness, screen state, channel, or clock face |
| pixoo_discover_devices | Find Pixoo devices and their LAN IPs through Divoom's cloud discovery |
| pixoo_design_brief | Craft guidance for a design topic, with live device state and pre-filled next calls |
Resources
| Resource | Description |
|:---|:---|
| pixoo://device/status | Live device snapshot: reachability, channel, brightness, screen state, display size |
| pixoo://reference/themes | Theme and palette registry |
| pixoo://reference/icons | Built-in icon names by category |
| pixoo://reference/design-guide | Long-form craft guide for the 64px display |
Tools cover the same ground for tool-only clients: pixoo_control_device reads the live device state, and pixoo_design_brief returns craft guidance, theme names, and icon names.
Capability reference
pixoo_display_text <sub>tool</sub>
textas a string or an array of lines;theme(midnight,ember,claude,ice,neon,forest,mono) sets the background and default palette.styletakes apaletteramp (ember,ice,neon,fire,lavender,claude,mono) or a custom{ from, to }, plusshadow,outline, andscale1–8;positionis semantic or in pixels, andalignlines up multi-line textfont:standard(5×7) andcompact(3×5) draw printable ASCII plus° ← ↑ → ↓ ▲ ▼ ♥ · …, and any other character (€,’, a newline inside one string) as?, named with its code point and line index in the responsenotice;numeralsis an 11×18 digit face for clocks and readouts that draws 0–9, space, and: . - + / % ° ?, and text holding any other character fails validation, naming those characterslayout[]reports every fit decision as anaction(shrunk-to-compactwhen the text fits only in the compact font,scrollingwhen the returned frames scroll,noneotherwise), thefontused, and whether each line's boxfitson the panel; a single line too wide for the panel starts at x 0, cut at the right edge when it does not scroll. Single-line text falls back from the standard to the compact font unlessfontis set — never tonumerals— and text still too wide only scrolls undereffect: "auto"or"scroll"effect:scrollmakes one pass in up to 40 frames,autoscrolls only on overflow, andfloatandpulseloop over 20 frames;framesreports the count, and the animation pushes as one device animation
pixoo_compose_scene <sub>tool</sub>
- Up to 50
elementsdrawn back-to-front:text(in the same three fonts aspixoo_display_text),icon,rect,circle,line,progress,sparkline,bitmap,pixels,image(absolute path or https URL, with the samefinishaspixoo_push_image),sprite(absolute path). Thebackgroundis a solid color, av/h/rgradient, or atheme - Every element takes
opacity(each pixel lands at its own alpha ×opacity, so soft edges fade evenly) andblend:normal,add(glows and light beams),screen, ormultiply.lineand outlinecircletakestrokeWidthandantialias, and arectborder takesstrokeWidth, growing inward; either field on a shape that draws no stroke fails validation, naming it - Returns
layout[]: each element's placed box — for a wide or anti-aliased stroke, every pixel it draws — and whether itfitson the panel. Elements are placed as given and never refit, soactionis alwaysnone. An absoluteoutputpath saves the first frame as a PNG in place of thePIXOO_OUTPUT_DIRauto-save. Typed failures:asset_not_found,invalid_image(an image or sprite that was read but does not decode),invalid_color,unknown_icon,invalid_output_path - Animation through per-element
effectpresets (float,scroll-left,scroll-right,pulse,blink,twinkle,drift,fade-in,fade-out) or rawanimatekeyframes overdx,dy,opacity(numbers or numeric strings),visible(true/false), andcolor(interpolated through RGB on any element with acolor), each track holding at least one keyframe;frames1–800,speed10–2000 ms per frame (default 150). Past 40 frames the scene plays as one GIF the device downloads from this host, withspeedrounded to 10 ms. An element takeseffectoranimate, not both. An effect'samplitudesets the movement offloat,scroll-*, anddrift, and the 0–1 depth of thepulseandtwinkleopacity dip
pixoo_push_image <sub>tool</sub>
sourceis an absolute local path or an https URL, with downloads capped at 10 MB;fitiscontain(default),cover, orfill, andkernelisnearest(default, for pixel art),lanczos3(photos), ormitchell- A source that decodes as an animated GIF or WebP, whatever its file name, pushes as an animation of up to
maxFramesframes (1–800, default 40), sampled evenly from a longer source; past 40 frames it plays as one GIF the device downloads from this host. It plays at the source's total duration over the pushed frame count (150 ms when the source records no delays), or atspeed(10–2000 ms per frame);frames,sourceFrames, andspeedreport what was pushed finishreduces the image to a palette before the push: exactly one ofcolors(2–256, built from the image) orpalette(1–256 hex or named colors), plusdither(none,bayer4,floyd-steinberg). Transparent pixels stay unlit, and an animation'scolorspalette is shared by every frame- An unreadable path or URL fails as
asset_not_found, a source that is read but does not decode (a text file, an HTML page, a truncated download) fails asinvalid_image, and an unresolvablefinishpalette entry fails asinvalid_color; the preview is the exact frame the device receives, or a grid of an animation's frames
pixoo_render_html <sub>tool</sub>
-
htmlis a full document or a body fragment, up to 500,000 characters, laid out in a square viewport one CSS pixel per LED. The page is the panel:bodyhas no margin, scrollbars are hidden, and a page that paints no background renders on black (unlit). Its own CSS overrides each -
frames1–800 (default 1),speed10–2000 ms per frame (default 150). Each frame advances a virtual clock byspeed:window.render(t, frame), when the page defines it, runs before each capture witht = frame / frames, so periodic motion loops seamlessly;requestAnimationFrame,setTimeout/setInterval(4 ms floor for nested and repeating timers),Date(starting at the real time), andperformance.now()(0 at load) follow the same clock, and CSS animations are paused and seeked to it, so every frame is deterministic.requestIdleCallbackand iframes keep real time. Past 40 frames the page plays as one GIF the device downloads from this host, as onpixoo_compose_scene -
sampling:native(default) orsupersample, which renders at 8× and area-averages into each LED, smoothing transforms, text, SVG, and canvas. Chromium snaps a plain box's edges to whole CSS pixels before scaling, so a box atleft: 0.5pxstill lands on one LED; move it withtransformfor sub-pixel motion.finishtakes the same palette reduction aspixoo_push_image, applied before the preview -
Nothing loads from the network and workers are blocked.
pageErrorsreturns the page's uncaught errors,console.erroroutput, and blocked URLs (a blocked navigation asBlocked navigation: <url>): the first 20, each cut to 500 characters. Awindow.renderthat throws or rejects fails aspage_error, naming the frame; with no browser found, the call fails asbrowser_unavailablewith install steps (see Prerequisites);render_timeoutandrender_crashedcover a render past 30 s and a crashed browser or page.PIXOO_HTML_ENABLED=falseremoves the tool -
Every page gets a
pixooglobal before its own scripts run, for the crisp bitmap text, palettes, and icons that browser anti-aliasing would smear across LEDs:pixoo.context()is the 2D context of a transparent panel-size canvas fixed over the page.pixoo.text(ctx, text, x, y, { font, color, palette, scale, shadow, outline })drawspixoo_display_text's fonts.pixoo.icon(ctx, name, x, y, { w, h, color, palette })draws a registry icon.pixoo.palettesholds the 7 palettes, andpixoo.sizeis the panel size.
Text and icons drawn this way match
pixoo_compose_scenepixel for pixel in both sampling modes. An unknown palette, icon, or color throws naming it:<script> const ctx = pixoo.context(); pixoo.text(ctx, 'HELLO', 'center', 4, { palette: 'ember', scale: 2, shadow: true }); pixoo.icon(ctx, 'check-circle', 50, 50, { color:
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
91.8kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.5kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.2kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Scrapling
85.8k🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
