Skip to main content
Glama
alex2zimmermann-ux

YouTube Transcript MCP Server

YouTube Transcript MCP Server

PyPI version Python 3.11+ License: MIT Smithery

An MCP (Model Context Protocol) server that extracts, searches, and analyzes YouTube video transcripts. Works with Claude Desktop, Cursor, and any MCP-compatible client.

Features

  • Get Transcript - Extract full transcript from any YouTube video

  • Search Transcript - Find specific keywords with surrounding context

  • Transcript Summary - Get time-chunked transcript for easier analysis

  • Batch Processing - Process up to 10 videos at once

Related MCP server: YouTube Insights MCP Server

Installation

pip install yt-transcript-mcp

From source

git clone https://github.com/alex2zimmermann-ux/yt-transcript-mcp
cd yt-transcript-mcp
pip install .

Configuration

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "youtube-transcript": {
      "command": "yt-transcript-mcp",
      "env": {
        "YT_MCP_MODE": "standalone"
      }
    }
  }
}

Environment Variables

Variable

Default

Description

YT_MCP_MODE

standalone

standalone or backend

YT_MCP_BACKEND_URL

http://localhost:8300

Backend service URL

YT_MCP_BACKEND_API_KEY

-

API key for backend

YT_MCP_CACHE_MAX_SIZE

100

Max cache entries

YT_MCP_CACHE_TTL_SECONDS

3600

Cache TTL in seconds

YT_MCP_RATE_LIMIT_PER_MINUTE

30

Rate limit

YT_MCP_TRANSPORT

stdio

stdio or streamable-http

Modes

Standalone (default)

Uses youtube-transcript-api directly. Lightweight, no external dependencies. Best for marketplace deployment.

Backend

Connects to a running transcript service (FastAPI) that supports cookies, yt-dlp, and Whisper fallback. Best for premium/self-hosted usage.

Tools

get_transcript

Get the transcript of a YouTube video.

Parameters:

  • url (required) - YouTube URL or video ID

  • language (optional, default: "en") - Language code

  • format (optional, default: "text") - "text", "segments", or "both"

search_transcript

Search for keywords in a video transcript.

Parameters:

  • url (required) - YouTube URL or video ID

  • query (required) - Search term

  • language (optional, default: "en")

  • context_segments (optional, default: 1) - Surrounding segments to include

get_transcript_summary

Get transcript in time chunks for analysis.

Parameters:

  • url (required) - YouTube URL or video ID

  • language (optional, default: "en")

  • chunk_minutes (optional, default: 5)

batch_transcripts

Process multiple videos at once.

Parameters:

  • urls (required) - List of YouTube URLs or IDs (max 10)

  • language (optional, default: "en")

Docker

# Standalone
docker compose --profile standalone up

# Backend
YT_MCP_BACKEND_API_KEY=your-key docker compose --profile backend up

Development

python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest tests/ -v --cov

License

MIT

Available Tools

4 tools
batch_transcriptsA
Read-only

Get transcripts for multiple YouTube videos in a single request (max 10 videos).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesList of YouTube video URLs or IDs to process (maximum 10 videos per batch)
languageNoISO 639-1 language code for all transcripts (e.g. en, de, es, fr)en

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering safety and scope. The description adds useful context about the batch limit ('max 10 videos'), which is not in the annotations. However, it does not disclose other behavioral traits like error handling, rate limits, or performance implications for large batches, limiting added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('Get transcripts for multiple YouTube videos') and includes essential constraints ('in a single request', 'max 10 videos'). Every word earns its place with no redundancy or wasted information, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (batch processing with limits), rich annotations (safety and scope covered), and existence of an output schema (reducing need to describe return values), the description is mostly complete. It covers the batch nature and limit, but could improve by mentioning prerequisites (e.g., video availability) or error scenarios, leaving minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with parameters 'urls' and 'language' well-documented in the schema. The description implies batch processing with a maximum limit, but does not add significant meaning beyond what the schema provides, such as format details for URLs or language code examples. Baseline 3 is appropriate given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get transcripts') and resource ('for multiple YouTube videos'), distinguishing it from sibling tools like get_transcript (single video) and get_transcript_summary (summaries rather than full transcripts). It explicitly mentions the batch capability and maximum limit, making the purpose unambiguous and differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('multiple YouTube videos in a single request') and includes a constraint ('max 10 videos'), which helps differentiate it from get_transcript for single videos. However, it does not explicitly state when NOT to use it or mention alternatives like search_transcript for searching within transcripts, leaving some guidance gaps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_transcriptA
Read-only

Get the full transcript of a YouTube video in the specified language and format.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesYouTube video URL or video ID (e.g. https://youtube.com/watch?v=dQw4w9WgXcQ or just dQw4w9WgXcQ)
languageNoISO 639-1 language code for the transcript (e.g. en, de, es, fr, ja, ko)en
formatNoOutput format: text for plain text, segments for timestamped segments, both for combined outputtext

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, indicating safe, non-destructive operations with open-world assumptions. The description adds value by specifying the output format options (text, segments, both), which is useful context beyond annotations. No contradictions with annotations are present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that efficiently conveys the tool's purpose and key parameters. It is front-loaded with essential information and avoids unnecessary elaboration, making it easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, rich annotations (covering safety and world assumptions), and the presence of an output schema (which handles return values), the description is complete enough. It covers the core functionality and parameters without redundancy, suiting the context provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with detailed descriptions for each parameter (e.g., URL formats, language codes, format options). The description mentions language and format parameters but does not add significant semantic details beyond what the schema provides, aligning with the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get'), resource ('full transcript of a YouTube video'), and scope ('in the specified language and format'). It distinguishes from siblings like 'get_transcript_summary' (which provides summaries) and 'search_transcript' (which searches within transcripts) by emphasizing retrieval of the complete transcript.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for obtaining full transcripts, but does not explicitly state when to use this tool versus alternatives like 'batch_transcripts' (for multiple videos) or 'get_transcript_summary' (for summaries). It provides context through parameter specifications but lacks explicit guidance on tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_transcript_summaryA
Read-only

