Skip to main content
Glama
nhatvu148

video-transcriber-mcp

by nhatvu148

Video Transcriber MCP 🚀

Hochleistungs-MCP-Server für Videotranskription mit whisper.cpp (Rust)

License: MIT OR Apache-2.0 Rust crates.io

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-mcp

Dies 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-mcp

Hinweis: 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 page

Hinweis: 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-tools

Das 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 commands

Fü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 stdio

Streamable 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 3000

Remote-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

  1. Rust (1.85+ für die Rust-2024-Edition)

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  1. yt-dlp (für das Herunterladen von Videos)

# macOS
brew install yt-dlp

# Linux
pip install yt-dlp

# Windows
winget install yt-dlp.yt-dlp
  1. FFmpeg (für die Audio-Verfahren)

# macOS
brew install ffmpeg

# Linux
sudo apt install ffmpeg  # Debian/Ubuntu
sudo dnf install ffmpeg  # Fedora

# Windows
choco install ffmpeg

Aus 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-rs

Whisper-Modelle herunterladen

# Download base model (recommended for testing)
bash scripts/download-models.sh base

# Or download all models
bash scripts/download-models.sh all

Modelle 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_ID

Mit bestimmten Modell transkripren:

Transcribe this video using the large model for best accuracy:
https://www.youtube.com/watch?v=VIDEO_ID

Lokale Videodatei transkrip:

Transcribe this local video file: /Users/myname/Videos/meeting.mp4

In 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 info

Beispielausgabe

# 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_dir an das Tool transcribe_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.dev

Lass 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=chrome

Remote-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/            # paths

Dieses 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:

  1. Fork the repository Fork das Repository

  2. Erstelle einen Feature-Branch

  3. Nimm deine Änderungen vor

  4. Wenn möglich, füge Tests hinzu

  5. Eröffne einen Pull Request

Lizenz

MIT-Lizenz – siehe LICENSE

Danksagung

🆚 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!

Lizenz

Lizenziert wahlweise unter

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

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
8hResponse time
2wRelease cycle
18Releases (12mo)
Commit activity
Issues opened vs closed

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

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

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