A Model Context Protocol (MCP) server that enables AI assistants to create, animate, and export ASCII art from the ASCII Motion app, using natural language.
ASCII Motion MCP allows you to use AI assistants like Claude, GitHub Copilot, and Cursor to:
- 🎨 Draw ASCII art - Create pixel art and text graphics with characters
- 🎬 Animate - Build frame-by-frame animations with onion skinning
- 📥 Import - Convert images to ASCII art with full control
- 📤 Export - Save as PNG, GIF, MP4, HTML, React, or CLI components
- 🌈 Apply effects - Add digital rain, noise, color shifts, and more
All through natural language prompts!
- Node.js 18+
- An MCP-compatible AI client (Claude Desktop, VS Code + Copilot, Cursor, etc.)
npm install -g ascii-motion-mcpVerify installation:
ascii-motion-mcp --helpImportant: The
--liveflag is required for all setups. Without it, the MCP tools have no visual output. After configuring your client, you must also connect the browser to see your AI's work.
Add to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"ascii-motion": {
"command": "ascii-motion-mcp",
"args": ["--live", "--project-dir", "/path/to/your/projects"]
}
}
}Restart Claude Desktop after saving.
-
Install the GitHub Copilot extension
-
Create
.vscode/mcp.jsonin your workspace:
{
"servers": {
"ascii-motion": {
"command": "npx",
"args": [
"ascii-motion-mcp",
"--live",
"--project-dir",
"${workspaceFolder}"
],
"type": "stdio"
}
}
}Or if you've installed globally (npm install -g ascii-motion-mcp):
{
"servers": {
"ascii-motion": {
"command": "ascii-motion-mcp",
"args": [
"--live",
"--project-dir",
"${workspaceFolder}"
],
"type": "stdio"
}
}
}-
Restart VS Code completely (not just reload window)
-
Open Copilot Chat - the MCP tools should now be available!
Note: VS Code spawns the MCP server automatically when Copilot needs it. You don't run the server manually.
To see edits in real-time:
- Ask Copilot: "What is the MCP auth token?"
- Open ascii-motion.app
- Click ☰ → MCP Connection
- Paste the token and click Connect
- Install GitHub CLI and Copilot extension:
# Install GitHub CLI
brew install gh # macOS
# or: winget install GitHub.cli # Windows
# Install Copilot extension
gh extension install github/gh-copilot
# Login
gh auth login- Create/edit
~/.config/gh-copilot/config.yml:
mcpServers:
ascii-motion:
command: ascii-motion-mcp
args:
- --live
- --project-dir
- ~/ascii-art-projects- Use in terminal:
gh copilot chat "Create an 8-frame animation of a bouncing ball"- Open Cursor Settings (
Cmd+,/Ctrl+,) - Search for "MCP" in settings
- Click "Edit in settings.json" and add:
{
"mcp.servers": {
"ascii-motion": {
"command": "ascii-motion-mcp",
"args": ["--live", "--project-dir", "/path/to/projects"]
}
}
}- Restart Cursor
Add to your Windsurf MCP configuration:
{
"mcpServers": {
"ascii-motion": {
"command": "ascii-motion-mcp",
"args": ["--live", "--project-dir", "/path/to/projects"]
}
}
}After configuring your AI client, you must connect the ASCII Motion browser app to see visual output:
- Get the auth token - Ask your AI: "What is the MCP auth token?"
- Open ASCII Motion - Go to ascii-motion.app
- Open MCP Connection - Click the hamburger menu (☰) → MCP Connection
- Paste the token - Enter the auth token and click Connect
You should see a green "Connected" status. Now your AI's edits appear in real-time!
ascii-motion-mcp [options]
Options:
-d, --project-dir PATH Project directory for file operations (default: cwd)
-l, --live Enable live browser sync via WebSocket (REQUIRED)
-p, --port PORT WebSocket port for live mode (default: 9876)
-h, --help Show help
-v, --version Show version
Once configured, try these prompts with your AI assistant:
Create Art:
"Create a 40x20 canvas with a pixel art heart in red"
Import & Convert:
"Import the image at ./photo.jpg and convert it to ASCII using block characters"
Animate:
"Create an 8-frame animation of a walking stick figure"
Apply Effects:
"Add a digital rain effect with green characters"
Export:
"Export this animation as a GIF with 2x size"
CLI Components:
"Export as an Ink component for my Node.js CLI app"
set_cell, get_cell, clear_cell, set_cells_batch, paste_ascii_block, fill_region, resize_canvas, clear_canvas
add_frame, delete_frame, duplicate_frame, go_to_frame, list_frames, set_frame_duration, set_frame_name
copy_frame_and_modify, shift_frame_content, flip_region, copy_region_to_frame, interpolate_frames
new_project, save_project, load_project, get_project_info, list_project_files, set_project_name
get_canvas_summary, get_canvas_preview, get_canvas_ascii, get_frame_diff, describe_animation
select_rectangle, select_by_color, get_selection, clear_selection, apply_to_selection, delete_selection_content
list_character_palettes, get_character_palette, list_color_palettes, get_color_palette, get_active_colors, set_foreground_color, set_background_color, set_selected_character, suggest_palette_for_style
import_image, import_video, import_ascii_text
apply_effect, get_color_stats, batch_recolor, batch_replace_char
run_generator, preview_generator
export_text, export_json, export_session, export_html, export_react, export_ansi, export_ink, export_bubbletea, export_opentui, export_image, export_video
undo, redo, get_history_status
The server exposes these resources for state introspection:
project://state- Full project state snapshotproject://canvas- Current frame canvas dataproject://frames- Frame list with metadataproject://selection- Current selection stateproject://history- Undo/redo historyproject://ascii- Plain text ASCII preview
- Node.js 18+ - Required
- sharp (optional) - For image import:
npm install sharp - ffmpeg (optional) - For video export:
brew install ffmpeg
Make sure npm global bin is in your PATH:
npm bin -g
# Add the output to your PATH if neededRestart your AI client after configuration changes. Check that the config file is valid JSON.
- Ensure port 9876 is available
- Check that you're connecting from localhost
- Verify the auth token is correct
Make sure you're using the --live flag AND have connected the browser via MCP Connection.
MIT License - see LICENSE for details.