Skip to main content
Glama
nhatvu148

video-transcriber-mcp

by nhatvu148

Video Transcriber MCP 🚀

Servidor MCP de transcripción de vídeo de alto rendimiento que utiliza whisper.cpp (Rust)

License: MIT OR Apache-2.0 Rust crates.io

Un servidor del Model Context Protocol (MCP) que transcribe vídeos de más de 1000 plataformas utilizando whisper.cpp. Construido con Rust para un rendimiento y una eficiencia máximos.

📦 Instalación

Homebrew (macOS/Linux): recomendado

La forma más sencilla de instalar con todas las dependencias:

brew install nhatvu148/tap/video-transcriber-mcp

Esto instala automáticamente el binario junto con las dependencias necesarias (cmake, yt-dlp, ffmpeg).

Instalación con Cargo

Si tienes Rust instalado:

cargo install video-transcriber-mcp

Nota: Deberás instalar manualmente las dependencias: yt-dlp, ffmpeg, cmake.

Binarios precompilados

Descarga desde GitHub Releases:

# 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

Nota: Deberás instalar manualmente las dependencias: yt-dlp, ffmpeg.

Plugin de Claude Code

Instala el servidor MCP y una habilidad /transcribe en un solo paso:

/plugin marketplace add nhatvu148/video-transcriber-mcp-rs
/plugin install video-transcriber@nhatvu148-tools

El plugin registra el servidor MCP por ti, pero no instala el binario: ejecuta primero uno de los comandos de instalación anteriores para que video-transcriber-mcp esté en tu PATH.

Related MCP server: Video Transcriber MCP Server

🎯 ¿Por qué Rust?

Esta versión utiliza whisper.cpp (implementación en C++ con enlaces de Rust) en lugar de OpenAI Whisper de Python:

Ventaja

whisper.cpp (Rust)

OpenAI Whisper (Python)

Rendimiento

Velocidad nativa en C++

Sobrecarga del intérprete de Python

Memoria

Menor huella

Mayor uso de memoria

Inicio

Instantáneo (<100 ms)

Lento (~2-3 s de carga del modelo)

Dependencias

Binario autónomo

Requiere Python y paquetes

Portabilidad

Binario único

Entorno de Python necesario

El rendimiento en el mundo real depende de tu hardware, la duración del vídeo y el modelo elegido.

✨ Características

  • 🚀 Transcripción de alto rendimiento mediante whisper.cpp (C++ con enlaces de Rust)

  • 🎥 Descarga desde más de 1000 plataformas (YouTube, Vimeo, TikTok, Twitter, etc.)

  • 📂 Transcripción de archivos de vídeo locales (mp4, avi, mov, mkv, etc.)

  • 🎤 Transcripción 100% sin conexión (la privacidad es lo primero)

  • 🎛️ 5 tamaños de modelo (tiny, base, small, medium, large)

  • 🌐 Más de 90 idiomas compatibles

  • 📝 Múltiples formatos de salida (TXT, JSON, Markdown)

  • 🔌 Integración MCP para Claude Code

  • 🌐 Transporte dual - stdio (local) y Streamable HTTP (remoto)

  • ⚡ Binario nativo - no requiere Python ni Node.js

  • 💾 Baja huella de memoria en comparación con las implementaciones en Python

⚡ Inicio rápido (usando Taskfile)

La forma más rápida de empezar:

# 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! 🎉

Comandos disponibles:

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

Consulta Taskfile.yml para ver todas las tareas disponibles.


🌐 Modos de transporte

El servidor admite dos modos de transporte:

Transporte stdio (predeterminado)

Transporte de entrada/salida estándar para el uso local desde la línea de comandos con Claude Code. Este es el modo predeterminado.

video-transcriber-mcp
# or explicitly:
video-transcriber-mcp --transport stdio

Transporte Streamable HTTP

Transporte HTTP para acceso remoto. Permite acceder al servidor MCP a través de la red.

# 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

Configuración del cliente MCP remoto:

Para el transporte HTTP, configura tu cliente MCP con la URL:

{
  "mcpServers": {
    "video-transcriber-mcp": {
      "url": "http://localhost:8080/mcp"
    }
  }
}

