Skip to main content
Glama
nhatvu148

video-transcriber-mcp

by nhatvu148

Video Transcriber MCP 🚀

whisper.cpp(Rust)を使用した高性能ビデオ文字起こしMCPサーバー

License: MIT OR Apache-2.0 Rust crates.io

whisper.cpp を使用して 1000以上のプラットフォーム の動画を文字起こしする Model Context Protocol(MCP)サーバーです。最大限のパフォーマンスと効率性を実現するために Rust で構築されています。

📦 インストール

Homebrew(macOS/Linux)- 推奨

すべての依存関係を含めてインストールする最も簡単な方法です。

brew install nhatvu148/tap/video-transcriber-mcp

これにより、必要な依存関係(cmake、yt-dlp、ffmpeg)とともにバイナリが自動的にインストールされます。

Cargo でのインストール

Rust がインストールされている場合:

cargo install video-transcriber-mcp

注意: 依存関係(yt-dlpffmpegcmake)を手動でインストールする必要があります。

プリビルドバイナリ

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-dlpffmpeg)を手動でインストールする必要があります。

Claude Code プラグイン

MCP サーバーと /transcribe スキルを1ステップでインストールします:

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

このプラグインは MCP サーバーを登録しますが、バイナリのインストールは行いません。まず上記のインストールコマンドのいずれかを実行して、video-transcriber-mcpPATH に配置してください。

Related MCP server: Video Transcriber MCP Server

🎯 なぜ Rust なのか?

このバージョンでは、Python の OpenAI Whisper ではなく whisper.cpp(Rust バインディングを備えた C++ 実装)を使用しています:

利点

whisper.cpp (Rust)

OpenAI Whisper (Python)

パフォーマンス

ネイティブ C++ の速度

Python インタープリタのオーバーヘッド

メモリ

低いフットプリント

高いメモリ使用量

起動

即座に起動(<100ms)

遅い(約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)

  • 🔌 Claude Code 向け MCP 統合

  • 🌐 デュアルトランスポート - 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 を参照してください。


🌐 トランスポートモード

このサーバーは2つのトランスポートモードをサポートしています:

Stdio トランスポート(デフォルト)

Claude Code でローカル CLI を使用するための標準入出力トランスポートです。これがデフォルトのモードです。

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 トランスポートの利点:

  • クライアントにローカルインストールが不要

  • サーバーの一元管理が可能

  • 自動更新(サーバー側)

  • チーム環境により適している

  • サーバーレスプラットフォームと互換性がある

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

📦 ソースからの手動ビルド

前提条件

  1. Rust(Rust 2024 edition 用の 1.85+)

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 は通常 Python Whisper よりも 2〜6倍高速です

  • 起動時間が短い(Python インタープリタのオーバーヘッドなし)

  • メモリフットプリントが低い(Python ランタイムなし)

実際のパフォーマンスに影響する要因:

  • CPU: コア数が多いほど処理が速い

  • モデルサイズ: Tiny が最速、Large は最も遅いが最も正確

  • 動画の長さ: 長い動画は比例して時間がかかる

  • 音声の複雑さ: ノイズの少ない明瞭な音声の方が、ノイズの多い音声よりも高速に文字起こしできます

協力のお願い

実際のベンチマークデータを収集しています!両方のバージョンを実行した場合は、結果を共有してください:

  • ハードウェア仕様(CPU、RAM)

  • テストした動画の長さ

  • 使用したモデル

  • 各バージョンにかかった時間

ベンチマーク結果を issue として開いて、このセクションの改善にご協力ください!

🎛️ モデル比較

モデル

速度

精度

メモリ

使用例

tiny

⚡⚡⚡⚡⚡

⭐⭐

~400 MB

クイックドラフト、テスト用

base

⚡⚡⚡⚡

⭐⭐⭐

~600 MB

一般的な用途(デフォルト)

small

⚡⚡⚡

⭐⭐⭐⭐

~1.2 GB

