klaket-mcp
π¬ Klaket
Turn any video into LLM-ready data.

A klaket is a clapperboard β the tool that syncs sound and image on a film set. Klaket syncs video with LLMs.
LLMs read text. The web became readable with scrapers β but video, the largest store of human knowledge, is still locked away. Klaket unlocks it: give it a video URL or file, get back structured, timestamped, LLM-ready data.
pip install klaket
klaket ingest "https://youtube.com/watch?v=..." --wait{
"transcript": [
{ "start": 14.32, "end": 19.80, "speaker": "S1", "text": "So let's deploy this with docker compose..." }
],
"scenes": [
{ "start": 190.0, "end": 342.5, "keyframes": ["scene_004_01.jpg"] }
],
"chapters": [...],
"summary": "..."
}Features
π Transcript β timestamped speech-to-text in ~100 languages (auto-detected) with word-level timestamps; pick the model per job (
"model": "medium")ποΈ Podcasts too β pass an audio file/URL (mp3, m4aβ¦) and Klaket skips the visual stages, deriving chapters from speech pauses
π£οΈ Speaker diarization β who said what (S1/S2/β¦), local & keyless (sherpa-onnx)
π¬ Subtitles β ready-to-use
.srt/.vttfiles with speaker labelsποΈ Scene detection β content-aware scene boundaries + keyframes per scene
π On-screen text (OCR) β reads slides, terminals and captions per scene, local & keyless
π§© One JSON timeline β transcript, scenes, frames and on-screen text aligned on a single timeline
π Works offline, no API key required β the core pipeline uses zero LLM calls
π§ Pluggable model layer β optional scene descriptions via local VLMs (Ollama) or any OpenAI-compatible endpoint (
KLAKET_VLM=offby default)π€ MCP server β let coding agents "watch" any video and find moments inside it
π In-video search β
GET /v1/jobs/{id}/search?q=β¦finds the exact momentβΆοΈ Playground β the dashboard plays the video with a click-to-seek, live-highlighted transcript
Related MCP server: video-to-llm
SDKs
# pip install klaket
from klaket import Klaket
result = Klaket().process("https://youtube.com/watch?v=...", num_speakers=2)// npm i klaket-sdk
import { Klaket } from "klaket-sdk";
const result = await new Klaket().process("https://youtube.com/watch?v=...");Give your agent eyes
# Claude Code
claude mcp add klaket -- npx klaket-mcp # KLAKET_API_URL defaults to localhost:8484Then: "Watch https://youtube.com/watch?v=β¦ and summarize the commands the presenter runs."
The agent gets klaket_ingest, klaket_job_status and klaket_get_result tools.
Quick start
git clone https://github.com/huseyinstif/klaket.git && cd klaket
docker compose up --build
# API on :8484, dashboard on :5180
curl -X POST localhost:8484/v1/ingest \
-H "Content-Type: application/json" \
-d '{"url": "https://youtube.com/watch?v=..."}'That's it β no API keys, no GPUs required. make help lists developer shortcuts (make up, make test, make e2e).
Architecture
client βββΊ Go API βββΊ Redis queue βββΊ Python worker (ffmpeg Β· faster-whisper Β· scenedetect)
β β
dashboard ββββββββββββββββββββββ /data/jobs/<id>/result.jsonapps/apiβ Go, job orchestrationapps/workerβ Python, media pipelineapps/dashboardβ React dashboard
Self-host vs Cloud
Klaket is open source (AGPL-3.0) and fully self-hostable. A hosted, pay-per-minute cloud API with managed GPUs is planned β join the waitlist (coming soon).
Status
π§ v0.7 β pre-1.0, moving fast. Star the repo to follow along.
License
AGPL-3.0. SDKs and clients will be MIT.
Contact
Built by HΓΌseyin TΔ±ntaΕ β X (@1337stif) Β· LinkedIn
Available Tools
4 toolsklaket_find_momentA
Search inside a processed video: finds the moments (timestamped transcript lines, on-screen text or scene descriptions) matching a query. Job must be 'done'.
Inputs: id (required), query (required).
klaket_get_resultA
Get the processed video as LLM-ready markdown: timestamped transcript, scene list with descriptions and on-screen text. Only works when the job status is 'done'.
Inputs: id (required).
klaket_ingestA
Start processing a video (URL or server-side file path) into LLM-ready data. Returns a job id β poll klaket_job_status until status is 'done', then call klaket_get_result.
Inputs: url (required).
klaket_job_statusA
Check the status of a Klaket ingest job (queued | processing | done | failed).
Inputs: id (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogβ¦
TDQS
Scored across 4 tools
Each tool has a distinct purpose: ingest starts processing, job_status checks progress, get_result retrieves markdown, and find_moment searches within processed video. There is no functional overlap.
All tools use the 'klaket_' prefix and snake_case, with three following a verb_noun pattern (ingest, get_result, find_moment) and one being noun_noun (job_status). The pattern is mostly consistent but has a minor deviation.
With 4 tools, the server is well-scoped for its purpose of video ingestion and querying. Each tool serves a necessary step in the workflow without unnecessary bloat.
The tool set covers the core lifecycle (ingest, status, retrieve, search) but lacks deletion or listing capabilities. This is acceptable for a focused server, though minor gaps exist.
Maintenance
Related MCP Connectors
Transcripts, summaries, chapters and timestamped answers for video links, for AI agents.
YouTube transcripts for AI agents: 150+ languages, AI transcription fallback, search, summaries.
YouTube transcripts, video search, chapters and extractive summaries. No YouTube API key, no LLM.
YouTube transcripts, search, channel/playlist listings and upload tracking for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceLets any LLM agent actually watch videos: a watch_video tool takes a URL or local file and returns scene-aware keyframes fused with a timestamped transcript, processed 100% locally with per-source caching.1,137 PyPI2,313MIT
- AlicenseNot gradedqualityCmaintenanceEnables LLM agents to process local videos into timestamped, citable text documents and then query them through tools for listing videos, retrieving transcripts, and fetching specific segments, all fully offline.31 PyPIMIT
- AlicenseAqualityBmaintenanceEnables 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.674 PyPI12MIT
- AlicenseAqualityBmaintenanceEnables AI agents to analyze videos by producing timestamped transcripts, keyframe contact sheets, and metadata reports from local files or online URLs, fully offline and without API keys.6MIT