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 |
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": 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, resolves the wall-clock start time, and (opt-in) labels who said what via local speaker diarization. Returns a compact summary (job_id, media info, wall_clock, transcript preview, speaker roster when diarized) — 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. For MULTI-PERSON recordings (meetings, interviews, calls) diarize=true is part of a proper analysis — pass it even when the user only asks for a summary. 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, speaker when diarized, text), "text" (plain prose; "S1:" prefixes at speaker changes), "srt" (subtitles, speaker-prefixed cues). Diarized jobs also return the speaker roster (talk time, turns) in the header. 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 word search across BOTH transcript segments and frame OCR text: a text hits when EVERY word of the query matches it as a substring — any order, any distance (ё and е are interchangeable). 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. Optional speaker="S2" narrows to one voice's transcript hits. 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 |
|---|---|
| bug | Turn one screen recording of a bug into an evidence-backed GitHub issue draft (quote, frames, OCR identifiers, wall-clock; silent recordings work too). |
| 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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