Skip to main content

tesserae-mcp

Part of the Tesserae monorepo (packages/tesserae-mcp), so the bridge stays in lockstep with the /api/mcp surface it wraps. Published to PyPI as tesserae-mcp.

The MCP bridge for Tesserae. It lets an AI agent (Claude Desktop, Claude Code, or any MCP client) build freeform (canvas) dashboards for your e-ink panels: it lists your widgets and devices, lays out a canvas, renders a preview to check its own work, and pushes to a panel.

This is a thin stdio client. It talks to a running Tesserae over its /api/mcp HTTP surface, so the rendering, widgets, and devices all come from your own Tesserae instance.

create_canvas_page → set_canvas → render_preview → (look) → set_canvas → …

Prerequisites

A running Tesserae with the MCP API enabled: Settings → System → MCP → Enable MCP API. If this bridge runs on a different machine from Tesserae, also Regenerate token there and copy it.

Install

Run this on the machine where your agent runs (your laptop/desktop), which may be different from where Tesserae runs.

pipx install tesserae-mcp

That gives you the tesserae-mcp command. Upgrade it later with pipx upgrade tesserae-mcp; Tesserae flags an out-of-date bridge under Settings → System → MCP once one has connected.

(From source: pip install "git+https://github.com/dmellok/tesserae#subdirectory=packages/tesserae-mcp". The standalone dmellok/tesserae-mcp repo is archived at 0.5.0 — development moved into the monorepo.)

Configure your agent

Point your MCP client at tesserae-mcp. Example (Claude Desktop / Claude Code mcpServers config):

{
  "mcpServers": {
    "tesserae": {
      "command": "tesserae-mcp",
      "env": {
        "TESSERAE_URL": "http://127.0.0.1:8765",
        "TESSERAE_MCP_TOKEN": "<your-token>"
      }
    }
  }
}
  • TESSERAE_URL — where your Tesserae is reachable (default http://127.0.0.1:8765). For a Docker/Home Assistant install, use its LAN address, e.g. http://192.168.1.50:8765 (the port must be reachable; HA ingress-only setups won't work).
  • TESSERAE_MCP_TOKEN — the token from Settings. Omit it when the agent and Tesserae share a machine (loopback is trusted).

Then just ask: "Build me an 800×480 dashboard with the time, today's weather for Melbourne, and my next calendar event, then show me a preview."

Tools

Discover

Tool What it does
list_widgets Every placeable widget (with fragments), summarised; section="appearance" for themes, styles and fonts; full=True for the whole catalog
get_widget_options A widget's options + format hints (big choice lists omitted by default)
get_widget_choices Page through one option's choice rows (HA entity pickers etc.)
probe_widget_data A widget's data + data_source (live/sample/error) + bindable field paths; long lists truncated unless full=True
list_services Non-placeable service plugins (Open-Meteo, REST/JSON, Home Assistant) usable as code/data element sources
list_icons Search the vendored Phosphor icon set for a valid slug
list_fonts / add_font / delete_font Cache a Google Fonts family or a single woff2/ttf/otf face on the server, list the cache, remove an entry
list_devices Registered panels: dimensions, colour capability, touch flag, firmware capabilities (overlay, deck cache, protocol)
describe_actions The authoritative touch-action vocabulary

Build

Tool What it does
list_pages Existing canvas dashboards
create_canvas_page Create an empty canvas (size it to your panel)
delete_canvas_page Remove a canvas dashboard
get_canvas Read a canvas document (returns a rev for concurrency-safe writes)
set_canvas Replace a canvas document (422 with field errors if invalid)
patch_canvas Change document-level fields (size, theme, bg) without touching elements
set_canvas_background Generate a full-bleed background image from a prompt (fal.ai)
add_element Append one element (live-updates an open editor)
add_elements_bulk Append many elements in one all-or-nothing save
update_element Change one element in place (no full re-send)
append_code Append to a code element's html / css / js, streaming it in chunk by chunk
delete_element Remove one element
arrange Compute aligned grid/row/column boxes so you lay out by intent, not pixels
measure_text Measure rendered text width/height so a box fits its content

Check and ship

Tool What it does
render_preview Render the canvas to a PNG the agent can see (fresh=True bypasses caches)
render_report Read back what rendered (values, overflow, colours, tap regions, invalid actions and icons) as JSON; debug=True adds console errors, failed requests, dropped CSS and font load status
bind_devices Persist the canvas's target device set for Send and scheduling
push_to_device Render once and push the canvas to explicit device(s)

Schedule and navigate

Tool What it does
list_rotations / create_rotation / delete_rotation Ordered page cycles that advance on a wall-clock interval
list_schedules / create_schedule / delete_schedule Time-driven pushes of a page to its devices
list_decks / create_deck / delete_deck Pages kept pre-rendered per device so buttons and taps switch instantly
suggest_decks Derive a deck from the page:<id> links already on elements

Writes (set_canvas, add_element, add_elements_bulk, update_element, delete_element, patch_canvas) accept an optional base_rev (from get_canvas); if the page changed since, the write returns HTTP 409 so you re-read instead of clobbering a concurrent edit.

Release history is in CHANGELOG.md.

Run without installing

From a clone:

pip install mcp
TESSERAE_URL=http://127.0.0.1:8765 python -m tesserae_mcp

License

AGPL-3.0-or-later, matching Tesserae.

Metadata

Release files for tesserae-mcp 0.18.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tesserae-mcp 0.18.0
File Size Uploaded
tesserae_mcp-0.18.0.tar.gz 51.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tesserae-mcp 0.18.0
File Interpreter ABI Platform
tesserae_mcp-0.18.0-py3-none-any.whl Python 3 none any Details

Total release size: 95.7 kB

Release files / tesserae_mcp-0.18.0.tar.gz

Download URL tesserae_mcp-0.18.0.tar.gz
Size 51.1 kB
Tags Source
SHA-256 checksum
How to use checksums
842c78c7dfadffc822d553a7bba5d9c4030d577ec5d88f4b5e00719c0c6d304d
BLAKE2b-256 checksum
How to use checksums
6b5a5fe84db5770db7b41d8705b7157d6ca00e1713e5cb12157fae48d87c2085
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log

Release files / tesserae_mcp-0.18.0-py3-none-any.whl

Download URL tesserae_mcp-0.18.0-py3-none-any.whl
Size 44.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
101472ef5c52d4f303d3216ff60aba5224902c44edf642dbba81514b02d07942
BLAKE2b-256 checksum
How to use checksums
32b7ed314e58121feffeac4bdb30df0fd2c68810441ad99049b14feab3a2167f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.18.0 This release

2 release files

0.17.1

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.1

2 release files

0.11.0

2 release files

0.10.3

2 release files

0.10.2

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.1

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.14

2 release files

0.5.13

2 release files

0.5.12

2 release files

0.5.11

2 release files

0.5.10

2 release files

0.5.9

2 release files

0.5.8

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page