Get a transcript organized into time-based chunks for easier analysis of long videos.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesYouTube video URL or video ID to summarize
languageNoISO 639-1 language code for the transcript (e.g. en, de, es, fr)en
chunk_minutesNoSize of each time chunk in minutes for grouping transcript segments

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, non-destructive, and open-world behavior, so the description adds value by specifying the time-based chunking output format and its purpose for analysis. It does not contradict annotations, and it provides useful context about the tool's output structure beyond what annotations cover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that efficiently conveys the tool's purpose and key feature (time-based chunks). It is front-loaded with the main action and avoids unnecessary words, making it highly concise and effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, rich annotations (read-only, non-destructive, open-world), high schema coverage, and presence of an output schema, the description is complete enough. It explains the output format (time-based chunks) and purpose, which complements the structured data without redundancy.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the description does not need to detail parameters. It mentions 'time-based chunks' which aligns with the 'chunk_minutes' parameter, but adds no additional semantic meaning beyond what the schema provides. Baseline 3 is appropriate given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get a transcript organized into time-based chunks') and resource ('transcript'), distinguishing it from siblings like 'get_transcript' (likely raw transcript) and 'search_transcript' (search functionality). It explicitly mentions the purpose of easier analysis for long videos, which adds valuable context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for analyzing long videos by organizing transcripts into chunks, but it does not explicitly state when to use this tool versus alternatives like 'get_transcript' or 'search_transcript'. No exclusions or prerequisites are mentioned, leaving some ambiguity about optimal use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_transcriptA
Read-only

Search for keywords or phrases in a YouTube video transcript and return matching segments with timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesYouTube video URL or video ID to search in
queryYesSearch query string (case-insensitive keyword or phrase to find in the transcript)
languageNoISO 639-1 language code for the transcript (e.g. en, de, es, fr)en
context_segmentsNoNumber of surrounding transcript segments to include as context around each match

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, covering safety and scope. The description adds valuable context about case-insensitive search and timestamp returns, which aren't covered by annotations. However, it doesn't mention potential limitations like transcript availability or search performance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that efficiently communicates the tool's core functionality without any wasted words. It's front-loaded with the main purpose and includes essential details about the output format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of annotations covering safety/scope, 100% schema coverage, and an output schema (which handles return values), the description provides adequate context. It could be slightly more complete by mentioning transcript availability constraints or search result formatting, but covers the essential purpose well.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters. The description mentions 'keywords or phrases' which aligns with the 'query' parameter but doesn't add meaningful semantics beyond what's already in the schema descriptions. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Search for keywords or phrases'), the resource ('in a YouTube video transcript'), and the output ('return matching segments with timestamps'). It distinguishes from sibling tools like 'get_transcript' (which retrieves full transcripts) and 'get_transcript_summary' (which provides summaries) by focusing on targeted search functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for keyword/phrase searches in transcripts, but doesn't explicitly state when to use this tool versus alternatives like 'get_transcript' for full transcripts or 'batch_transcripts' for multiple videos. It provides basic context but lacks explicit guidance on tool selection or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv1.0.0
    • First observedbatch_transcripts
    • First observedget_transcript
    • First observedget_transcript_summary
    • First observedsearch_transcript

TDQS

A4.4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: batch_transcripts handles multiple videos, get_transcript retrieves a full transcript, get_transcript_summary provides chunked analysis, and search_transcript finds specific segments. There is no overlap in functionality, making tool selection straightforward for an agent.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., get_transcript, search_transcript) with clear, descriptive verbs. The naming is uniform across all four tools, enhancing readability and predictability.

Tool Count5/5

With 4 tools, the server is well-scoped for its purpose of YouTube transcript retrieval and analysis. Each tool serves a unique and essential function, avoiding bloat while covering core operations like retrieval, summarization, and search.

Completeness5/5

The tool set provides complete coverage for the domain: it supports single and batch transcript retrieval, summarization for long videos, and search capabilities. There are no obvious gaps, as all key workflows for transcript analysis are addressed without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Extracts YouTube video metadata, titles, and descriptions along with transcripts generated from subtitles or OpenAI Whisper speech-to-text. This server enables users to retrieve and analyze detailed video content directly within MCP-compatible environments.
    1
    9 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server that fetches YouTube video transcripts and optionally summarizes them. Supports multiple transcript formats (text, JSON, SRT, WebVTT), multi-language retrieval, and flexible YouTube URL parsing.
    6
    37 PyPI
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that extracts YouTube video transcripts (including metadata) as Markdown, enabling AI to summarize and discuss video content without watching it.
    MIT