tui-canvas
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tui-canvasShow me this week's calendar with events."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
TUI Canvas
Framework-agnostic interactive terminal canvases for AI coding assistants.
Works with OpenCode, Claude Code, Cursor, Gemini CLI, Grok CLI, and any MCP-compatible AI harness.
Supports multiple TUI frameworks: OpenTUI (primary), Ink, and more.
Features
Protocol-first design - Any TUI framework can implement canvases
Multiple implementations - Same canvas in OpenTUI, Ink, Bubbletea, etc.
MCP integration - Works with any AI coding assistant via MCP
tmux integration - Canvases spawn in split panes
Built-in Canvases
Calendar - Weekly view with events, meeting time picker
Document - Markdown viewer/editor with text selection
Flight - Cyberpunk-themed flight booking with seatmaps
Related MCP server: Forge
Quick Start
Install
# Run without installing globally
bunx tui-canvas listMCP Configuration
OpenCode (opencode.json in this repo):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"tui-canvas": {
"type": "local",
"command": ["bun", "run", "packages/mcp/src/index.ts"],
"enabled": true
}
}
}Other MCP clients:
{
"mcpServers": {
"tui-canvas": {
"command": "bunx",
"args": ["tui-canvas"]
}
}
}CLI Usage
# List available canvases
bunx tui-canvas list
# Spawn a canvas (must be in tmux)
bunx tui-canvas spawn calendar --scenario display
bunx tui-canvas spawn document --scenario edit --config '{"content": "# Hello"}'
# Use specific implementation
bunx tui-canvas spawn calendar --implementation ink
bunx tui-canvas spawn calendar --implementation opentuiProject Structure
tui-canvas/
├── packages/
│ ├── protocol/ # Protocol specification & types
│ ├── cli/ # Unified CLI
│ ├── mcp/ # MCP server
│ └── runtime/ # Framework adapters
│ ├── opentui/ # OpenTUI runtime (primary)
│ └── ink/ # Ink runtime
│
├── canvases/ # Canvas implementations
│ ├── calendar/
│ │ ├── manifest.json # Canvas manifest
│ │ ├── opentui/ # OpenTUI implementation
│ │ └── ink/ # Ink implementation
│ ├── document/
│ └── flight/Supported Frameworks
Framework | Status | Description |
OpenTUI | Primary | TypeScript TUI framework (anomalyco/opentui) |
Ink | Secondary | React for terminals |
Bubbletea | Planned | Go TUI framework |
Textual | Planned | Python TUI framework |
Supported AI Harnesses
Harness | Detection |
OpenCode |
|
Claude Code |
|
Cursor |
|
Gemini CLI |
|
Grok CLI |
|
Generic | Fallback for any MCP client |
Creating Canvases
Canvas Manifest
Each canvas has a manifest.json:
{
"id": "my-canvas",
"name": "My Canvas",
"description": "A custom canvas",
"version": "1.0.0",
"scenarios": {
"default": {
"description": "Default scenario",
"configSchema": { ... },
"resultSchema": { ... }
}
},
"implementations": {
"opentui": {
"framework": "opentui",
"reconciler": "solid",
"entrypoint": "./opentui/index.ts"
},
"ink": {
"framework": "ink",
"entrypoint": "./ink/index.tsx"
}
},
"defaultImplementation": "opentui"
}Protocol
Canvases communicate via Unix sockets using the TUI Canvas Protocol:
Canvas → Controller:
{ type: "ready", scenario: string }
{ type: "selected", data: unknown }
{ type: "cancelled", reason?: string }Controller → Canvas:
{ type: "update", config: unknown }
{ type: "close" }Development
# Clone and install
git clone https://github.com/anomalyco/tui-canvas.git
cd tui-canvas
bun install
# Test CLI
bun run packages/cli/src/index.ts list
bun run packages/cli/src/index.ts spawn calendar
# Start MCP server
bun run packages/mcp/src/index.tsRequirements
License
MIT
Credits
Originally based on Claude Canvas. OpenTUI framework: github.com/anomalyco/opentui
This server cannot be deployed
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceMCP server enabling AI agents to interact with terminal applications through structured Terminal State Tree representation. Works with any AI assistant that supports the Model Context Protocol.41 npm19MIT
- AlicenseNot gradedqualityDmaintenanceTerminal MCP server for AI coding agents with persistent PTY sessions, ring-buffer incremental reads, headless xterm screen capture, multi-agent orchestration, and a real-time web dashboard.10 npm23MIT
- AlicenseAqualityDmaintenanceMCP server for terminal control enabling AI to manage terminal sessions via iTerm2 or tmux, with features like screen reading, keyboard/mouse input, and background execution.914 npm22MIT
- AlicenseBqualityCmaintenanceA comprehensive MCP server for driving tmux sessions, windows, panes, sending keystrokes, and reading pane output locally or over SSH, enabling real-time collaborative pairing with AI.713MIT