talkthrough-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TALKTHROUGH_OCR | No | Set 'off' to skip OCR | on |
| TALKTHROUGH_HOME | No | Job store root directory | ~/.talkthrough |
| TALKTHROUGH_OCR_LANG | No | Recognition script for on-screen text: a language code or RapidOCR pack name | Latin+Chinese |
| TALKTHROUGH_MAX_FRAMES | No | Keyframe cap per job | 600 |
| TALKTHROUGH_OCR_PARAMS | No | Advanced: JSON object of raw RapidOCR params merged over the derived ones | |
| TALKTHROUGH_MAX_SECONDS | No | Max media duration in seconds | 7200 |
| TALKTHROUGH_WHISPER_MODEL | No | Default whisper model (tiny/base/small/medium/large-v3/large-v3-turbo); the model tool param overrides per call | small |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| process_mediaA | Ingest a LOCAL video or audio file and make it queryable: validates the file, transcribes speech locally (whisper), extracts scene-change keyframes, OCRs on-screen text, and resolves the wall-clock start time. Returns a compact summary (job_id, media info, wall_clock, transcript preview) — full data stays on disk and is served lazily by the other tools. Idempotent by content hash: re-calling on an already-processed file returns instantly. When NOT to use: to re-fetch data you already processed (use the retrieval tools), or for URLs — local file paths only. Examples:
|
| get_transcriptA | Retrieve the transcript of a processed job, lazily and paginated. Formats: "segments" (default — seq, t_ms, t_wall when known, text), "text" (plain prose), "srt" (subtitles). Responses are capped (~8k tokens): when truncated=true, continue from the returned next_start_ms. When NOT to use: to find one keyword (use search) or to inspect one moment with visuals (use get_moment). Examples:
|
| get_framesA | Fetch stored keyframe images (JPEG, <=1568px wide) as MCP image content: the frames nearest to at_ms, OR unique frames across [start_ms, end_ms] evenly thinned to max_frames. Serves unique frames by default (near-duplicates from static scenes are filtered); hard cap 6 images per call. When NOT to use: exact instants between keyframes or native-resolution detail (use extract_frame), or finding on-screen text (use search — OCR text is indexed). Examples:
|
| get_momentA | The "one remark" evidence bundle: transcript slice + up to 3 unique frames + their OCR text + the wall-clock range for [start_ms, end_ms], in a single call. This is the workhorse for triage: one call per finding gives you the quote, the screenshot, and the on-screen text. When NOT to use: broad exploration (get_transcript / get_frames) or keyword lookup (search). Examples:
|
| searchA | Case-insensitive substring search across BOTH transcript segments and frame OCR text. Hits carry source (transcript|ocr), t_ms, t_wall when known, the matched text, and the nearest frame position — everything needed to jump straight to evidence. Exact substring only, no embeddings. When NOT to use: fuzzy/semantic questions ("anything about performance?") — page get_transcript and read; regex is not supported. Examples:
|
| extract_frameA | Re-extract ONE frame at an exact timestamp from the ORIGINAL source video at native resolution, with an optional crop {x, y, w, h} in source pixels. Use when the stored keyframes miss the instant (they capture scene changes + a 1 fps floor) or when you need full-resolution detail. Slower than get_frames — it decodes the source file, which must still exist at its recorded path. When NOT to use: normal browsing — get_frames serves stored keyframes instantly without touching the source. Examples:
|
| list_jobsA | List processed recordings, newest first: job_id, source filename, duration, created, wall-clock start, segment/frame counts. The store is content-addressed — the same file maps to the same job even after renames or moves, and jobs persist across sessions and machines restarts. When NOT to use: as a health check or before every call — job_ids are stable, remember them. Examples:
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| triage-recording | Turn a narrated screencast into precise, evidence-backed findings JSON (bug / feature / question routing with frame evidence). |
| spec-from-workshop | Turn a recorded workshop or design walkthrough into a structured spec with quoted decisions and open questions. |
| backlog-from-demo | Turn a recorded product demo into a prioritized backlog with timestamped evidence. |
| meeting-actions | Turn a recorded meeting (audio is enough) into action items, decisions, and open questions with timestamps. |
| correlate-with-logs | Walk a recording's remarks against system logs using wall-clock timestamps. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/korovin-aa97/talkthrough-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server