youtube-transcript-mcp
Provides tools for retrieving YouTube video transcripts, fetching video metadata (title, channel, thumbnail), searching within transcripts with timestamps, and generating chapter summaries from transcript content.
Click on "Install 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., "@youtube-transcript-mcpsummarize the key points from this YouTube video: https://youtu.be/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.
youtube-transcript-mcp
An MCP server that gives a coding agent the ability to read and search YouTube video transcripts. No API key, no Google account, nothing to sign up for. It pulls captions through YouTube's public endpoints and adds one small thing that a raw transcript dump does not give you: chapter summaries.
This started as a small tool for my own use. I kept hitting conversations that contained a YouTube link and needed to know what the video actually said, and re-pasting transcripts around was wasting time. It became a reusable server so that anything running on the Model Context Protocol could just ask.
What it does
Four tools.
get_transcript(video_url_or_id, languages=["en"], include_timestamps=False)grabs the full transcript as plain text. It accepts a full YouTube URL (watch?v=, youtu.be, /embed/, /shorts/, /live/) or a bare 11-character video ID.get_video_metadata(video_url_or_id)returns title, channel name, channel URL and thumbnail via YouTube's no-auth oEmbed endpoint. It deliberately does not return upload date or full description, because those need an official Data API key and the whole point here is that you do not need one.search_transcript(video_url_or_id, query, languages=["en"])finds the segments matching a keyword or phrase, case-insensitive, each with a [mm:ss] timestamp so the model can point at where in the video something was said.summarize_chapters(video_url_or_id, gap_seconds=4.0, min_chunk_seconds=45.0, languages=["en"])splits the transcript into rough time-blocked chunks at natural pauses and returns them so an agent can summarize section by section instead of swallowing one giant blob. It is a heuristic, not YouTube's real chapter data.
All tools return a plain string, including errors (for example "Error: captions are disabled for this video"). No exceptions surface to the calling agent, and no stack traces leak out.
Related MCP server: youtube-mcp
What it deliberately does not do
It does not work on videos with captions disabled, private or unavailable videos, or live streams without captions. It says so instead of guessing.
It does not depend on the YouTube Data API. You cannot get upload dates or full descriptions without one, by design.
It does not cache. Two calls against the same video re-fetch both times. Fine for the tool's actual use. Add caching if you ever need it at volume.
Setup
Requires Python 3.11+ and uv.
uv syncRun it standalone to confirm it starts:
uv run server.pyIt sits waiting for MCP stdio input, so it will appear to do nothing until a client connects. That is normal. Ctrl+C to exit.
Registering with an MCP client
Add it to your client's MCP settings. The server is invoked with stdio, so the configuration is a command line. Using Claude CLI as the example:
claude mcp add youtube-transcript -- uv --directory /absolute/path/to/youtube-transcript-mcp run server.pyOr in the JSON config:
{
"mcpServers": {
"youtube-transcript": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/youtube-transcript-mcp", "run", "server.py"]
}
}
}Notes earned the hard way
Only videos with captions (auto-generated or manual) work. A video without captions returns a clear error, which is a deliberate choice: an empty result reads like a quiet failure, an error names it.
The language list matters.
languages=["en"]gets the English track when one exists. If a channel uploads in another language only, pass that code.Pin
mcp>=1.28.1but stay below 2.0. mcp 2.x renamedmcp.server.fastmcpand the import breaks silently at server start. You want the version that actually loads.
License
MIT. See LICENSE.
This server cannot be installed
Maintenance
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
- Alicense-qualityCmaintenanceEnables AI agents to fetch transcripts, metadata, and download videos/audio from YouTube without API keys.27MIT
- AlicenseAqualityDmaintenanceEnables AI tools to access YouTube content, including transcript extraction, video/channel info, and search.420MIT
- Alicense-qualityDmaintenanceEnables AI agents to search, watch, summarize, clip, and extract transcripts from YouTube videos, all without needing an API key or leaving the chat.1345Apache 2.0
- Flicense-qualityDmaintenanceEnables LLMs to interact with YouTube videos by fetching transcripts, summarizing content, and answering questions based on video context.
Related MCP Connectors
💯 The fastest YouTube transcript + YouTube search MCP for AI agents. Try for free.
Fetch transcripts, subtitles, chapters, metadata and frames from YouTube and 10+ video platforms
Provide token-optimized, structured YouTube data to enhance your LLM applications. Access efficien…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/luigimasango-dev/youtube-transcript-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server