The provider indirection is the useful part: you configure whichever keys you already have and the server picks in a fixed order — Deepgram first, then Gladia, Speechmatics, AssemblyAI — so switching vendors is a key change, not a code change. Transcription is not free either way, so the cost of a long video lands on your account with that provider, not here.
A Python server that takes a video link, extracts the audio, and returns the transcribed text through get_video_content.
- Audio pulled from YouTube, Bilibili, TikTok, Twitter and the other sites yt-dlp covers — over a thousand of them
- Transcription through Deepgram, Gladia, Speechmatics or AssemblyAI
- Provider chosen automatically from whichever API keys you configured, in that order
- Speaker separation, so a two-person interview does not come back as one block
- Async handling, with temporary files cleaned up after the job
At least one transcription key in .env — DEEPGRAM_API_KEY, GLADIA_API_KEY, SPEECHMATICS_API_KEY or ASSEMBLYAI_API_KEY. Python 3.11 or higher is recommended, installed with uv. Served over SSE on port 8000 by default. YouTube may ask for authentication; the fix is a cookies.txt in the project root.
One command plus a key — npx -y mcp-remote http://<ip>:8000/sse, then supply credentials
