Skip to main content
Glama

Clip.A.Canvas

Clip.A.Canvas transforms HTML/CSS/JS animations into MP4 videos — entirely local or hosted in the cloud. Powered by Chromium + FFmpeg for high-quality, browser-accurate rendering. Perfect for AI agents generating video content, demos, or visual explanations on-the-fly.

Clip.A.Canvas is a local and remote browser-motion-to-video toolkit.

It includes:

  • Desktop App: Paste, preview, and export animations locally with a pywebview UI.

  • MCP Server: Exposes HTML-to-video rendering tools to Antigravity, Gemini, Codex, Claude Code, and other AI clients.

  • Terminal UI (TUI): Keyboard-first command-line client for code-first rendering.

  • Website: https://clipacanvas.vercel.app

  • GitHub: https://github.com/mechreaper007x/ClipACanvas

  • Releases: https://github.com/mechreaper007x/ClipACanvas/releases/tag/v1.0.0

  • Cloud MCP (SSE): https://mechreaper007x-clip-a-canvas-mcp.hf.space/sse


🎬 MCP Server (Model Context Protocol)

Expose render_video and render_video_to_file tools to your AI assistant.

1. Cloud-Hosted (Zero Resource Usage)

We host a public instance of the MCP server on Hugging Face Spaces using Server-Sent Events (SSE). Point your client configuration directly to our cloud endpoint:

Claude Desktop Configuration (claude_desktop_config.json):

{
  "mcpServers": {
    "clipacanvas": {
      "url": "https://mechreaper007x-clip-a-canvas-mcp.hf.space/sse"
    }
  }
}

2. Local Execution (Standard PyPI)

If you prefer running the server locally on your machine:

# Run locally with uvx
uvx --from clipacanvas-mcp clipmcp

# Or install via pip
pip install clipacanvas-mcp

Claude Desktop Configuration for Local Server:

{
  "mcpServers": {
    "clipacanvas": {
      "command": "uvx",
      "args": ["--from", "clipacanvas-mcp", "clipmcp"]
    }
  }
}

Related MCP server: TimeVerse HyperFrames MCP

💻 Terminal UI (TUI)

A keyboard-first CLI tool for local render pipelines.

Install from PyPI:

# Using pipx (recommended)
pipx install clipacanvas-tui

# Using uv
uv tool install clipacanvas-tui

Usage:

Run either command (clipacanvas-tui or clippp):

clipacanvas-tui --clipboard --preview
# or
clippp --clipboard --preview

🖥️ Desktop App

A visual UI for editing, previewing, and rendering HTML code to MP4.

Install Dependencies:

git clone https://github.com/mechreaper007x/ClipACanvas.git
cd ClipACanvas
pip install -r requirements.txt
pip install -r desktop_requirements.txt
npm install
python -m playwright install chromium

Run the App:

  • Windows: Run launch_desktop.bat or python desktop_app.py

  • macOS: Run ./launch_desktop.command


🏗️ Build Outputs & Packaged Releases

See build_desktop.py to package binaries:

  • Windows Portable EXE: python build_desktop.py -> dist/ClipACanvas.exe

  • Windows Installer: python build_installer.py -> dist/ClipACanvas-Setup.exe

  • macOS Bundle: python3 build_mac_app.py -> dist/ClipACanvas.app


📄 License

MIT

Available Tools

2 tools
render_videoRender videoA

Render HTML, CSS, and JavaScript code to an MP4 video using Chromium (headless) and FFmpeg. Supports CSS animations, WAAPI, SVG, and canvas animations. Returns the video as base64-encoded MP4.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesComplete HTML document including DOCTYPE, <html>, <head>, <body>, and any inline CSS/JS.
widthNoVideo width in pixels (default: 540).
heightNoVideo height in pixels (default: 960).
bitrateNoFFmpeg bitrate (default: '5M'). Examples: '2M', '10M'.5M
frame_rateNoFrame rate for capture and encoding (default: 60).
max_durationNoMaximum render duration in seconds (default: 12).
min_durationNoMinimum render duration in seconds (default: 0.35).

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true) are consistent with description. Description adds details about external processes (Chromium, FFmpeg) and output format, providing behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences cover purpose, supported features, and output format without redundancy. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains purpose, supported features, output format, and uses external tools. It lacks details on parameter interactions (e.g., min/max_duration) but schema covers defaults. No output schema, but description sufficiently conveys return value. Overall adequate for complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all 7 parameters. Description adds only minor extra guidance on the 'code' parameter format, so it provides limited added value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool renders HTML/CSS/JS to an MP4 video using Chromium and FFmpeg, and specifies supported animations. It distinguishes from sibling 'render_video_to_file' by mentioning the base64-encoded output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies usage context (base64 output) but does not explicitly compare with sibling or state when to use this tool over alternatives. No when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render_video_to_fileRender video to fileA
Destructive

Same as render_video but saves the resulting MP4 directly to a file path on disk instead of returning base64. Useful for integrating with other tools or when dealing with large videos.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesComplete HTML document.
output_pathYesAbsolute path where the MP4 file should be saved.
widthNoVideo width in pixels (default: 540).
heightNoVideo height in pixels (default: 960).
bitrateNoFFmpeg bitrate (default: '5M').5M
frame_rateNoFrame rate (default: 60).
max_durationNoMaximum render duration in seconds (default: 12).

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true, so the agent knows this tool writes files. The description adds that it saves MP4 to a file path, but does not disclose additional traits like overwrite behavior or disk space requirements. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, efficiently front-loading the core difference from the sibling tool. Every word adds value, with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters and no output schema, the description is sufficient: it explains the key behavior, use cases, and difference from sibling. It lacks details on error conditions or performance, but the annotations and schema cover most essential aspects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage, so parameters are well-documented. The description mentions output_path but adds no new meaning beyond the schema. Baseline of 3 is appropriate per scoring guidelines.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that this tool renders video to a file on disk, contrasting it with render_video which returns base64. The verb 'render' and resource 'video to file' are specific, and the sibling distinction is explicitly made.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context for when to use this tool: 'Useful for integrating with other tools or when dealing with large videos.' It implies when not to use (e.g., when base64 is needed) but does not explicitly state exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv1.0.0
    • First observedrender_video
    • First observedrender_video_to_file

TDQS

A3.9/5.0

Scored across 2 tools

Disambiguation4/5

The tools are clearly differentiated by their output method (base64 vs file), and descriptions state the difference explicitly. However, the core functionality is identical, which could cause confusion if an agent doesn't read carefully.

Naming Consistency5/5

Both tools follow a consistent pattern: 'render_video' base name with a suffix '_to_file' for the file variant. The naming is clear and predictable.

Tool Count3/5

With only two tools, the server feels thin for a video rendering service. While it covers the basic render operation, additional tools for preview or status would make it more robust.

Completeness3/5

The server only offers rendering with two output formats. There are no tools for checking render status, managing rendered files, or handling different video settings, which are notable gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers