Playback MCP
An open-source MCP server and Chrome extension that gives AI agents real control over YouTube — loop, seek, sequence clips, and search transcripts in your own browser.
Stack: TypeScript · MCP · Node.js · Chrome Extension · WebSocket · SQLite
Role
Creator and maintainer
Distribution
npm + Chrome Web Store
License
MIT · local-first
Stack
Node 24, TypeScript, node:sqlite

Overview
Playback MCP is an open-source Model Context Protocol server paired with a Chrome extension. Together they give AI agents real, precise control over YouTube playback in your actual browser — pausing, seeking, looping a passage, ramping playback speed pass by pass, sequencing clips, and searching transcripts.
It is local-first by design: everything runs on 127.0.0.1, your saved videos and timestamps live in a local SQLite database, and nothing is sent to any external server. The project is MIT licensed and published to both npm and the Chrome Web Store so it installs with no clone and no build.
What You Can Do With It
- Music practice — loop a passage and ramp the speed up pass by pass, hands-free.
- Language learning — slow a sentence down and jump to every place a phrase is spoken.
- Study and notes — summarize a lecture from its transcript and save timestamps to revisit.
- Clips and shorts — mine a long video for short-form ideas and pull the exact clips.
- Skip the filler — find sponsor reads in a long podcast and jump past them.
Architecture
A single broker owns the localhost WebSocket port and routes each agent session to its own browser tab. Every playback-mcp server shares one WAL-mode SQLite library on disk, so saved videos and timestamps are consistent across sessions.
- Run several agent sessions at once and each drives its own YouTube tab in parallel — the broker tags commands with a unique
sessionIdand routes events back only to the owning session. - The broker auto-starts on first use and idles out about a minute after the last session closes, so there is no daemon to manage.
- A WebSocket origin allow-list at the handshake means only the extension and local Node clients can connect — arbitrary web pages cannot drive playback.
Safe by Design
- The extension only reads and writes the
<video>element's own properties — current time, playback rate, volume, and play/pause. - It never clicks UI, never scrapes, and never automates navigation beyond opening a watch URL.
- Everything is local: no external services, no telemetry, and a library that never leaves your machine.
Status and Distribution
- Shipped to npm as
playback-mcpand to the Chrome Web Store, with CI, CodeQL, and secret-scanning in the pipeline. - Exposes a full tool surface: playback control, section looping with per-pass speeds, clip sequencing, a saved-video and timestamp library, and transcript fetch and search.
- Actively maintained and versioned with a Keep a Changelog history and semantic versioning.