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

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