Ventajas del transporte HTTP:

  • No requiere instalación local para los clientes

  • Despliegue centralizado del servidor

  • Actualizaciones automáticas (en el lado del servidor)

  • Mejor para entornos de equipo

  • Compatible con plataformas serverless

Opciones de CLI

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

📦 Compilación manual desde el código fuente

Prerrequisitos

  1. Rust (1.85+ para la edición Rust 2024)

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  1. yt-dlp (para descargar vídeos)

# macOS
brew install yt-dlp

# Linux
pip install yt-dlp

# Windows
winget install yt-dlp.yt-dlp
  1. FFmpeg (para el procesamiento de audio)

# macOS
brew install ffmpeg

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

# Windows
choco install ffmpeg

Compilar desde el código fuente

# 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

Descargar modelos de Whisper

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

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

Los modelos se almacenan en ~/.cache/video-transcriber-mcp/models/.

🚀 Inicio rápido

Servidor MCP (para Claude Code)

Añádelo a ~/.claude/settings.json:

Opción 1: Si se ha instalado mediante GitHub Release o cargo install:

{
  "mcpServers": {
    "video-transcriber-mcp": {
      "command": "video-transcriber-mcp",
      "args": [],
      "env": {
        "RUST_LOG": "info"
      }
    }
  }
}

Opción 2: Si se ha compilado desde el código fuente:

{
  "mcpServers": {
    "video-transcriber-mcp": {
      "command": "/absolute/path/to/video-transcriber-mcp-rs/target/release/video-transcriber-mcp",
      "args": [],
      "env": {
        "RUST_LOG": "info"
      }
    }
  }
}

Después, úsalo en Claude Code:

Transcripción básica (usa el modelo base por defecto):

Please transcribe this YouTube video: https://www.youtube.com/watch?v=VIDEO_ID

Transcribe con un modelo específico:

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

Transcribe un archivo de vídeo local:

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

Transcribe en un idioma específico:

Transcribe this Spanish video: https://www.youtube.com/watch?v=VIDEO_ID
(language: es, model: medium)

📊 Rendimiento

Características de rendimiento esperadas

Según las comparativas de whisper.cpp frente a OpenAI Whisper de la comunidad:

Velocidad de transcripción (aproximada, varía según el hardware):

  • whisper.cpp suele ser entre 2 y 6 veces más rápido que Whisper de Python

  • Menor tiempo de inicio (sin sobrecarga del intérprete de Python)

  • Menor uso de memoria (sin el entorno de ejecución de Python)

Factores del mundo real que afectan al rendimiento:

  • CPU: más núcleos = procesamiento más rápido

  • Tamaño del modelo: tiny es el más rápido y large es el más lento pero el más preciso

  • Duración del vídeo: los vídeos más largos requieren proporcionalmente más tiempo

  • Complejidad del audio: el habla clara se transcribe más rápido que el audio con ruido

¿Quieres ayudar?

¡Estamos recopilando datos de rendimiento reales! Si ejecutas ambas versiones, comparte tus resultados:

  • Especificaciones del hardware (CPU, RAM)

  • Duración del vídeo probado

  • Modelo utilizado

  • Tiempo para cada versión

Abre una incidencia con los resultados para ayudar a mejorar esta sección.

🎛️ Comparación de modelos

Modelo

Velocidad

Precisión

Memoria

Caso de uso

tiny

⚡⚡⚡⚡⚡

⭐⭐

~400 MB

Borradores rápidos, pruebas

base

⚡⚡⚡⚡

⭐⭐⭐

~600 MB

Uso general (predeterminado)

small

⚡⚡⚡

⭐⭐⭐⭐

~1.2 GB

Mejor precisión

medium

⚡⚡

⭐⭐⭐⭐⭐

~2.5 GB

Precisión alta

large

⚡

⭐⭐⭐⭐⭐⭐

~4.8 GB

Mejor precisión, más lento

🌍 Plataformas compatibles

Gracias a yt-dlp, esta herramienta admite más de 1000 plataformas de vídeo, por ejemplo:

  • Redes sociales: YouTube, TikTok, Twitter/X, Facebook, Instagram, Reddit

  • Alojamiento de vídeos: Vimeo, Dailymotion, Twitch

  • Educación: Coursera, Udemy, Khan Academy, edX

  • Noticias: BBC, CNN, NBC, PBS

  • ¡Y más de 1000 más!

