Skip to main content
Glama
klaket-mcp

klaket-mcp

by huseyinstif

🎬 Klaket

Turn any video into LLM-ready data.

License: AGPL-3.0 PRs welcome Self-host

Klaket demo

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 / .vtt files 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=off by 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:8484

Then: "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.json
  • apps/api β€” Go, job orchestration

  • apps/worker β€” Python, media pipeline

  • apps/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 tools
klaket_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

    A4.1/5.0

    Scored across 4 tools

    Disambiguation5/5

    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.

    Naming Consistency4/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers