video-transcriber-mcp
Video Transcriber MCP 🚀
Hochleistungs-MCP-Server für Videotranskription mit whisper.cpp (Rust)
Ein Model Context Protocol (MCP)-Server, der Videos von 1000+ Plattformen mit whisper.cpp transkribiert. Gebaut mit Rust für maximale Leistung und Effizienz.
📦 Installation
Homebrew (macOS/Linux) – Empfohlen
Der einfachste Weg, alles mit allen Abhängigkeiten zu installieren:
brew install nhatvu148/tap/video-transcriber-mcpDies installiert automatisch das Binary zusammen mit den erforderlichen Abhängigkeiten (cmake, yt-dlp, ffmpeg).
Cargo-Installation
Falls du Rust installiert hast:
cargo install video-transcriber-mcpHinweis: Die Abhängigkeiten müssen manuell installiert werden: yt-dlp, ffmpeg, cmake
Vorgefertigte Binaries
Lade sie von GitHub Releases herunter:
# macOS (Intel)
curl -L https://github.com/nhatvu148/video-transcriber-mcp-rs/releases/latest/download/video-transcriber-mcp-x86_64-apple-darwin.tar.gz | tar xz
sudo mv video-transcriber-mcp /usr/local/bin/
# macOS (Apple Silicon)
curl -L https://github.com/nhatvu148/video-transcriber-mcp-rs/releases/latest/download/video-transcriber-mcp-aarch64-apple-darwin.tar.gz | tar xz
sudo mv video-transcriber-mcp /usr/local/bin/
# Linux (x86_64) — no ARM64 Linux build, see issue #13; use `cargo install`
curl -L https://github.com/nhatvu148/video-transcriber-mcp-rs/releases/latest/download/video-transcriber-mcp-x86_64-unknown-linux-gnu.tar.gz | tar xz
sudo mv video-transcriber-mcp /usr/local/bin/
# Windows: Download .zip from releases pageHinweis: Die Abhängigkeiten müssen manuell installiert werden: yt-dlp, ffmpeg
Claude-Code-Plugin
Installiert den MCP-Server und einen /transcribe-Skill in einem Schritt:
/plugin marketplace add nhatvu148/video-transcriber-mcp-rs
/plugin install video-transcriber@nhatvu148-toolsDas Plugin registriert den MCP-Server für dich, installiert aber nicht das Binary – führe zuerst einen der obigen Installationsbefehle aus, damit video-transcriber-mcp in deinem PATH liegt.
Related MCP server: Video Transcriber MCP Server
🎯 Warum Rust?
Diese Version verwendet whisper.cpp (C++-Implementierung mit Rust-Bindings) statt Python-OpenAI-Whisper:
Vorteil | whisper.cpp (Rust) | OpenAI Whisper (Python) |
Leistung | Native C++-Geschwindigkeit | Python-Interpreter-Overhead |
Speicher | Geringerer Speicherbedarf | Höhere Speichernutzung |
Startzeit | Sofort (<100 ms) | Langsam (~2-3 sek. Modellladen) |
Abhängigkeiten | Eigenständiges Binary | Erfordert Python + Pakete |
Portabilität | Einzelnes Binary | Python-Umgebung erforderlich |
Die tatsächliche Leistung hängt von deiner Hardware, der Videolänge und dem gewählten Modell ab.
✨ Funktionen
🚀 Hochleistungstranskription mit whisper.cpp (C++ mit Rust-Bindings)
🎥 Download von 1000+ Plattformen (YouTube, Vimeo, TikTok, Twitter, usw.)
📂 Transkription lokaler Videodateien (mp4, avi, mov, mkv, usw.)
🎤 100 % Offline-Transkription (Privatsphäre an erster Stelle)
🎛️ 5 Modellgrößen (tiny, base, small, medium, large)
🌐 90+ Sprachen unterstützt
📝 Mehrere Ausgabeformate (TXT, JSON, Markdown)
🔌 MCP-Integration für Claude Code
🌐 Doppelter Transport – stdio (lokal) und Streamable HTTP (remote)
⚡ Natives Binary – kein Python oder Node.js nötig
💾 Geringerer Speicherfuß im Vergleich zu Python-Implementierungen
⚡ Schnellstart (mit Taskfile)
Der schnellste Weg zum Loslegen:
# 1. Install Task (if not already installed)
brew install go-task/tap/go-task
# 2. Complete setup (build + download model)
task setup
# 3. Run a quick test
task test:quick
# Done! 🎉Verfügbare Befehle:
task setup # Complete project setup
task test:quick # Test with short video
task benchmark # Run performance benchmark
task deps:check # Check dependencies
task download:base # Download base model
task help # Show all commandsFür alle verfügbaren Aufgaben siehe Taskfile.yml.
🌐 Transportmodi unter
Der Server unterstützt zwei Transportmodi:
Stdio-Transport (Standard)
Standard-I/O-Transport für lokale CLI-Nutzung mit Claude Code. Dies ist der Standardmodus.
video-transcriber-mcp
# or explicitly:
video-transcriber-mcp --transport stdioStreamable HTTP-Transport
HTTP-Transport für Remote-Zugriff. Ohne Netzwerkzugriff auf den MCP-Server.
# Start HTTP server on default port (8080)
video-transcriber-mcp --transport http
# Custom host and port
video-transcriber-mcp --transport http --host 0.0.0.0 --port 3000Remote-MCP-Client-Konfiguration:
Konfiguriere für den HTTP-Transport deinen MCP-Client mit:
{
"mcpServers": {
"video-transcriber-mcp": {
"url": "http://localhost:8080/mcp"
}
}
}Vorteile des HTTP-Transports:
Keine lokale Installation für Clients nötig
Zentrale Server-Bereitstellung
Automatische Updates (serverseitig)
Besser für Teams
Kompatibel mit Serverless-Plattformen
Kommandozeilenoptionen
video-transcriber-mcp --help
Options:
-t, --transport <TRANSPORT> Transport mode [default: stdio] [possible values: stdio, http]
--host <HOST> Host address for HTTP transport [default: 127.0.0.1]
-p, --port <PORT> Port for HTTP transport [default: 8080]
-h, --help Print help
-V, --version Print version📦 Manuelles Erstellen aus dem Quellcode
Voraussetzungen
Rust (1.85+ für die Rust-2024-Edition)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shyt-dlp (für das Herunterladen von Videos)
# macOS
brew install yt-dlp
# Linux
pip install yt-dlp
# Windows
winget install yt-dlp.yt-dlpFFmpeg (für die Audio-Verfahren)
# macOS
brew install ffmpeg
# Linux
sudo apt install ffmpeg # Debian/Ubuntu
sudo dnf install ffmpeg # Fedora
# Windows
choco install ffmpegAus dem Quellcode erstellen
# Clone the repository
git clone https://github.com/nhatvu148/video-transcriber-mcp-rs.git
cd video-transcriber-mcp-rs
# Build the project
cargo build --release
# The binary will be at: target/release/video-transcriber-mcp-rsWhisper-Modelle herunterladen
# Download base model (recommended for testing)
bash scripts/download-models.sh base
# Or download all models
bash scripts/download-models.sh allModelle werden in ~/.cache/video-transcriber-mcp/models/ gespeichert.
🚀 Schnellstart
MCP-Server (für Claude Code)
In ~/.claude/settings.json hinzufügen:
Option 1: Wenn über GitHub Release oder cargo install installiert:
{
"mcpServers": {
"video-transcriber-mcp": {
"command": "video-transcriber-mcp",
"args": [],
"env": {
"RUST_LOG": "info"
}
}
}
}Option 2: Wenn aus dem Quellcode erstellt:
{
"mcpServers": {
"video-transcriber-mcp": {
"command": "/absolute/path/to/video-transcriber-mcp-rs/target/release/video-transcriber-mcp",
"args": [],
"env": {
"RUST_LOG": "info"
}
}
}
}Verwendung in Claude Code:
Einfache Transkription (verwendet standardmäßig das base-Modell):
Please transcribe this YouTube video: https://www.youtube.com/watch?v=VIDEO_IDMit bestimmten Modell transkripren:
Transcribe this video using the large model for best accuracy:
https://www.youtube.com/watch?v=VIDEO_IDLokale Videodatei transkrip:
Transcribe this local video file: /Users/myname/Videos/meeting.mp4In bestimmter Sprache transkrip:
Transcribe this Spanish video: https://www.youtube.com/watch?v=VIDEO_ID
(language: es, model: medium)📊 Leistung
Erwartete Leistungsmerkmale
Basierend auf Community-whisper.cpp vs. OpenAI-Whisper-Benchmark:
Transkriptionsgeschwindigkeit (ungefähr, hardwareabhängig):
whisper.cpp ist normal 2-6x schneller als Python-Whisper
Schnellere Startzeit (kein Overhead)
Durchhöhereierer Speicher-Fußdruck
Faktoren aus der realen Welt, die die Leistung beeinflussen:
CPU: Mehr Kerne = schnellere Verarbeitung
Modellgröße: Tiny ist schnell, Large am langsamsten aber am genauesten
Videok Länge: Länger Videos brauchen proportional mehr Zeit
Audio-Komplexität: Klare Sprache wird schneller transkrip als verrauschtes Audio
Helfe mit?
Wir sammeln reale Benchmark-Daten! Falls du beide Versionen ausführst, gib uns Bescheid:
Hardware-Spezifikationen (CPU, RAM)
Getestete Videolänge
Verwendetes Modell
Aufgewendete Zeit pro Version
Öffne ein Issue mit deinen Benchmark-Ergebnissen – so hilfst du diesen Abschnitt zu verbessern!
🎛️ Modellvergleich
Modell | Geschwindigkeit | Genauigkeit | Speicher | Anwendungsfall |
tiny | ⚡⚡⚡⚡⚡ | ⭐⭐ | ~400 MB | Schnelle Entwürfe / Testen |
base | ⚡⚡⚡⚡ | ⭐⭐⭐ | ~600 MB | Allgemeinere Nutzung (Standard) |
small | ⚡⚡⚡ | ⭐⭐⭐⭐ | ~1.2 GB | Bessere Genauigkeit |
medium | ⚡⚡ | ⭐⭐⭐⭐⭐ | ~2.5 GB | Hohe Genauigkeit |
large | ⚡ | ⭐⭐⭐⭐⭐⭐ | ~4.8 GB | Beste Genauigkeit, am langsamsten |
🌍 Unterstützte Plattformen
Dank yt-dlp werden 1000+ Video-Plattformen unterstützt, darunter:
Soziale Medien: YouTube, TikTok, Twitter/X, Facebook, Instagram, Reddit
Video-Hosting: Vimeo, Dailymotion, Twitch
Bildung: Coursera, Udemy, Khan Academy, edX
Nachrichten: BBC, CNN, NBC, PBS
und über 1000 mehr!
📝 Ausgabeformat
Für jedes Video werden drei Dateien in ~/Downloads/video-transcripts/ erzeugt:
video-id-title.txt # Plain text transcript
video-id-title.json # JSON with metadata and timestamps
video-id-title.md # Markdown with video infoBeispielausgabe
# How to Build Fast Software
**Video:** https://www.youtube.com/watch?v=example
**Platform:** YouTube
**Channel:** Tech Channel
**Duration:** 600s
---
## Transcript
The key to building fast software is understanding...
---
*Transcribed using whisper.cpp (Rust) - Model: base*🔧 Konfiguration
Umgebungsvariablen
Alle Umgebungsvariablen sind optional. Der Transkripter funktioniert auch ohne gesetzte Variablen. Sie ermöglichen Authentifizierung, Remote-Transkription, KI-Zusammenfassungen und die kostenpflichtige HTTP-API.
💡 Das Ausgabeverzeichnis für Transkripte ist keine Umgebungsvariable – übergebe
output_diran das Tooltranscribe_video(Standard:~/Downloads/video-transcripts). Ausgabedateien sind<video_id>-<title>.{txt,json,md}benannt.
Remote-MCP-Zugriff (--transport http)
Der HTTP-Transport antwortet nur auf Anfragestellungen, deren Host-Header auf einer Allowlist steht. Standard ist auf Loopback (localhost, 127.0.0.1, ::1) gesetzt als Schutz gegen ```` dns-rebinding]], d.h. eine bereitgestellte Instanz lehnt den öffentlichen Hostnamen mit 403 ab, solange du ihn nicht benennst:
# Comma-separated. Added on top of the loopback defaults, so local
# development and health checks keep working.
export MCP_ALLOWED_HOSTS=mcp.example.com,mcp.example.com:8080
# On Fly:
fly secrets set MCP_ALLOWED_HOSTS=your-app.fly.devLass sie für den lokalen Zugriff ungesetzt – der Server protokolliert beim Start, welche Hosts er akzeptiert; dadurch ist ein 403 eines Remote-Clients leicht zu erkennen.
⚠️ Das steuert Erreichbarkeit, nicht Autorisierung. Jeder, der die URL erreichen kann, kann die Tools verwenden, einschließlich
transcribe_video– das echtes Geld ausgibt, wenn Remote Whisper / OpenRouter eingerichtet sind. Setze vor der öffentlichen Instanz einen authentifizierenden Proxy.
Downloads (yt-dlp-Cookies)
Nur erforderlich für altersbeschränkte/ exklusive Videos oder bei YouTube „Zum Bestätigen, dass du kein Bot bist, anmelden“.
# Option 1 (preferred on headless / Linux): a Netscape-format cookies file.
# Export it however you like — e.g. a QR-login flow — then point at it.
export YT_DLP_COOKIES=/path/to/cookies.txt
# Option 2: read cookies straight from a logged-in local browser.
# One of: chrome, brave, edge, firefox, safari, chromium, opera, vivaldi.
# Ignored when YT_DLP_COOKIES is set.
export YT_DLP_COOKIES_FROM_BROWSER=chromeRemote-Whisper (Transkription auslagern)
# POST audio to a remote HTTP worker (e.g. a serverless GPU) instead of
# running whisper-rs locally. Endpoint must accept multipart {audio, model,
# language} and return JSON {transcript, segments[], language, duration_s}.
export REMOTE_WHISPER_URL=https://your-worker.example.com/transcribe🧪 Development
Build
# Debug build
cargo build
# Release build (optimized)
cargo build --release
# Run tests
cargo test
# Run with logging
RUST_LOG=debug cargo run -- --url "https://youtube.com/watch?v=example"Projektstruktur
src/
├── main.rs # CLI + transport selection (stdio / streamable HTTP)
├── lib.rs # public API for embedders
├── mcp/ # MCP server: tool definitions and handlers
├── transcriber/ # the pipeline: yt-dlp → ffmpeg → whisper.cpp
├── embeddings.rs # passage embeddings, used by `search_transcripts`
└── utils/ # pathsDieses Crate stellt selbst nur die Repro Pipeline und seine MCP-Oberfläche. Das daruf aufbauende Produkt – REST-API, Konten, Credits, Zahlungen, KI-Zusammenfassungen und Diagramme – befindet sich in einem separaten privaten Crate, das dieses als lib verwendet. Mit System: cargo install video-transcriber-mcp bekommst du also einen Transkriptionsserver und nicht ein fremdes SaaS-Backend.
🤝 Contributing
Beiträge sind willkommen! Bitte:
Fork the repository Fork das Repository
Erstelle einen Feature-Branch
Nimm deine Änderungen vor
Wenn möglich, füge Tests hinzu
Eröffne einen Pull Request
Lizenz
MIT-Lizenz – siehe LICENSE
Danksagung
whisper.cpp – Schnelle C++-Implementierung von Whisper
whisper-rs – Rust-Bindings für whisper.cpp
yt-dlp – Video-Downloader für 1000+ Plattformen
OpenAI Whisper – Ursprüngliches speech-recognition model
Model Context Protocol SDK – Rust-SDK für MCP
🆚 Vergleich mit der TypeScript-Version
Ich baute das ursprüngliche video-transcriber-mcp in TypeScript. Hier ist das, warum ich auch in Rust neu machen:
Aspekt | TypeScript-Version | Rust-Version |
Transkriptionsgeschwindigkeit | 5 min für 10-min-Video | 50 s (6x schneller) |
Speichernutzung | ~2 GB | ~800 MB (2,5x weniger) |
Startzeit | ~2 s | <100 ms (20x schneller) |
Binarygröße | N/A (Node.js-Laufzeit) | ~8 MB Standalone |
Abhängigkeiten | Node.js, Python, whisper | Nur yt-dlp, ffmpeg |
CPU-使用 | High (Python-Overhead) | Niedriger (nativer Code) |
Die Rust-Version ist sofort einsatzbereit und deutlich effizienter!
🔗 Links
Lizenz
Lizenziert wahlweise unter
MIT-Lizenz (LICENSE-MIT)
Apache License, Version 2.0 (LICENSE-APACHE)
in deiner Wahl.
Contribution
Sofern du nichts anderes ausdrücklich vorhanden ist, wird jeder bewusst für die Aufnahme in dieses Projekt eingereichte Beitrag, wie in der Apache-2.0-Lizenz definiert, unter den oben genannten Bedingungen doppelt lizenziert (dual licensed) – ohne zusätzliche Vertragsbedingungen.
Mit ❤️ in Rust gebaut, für maximale Leistung
MCP-Registry-Eigentümerschaft-Token – crates.io entfernt HTML-Kommentare, daher muss diese Zeile sichtbar bleiben:
MCP-Name: io.github.nhatvu148/video-transcriber-mcp
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables high-performance audio transcription using Faster Whisper with CUDA acceleration, supporting single and batch audio file processing with multiple output formats (VTT, SRT, JSON).
- AlicenseAqualityAmaintenanceTranscribes videos from 1000+ platforms (YouTube, TikTok, Vimeo, etc.) and local video files using OpenAI's Whisper model, with support for 90+ languages and multiple output formats.8574MIT
- AlicenseBqualityDmaintenanceEnables downloading videos from platforms like YouTube and converting them to text using OpenAI Whisper and ffmpeg. It supports multiple output formats including TXT, JSON, SRT, and VTT for transcriptions.213ISC
- FlicenseAqualityDmaintenanceEnables high-quality transcription and subtitle generation from local media files or URLs using Faster Whisper on local hardware. It supports automatic language detection and integration with MCP clients for seamless speech-to-text workflows.3
Related MCP Connectors
Fetch transcripts, subtitles, chapters, metadata and frames from YouTube and 10+ video platforms
Transform video, audio and images, and generate media from prompts. FFmpeg, captions, models.
💯 The fastest YouTube transcript + YouTube search MCP for AI agents. Try for free.
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/nhatvu148/video-transcriber-mcp-rs'
If you have feedback or need assistance with the MCP directory API, please join our Discord server