Skip to main content
Glama
nhatvu148

video-transcriber-mcp

by nhatvu148

Video Transcriber MCP 🚀

Высокопроизводительный MCP-сервер для транскрибации видео на базе whisper.cpp (Rust)

License: MIT OR Apache-2.0 Rust crates.io

Сервер Model Context Protocol (MCP), который транскрибирует видео с 1000+ платформ с помощью whisper.cpp. Написан на Rust для максимальной производительности и эффективности.

📦 Установка

Homebrew (macOS/Linux) — рекомендуемый способ

Самый простой способ установки со всеми зависимостями:

brew install nhatvu148/tap/video-transcriber-mcp

Эта команда автоматически устанавливает бинарный файл вместе с необходимыми зависимостями (cmake, yt-dlp, ffmpeg).

Установка через Cargo

Если у вас установлен Rust:

cargo install video-transcriber-mcp

Примечание: Зависимости yt-dlp, ffmpeg, cmake нужно установить вручную.

Готовые бинарные файлы

Скачайте из 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

Примечание: Зависимости yt-dlp, ffmpeg нужно установить вручную.

Плагин для Claude Code

Устанавливает MCP-сервер и навык /transcribe за один шаг:

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

Плагин регистрирует MCP-сервер за вас, но не устанавливает бинарный файл — сначала выполните одну из команд установки выше, чтобы video-transcriber-mcp оказался в вашем PATH.

Related MCP server: Video Transcriber MCP Server

🎯 Почему Rust?

Эта версия использует whisper.cpp (реализацию на C++ с привязками для Rust) вместо OpenAI Whisper на Python:

Преимущество

whisper.cpp (Rust)

OpenAI Whisper (Python)

Производительность

Скорость нативного C++

Накладные расходы интерпретатора Python

Память

Меньше потребление памяти

Больше потребление памяти

Запуск

Мгновенный (<100мс)

Медленный (~2-3с загрузка модели)

Зависимости

Автономный бинарный файл

Требуется Python + пакеты

Переносимость

Один бинарный файл

Нужна среда Python

Реальная производительность зависит от вашего оборудования, длины видео и выбранной модели.

✨ Возможности

  • 🚀 Высокая производительность транскрибации благодаря whisper.cpp (C++ с привязками для Rust)

  • 🎥 Загрузка с 1000+ платформ (YouTube, Vimeo, TikTok, Twitter и др.)

  • 📂 Транскрибация локальных видеофайлов (mp4, avi, mov, mkv и др.)

  • 🎤 100% офлайн-транскрибация (конфиденциальность в приоритете)

  • 🎛️ 5 размеров моделей (tiny, base, small, medium, large)

  • 🌐 Поддержка 90+ языков

  • 📝 Несколько форматов вывода (TXT, JSON, Markdown)

  • 🔌 MCP-интеграция для Claude Code

  • 🌐 Два транспорта — stdio (локально) и Streamable HTTP (удалённо)

  • ⚡ Нативный бинарный файл — Python или Node.js не требуются

  • 💾 Низкое потребление памяти по сравнению с Python-реализациями

⚡ Быстрый старт (через Taskfile)

Самый быстрый способ начать работу:

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

Доступные команды:

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

Все доступные задачи — в Taskfile.yml.


🌐 Режимы транспорта

Сервер поддерживает два режима транспорта:

Транспорт Stdio (по умолчанию)

Транспорт стандартного ввода-вывода для локального использования в CLI с Claude Code. Это режим по умолчанию.

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

Транспорт Streamable HTTP

HTTP-транспорт для удалённого доступа. Позволяет обращаться к MCP-серверу через сеть.

# 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

Настройка удалённого MCP-клиента:

Для HTTP-транспорта укажите в конфигурации MCP-клиента URL:

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

Преимущества HTTP-транспорта:

  • Клиентам не требуется локальная установка

  • Централизованное развёртывание сервера

  • Автоматические обновления (на стороне сервера)

  • Лучше подходит для командной работы

  • Совместим с serverless-платформами

Параметры командной строки

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

📦 Ручная сборка из исходников

Предварительные требования

  1. Rust (1.85+ для Rust 2024 edition)

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  1. yt-dlp (для загрузки видео)

# macOS
brew install yt-dlp

# Linux
pip install yt-dlp

# Windows
winget install yt-dlp.yt-dlp
  1. FFmpeg (для обработки аудио)

# macOS
brew install ffmpeg

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

# Windows
choco install ffmpeg

Сборка из исходников

# 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

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

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

Модели хранятся в ~/.cache/video-transcriber-mcp/models/

🚀 Быстрый старт

MCP-сервер (для Claude Code)

Добавьте в ~/.claude/settings.json:

Вариант 1: если установлено через GitHub Release или cargo install:

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

Вариант 2: если собрано из исходников:

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

Затем используйте в Claude Code:

Базовая транскрибация (по умолчанию используется модель base):

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

Транскрибация с указанной моделью:

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

Транскрибация локального видеофайла:

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

Транскрибация на указанном языке:

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

📊 Производительность

Ожидаемые характеристики производительности

На основе сравнительных тестов whisper.cpp и OpenAI Whisper из сообщества:

Скорость транскрибации (приблизительно, зависит от оборудования):

  • whisper.cpp обычно в 2–6 раз быстрее при транскрибации

  • Заметно более быстрый запуск (без накладных расходов интерпретатора Python)

  • Меньшее потребление памяти (без Python-рантайма)

Факторы, влияющие на производительность в реальных условиях:

  • Процессор: больше ядер — быстрее обработка

  • Размер модели: tiny — самая быстрая, large — самая медленная, но самая точная

  • Длина видео: более длинные видео требуют пропорционально больше времени

  • Сложность аудио: чистая речь транскрибируется быстрее, чем зашумлённое аудио