高い精度

medium

⚡⚡

⭐⭐⭐⭐⭐

~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/ に3つのファイルが生成されます:

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*

🛠️ 設定

環境変数

環境変数はすべてオプションです。トランスクライバーは設定なしで動作します。環境変数は、認証、リモート推論、AI要約、有料 HTTP API を解放します。

💡 文字起こしの出力ディレクトリは環境変数ではなく、transcribe_video ツールに output_dir を渡してください(デフォルトは ~/Downloads/video-transcripts)。出力ファイルの名前は <video_id>-<title>.{txt,json,md} です。

リモート MCP アクセス(--transport http

HTTP トランスポートは、Host ヘッダーが許可リストにあるリクエストのみに応答します。デフォルトでは、[DNS リバインディング][dns-rebinding] に対する保護としてループバック(localhost127.0.0.1::1)になっています。つまり、デプロイされ出力されたインスタンスは、公開ホスト名を明示的に指定するまで、自らのパブリックホスト名を 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 / OpenRouter を設定している場合、これは実際にお金を使います。公開デプロイメントの前には認証プロキシを設置してください。

ダウンロード(yt-dlp cookies)

年齢制限・メンバー限定動画、または YouTube の「サインインしてボットでないことを確認してください」というチャレンジが必要な場合にのみ必要です。

# 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(文字起こしのオフローディング)

# 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

このクレートは、文字起こしパイプラインとその MCP サーフェスのみが含まれています。このクレートの上に構築されるプロダクト(REST API、アカウント、クレジット、決済、テキストブラウズ)は、このクレートをライブラリとして依存する別のセキュリティなプライベートクレートに存在します。cargo install video-transcriber-mcp でインストールされるのは、他の誰かの SaaS バックエンドではなく、文字起こしサーバーです。

🤝 コントリビューション

コントリビューションは歓迎します!どうぞ:

  1. リポジトリをフォーク

  2. フィーチャーブランチを作成

  3. 変更を加える

  4. 該当する場合はテストを追加

  5. プルリクエストを送信

📄 ライセンス

MIT ライセンス - 詳細は LICENSE ファイルを参照してください

🙏 謝辞

  • [whisper.cpp]https[://github.com/ggerganov/whisper.cpp) - Whisper の高速で軽量な C++ 実装

  • [whisper-rs](https:// lar) - whisper.cpp の Rust バインディング

  • yt-dlp - 1000以上のプラットフォーム対応の動画ダウンローダー

  • OpenAI Whisper - オリジナルの音声認識モデル

  • Model Context Protocol SDK - MCP 用 Rust SDK

🆚 TypeScript バージョンとの比較

私は元の video-transcriber-mcp を TypeScript で開発しました。Rust で書き直した理由は次のとおりです:

項目

TypeScript バージョン

Rust バージョン

文字起こし速度

10分の動画あたり5分

50秒(6倍高速)

メモリ使用量

~2 GB

~800 MB(2.5倍減)

起動時間

~2s

<100ms(20倍高速)

バイナリサイズ

N/A(Node.js ランタイム)

~8 MB スタンドアロン

依存関係

Node.js、Python、whisper

yt-dlp、ffmpeg のみ

CPU 使用率

高い(Python オーバーヘッド)

低い(ネイティブコード)

Rust バージョンは本番環境に対応しており、大幅に効率的です!

🔗 リンク

License

MIT license (LICENSE-MIT) または Apache License, Version 2.0 (LICENSE-APACHE) のどちらかの条件の下でライセンスされています。

Contribution

明示的に別段の指定がない限り、Apache-2.0 ライセンスに定義された、あなたが意図的に提供に含めるコントリビューションは、上記のとおりデュアルライセンスされます。追加の条件はありません。


最大のパフォーマンスを求めて、Rust で心を込めてビルド

MCP registry ownership token - crates.io は HTML コメントを取り除くため、この行は表示しておく必要があります:

mcp-name: io.github.nhatvu128/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