Reels Research MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| REELS_VENV | No | Path to the private Python virtual environment used for speech-to-text | ~/.cache/reels-research-mcp/venv |
| FFMPEG_PATH | No | Path to the ffmpeg helper binary (defaults to looking it up on PATH) | on PATH |
| REELS_PROXY | No | HTTP(S) proxy for yt-dlp and ffmpeg | none |
| YT_DLP_PATH | No | Path to the yt-dlp helper binary (defaults to looking it up on PATH) | on PATH |
| FFPROBE_PATH | No | Path to the ffprobe helper binary (defaults to looking it up on PATH) | on PATH |
| REELS_PYTHON | No | Python with `moondream` installed | ~/.cache/reels-research-mcp/venv |
| REELS_MCP_TOOLS | No | Comma-separated tools to expose | all |
| REELS_STT_MODEL | No | Speech-to-text model to use | moondream/parakeet-redux |
| REELS_MIN_GAP_MS | No | Instagram lookup pacing: minimum gap in milliseconds between Instagram lookups | 700 |
| REELS_STT_DEVICE | No | Device for the speech model: `cpu`, `mps`, or `cuda` | auto |
| REELS_STT_IDLE_MS | No | Stop the speech worker after this much idle time (milliseconds) | 600000 |
| REELS_CACHE_TTL_MS | No | In-memory cache lifetime (milliseconds) | 900000 |
| REELS_MAX_CONCURRENCY | No | Instagram lookup pacing: maximum number of concurrent Instagram lookups | 2 |
| REELS_FRAME_MAX_HEIGHT | No | Frame stream quality (maximum frame height) | 1280 |
| REELS_FFMPEG_CONCURRENCY | No | Number of parallel ffmpeg processes | 3 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| reels_fetchA | Read Instagram Reels from their URLs, without a login: details (author, caption, likes, comment count, date), a timestamped transcript of what is said (local speech-to-text, Parakeet Redux, 25 European languages), real video frames, preview comments and the cover image. Batch up to 20 Reels per call. Best for: hooks (what is said and shown in the first seconds), quoting what creators say, comparing how Reels open, reading on-screen text from frames. Returns: per Reel a header and the requested parts; per-Reel failures are reported inline with a reason code, never dropped. Tips:
|
| reels_linksA | Collect Instagram Reel links from web pages (articles, newsletters, "best Reels" lists, creator websites, link-in-bio pages). Instagram has no anonymous search, so this is the keyless way to turn web research into Reels you can read with reels_fetch. Best for: after a web search for a topic, pull every embedded or linked Reel out of the result pages in one call. Returns: unique Reel URLs per page, with "post" links listed separately (a /p/ post may be a video or images). |
| reels_doctorA | Check everything this server needs on this machine, with timings: yt-dlp, ffmpeg, anonymous Reel access, the video stream, and local speech-to-text (Parakeet Redux). Run it after installing or when reels_fetch fails. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: reels_fetch reads a Reel by URL, reels_links collects Reel URLs from web pages, and reels_doctor verifies environment dependencies. There is no overlap in what they do or when to invoke them.
All three tools use the same snake_case pattern with a shared 'reels_' prefix followed by a distinct noun/verb (fetch, links, doctor). The convention is fully predictable.
Three tools is on the lean side, but the server has a narrow, well-defined scope (reading Instagram Reels for research), and each tool earns its place: discovery, fetching, and diagnostics. Nothing is redundant, though it borders on thin.
For a read-only research surface, the lifecycle is largely covered: reels_links discovers URLs, reels_fetch retrieves content (details, transcript, frames, comments), and reels_doctor handles troubleshooting. A minor gap is the lack of a direct search/discovery tool (correctly noting Instagram has no anonymous search), but the web-page link extraction compensates.