screenslick
Control and edit a live ScreenSlick browser editor timeline from an MCP client over a localhost stdio bridge.
Check connectivity to the editor bridge (
screenslick_bridge_status) and inspect the current project (screenslick_get_project).Discover what's editable: agent-editable commands, effect fields, animations, sound bindings, backgrounds and layouts (
screenslick_get_capabilities).Browse editor assets and options: voices (local and premium Gemini, credit-consuming), music tracks, sound effects, and visual effects.
Run editor-native audio cleanup: silence removal with modes (aggressive/default/conservative/long-pauses), dry-run and min-duration controls.
Generate transcripts/subtitles (local or premium, selectable model size and language) and have the script assistant write or improve a timed narration plan.
Create reviewable narration: generate a voiceover track or add transcript/script clips to the timeline as editable clips with per-line text, timing, voice, style, speed and direction.
Control narration playback: preview or stop the generated voiceover and enable/disable the voiceover track.
Apply batches of validated creative edit commands to the timeline, optionally as a dry run.
Capture PNG preview frames at a chosen time.
Export the current project as an MP4.
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., "@screenslick generate a voiceover for the current timeline"
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.
ScreenSlick MCP Server
Local MCP server for controlling the ScreenSlick browser editor from Codex, Claude Code, Claude Desktop, Cursor, and other MCP clients.
The server runs locally over stdio and opens a localhost bridge at:
ws://127.0.0.1:32117/screenslick-agentOpen ScreenSlick, enter the editor, click Agent, then ask your MCP client to
call screenslick_bridge_status.
Motion Studio (npx -y screenslick-mcp studio)
The same package ships the local half of Motion Studio (ScreenSlick → Motion Studio, /studio):
a coding agent (Claude Code or Codex) builds Remotion videos on your computer while you watch the live
preview and edit every layer on the timeline in the browser.
npx -y screenslick-mcp studio # workspace in ~/ScreenSlick Studio
npx -y screenslick-mcp studio --dir D:\videos --no-bash
npx -y screenslick-mcp studio --add-dir path/to/your-app # let the agent read your app's code (remembered)
npx -y screenslick-mcp studio --agent codex # start the chat with Codex (switch any time in the chat)It needs Claude Code (claude) or Codex (codex) installed and logged in. With both, the first one found
is the default and the chat header switches between them. The command:
creates or refreshes the workspace:
projects/<slug>/(project.json, layers.json, scenes/*.tsx, assets/, renders/), thescreenslick-video-studioskill (in.claude/skills/and.agents/skills/),CLAUDE.mdandAGENTS.md, and the shared runtime in.screenslick/(managed files are rewritten on every start; projects are never touched);owns the bridge on
127.0.0.1:32117. If a ScreenSlick MCP server (the editor tools in a Claude session) already holds the port, the helper asks it to hand the port over (POST /handoff); that server then forwards its calls to the helper, and the editor page reconnects by itself. Servers older than 0.16 can't hand over: restart that Claude session once;bundles each open project with esbuild and hot-reloads the page when files change;
serves project files to the page (range requests) and saves uploads and exports into the project;
runs the agent headless for the chat panel (
claude -pstream-json orcodex exec --json, resumed per project; switching agents passes a recap of the chat to the new one), with thescreenslick_studio_*MCP tools: status, create/open project, capture frames, contact sheet, media info, transcribe, analyze audio, listen (measure, rank, tags, realness, critique), voice-overs, music (Lyria and the ScreenSlick library), export, focus. Folders added with--add-dirare readable; Claude's edit tools are blocked there (--disallowedTools Edit(...)) and Codex's sandbox only writes inside the workspace;keeps voice/music provider keys in
~/.screenslick/studio-keys.json(mode 600, outside the workspace) and strips them from the agent's environment;renders locally with Remotion as a fallback (
npm installin the workspace on first use).
Only these web origins can use it: https://screenslick.com, https://www.screenslick.com and
http://localhost:3005 (add more with --origin <url> or SCREENSLICK_STUDIO_ORIGINS). Requests from any
other website are refused. The agent may run shell commands in the workspace unless you pass --no-bash (Codex always has a sandboxed
shell; --no-bash turns off its network access instead).
Each agent is one adapter in src/studio/agents/ (how to start the CLI for a turn, how to read its output).
To add one, write an adapter next to claude.ts / codex.ts and list it in agents/index.ts.
Update the bundled skill from the ScreenSlick repo with npm run sync:skill.
The current browser app connects on port 32117. Keep that default for the Studio
page. A custom --port is passed to the workspace MCP configuration, but does
not change the browser's connection address.
Before release, run npm run build, npm run verify:media,
npm run verify:bridge-tools, and npm run verify:studio-release. The Studio
checks use a temporary workspace and a separate port.
Related MCP server: @uicheck/mcp
Install
No ScreenSlick source checkout is required. Use the npm package from your MCP client:
{
"mcpServers": {
"screenslick": {
"type": "stdio",
"command": "npx",
"args": ["-y", "screenslick-mcp"]
}
}
}If your client uses form fields:
Field | Value |
Name |
|
Transport |
|
Command |
|
Arguments |
|
Claude Code
Project-scoped .mcp.json:
{
"mcpServers": {
"screenslick": {
"type": "stdio",
"command": "npx",
"args": ["-y", "screenslick-mcp"]
}
}
}Restart Claude Code, approve the MCP server, then run /mcp to confirm the
screenslick server is connected.
Codex CLI
Add a stdio server entry to your Codex config:
[mcp_servers.screenslick]
command = "npx"
args = ["-y", "screenslick-mcp"]
startup_timeout_sec = 10
tool_timeout_sec = 120Cursor
Create .cursor/mcp.json in a project, or ~/.cursor/mcp.json globally:
{
"mcpServers": {
"screenslick": {
"command": "npx",
"args": ["-y", "screenslick-mcp"]
}
}
}Available tools
screenslick_bridge_statusscreenslick_health_checkscreenslick_get_projectscreenslick_analyze_timelinescreenslick_validate_voiceover_timingscreenslick_analyze_video_segmentsscreenslick_find_clip_candidatesscreenslick_create_clip_collectionscreenslick_get_capabilitiesscreenslick_list_voicesscreenslick_list_musicscreenslick_list_sound_effectsscreenslick_list_effectsscreenslick_remove_silencesscreenslick_generate_transcriptscreenslick_generate_scriptscreenslick_director_planscreenslick_create_demo_videoscreenslick_review_director_draftscreenslick_generate_voiceoverscreenslick_add_transcript_voiceover_to_timelinescreenslick_clear_voiceoverscreenslick_replace_voiceover_clipsscreenslick_update_voiceover_clipscreenslick_move_voiceover_clipscreenslick_delete_voiceover_clipscreenslick_regenerate_voiceover_clipscreenslick_extract_on_screen_captionsscreenslick_merge_on_screen_caption_ocrscreenslick_create_voiceover_from_on_screen_captionsscreenslick_preview_voiceoverscreenslick_toggle_voiceoverscreenslick_cleanup_timelinescreenslick_apply_commandsscreenslick_capture_framescreenslick_capture_framesscreenslick_get_source_filescreenslick_import_voiceover_audioscreenslick_export_video
Voiceover tools are intentionally editable-first. Agent-created narration should use timeline voiceover clips so the user can see the clips in the sidebar, edit text, move them, delete them, and regenerate audio. screenslick_generate_voiceover defaults to that editable workflow; only pass mode: "full-track" or editable: false when the user explicitly wants one flattened generated track.
Agents that make narration with their own TTS can keep it editable: screenslick_import_voiceover_audio takes one audio file per line (absolute path, startMs, and the spoken text) and adds them as timeline voiceover clips with captions. They move, delete, and export like other clips; to change a line, import a new take.
screenslick_capture_frames samples up to 60 frames per call (explicit times, or a range with fps) and saves each one to a file. screenslick_get_source_file saves the loaded source video to a local file for ffmpeg or other analysis. These three tools need an editor build that supports them; an older editor tab gets a clear "reload the editor" error.
For intro/outro/intermission cards, keep card layers inset instead of flush with the hold edges. Text should usually start a few tenths of a second after the card begins and end before the card ends. Card voiceover should start after the text entrance and leave at least 500ms before a terminal card or final timeline end, especially with premium voices where generated audio can run longer than the requested target.
Environment variables
Variable | Default | Purpose |
|
| Local bridge port |
|
| Must remain localhost |
| package | Debug log path |
| package | Captured frame files |
| system temp | Downloaded source videos (newest 5 kept) |
The bridge is intentionally localhost-only. Remote hosts are rejected.
Verify
Start ScreenSlick and open the editor.
Click Agent in the editor.
Ask the MCP client to call:
screenslick_bridge_status
Healthy response:
{
"ok": true,
"connected": true,
"port": 32117,
"path": "/screenslick-agent",
"session": {
"hasVideo": true,
"timelineDuration": 62.63
}
}Development
npm install
npm run build
npm run devChecks (no ScreenSlick session needed; they use their own port and temp folders):
npm run verify:media
npm run verify:bridge-toolsSee ROADMAP.md for the Director Mode plan: reliability, timeline intelligence, voiceover clip control, on-screen caption extraction, and high-level demo-video creation tools.
Use development mode from this repo:
For live source changes:
{
"mcpServers": {
"screenslick": {
"type": "stdio",
"command": "npx",
"args": ["tsx", "src/index.ts"],
"cwd": "/path/to/screenslick-mcp"
}
}
}For testing the built package:
{
"mcpServers": {
"screenslick": {
"type": "stdio",
"command": "node",
"args": ["dist/index.js"],
"cwd": "/path/to/screenslick-mcp"
}
}
}Best-practice notes
Uses the official MCP TypeScript SDK over stdio.
Keeps editor bridge traffic on
127.0.0.1.Does not require the ScreenSlick source repo on the user's machine.
Uses structured input schemas for every tool.
Routes editor actions through ScreenSlick's native editor APIs instead of processing video files directly.
Health checks include editor bridge compatibility information so stale editor sessions can be diagnosed with a refresh/reconnect instead of mysterious tool failures.
Provides cleanup tools so agents can clear generated layers before rebuilding a pass while preserving the source video clips.
Orchestrates editor-native silence removal, local caption generation, and local or confirmed-premium voiceover as part of high-level demo drafts while preserving dry-run safety.
Applies camera layout polish when the current project has a camera layer, using side-by-side or portrait-overlay layouts based on the target format.
Runs Director Mode reviews around high-level demo drafts so agents can catch structure, narration, caption, music, SFX, and visual-polish issues before calling an edit done.
Guides agents to inset intro/outro card text and voiceover inside the card duration so terminal CTA audio does not clip on the final frame.
Treats premium voice generation as a consent boundary: agents should ask before using premium/Gemini voices because they can consume credits.
Available Tools
17 toolsscreenslick_add_transcript_voiceover_to_timelineC
Add transcript or agent-provided script voiceover clips to the timeline.
Inputs: source, script, clips.
screenslick_apply_commandsB
Apply a batch of validated creative edit commands to the editor timeline. Call screenslick_get_capabilities first to learn the valid command shapes and effect fields.
Inputs: commands (required), dryRun, description.
screenslick_bridge_statusA
Check whether a ScreenSlick editor is connected to the local bridge.
Inputs: no named parameters.
screenslick_capture_frameC
Capture a PNG preview frame from the current editor.
Inputs: time.
screenslick_export_videoC
Export the current editor project as an MP4 data URL.
Inputs: settings, watermark.
screenslick_generate_scriptC
Ask ScreenSlick's script assistant to write or improve a timed narration plan.
Inputs: mode, brief.
screenslick_generate_transcriptC
Run the editor's transcription/subtitle generation flow on the current video or timeline.
Inputs: language, modelSize, provider, enableSubtitles.
screenslick_generate_voiceoverC
Generate a full voiceover track using ScreenSlick's native voiceover flow.
Inputs: source, script, clips, enable.
screenslick_get_capabilitiesA
List ScreenSlick agent-editable commands, effect fields, animations, sound bindings, backgrounds, layouts, and workflow guidance.
Inputs: no named parameters.
screenslick_get_projectA
Inspect the current ScreenSlick editor project.
Inputs: no named parameters.
screenslick_list_effectsA
List agent-editable visual effect options.
Inputs: no named parameters.
screenslick_list_musicA
List built-in ScreenSlick music tracks.
Inputs: no named parameters.
screenslick_list_sound_effectsA
List built-in ScreenSlick sound effects.
Inputs: no named parameters.
screenslick_list_voicesA
List ScreenSlick local and premium voiceover voices. Premium Gemini voices consume credits and require user confirmation.
Inputs: no named parameters.
screenslick_preview_voiceoverB
Preview or stop the current generated ScreenSlick voiceover.
Inputs: action.
screenslick_remove_silencesC
Run the editor's silence removal feature on the current timeline.
Inputs: minDuration, dryRun, mode.
screenslick_toggle_voiceoverB
Enable or disable the current generated ScreenSlick voiceover track.
Inputs: enabled.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 17 tools
Each tool targets a distinct aspect of the video editing workflow, such as generating content, listing assets, or applying edits. For example, 'generate_voiceover' creates audio, while 'add_transcript_voiceover_to_timeline' adds voiceover from a script, and 'generate_transcript' produces subtitles. The boundaries are clear, preventing confusion.
All tool names follow a consistent 'screenslick_verb_noun' pattern in snake_case. Verbs are descriptive (add, apply, generate, list, etc.), and even complex names like 'add_transcript_voiceover_to_timeline' maintain the pattern without mixing conventions.
Seventeen tools is slightly above the typical well-scoped range of 3-15, but each tool serves a clear purpose without redundancy. The count is appropriate for the domain, covering project inspection, asset listing, content generation, editing, and export.
The tool set covers the full lifecycle: project inspection, script/transcript/voiceover generation, applying edits via commands, silence removal, preview, and export. Minor gaps like individual effect removal are abstracted into the batch 'apply_commands' tool. Overall, it provides sufficient coverage for an AI-assisted video editing workflow.
Maintenance
Related MCP Connectors
Control a real browser from AI agents: navigate, click, type, screenshot, read the page.
AI video editor your agent can drive: plan scenes, edit a multi-track timeline, and render MP4s.
AI video editor for agents and humans: timeline, captions, color, audio and generation as MCP tools.
The agentic video editor for ChatGPT and Claude. Ask in your chat and it cuts, captions, adds music, titles and motion graphics on a real timeline you can open and adjust.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to read, build, and edit 247afk scripts in real-time through a local WebSocket bridge. It allows for live manipulation of block editor content directly within the browser.822 npm3MIT

@uicheck/mcpofficial
FlicenseNot gradedqualityCmaintenanceEnables AI agents to capture screenshots and inspect DOM elements from connected browser pages via WebSocket.-- AlicenseNot gradedqualityDmaintenanceEnables AI clients to directly control a real Chrome/Edge browser via a WebSocket extension, supporting operations like navigation, clicks, screenshots, and JavaScript evaluation.19 npm1MIT
- AlicenseNot gradedqualityCmaintenanceEnables an AI agent to directly drive a live browser video editor session, reading selections and playhead, editing the timeline, and sharing the same undo stack as the human user.280 npm1MIT