Hermes YouTube Transcript MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Hermes YouTube Transcript MCP Server transcribe https://youtube.com/watch?v=dQw4w9WgXcQ"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Hermes YouTube Transcript MCP Server
A Hermes-ready MCP server for STT-first YouTube transcript ingestion.
It downloads audio with yt-dlp, normalizes it with ffmpeg, transcribes it
with faster-whisper, and saves durable Markdown + JSON outputs suitable for
Obsidian and Hermes ingestion.
Exposed tools
download_youtube_audio(url_or_video_id)transcribe_audio(file_path)transcribe_youtube(url_or_video_id)save_transcript(transcript, metadata)
Related MCP server: transcribe-agent
Why this stack
yt-dlp: reliable YouTube audio fetcherffmpeg: normalizes audio before transcriptionfaster-whisper: high-quality local STT engineMCP stdio: Hermes can discover and call the tools directly
YouTube captions are not used as the primary transcript source here. They can be added later as a fallback or comparison step, but this server is STT-first by design.
Install
1) System dependencies
Install these first:
ffmpeguv
If you want faster-whisper to use GPU acceleration, install the relevant
CUDA/metal stack for your machine. The server defaults to CPU-friendly settings
and can be tuned with environment variables.
2) Python dependencies
From this directory:
uv syncIf you prefer a one-off environment install:
uv pip install -e .Run the MCP server
uv run python -m hermes_youtube_transcript_mcp.serverThat starts the server over stdio, which is the best fit for Hermes MCP.
Hermes MCP config
Add this to ~/.hermes/config.yaml:
mcp_servers:
youtube_transcripts:
command: "uv"
args:
- "run"
- "--project"
- "/Users/thomkozik/dev/hermes-youtube-transcript-mcp"
- "python"
- "-m"
- "hermes_youtube_transcript_mcp.server"
timeout: 300
connect_timeout: 60After saving the config, restart Hermes or reload MCP so the tools are rediscovered. In Hermes, the tools should appear with the prefix:
mcp_youtube_transcripts_download_youtube_audiomcp_youtube_transcripts_transcribe_audiomcp_youtube_transcripts_transcribe_youtubemcp_youtube_transcripts_save_transcript
You can confirm discovery with:
hermes mcp list
hermes mcp test youtube_transcriptsEnvironment variables
Optional overrides:
HERMES_YT_TRANSCRIPTS_DIR: where Markdown/JSON transcript files are savedHERMES_YT_DOWNLOAD_DIR: where raw downloads are cachedHERMES_YT_NORMALIZED_DIR: where normalized WAV files are writtenHERMES_YT_WHISPER_MODEL:large-v3by defaultHERMES_YT_WHISPER_DEVICE:cpuby defaultHERMES_YT_WHISPER_COMPUTE_TYPE:int8by defaultHERMES_YT_WHISPER_BEAM_SIZE:5by default
Output format
save_transcript() writes two files:
Markdown with YAML frontmatter and a human-readable transcript body
JSON sidecar with the full metadata and segment list
This format is durable, grep-friendly, and easy to ingest into Obsidian or Thorn.
Verification
Run the unit tests:
uv run python -m unittest discover -s tests -vIf you want a manual smoke test after config is loaded, use Hermes to call
mcp_youtube_transcripts_transcribe_youtube on a known public video and check
that the Markdown and JSON files are created in the configured output directory.
Notes
If
ffmpegis missing, the server raises a clear error before transcription.If
yt-dlporfaster-whisperare missing, the server tells you how to install the project dependencies.This implementation intentionally avoids relying on YouTube captions as the primary transcript source.
Available Tools
4 toolsdownload_youtube_audioC
Download the best available YouTube audio to a local cache path.
Inputs: url_or_video_id (required). Returns: object
save_transcriptC
Persist a transcript as durable Markdown plus JSON sidecar for Obsidian/Thorn.
Inputs: transcript (required), metadata. Returns: object
transcribe_audioC
Normalize an audio file with ffmpeg and transcribe it with faster-whisper.
Inputs: file_path (required). Returns: object
transcribe_youtubeB
Download a YouTube video, normalize the audio, and transcribe it STT-first.
Inputs: url_or_video_id (required). Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 4 tools
Each tool has a distinct purpose: downloading audio, transcribing audio files, transcribing YouTube videos directly, and saving transcripts. No overlap or ambiguity.
All tool names follow a consistent verb_noun pattern in snake_case, such as 'download_youtube_audio' and 'transcribe_audio', making them predictable.
With 4 tools, the set is well-scoped for the goal of generating YouTube transcripts. Each tool serves a necessary step in the pipeline.
Covers the full workflow: download, transcribe, save, plus an end-to-end shortcut. Only minor gap: no tool to retrieve or list existing transcripts.
Maintenance
Related MCP Connectors
Transcribe YouTube via Whisper. Summaries, chapters, semantic-search across your corpus.
Whisper speech to text for podcast, audio and video URLs, 90+ languages, timestamped output.
Clean YouTube transcripts for agents: single videos, channels, playlists, plus AI caption cleanup.
Bulk YouTube transcripts from videos, channels, playlists or search: text, RAG chunks, SRT, VTT.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to download YouTube videos and transcribe them locally using OpenAI's Whisper speech recognition model.MIT
- AlicenseNot gradedqualityDmaintenanceTranscribes YouTube videos or audio files to Markdown, plain-text, and Word documents.MIT
- AlicenseNot gradedqualityCmaintenanceFetches YouTube transcripts and metadata (title, channel, duration) for URLs, using subtitles or on-device Whisper STT when no subtitles are available, enabling chat-based YouTube video analysis.MIT
- AlicenseAqualityCmaintenanceTurns a YouTube link into a readable, timestamped Markdown transcript by preferring existing subtitles and falling back to local Whisper transcription, with optional Traditional-to-Simplified Chinese conversion and Obsidian-friendly output.1MIT