Хотите помочь?

Мы собираем реальные данные бенчмарков! Если вы запускали обе версии, поделитесь результатами:

  • Характеристики оборудования (CPU, RAM)

  • Протестированная длина видео

  • Использованная модель

  • Время для каждой версии

Откройте issue с результатами ваших бенчмарков, чтобы помочь улучшить этот раздел!

🎛️ Сравнение моделей

Модель

Скорость

Точность

Память

Применение

tiny

⚡⭐⭐⭐⭐⭐

⭐⭐⭐

~400 MB

Быстрые черновики, тестирование

base

⚡⚡⚡⚡

⭐⭐⭐

~600 MB

Основное использование (по умолчанию)

small

⚡⚡⚡

⭐⭐⭐⭐

~1.2 GB

Лучшая точность

medium

⚡⚡

⭐⭐⭐⭐⭐ap ⭐

~2.5 GB

Высокая точность

large

⚡

⭐⭐⭐⭐⭐⭐

~4.8 GB

Максимальная точность, самая медленная

🌍 Поддерживаемые платформы

Благодаря yt-dlp этот инструмент поддерживает 1000+ видеоплатформ, включая:

  • Социальные сети: YouTube, TikTok, Twitter/X, Facebook, Instagram, Reddit

  • Видеохостинги: Vimeo, Dailymotion, Twitch

  • Образование: Coursera, Udemy, Khan Academy, edX

  • Новости: BBC, CNN, NBC, PBS

  • И ещё 1000+ других платформ!

📝 Формат вывода

Для каждого видео в ~/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

Пример вывода

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

🔧 Конфигурация

Переменные окружения

Все переменные окружения необязательны. Транскрайбер работает вообще без них; они добавляют аутентификацию, удалённый инференс, ИИ-саммари и платный HTTP API.

💡 Каталог для транскриптов — это не переменная окружения: передайте output_dir инструменту transcribe_video (по умолчанию ~/Downloads/video-transcripts). Выходные файлы называются <video_id>-<title>.{txt,json,md}.

Удалённый доступ к MCP (--transport http)

HTTP-транспорт принимает только запросы, у которых заголовок Host входит в разрешённый список. По умолчанию это только loopback (localhost, 127.0.0.1, ::1) как защита от [DNS rebinding][dns-rebinding]. Это означает, что развёрнутый экземпляр возвращает 403 на собственный публичный адрес, пока вы его не добавите в список:

# 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

Для локального использования оставьте значение пустым — сервер при запуске логирует, какие хосты он принимает, поэтому 403 удалённого клиента легко диагностировать.

⚠️ Это контролирует доступность, но не авторизацию. Любой, кому доступен URL, может вызывать инструменты, включая transcribe_video, которые тратят реальные деньги при настройке удалённого Whisper. Публичное размещение сервера обязательно защищайте прокси-сервером с аутентификацией.

Загрузчик (куки yt-dlp)

Нужны только для видео с ограничением по возрасту / для участников или при запросе YouTube "Sign in to confirm you're not a 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

Принтер

GXP

Удалённый Whisper (выгрузка сервера) () =>

# 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

🧪 Разработка

Сборка

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

Структура проекта

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

Этот crate — только конвейер транскрибации и его надстройка MCP. Продукт, построенный поверх него — REST API, аккаунты, кредиты, платежи, ИИ-сводки и диаграммы — живёт в отдельном приватном crate. Этот crate используется им как библиотека, поэтому cargo install video-transcriber-mcp даёт вам транскрибационный сервер, а не чей-то SaaS-бэкенд.

🤝 Вклад в разработку

Вклад приветствуется! Пожалуйста:

  1. Сделайте форк репозитория

  2. Создайте ветку для фичи

  3. Внесите свои изменения

  4. Добавте тесты, если применимо

  5. Отправьте pull request

📄 Лицензия

Лицензия MIT — подробнее в LICENSE.

🙏 Благодарности

  • whisper.cpp — Быстрая реализация Whisper на C ++ * whisper-rs — Rust-привязки для whisper.cpp

  • yt-dlp — загрузчик видео с 1000+ платформ

  • OpenAI Whisper — оригинальная модель распознавания речи

  • Model Context Protocol SDK — Rust SDK для MCP

🆚 Сравнение с версией на TypeScript

Оригинальный video-transcriber-mcp я написал на TypeScript. Вот почему я переписал его на Rust:

Характеристика

TypeScript-версия

Rust-версия

Скорость транскрибации

5 мин за видео 10 мин

50с (в 6 раз быстрее)

Потребление памяти

~2 ГБ

~800 MB (в 2.5 раза меньше)

Время запуска

~2с

<100ms (в 20 раз быстрее)

Размер бинарного файла

N/A (среда Node.js)

~8 MB standalone

Зависимости

Node.js, Python, whisper

Только yt-dlp, ffmpeg

Загрузка CPU

Высокая (накладки Python)

Ниже (нативный код)

Версия на Rust готова к продакшену и значительно эффективнее!

🔗 Ссылки

Лицензия

Распространяется на условиях:

на выбор.

Contribution

Если явно не указано иное, любой ваш вклад, целенаправленно направленный на включение в работу, как определено в лицензии Apache-2.0, лицензируется на условиях double-license, указанной выше, без дополнительных условий.


Сделано с ❤️ на Rust для максимальной производительности

Токен владельца реестра MCP — crates.io удаляет HTML-комменты, и поэтому эта строки должна оставаться видимой:

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

Related MCP Connectors

Related MCP Servers