MCP Family Kiosk Display
A polished, animated kiosk display that can be controlled by an LLM through MCP tool calls.
What this provides
- MCP server over stdio with kiosk control tools
- HTTP kiosk display endpoint at
http://localhost:8787 - Real-time updates via WebSocket (
/ws) - Large readable typography and smooth animated transitions
- Support for mixed scene elements: text, images, and videos
- Overlay announcements for urgent family updates
- Auto-advancing playlist mode for unattended display rotation
MCP integrations
The server supports two MCP transports:
- Stdio (default) — for LLM clients that use stdio-based MCP
- HTTP streaming — for tools like n8n, Zapier, or custom integrations
Stdio transport
Standard MCP over stdin/stdout. Used by most LLM clients as a subprocess.
HTTP streaming transport
call MCP tools from n8n or any HTTP client.
GET /mcp/tools— list all available toolsPOST /mcp/call— invoke a tool (JSON response)POST /mcp/stream— invoke a tool (Server-Sent Events response)
Example: n8n HTTP POST to /mcp/call
{
"tool": "kiosk_show_chores",
"arguments": {
"dueToday": ["Dishes", "Homework", "Vacuum living room"],
"done": ["Breakfast prep", "Make beds"],
"points": ["Jane: 12 pts", "Max: 8 pts"],
"theme": "party"
}
}
Response:
{
"ok": true,
"message": "Chore dashboard rendered",
"state": { /* full kiosk state */ }
}
Run locally
- Install dependencies
- Start the server
- Open kiosk display in browser
The server process hosts both:
- MCP tool interface (stdio)
- Display web server (
http://localhost:8787)
Example scene payload for kiosk_set_playlist
Use this shape from your LLM client:
title,subtitletheme:aurora | sunrise | ocean | midnight | partytransition:slide | fade | zoomautoAdvance,autoAdvanceSecscenes[]title,subtitle,accent,durationSecelements[]type: textwithheading,bodytype: imagewithurl, optionalcaptiontype: videowithurl, optionalcaption, and booleansmuted,autoplay,loop
High-level family workflow tools
For most home-assistant use cases, prefer these tools over raw playlist JSON:
kiosk_show_calendar- Inputs:
dayLabel,events[],now,next,highlight events[]accepts either simple strings or objects withwhen,time,label
- Inputs:
kiosk_show_chores- Inputs:
dueToday[],done[],points[]
- Inputs:
kiosk_show_meal_plan- Inputs:
breakfast,lunch,dinner,prep[],shopping[]
- Inputs:
kiosk_show_school_run- Inputs:
leaveBy,weather,checklist[],reminders[]
- Inputs:
kiosk_announce- Inputs:
message(required),details[],emoji,showOverlay
- Inputs:
Each of the tools above also supports optional visual controls:
title,subtitletheme:aurora | sunrise | ocean | midnight | partytransition:slide | fade | zoomautoAdvance,autoAdvanceSec
MCP client wiring
Use mcp.client.example.json as a reference for your MCP host configuration.
Customization ideas
- Pipe in family calendar data from Home Assistant
- Add weather and transit cards as text elements
- Display chore boards and rotating reminders
- Build holiday themes by switching
themeand scene media
Notes
- Keep media URLs publicly accessible by the kiosk browser.
- For local/private media, serve files from
public/and reference relative paths.