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) │
- AI Agent generates A2UI visualization components via MCP tools
- uijit MCP Server manages surfaces, renders HTML, serves via WebSocket
- uijit Receiver (GitHub Pages) is loaded by Chromecast and connects to the server
- 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
Related Projects
- androidtvmcp - MCP server for Android TV control
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)
| File | Size | Uploaded | |
|---|---|---|---|
| uijit-0.1.1.tar.gz | 22.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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}
|