tui-canvas
Click on "Install 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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceMCP 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.Last updated11418MIT
- Alicense-qualityCmaintenanceTerminal 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.Last updated4522MIT
- AlicenseAqualityCmaintenanceMCP 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.Last updated96021MIT
- AlicenseBqualityAmaintenanceA 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.Last updated711MIT
Related MCP Connectors
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
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Czaruno/tui-canvas'
If you have feedback or need assistance with the MCP directory API, please join our Discord server