Rustle
Enables AI agents to read YouTube videos by fetching transcripts (key sentences or full), extracting frames as contact sheets, and extracting sound as audio or spectrograms. Also supports searching YouTube, listing a channel's videos, and finding videos on web pages or in local folders.
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., "@Rustlewhat does this video say: https://youtu.be/dQw4w9WgXcQ"
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.
Rustle
Rustle is an MCP server that lets AI agents read videos. Give your agent a YouTube link, a web page with a video, a media URL or a local file, and it can read the transcript, look at frames and listen to the sound. The model you already use does the reading; Rustle needs no API key and sends nothing to an inference service.
Transcripts come back as the video's key sentences, verbatim and timestamped, so an hour of speech fits one call. Ask for every word, a span, or only the sentences that mention a topic.
Frames come as labelled contact sheets. Zoom into any region of a frame to read small text or UI, or follow one region frame by frame.
Sound comes as lossless audio, or as a spectrogram with loudness, onsets and silences for clients that can't play audio.
Search YouTube, list a channel, or list the videos on a page or in a folder.
Images are sized for how models are billed and how harnesses resize them, so Claude Code and Codex show the model exactly what Rustle drew.
Install
On macOS and Linux:
curl -fsSL https://raw.githubusercontent.com/vibeslop/rustle-mcp/main/install.sh | shOn Windows, in PowerShell:
irm https://raw.githubusercontent.com/vibeslop/rustle-mcp/main/install.ps1 | iexThat's all: it installs one file and asks which of Claude Code, Codex and Cursor to add Rustle to, listing the ones you have. Restart them, then ask your agent about a video. Run the same command again to update.
Frames and sound need ffmpeg (brew install ffmpeg, sudo apt install ffmpeg, winget install ffmpeg); transcripts and search work without it.
With Go installed, go run github.com/vibeslop/rustle-mcp@latest setup does the same. For any other MCP client, rustle-mcp setup json prints the config to add.
Related MCP server: YouTube Research MCP
Tools
Every tool except find_videos takes a source: a YouTube link or id, a web page, a media or HLS URL, or a local path. There is nothing to open or close, and repeat calls are cached.
Tool | Use it for | Returns |
| What is said | The key sentences of the whole video, about a third of the words. |
| What is shown | Contact sheets of frames across the video or a span, each labelled with its time. |
| Small text, UI, faces | One lossless frame. A |
| Sound | FLAC audio, or a spectrogram with levels, onsets and silences. |
| Finding videos | YouTube search results, a channel's videos, or the videos on a page or in a local folder. |
Out-of-range arguments are clamped and unknown ones ignored, each with a note in the result. Errors say what went wrong and how to recover.
Sources
YouTube. Captions, frames and sound are fetched directly from YouTube, a few seconds at a time, so long videos are never downloaded whole. Live streams aren't supported.
Web pages. Videos in
<video>tags, OpenGraph and JSON-LD metadata, and YouTube embeds. Players that need JavaScript, DRM or a login aren't supported.Media URLs. Anything ffmpeg can open, including HLS playlists.
Local files. Any file under your home folder, the temp folder or the client's working directory. A
.srtor.vttwith the same name next to a video is used as its transcript.
Configuration
All settings are optional environment variables, set in the client's env block for the server.
Variable | Default | Meaning |
| home folder | Folders local files may come from, separated by |
|
| Cache folder. |
|
| Cache size; the least recently used sources are evicted first. |
|
| Seconds allowed per ffmpeg operation. |
| CPU count | ffmpeg processes run at once. |
|
| Transcript characters per call. |
| found on | Paths to the ffmpeg binaries. |
| unset | A ggml model for whisper.cpp's |
| on | At startup, fetch the visitor id YouTube requires, so the first YouTube call is faster. |
| on | Keep a few ffmpeg processes started and waiting, saving 20–40 ms per decode. |
| unset |
|
| unset |
|
Privacy and limits
Rustle runs on your machine, next to your agent, and has no telemetry. It contacts only the sources your agent asks for, plus YouTube at startup unless RUSTLE_PREFETCH=0. It is built for local use: YouTube is far stricter with requests from servers in data centers, so hosting Rustle for others is not supported.
Claude clients can't hear audio, so listen_video gives them the spectrogram and measurements instead. CI runs on macOS, Linux and Windows; on Windows, ffmpeg processes aren't started ahead of calls, so decodes take 20–40 ms longer.
Development
git clone https://github.com/vibeslop/rustle-mcp && cd rustle-mcp
go test ./... # offline, a few seconds; frame tests need ffmpeg
go run ./scripts/smoke # builds, then checks every tool against live YouTube
go build -o rustle-mcp . && ./rustle-mcp setup claudeInside a clone, .mcp.json offers the local build (./rustle-mcp) to Claude Code. AGENTS.md describes how the code is laid out and what to watch for when changing it, and CONTRIBUTING.md how to send a change.
License
MIT. Rustle uses only Go's standard library.
This server cannot be deployed
Maintenance
Related MCP Connectors
YouTube transcripts, search, channel/playlist listings and upload tracking for AI agents.
Transcripts, summaries, chapters and timestamped answers for video links, for AI agents.
Extract YouTube transcripts, search what was said, and read on-screen frames with cited timestamps.
YouTube data for AI agents: channels, videos, transcripts, comments, search. Video research.
Related MCP Servers
- AlicenseCqualityBmaintenanceEnables AI agents to search, analyze, and extract insights from YouTube videos including transcripts, visual frames, and benchmarks without requiring API keys. Supports semantic search across playlists, sentiment analysis, and visual content indexing with automatic fallback chains for reliable access.41360 npm34MIT
- AlicenseAqualityBmaintenanceEnables AI agents to search videos, retrieve metadata and transcripts, pinpoint exact moments via hybrid semantic search, and conduct multi-video research with timestamp deep links—all without YouTube API keys.51MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to download, convert, and visually analyze videos by providing timestamped frames and locally transcribed speech, all without API keys.MIT
- AlicenseAqualityAmaintenanceEnables AI clients to watch local video files or YouTube/Bilibili and other supported URLs, receiving timestamped transcripts, subtitles, searchable text and keyframe contact sheets. Runs fully offline with local speech recognition and bundled ffmpeg, so no API key or cloud upload is needed.693 PyPI10MIT