📝 Formato de salida

Para cada vídeo se generan tres archivos en ~/Downloads/video-transcripts/:

video-id-title.txt   # Plain text transcript
video-id-title.json  # JSON with metadata and timestamps
video-id-title.md    # Markdown with video info

Ejemplo de salida

# 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*

🔧 Configuración

Variables de entorno

Todas las variables de entorno son opcionales. El transcriptor funciona sin que haya ninguna configurada; estas desbloquean la autenticación, la inferencia remota, los resúmenes con IA y la API HTTP de pago.

💡 El directorio de salida no es una variable de entorno: pasa output_dir a la herramienta transcribe_video (por defecto, ~/Downloads/video-transcripts). Los archivos de salida se nombran <video_id>-<title>.{txt,json,md}.

Acceso remoto a MCP (--transport http)

El transporte HTTP solo responde a solicitudes cuyo encabezado Host esté en una lista de permitidos. Por defecto, usa un bucle de bucle local (localhost, 127.0.0.1, ::1) como protección contra [DNS rebinding][dns-rebinding], lo que significa que una instancia desplegada rechaza su propio nombre de host público con un 403 hasta que lo especifiques:

# 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

Déjalo sin configurar para uso local: el servidor registra qué hosts acepta al iniciar, por lo que un 403 de un cliente remoto es fácil de diagnosticar.

⚠️ Esto controla la accesibilidad, no la autorización. Quien alcanzar la URL puede llamar a las herramientas, incluyendo transcribe_video, que gasta dinero real cuando infraestructura remota de Whisper / OpenRouter esté configurada. Pon un proxy de autenticación frente a un despliegue público.

Descarga (cookies de yt-dlp)

Solo se necesan para vídeos con restricción de edad / exclusivos para miembros o la confirmación de YouTube de "Inicia sesión para confirmar que no eres un bot".

# 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

Whisper remoto (transcripción delegada)

# 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

🧪 Desarrollo

Compilar

# 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"

Estructura del proyecto

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

Este crate es solo el pipeline de transcripción y su superficie MCP. El resto del producto construido sobre él —API REST, cuentas, créditos, pagos, resúmenes y diagramas con IA— vive en un crate privado separado que depende de este como biblioteca, por lo que cargo install video-transcriber-mcp te sirve un servidor de transcripción, no un backend de SaaS de otra persona.

🤝 Contribuciones

Las contribuciones son bienvenidas. Haz lo siguiente:

  1. Haz un fork del repositorio

  2. Crea una rama de funcionalidad

  3. Realiza tus cambios

  4. Añade pruebas si corresponde

  5. Envía una pull request

📄 Licencia

Licencia MIT: consulta el archivo LICENSE para obtener detalles.

🙏 Reconocimientos

🆚 Comparación con la versión de TypeScript

Creé el video-transcriber-mcp original en TypeScript. Esta es la razón por la que lo reescribí en Rust:

Aspecto

Versión de TypeScript

Versión de Rust

Velocidad de transcripción

5 min para vídeo de 10 min

50 s (6x más rápido)

Uso de memoria

~2 GB

~ 800 MB (2,5 veces menos)

Tiempo de inicio

~2 s

Menos de 100 ms (20x rápido)

Tamaño del binario

N/A (entorno Node.js)

~8 MB autónomo

Dependencias

Node.js, Python, whisper

Solo yt-dlp, ffmpeg

Uso de CPU

Alto (sobrecarga de Python)

menor (código nativo)

¡La versión de Rust está lista para producción y es significativamente más eficiente!

🔗 Enlaces

Licencia

Licenciado bajo cualquiera de las siguientes opciones:

a su elección.

Contribución

Salvo que se indique explícitamente lo contrario, cualquier contribución que se envíe intencionadamente para su inclusión en la obra, según se define en la licencia Apache-2.0, se licenciará de forma dual como se indica anteriormente, sin términos ni condiciones adicionales.

Construido con ❤️ en Rust para un máximo rendimiento

Token de propiedad del registro MCP: crates.io elimina los comentarios en HTML, por lo que esta línea debe seguir siendo visible:

mcp-name: io.github.nhatvu148/video-transcriber-mcp

Related MCP Connectors

Related MCP Servers