Pixoo MCP Server

Pixoo MCP Server

Enables programmatic control of Divoom Pixoo LED matrices to display layered pixel art, animations, and hardware-rendered scrolling text. Users can compose complex visual scenes, push images, and manage device settings like brightness and channels through an LLM.

Category
访问服务器

README

<div align="center"> <img src="example-output/hello_from_claude.png" alt="Hello from Claude on Pixoo 64" width="128" /> <h1>@cyanheads/pixoo-mcp-server</h1> <p><b>Your Pixoo, programmable via LLM</b></p> <p>Compose and push pixel art, animations, and text to Divoom Pixoo LED matrices via MCP.</p> <div>4 Tools · STDIO & Streamable HTTP</div> </div>

<div align="center">

Version MCP Spec License TypeScript Bun

</div>


🛠️ Tools Overview

This server provides 4 tools for composing and pushing visual content to Pixoo displays:

Tool Description Annotations
pixoo_compose Compose a scene from layered elements (text, images, sprites, shapes, bitmaps, pixels) and push to device. Supports multi-frame animation with per-element keyframes. destructiveHint
pixoo_push_image Load a single image file (PNG, JPEG, WebP, GIF, AVIF, TIFF, SVG), resize to the display grid, and push to the device. destructiveHint
pixoo_text Push native on-device scrolling text overlay via the device's built-in fonts. Overlays persist across channel switches. destructiveHint
pixoo_control Read or change device settings (brightness, channel, screen on/off, clock face). Call with no parameters to read config. idempotentHint

Both pixoo_compose and pixoo_push_image auto-switch the device to the custom channel before pushing.

🚀 Getting Started

MCP Client Settings

Add the following to your MCP client configuration file (e.g., claude_desktop_config.json). Clients have different ways to configure servers, so refer to your client's documentation for specifics.

Be sure to set PIXOO_IP to the IP address of your Pixoo device on the local network.

Claude Code

claude mcp add pixoo-mcp-server -e PIXOO_IP=YOUR_DEVICE_IP -- bunx @cyanheads/pixoo-mcp-server@latest

Using bunx (Bun)

{
  "mcpServers": {
    "pixoo-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/pixoo-mcp-server@latest"],
      "env": {
        "PIXOO_IP": "192.168.1.100",
        "PIXOO_SIZE": "64",
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

Streamable HTTP Configuration

MCP_TRANSPORT_TYPE=http
MCP_HTTP_PORT=3010

Prerequisites

  • Bun v1.2.0+
  • A Divoom Pixoo device on the same local network

Development Environment Setup

  1. Clone the repository:
git clone https://github.com/cyanheads/pixoo-mcp-server.git
cd pixoo-mcp-server
  1. Install dependencies:
bun install
  1. Configure environment:
cp .env.example .env
# Edit .env and set PIXOO_IP to your device's IP address
  1. Run:
bun run dev:stdio    # Development (hot reload)
bun run devcheck     # Lint, format, typecheck, audit
bun run rebuild && bun run start:stdio  # Production

✨ Features

  • Full Compose Pipeline: Layer text, images, sprites, shapes, bitmaps, and individual pixels — static or animated up to 40 frames.
  • Animation Keyframes: Per-element property animation with linear interpolation for numbers, color lerping for hex values, and snap transitions for booleans.
  • Sprite Support: Load sprite sheets with automatic downsampling and optional body/dark color overrides via @cyanheads/pixoo-toolkit.
  • Bitmap Font Rendering: Built-in standard (5x7) and compact (3x5) pixel fonts for crisp text at any display size.
  • Auto-Save Previews: Optionally save PNG previews (static) or animated GIFs to a configurable output directory.
  • Native Text Overlays: Hardware-rendered scrolling text via device firmware — persists across channel switches with configurable font, alignment, and speed.

Built on the mcp-ts-template — declarative tool definitions, structured error handling, pluggable auth (JWT/OAuth), swappable storage backends, OpenTelemetry observability, and typed DI.

⚙️ Configuration

Key environment variables:

Variable Description Default
PIXOO_IP IP address of the Pixoo device on the local network (required)
PIXOO_SIZE Display resolution: 16, 32, or 64 64
PIXOO_OUTPUT_DIR Directory for auto-saved preview images output/
MCP_TRANSPORT_TYPE Transport: stdio or http stdio
MCP_HTTP_PORT HTTP server port 3010
MCP_HTTP_HOST HTTP server hostname 127.0.0.1
MCP_AUTH_MODE Authentication mode: none, jwt, or oauth none
STORAGE_PROVIDER_TYPE Storage backend: in-memory, filesystem, supabase, cloudflare-r2, cloudflare-kv, cloudflare-d1 in-memory
MCP_LOG_LEVEL Log level (trace, debug, info, warn, error, fatal, silent) debug
OTEL_ENABLED Enable OpenTelemetry instrumentation false

🎨 Tool Details

pixoo_compose

The primary tool. Compose a scene from layered elements and push to the device. Elements are drawn back-to-front.

{
  "background": "black",
  "elements": [
    { "type": "rect", "x": 0, "y": 0, "w": 64, "h": 20, "color": "#1a1a2e" },
    {
      "type": "text",
      "text": "Hello!",
      "x": 0,
      "y": 6,
      "color": "white",
      "font": "standard",
      "centered": true
    },
    {
      "type": "bitmap",
      "x": 28,
      "y": 40,
      "scale": 2,
      "palette": ["", "#ff4488", "#cc2266"],
      "data": ["0120210", "1111111", "1111111", "0111110", "0011100", "0001000"]
    }
  ]
}

Element types: text, image, sprite, rect, circle, line, bitmap, pixels

Animation: Set frames > 1 and add animate keyframes to elements:

{
  "frames": 10,
  "speed": 150,
  "elements": [
    {
      "type": "text",
      "text": "Hello",
      "x": 0,
      "y": 2,
      "color": "#ffffff",
      "centered": true,
      "animate": {
        "color": [
          [0, "#ffffff"],
          [5, "#ff8800"],
          [9, "#ffffff"]
        ]
      }
    }
  ]
}

Output options: Set output to an absolute path to save a preview PNG (static) or GIF (animated). Set push: false to skip device push and only save previews.

See docs/pixoo-mcp-server.md for full element and animation documentation.

pixoo_push_image

Shortcut to load and push a single image file. Supports PNG, JPEG, WebP, GIF, AVIF, TIFF, and SVG.

{ "path": "/path/to/image.png", "fit": "contain", "kernel": "nearest" }
Option Values Default
fit contain, cover, fill contain
kernel nearest, lanczos3, mitchell nearest

pixoo_text

Native on-device scrolling text with hardware rendering. Overlays render on top of the current display content and persist across channel switches.

{ "text": "Hello World", "color": "#00ff00", "speed": 50, "direction": "left" }

Use different IDs (0–19) to stack multiple overlays. Set clear: true to remove an overlay.

pixoo_control

Read or change device settings. Call with no parameters to read current config.

{ "brightness": 75, "channel": "custom" }

⚠️ Device Quirks

  • ~1 push/sec recommended — device may freeze after ~300 rapid pushes
  • Channel must be custom to display pushed content — compose and push_image auto-switch
  • Text overlays persist across channel switches — use clear: true to remove
  • Max ~40 animation frames for stability
  • ~5s "Loading.." overlay when a new animation starts
  • GIF ID reset before each push — handled automatically by the toolkit

📚 References

Contributing

Issues and PRs welcome. Please run bun run devcheck && bun test before submitting.

License

Apache 2.0

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选