mcp-server-awtrix
MCP Server Awtrix: KI-Agenten-Display-Orchestrator für Ulanzi- und Pixel-Clocks
MCP Server Awtrix (mcp-server-awtrix) ist ein Open-Source-Model Context Protocol (MCP)-Server und deklarativer Metrik-Orchestrator, der KI-Agenten (Antigravity, Claude Desktop, Cursor, Cline, AutoGPT usw.) die volle Kontrolle über Ulanzi TC001 und kompatible Pixel-Matrix-Smart-Clocks mit Awtrix Light gibt.
Er verbindet konversationelle und autonome KI-Agenten mit physischen Desktop-Displays und ermöglicht:
Sofortige Agenten-Benachrichtigungen: Ad-hoc-Statusmeldungen, Build-Fehlerhinweise und Aufgabenabschlüsse auf den Pixel-Bildschirm pushen.
Dynamische Karussell-Apps: Benutzerdefinierte Live-Telemetrie-Apps (Servergesundheit, SaaS-Metriken, Umsatzzähler, Build-Status) registrieren, aktualisieren und durchlaufen.
Deklarativer Metrik-Poller: Hintergrund-API-Abrufe und Schwellwertformatierung per YAML-Spezifikation automatisieren, ohne individuelle Python-Skripte zu schreiben.
Hardware-Telemetrie & Steuerung: Batteriestand prüfen, Matrix-Helligkeit anpassen, Energiestatus verwalten und benutzerdefinierte Sound-Signale auslösen.
Inhaltsverzeichnis
Related MCP server: pixoo-mcp-server
1. Produktanforderungsdokument (PRD)
Problemstellung
Entwickler und Power-User, die intelligente Pixel-Clocks (wie die Ulanzi TC001 mit Awtrix Light) betreiben, schreiben derzeit fragmentierte, hartcodierte Python- oder Bash-Cron-Skripte, um externe APIs abzufragen und Matrix-Apps zu aktualisieren.
Bei der Arbeit mit KI-Codierungsagenten:
Agenten müssen für jede Metrik rohen imperativen Code generieren und pflegen.
Es gibt kein standardisiertes Werkzeugset, mit dem ein KI-Agent Echtzeit-Benachrichtigungen senden oder den Display-Lebenszyklus verwalten kann.
Die Geheimnisverwaltung ist fehleranfällig und riskiert API-Schlüssellecks in KI-Prompts und Logs.
Es gibt keinen nativen Fallback oder Validierung für mehrsegmentige Textformatierung und Pixel-Icons.
Ziele & Nicht-Ziele
Ziele
Native MCP-Schnittstelle: Einen standardmäßigen Model Context Protocol-Server bereitstellen, der robuste Tools für Benachrichtigungen, benutzerdefinierte Apps, Geräteverwaltung und Vorschauen bietet.
Deklarative Telemetrie: Agenten und Menschen ermöglichen, Metrik-Polling-Regeln in einfachen YAML-Dateien mit integrierter Templating (Jinja2) und Schwellwert-Styling zu definieren.
Sichere Geheimnis-Isolation: Sensible Anmeldeinformationen mithilfe von
.env-Umgebungsvariablen-Substitution vom Prompt-Kontext entkoppeln.Zero-Downtime-Hot-Reload: Änderungen an YAML-Konfigurationsdateien automatisch ohne Dienstneustart widerspiegeln.
Zuverlässige Fallbacks: Netzwerkausfälle, API-Ratenbegrenzungen und Offline-Display-Zustände elegant behandeln.
Nicht-Ziele
Ersetzen der Awtrix-Light-Firmware (dieses Tool interagiert ausschließlich mit der offiziellen Awtrix-Light-REST/MQTT-API).
Komplexe Multi-Monitor-Kachelsynchronisierung (Fokus liegt auf einzelnen oder mehreren eigenständigen Pixel-Clocks).
Zielpersonas & Anwendungsfälle
Persona | Szenario | Wie MCP Server Awtrix hilft |
KI-Codierungsagent (z. B. Antigravity / Cursor) | Agent schließt eine 10-minütige Testsuite oder autonome Aufgabe im Hintergrund ab. | Ruft das |
DevOps / SRE-Ingenieur | Möchte Produktionsverfügbarkeit, Fehlerbudgets oder Checkly-Synthetiktests überwachen. | Legt eine |
SaaS-Gründer / Builder | Möchte Echtzeit-MRR, neue Nutzeranmeldungen und Support-Ticket-Zähler auf dem Schreibtisch rotieren lassen. | Definiert eine deklarative Multi-Metrik-App, die Backend-Admin-Endpunkte abfragt. |
Funktionale Anforderungen
FR-1: Sofortige Benachrichtigungen (
/api/notify):Unterstützung für benutzerdefinierten Text, mehrsegmentigen farbigen Text, Icon-ID, Sound/RTTTL-Klingeltöne, Prioritäts-Hold und Dauer.
FR-2: Benutzerdefinierte Karussell-Apps (
/api/custom):Möglichkeit, benannte Apps im Display-Loop zu registrieren, zu aktualisieren und zu entfernen.
Unterstützung für Rich-Text-Segmentformatierung (
[{"t": "FAIL", "c": "FF0000"}, {"t": " (2/10)", "c": "FFFFFF"}]).
FR-3: Deklarative Hintergrund-Engine:
Integrierter Scheduler (
asyncio/apscheduler), der Polling-Jobs ausapps/*.yamlausführt.Templating-Engine mit Unterstützung für berechnete Variablen, Arithmetik und bedingte Ausdrücke.
FR-4: Gerätezustand & Telemetrie:
Batterieprozentsatz, Wi-Fi-RSSI, Lux-Sensor, Matrix-Zustand und aktive Apps abfragen.
Helligkeit, Schlaf-/Wachstatus und Übergänge anpassen.
FR-5: Trockenlauf & Simulation:
Vorschau-Tool, das exakte gerenderte JSON-Payloads und Farbvalidierungen vor der Hardware-Übermittlung zurückgibt.
Nicht-funktionale Anforderungen
Latenz: Direkte MCP-Tool-Ausführungen müssen Awtrix innerhalb von $< 150\text{ms}$ in lokalen Netzwerken erreichen.
Resilienz: Der Orchestrator wiederholt fehlgeschlagene API-Abrufe mit exponentiellem Backoff, bevor er eine App als degradiert markiert.
Portabilität: Als Standard-Python-Paket mit
uv/pipx-Unterstützung, Docker-Container und eigenständigem CLI verpackt.
2. Systemarchitektur & Design
Hochrangige Architektur
┌──────────────────────────┐
│ AI Client/Host │
│ (Claude / Antigravity / │
│ Cursor / Cline) │
└────────────┬─────────────┘
│
│ stdio / SSE (MCP Protocol)
▼
┌────────────────────────────────────────────────────────────────────────────────────────┐
│ mcp-server-awtrix │
│ │
│ ┌───────────────────────┐ ┌──────────────────────────────┐ ┌───────────────────┐ │
│ │ MCP Interface │ │ App Orchestrator │ │ Config Watcher │ │
│ │ (Tools / Resources) │ │ (Async Scheduler) │ │ (Hot-Reload) │ │
│ └───────────┬───────────┘ └──────────────┬───────────────┘ └─────────┬─────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────────────────────────────────────────┐ │
│ │ Core Engine & Driver │ │
│ │ - Schema Validator (Pydantic) │ │
│ │ - Template & Expression Engine (Jinja2 / JSONPath) │ │
│ │ - Secret Resolver (.env) │ │
│ │ - Awtrix REST / WebSocket Client │ │
│ └──────────────────────────────────────────┬───────────────────────────────────────┘ │
└─────────────────────────────────────────────┼──────────────────────────────────────────┘
│
│ HTTP REST (JSON)
▼
┌──────────────────────────┐
│ Ulanzi TC001 Clock │
│ (Awtrix Light Firmware)│
└──────────────────────────┘Komponentenaufschlüsselung
MCP-Schnittstellenschicht:
Implementiert Model Context Protocol-Serverendpunkte über
stdioundSSE.Stellt Tools mit strengen JSON-Schemas und menschenlesbarer Dokumentation für KI-Modelle bereit.
Deklarative Polling-Engine:
Asynchroner Worker, der Task-Lebenszyklen für dateibasierte App-Manifeste verwaltet.
Wertet HTTP-Anfragen aus, extrahiert Felder mithilfe von JSONPath/Ausdrücken und löst Anzeigeregeln auf.
Awtrix-Treiber:
Kapselt Gerätekommunikation, Anfrage-Deduplizierung, Verbindungspooling und Fehlerbehebung.
Konfigurations- & Sicherheitsschicht:
Isoliert sensible Tokens in
.env. Konfigurationsdateien referenzieren Variablen über die${VAR_NAME}-Syntax.
3. MCP-Tools-Spezifikation
KI-Agenten können die folgenden MCP-Tools ausführen:
awtrix_notify
Sendet eine sofortige, hochpriorisierte Benachrichtigung an den Bildschirm (unterbricht das aktuelle Karussell).
{
"text": "Build Failed: Backend API",
"icon": "10558",
"color": "FF0000",
"duration": 8,
"sound": "alarm",
"rtttl": "beep:d=4,o=5,b=100:16e6,16e6",
"wakeup": true
}awtrix_upsert_app
Registriert oder aktualisiert eine dauerhafte benutzerdefinierte App im Karussell-Loop.
{
"name": "app_users",
"text": [
{"t": "1,420", "c": "FFFFFF"},
{"t": " (+42)", "c": "00FF00"}
],
"icon": "2058",
"duration": 5,
"lifetime": 300
}awtrix_delete_app
Entfernt eine benutzerdefinierte App aus dem Gerätezyklus.
{
"name": "app_users"
}awtrix_get_device_state
Gibt Hardware-Statistiken und aktuelle Betriebsmetriken zurück.
Antwort:
{
"online": true,
"battery": 88,
"charging": true,
"lux": 140,
"temp": 24,
"ram_free": 128440,
"active_app": "app_users",
"brightness": 120
}awtrix_set_settings
Konfiguriert Geräteparameter wie Helligkeit, Matrix-Schalter und Übergangsgeschwindigkeiten.
{
"brightness": 80,
"power": true
}awtrix_test_render
Trockenlauf-Hilfsprogramm, das Ausdrücke parst und das gerenderte Payload zurückgibt, ohne es an die Hardware zu senden.
4. Deklarative App-Engine (YAML-Schema)
Anstatt benutzerdefinierte Python-Skripte zu pflegen, legen Sie .yaml-Manifeste im Verzeichnis apps/ ab.
Beispiel 1: Service-Gesundheit (Checkly)
apps/checkly.yaml
app_id: "checkly"
name: "checkly_status"
enabled: true
interval_seconds: 60
source:
type: "http"
url: "https://api.checklyhq.com/v1/checks"
headers:
Authorization: "Bearer ${CHECKLY_API_KEY}"
X-Checkly-Account: "${CHECKLY_ACCOUNT_ID}"
transform:
total: "len(data)"
failures: "sum(1 for c in data if c.get('hasFailures'))"
degraded: "sum(1 for c in data if c.get('isDegraded') and not c.get('hasFailures'))"
display:
- condition: "failures > 0"
icon: "10558"
notify: true
text:
- { text: "FAIL ", color: "FF0000" }
- { text: "({{failures}}/{{total}})", color: "FFFFFF" }
- condition: "degraded > 0"
icon: "10558"
text:
- { text: "WARN ", color: "FFA500" }
- { text: "({{degraded}}/{{total}})", color: "FFFFFF" }
- condition: "default"
icon: "483"
text:
- { text: "UP ", color: "00FF00" }
- { text: "({{total}})", color: "FFFFFF" }Beispiel 2: Multi-Metrik-SaaS-Dashboard
apps/saas_metrics.yaml
app_id: "saas_metrics"
interval_seconds: 120
source:
type: "http"
url: "https://api.example.com/v1/admin/metrics"
headers:
X-API-Secret: "${SAAS_METRICS_API_SECRET}"
sub_apps:
- name: "app_users"
icon: "2058"
text:
- { text: "{{data.users_total}}", color: "FFFFFF" }
- { text: " (+{{data.new_users_last_week}})", color: "00FF00" }
- name: "app_premium"
icon: "5336"
text:
- { text: "{{data.users_premium}}", color: "FFFFFF" }
- { text: " (+{{data.new_users_premium_last_week}})", color: "FFD700" }
- name: "app_orders"
icon: "21072"
text:
- { text: "{{data.orders_total}}", color: "FFFFFF" }
- { text: " (+{{data.new_orders_last_week}})", color: "00FF00" }
- name: "app_support"
icon: "10558"
show_if: "data.tickets_open > 0"
text:
- { text: "{{data.tickets_open}}", color: "FF0000" }5. Schnellstart & Installation
Voraussetzungen
Python 3.10 oder höher
Ulanzi TC001 (oder kompatibles Gerät) mit Awtrix Light Firmware geflasht und mit Ihrem Wi-Fi-Netzwerk verbunden.
Lokale Einrichtung mit uv / pip
# Clone the repository
git clone https://github.com/klodnickik/mcp-server-awtrix.git
cd mcp-server-awtrix
# Copy example environment configuration
cp .env.example .env
# Edit device address and API keys in .env
# AWTRIX_BASE_URL=http://awtrix3.localFühren Sie den MCP-Server lokal über stdio aus:
# Using uv (recommended)
uv run mcp-server-awtrix
# Or standard pip
pip install -e .
python -m awtrix_mcpDocker- & Docker-Compose-Einrichtung
Führen Sie mit Docker Compose aus:
# 1. Clone & prepare environment
git clone https://github.com/klodnickik/mcp-server-awtrix.git
cd mcp-server-awtrix
cp .env.example .env
# 2. Start the MCP Server (SSE on port 8000) and Metric Daemon
docker compose up -d
# Or start only the metric poller daemon:
docker compose up -d metric-daemon
# View live logs:
docker compose logs -fMCP-Client-Konfiguration
1. Google Antigravity
Fügen Sie zu Ihrer mcp_servers.json hinzu:
{
"mcpServers": {
"awtrix": {
"command": "uv",
"args": ["--directory", "/path/to/mcp-server-awtrix", "run", "mcp-server-awtrix"],
"env": {
"AWTRIX_BASE_URL": "http://awtrix3.local"
}
}
}
}2. Claude Desktop
Fügen Sie zu claude_desktop_config.json hinzu:
{
"mcpServers": {
"awtrix": {
"command": "python",
"args": ["-m", "awtrix_mcp"],
"env": {
"AWTRIX_BASE_URL": "http://awtrix3.local"
}
}
}
}3. Cursor
In Cursor-Einstellungen $\rightarrow$ Features $\rightarrow$ MCP-Server $\rightarrow$ Server hinzufügen:
Name:
awtrixTyp:
commandBefehl:
uv --directory /path/to/mcp-server-awtrix run mcp-server-awtrix
6. Roadmap & Mitwirken
Kern-MCP-Tools-Spezifikation und Design
Deklaratives YAML-Orchestrierungsschema
FastMCP-Implementierung mit asynchronem HTTP-Client
Live-Web-Vorschau für Matrix-Pixelkunst
MQTT-Transportschicht-Unterstützung (optionale Alternative zu REST)
Home-Assistant-Dienstfindungs-Export
Beiträge sind willkommen! Bitte reichen Sie einen PR ein oder eröffnen Sie ein Issue für Feature-Diskussionen.
7. Lizenz
Verteilt unter der MIT-Lizenz. Siehe LICENSE für weitere Informationen.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to control and monitor Home Assistant smart home devices through natural language interactions. Supports device control, entity state monitoring, history access, and automation generation with both MCP protocol and standalone HTTP REST API modes.1MIT
- AlicenseAqualityAmaintenanceEnables 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.7576Apache 2.0
- AlicenseAqualityDmaintenanceEnables registration, monitoring, and control of IoT devices via AI agents, with local storage and no cloud API key required.9MIT
- AlicenseAqualityCmaintenanceMCP server and CLI for controlling Ulanzi TC001 Smart Pixel Clock via AWTRIX3 HTTP API. Enables power, brightness, notifications, and more from AI assistants.202MIT
Related MCP Connectors
A real clock for AI agents: current time, timezone conversion, and DST facts from the IANA tzdb.
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Wall-clock awareness for LLM agents. Two tools: elapsed-time-between-turns + day rollover detection.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/klodnickik/mcp-server-awtrix'
If you have feedback or need assistance with the MCP directory API, please join our Discord server