pixoo-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PIXOO_IP | Yes | IP address of the Pixoo device on the local network | |
| PIXOO_SIZE | No | Display resolution: 16, 32, or 64 | 64 |
| OTEL_ENABLED | No | Enable OpenTelemetry instrumentation | false |
| MCP_AUTH_MODE | No | Authentication mode: none, jwt, or oauth | none |
| MCP_HTTP_HOST | No | HTTP server hostname | 127.0.0.1 |
| MCP_HTTP_PORT | No | HTTP server port | 3010 |
| MCP_LOG_LEVEL | No | Log level (trace, debug, info, warn, error, fatal, silent) | debug |
| PIXOO_OUTPUT_DIR | No | Directory for auto-saved preview images | output/ |
| MCP_TRANSPORT_TYPE | No | Transport: stdio or http | stdio |
| STORAGE_PROVIDER_TYPE | No | Storage backend: in-memory, filesystem, supabase, cloudflare-r2, cloudflare-kv, cloudflare-d1 | in-memory |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": true,
"listChanged": true
} |
| extensions | {
"io.modelcontextprotocol/skills": {
"directoryRead": true
}
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pixoo_display_textA | Render styled text (theme, gradient, shadow, outline, auto-fit) onto the Pixoo display and push it, static or animated with a scroll, float, or pulse effect. Returns the render as an image content block for immediate inspection. The primary tool for text-only display — for layers, icons, widgets, or per-element motion use pixoo_compose_scene. Run pixoo_design_brief with topic "text" first for palette and legibility guidance. |
| pixoo_compose_sceneA | Compose a full scene: layered elements (text, icons, widgets, shapes, bitmaps, images, sprites) with per-element effects and keyframes, static or animated. Returns the rendered scene as an image content block for immediate inspection. Elements render back-to-front in array order. For text-only display use pixoo_display_text; run pixoo_design_brief with topic "scene" or "dashboard" for layout and palette guidance. |
| pixoo_push_imageA | Load an image (absolute local path or https URL), resize it to fit the LED grid, and optionally push it to the display. An animated GIF or WebP pushes as an animation of up to maxFrames frames (default 40), sampled evenly from a longer source and played at the speed that keeps its loop length; past 40 frames it plays as one GIF the device downloads from this host. Returns the downsampled result as an image content block so you see exactly what the display received — for an animation, a grid of its frames, evenly sampled once they outnumber what fits the sheet. Nearest-neighbor kernel preserves pixel art; use lanczos3 or mitchell for photos. finish reduces the result to a small or fixed palette, optionally dithered. |
| pixoo_render_htmlA | Render an HTML page — a full document or a body fragment, with inline CSS, Canvas, SVG, or WebGL — in a headless browser at the panel size, and optionally push it to the display. Animate it by capturing up to 800 frames on a virtual clock that advances speed ms per frame: window.render(t, frame), when the page defines it, runs before each capture with t = frame / frames, so periodic motion loops seamlessly; CSS animations, requestAnimationFrame, timers, Date, and performance.now follow the same clock, so two calls capture the same frames unless the page reads Math.random, which is unseeded, or the starting Date. The page loads nothing from the network and starts no workers; a page with no background renders on black, which the panel shows as unlit. Every page gets a pixoo global before its own scripts run: pixoo.text, pixoo.icon, and pixoo.palettes draw crisp bitmap text, gradient palettes, and icons exactly as pixoo_compose_scene does. Returns the captured result as an image content block — for an animation, a grid of its frames — and the page's uncaught and console errors as pageErrors. Run pixoo_design_brief with topic "html" first for loop, clock, sampling, legibility, and pixoo runtime guidance. |
| pixoo_overlay_textA | Set or clear a device-native scrolling text overlay. Use mode "set" to add or update an overlay on a slot (0–19); use mode "clear" to remove it. Overlays use device-rendered fonts (115 font IDs, 0–114) and persist across channel switches until explicitly cleared with mode "clear". Not previewable — rendering happens on-device. Best for persistent tickers over pushed scenes; for styled, previewable text use pixoo_display_text instead. |
| pixoo_control_deviceA | Read or change device state: brightness (0–100), screen on/off, channel, or clock face. Call with no params to read current state only. Supply any params to apply changes before reading back state. Use pixoo_discover_devices first if PIXOO_IP is not yet configured. |
| pixoo_discover_devicesA | Find Pixoo devices on the local network via Divoom's cloud discovery endpoint (requires internet — queries app.divoom-gz.com). Run once during initial setup to find device IPs; set PIXOO_IP in server configuration to enable all other tools. For ongoing device control use pixoo_control_device. |
| pixoo_design_briefA | Return craft guidance and live device context for a design topic. Covers legibility rules, palette discipline, layout zones, animation budget, HTML page authoring, and pre-filled next-tool suggestions based on current device state. The orientation tool to run before authoring a scene, dashboard, animation, or HTML page — or when troubleshooting display issues. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| device-status | Live snapshot of the connected Pixoo display: reachable, channel, brightness, screen state, and display size. Degrades gracefully when the device is unreachable — returns reachable: false instead of an error. |
| themes | Theme and palette registry with background gradients, default text palettes, accent colors, and swatch values. Use theme names in pixoo_display_text and pixoo_compose_scene. |
| icons | Built-in icon names organized by category (weather, arrows, status, media). Use icon names in pixoo_compose_scene elements with type "icon". Pass name to the icon element, or browse this resource to discover available names. |
| design-guide | Long-form 64px craft guide: legibility floors, palette discipline, layout zones, animation budget, pixel art rules, and known device behaviors. Read this before composing scenes or troubleshooting display quality. |
| pixoo-guide | Gates and workflows for the pixoo_* tools that drive a Divoom Pixoo LED panel — preview before pushing, what a push takes over and how to restore it, keeping a clock or live data current, device-native overlays, and getting an unconfigured or unreachable panel working. Use when asked to show, display, scroll, or animate something on the Pixoo, or when a pixoo_* call fails or the panel shows nothing. |
TDQS
Scored across 8 tools
Although several tools produce visual output, the descriptions clearly partition them: compose_scene for layered compositions, display_text for previewable text-only output, overlay_text for persistent device-native tickers, render_html for HTML pages, and push_image for file/URL images. Device control, discovery, and design guidance are also clearly separate.
All tools use the pixoo_ prefix and snake_case with a consistent verb_noun shape: compose_scene, render_html, control_device, discover_devices, display_text, overlay_text, push_image, and design_brief. There is no mixed casing or inconsistent style.
Eight tools fit the server's scope well: one discovery tool, one device-control tool, one guidance tool, and several distinct rendering/display paths. Each tool has a clear role and none feels redundant.
The set covers initial setup, device state, design guidance, and multiple rendering/display workflows including text, scenes, HTML, images, and overlays. Minor gaps remain around explicitly pushing or clearing composed scenes and broader lifecycle operations, but core workflows are covered.