Skip to main content

uijit

UI Just-In-Time - MCP server for A2UI canvas rendering and Chromecast casting.

What is uijit?

uijit is an MCP (Model Context Protocol) server that enables AI agents to create rich visualizations using the A2UI component format and cast them to Chromecast/Google TV devices in real-time.

This repository also hosts the Canvas Receiver - a Google Cast receiver application served via GitHub Pages at uijit.com.

Installation

pip install uijit

Usage

As an MCP server (stdio transport)

uijit --host 0.0.0.0 --port 8090

With nanobot

Add to your nanobot config:

{
  "tools": {
    "mcpServers": {
      "uijit": {
        "command": "uijit",
        "args": ["--host", "0.0.0.0", "--port", "8090"]
      }
    }
  }
}

MCP Tools

Tool Description
canvas_create Create a new canvas surface
canvas_update Update components using A2UI format
canvas_data Update data model without re-rendering
canvas_close Close and delete a surface
canvas_list List all surfaces
canvas_show Show/navigate existing surfaces
canvas_get Get full state of a canvas

How It Works

┌─────────────┐     ┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│  AI Agent   │────▶│   uijit     │────▶│   uijit     │────▶│ Chromecast  │
│  (nanobot)  │     │  MCP Server │     │  Receiver   │     │    TV       │
└─────────────┘     └─────────────┘     └─────────────┘     └─────────────┘
      │                   │                   │                   │
      │  A2UI JSON        │  WebSocket        │  Cast SDK         │
      │  (components)     │  (real-time)      │  (custom msg)     │
  1. AI Agent generates A2UI visualization components via MCP tools
  2. uijit MCP Server manages surfaces, renders HTML, serves via WebSocket
  3. uijit Receiver (GitHub Pages) is loaded by Chromecast and connects to the server
  4. Chromecast displays the live-updating visualization

URLs

Path Description
uijit.com Landing page
uijit.com/canvas-receiver/ Google Cast receiver application

Chromecast Casting

uijit includes a pre-registered Google Cast receiver (App ID: BE2EA00B) that points to https://uijit.com/canvas-receiver/. No registration is needed — casting works out of the box when paired with androidtvmcp.

Repository Structure

uijit/
├── index.html                 # Landing page (GitHub Pages)
├── canvas-receiver/
│   └── index.html             # Cast receiver application
├── pyproject.toml             # Python package metadata
├── src/uijit/                 # MCP server source
│   ├── cli.py                 # CLI entry point
│   ├── server.py              # MCP protocol handler
│   ├── canvas_manager.py      # Surface lifecycle management
│   ├── renderer.py            # A2UI → HTML renderer
│   ├── web_server.py          # HTTP/WebSocket server
│   └── models.py              # Data models
└── tests/
    └── test_canvas_manager.py # Tests

License

MIT

Metadata

Release files for uijit 0.1.1

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

Source distribution (sdist)

Source distribution for uijit 0.1.1
File Size Uploaded
uijit-0.1.1.tar.gz 22.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for uijit 0.1.1
File Interpreter ABI Platform
uijit-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 48.0 kB

Release files / uijit-0.1.1.tar.gz

Download URL uijit-0.1.1.tar.gz
Size 22.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d336f3e0743111ee9c0a16d0a393934f73f917b5c35a12260d24fa94347d3451
BLAKE2b-256 checksum
How to use checksums
06a857f05a83b53cd47e27f247fa6c05061c5d0fdc9f4e935d1d19f8476f2ea9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / uijit-0.1.1-py3-none-any.whl

Download URL uijit-0.1.1-py3-none-any.whl
Size 25.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fabba58073aa71dfdf3f61a9ceba79bd3654a691df670825b13616eb13c4f24a
BLAKE2b-256 checksum
How to use checksums
20ddd7e6edb79a3bd15b8f40602571d5d00dc259def16eadaca1166a9c01c481
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.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