Skip to main content
Glama

youtube-summarize

MCP server that fetches YouTube video transcripts and optionally summarizes them.

Demo — summarizing a YouTube video in Claude

Features

  • Fetch transcripts in multiple formats (text, JSON, SRT, WebVTT, pretty-print)

  • Video metadata — title, description, channel, upload date, duration, views, chapters (via yt-dlp)

  • Optional timestamps in plain-text transcripts

  • Summarize videos — returns transcript with the prompt clearly broken out for human review before the LLM acts on it

  • List playlist videos — fast enumeration of any public playlist with optional sorting

  • Search videos — clean ranked results with sort and filter options, without the ads, Shorts shelves, and personalized recommendations of the YouTube website

  • List available languages for any video's transcripts

  • Flexible URL parsing — accepts full YouTube URLs (youtube.com/watch?v=, youtu.be/, youtube.com/embed/, youtube.com/shorts/) or bare video IDs

  • Multi-language support — request transcripts in specific languages with fallback priority

Related MCP server: ytt-mcp

Tools

get_transcript

Fetch a YouTube video's transcript. By default the response is prefixed with a [METADATA] block (title, channel, published, duration, views, description); pass include_metadata=false for transcript-only output.

Parameter

Type

Default

Description

url

string

required

YouTube video URL or video ID

languages

string[]

["en"]

Preferred languages in priority order

format

string

"text"

Output format: text, json, pretty, webvtt, srt

preserve_formatting

boolean

false

Keep HTML formatting tags in the transcript

include_timestamps

boolean

false

When true with format="text", prefix each line with [HH:MM:SS]. Ignored for other formats (they already include timestamps).

include_metadata

boolean

true

Prepend a [METADATA] block before the transcript. Pass false for transcript-only output.

summarize_transcript

Fetch a transcript and return it with summarization instructions. The response is structured into clearly-labeled sections ([INSTRUCTIONS], [PROMPT_SOURCE], [VIDEO], [METADATA], [TRANSCRIPT]) so a human can review the prompt before letting the LLM act on it.

Parameter

Type

Default

Description

url

string

required

YouTube video URL or video ID

prompt

string

(default prompt)

Custom summarization instructions

languages

string[]

["en"]

Preferred languages in priority order

include_timestamps

boolean

false

Prefix each transcript line with [HH:MM:SS].

include_metadata

boolean

true

Include a [VIDEO] block with title, channel, published, duration, views, and description.

get_video_metadata

Fetch metadata (title, description, channel, upload date, duration, views, tags, chapters, etc.) for a YouTube video. Backed by yt-dlp.

Parameter

Type

Default

Description

url

string

required

YouTube video URL or video ID

list_playlist_videos

List the videos in a YouTube playlist (title, ID, channel, duration, views, URL). Per-video metadata is intentionally lean so the call stays fast even for large playlists; call get_video_metadata with a specific video ID for full detail.

Parameter

Type

Default

Description

url

string

required

YouTube playlist URL (with ?list=...) or bare playlist ID

limit

integer

500

Maximum videos to return

sort_by

string

"index"

One of: index (playlist order), title, duration, views. upload_date is not supported.

order

string

"asc"

asc or desc

search_videos

Search YouTube for videos and return a clean ranked list (title, ID, channel, duration, views, URL) — only actual videos, with no ads, recommendation shelves, or personalization. Relevance ordering still comes from YouTube's backend. Pair with get_transcript or summarize_transcript on a result's ID or URL.

Parameter

Type

Default

Description

query

string

required

Search terms

limit

integer

10

Maximum results to return

sort_by

string

"relevance"

One of: relevance, date (newest first), views, rating

uploaded

string

"any"

Filter by upload time: any, hour, today, week, month, year

duration

string

"any"

Filter by length: any, short (<4 min), medium (4–20 min), long (>20 min)

list_transcripts

List available transcript languages for a video.

Parameter

Type

Default

Description

url

string

required

YouTube video URL or video ID

Installation

uvx youtube-summarize

Claude Desktop

Add to your claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "youtube-summarize": {
      "command": "uvx",
      "args": ["youtube-summarize"]
    }
  }
}

Claude Code

claude mcp add youtube-summarize -- uvx youtube-summarize

Other MCP clients

Run the server over stdio:

uvx youtube-summarize

Prerequisites

  • Python 3.13+

  • uv package manager

Development

# Install dependencies
uv sync

# Launch the MCP inspector (web UI for testing tools)
uv run mcp dev main.py

License

MIT


mcp-name: io.github.zlatkoc/youtube-summarize

Available Tools

6 tools
get_transcriptA

Fetch a YouTube video's transcript.

Args: url: YouTube video URL or video ID languages: Preferred languages in priority order (e.g. ["en", "de"]). Defaults to English. format: Output format — one of: text, json, pretty, webvtt, srt preserve_formatting: Keep HTML formatting tags in the transcript text include_timestamps: When True with format="text", prefix each line with [HH:MM:SS]. Ignored for json/srt/webvtt/pretty (those formats already include timestamps). include_metadata: When True (default), prepend a [METADATA] block (title, channel, published, duration, views, description) before the transcript. Pass False for transcript-only output.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
formatNotext
languagesNo
include_metadataNo
include_timestampsNo
preserve_formattingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It explains the behavior of all parameters, including interactions (e.g., 'include_timestamps' ignored for certain formats) and defaults. However, it does not disclose potential failure cases (e.g., invalid URL or unavailable transcript).

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

Conciseness4/5

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

The description is well-structured with a clear opening sentence and a bullet-style Args list. It is informative without excessive verbosity, though the Args section could be slightly condensed.

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 an output schema (not shown), the description does not need to detail return values. It covers all parameters and their behavior comprehensively. Minor missing context includes error handling and prerequisites (e.g., valid URL).

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining all 6 parameters with defaults, accepted values (e.g., format options), and behavioral nuances (e.g., 'include_timestamps' interaction with format). This adds significant meaning beyond the schema's bare titles and defaults.

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 'Fetch a YouTube video's transcript,' which is a specific verb and resource. It distinguishes itself from siblings like 'list_transcripts' (which lists available transcripts) and 'summarize_transcript' (which summarizes).

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 does not explicitly state when to use this tool versus alternatives like 'list_transcripts' or 'summarize_transcript.' It provides parameter details but lacks context on exclusions or prerequisites.

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

get_video_metadataA

Fetch metadata (title, description, channel, upload date, duration, views, chapters, etc.) for a YouTube video.

Args: url: YouTube video URL or video ID

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral aspects such as authentication, rate limits, or error handling. It only lists the metadata fields returned.

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

Conciseness4/5

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

The description is concise with two sentences and a bullet for args, but it could be more structured (e.g., separating description and args more formally).

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 an output schema and sibling tools, the description lists enough fields to understand what is returned. However, missing behavioral details like auth prerequisites.

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

Parameters4/5

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

The description clarifies that the url parameter accepts a YouTube video URL or video ID, adding meaning beyond the schema which only specifies type string. Since schema coverage is 0%, this is valuable.

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?

Description clearly states it fetches metadata for a YouTube video and lists specific fields (title, description, channel, etc.), which distinguishes it from sibling tools like get_transcript and summarize_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?

No explicit when-to-use or when-not-to-use guidance is given; usage is implied by the purpose but lacks differentiation from siblings or exclusions.

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

list_playlist_videosA

List the videos in a YouTube playlist (titles, IDs, channels, durations, views).

Per-video metadata is intentionally lean so the call stays fast even for big playlists. For full metadata on a specific video, call get_video_metadata with that video's ID.

Args: url: YouTube playlist URL (with ?list=...) or bare playlist ID limit: Maximum videos to return (default 500). Pass a smaller value to truncate. sort_by: Sort key — "index" (playlist order, default), "title", "duration", "views". "upload_date" is not supported in this fast-mode tool. order: "asc" (default) or "desc".

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
limitNo
orderNoasc
sort_byNoindex

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Discloses lean/fast behavior and intentionally sparse per-video metadata. Notes that upload_date sorting is unsupported. With no annotations, the description sufficiently informs about the tool's nature, though it could mention auth or rate limits.

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

Conciseness4/5

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

Well-structured with clear opening, rationale, and labeled Args section. Efficiently uses sentences to convey intent and parameter details. Minor improvement would be combining some lines, but overall very concise.

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?

Complete for a listing tool with output schema present: explains return metadata, why it's lean, how to get more detail, and covers all parameters. No gaps given the context signals (4 params, no annotations, output schema).

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

Parameters5/5

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

Adds significant meaning beyond the input schema: explains url format (with ?list= or bare ID), limit usage (default 500, can truncate), available sort keys (including unsupported upload_date), and order options. Schema coverage is 0%, but description covers all parameters.

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?

Description clearly states the tool lists videos in a YouTube playlist and specifies the metadata included (titles, IDs, channels, durations, views). It distinguishes from sibling tool 'get_video_metadata' by noting this is a fast, lean alternative.

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

Usage Guidelines5/5

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

Explicitly guides when to use this tool vs alternatives: 'For full metadata on a specific video, call get_video_metadata with that video's ID.' Also clarifies limitations (no upload_date sort) and suggests truncating with limit.

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

list_transcriptsA

List available transcript languages for a YouTube video.

Args: url: YouTube video URL or video ID

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It omits any information about read-only nature, error handling, authentication needs, or side effects. For a listing tool, basic safety context is missing.

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

Conciseness4/5

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

The description is concise with two short sentences. It is front-loaded with the main action. The parameter documentation is separate but minimal. No wasted words.

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

Completeness3/5

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

Given the presence of an output schema, the description does not need to detail return values. However, it lacks context on prerequisites (e.g., video must exist) and does not guide the agent on when to use this vs. get_transcript. For a simple tool, this is adequate but not comprehensive.

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

Parameters4/5

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

The description adds meaning beyond the input schema by specifying that the url parameter accepts 'YouTube video URL or video ID', which the schema lacks. This clarifies acceptable input formats despite the 0% schema description 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 tool lists available transcript languages for a YouTube video. This verb+resource phrasing distinguishes it from sibling tools like get_transcript (retrieves a specific transcript) and get_video_metadata (metadata).

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 discovering transcript languages before fetching one, but it does not explicitly state when to use this tool versus alternatives like get_transcript or provide any when-not-to-use guidance.

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

search_videosA

Search YouTube for videos and return a clean ranked result list.

Unlike the YouTube website, results contain only actual videos — no ads, recommendation shelves, or personalization. Relevance ordering still comes from YouTube's backend. Pair with get_transcript or summarize_transcript on a result's ID or URL.

Args: query: Search terms limit: Maximum results to return (default 10) sort_by: Result order — "relevance" (default), "date" (newest first), "views", "rating" uploaded: Filter by upload time — "any" (default), "hour", "today", "week", "month", "year" duration: Filter by length — "any" (default), "short" (<4 min), "medium" (4-20 min), "long" (>20 min)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
sort_byNorelevance
durationNoany
uploadedNoany

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Without annotations, the description discloses that results exclude ads and personalization and that relevance ordering comes from YouTube's backend. However, it omits details on rate limits, authentication, error handling, or pagination behavior, leaving gaps in transparency.

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 concise: a brief purpose paragraph followed by a clear argument-style list of parameters. Every sentence adds information, and the structure is front-loaded with the main purpose.

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?

An output schema exists, so return values are handled. The description covers behavior and parameters well, but lacks details on pagination, result limits (beyond default), or edge cases (e.g., no results). Slightly incomplete for a complex tool.

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

Parameters5/5

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

The description provides comprehensive explanations for all five parameters, including default values and allowed options (e.g., sort_by: relevance, date, views, rating). This adds significant value beyond the input schema, which has no parameter descriptions (0% 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 'Search YouTube for videos and return a clean ranked result list,' specifying the verb and resource. It distinguishes from the YouTube website by mentioning no ads or personalization, and the parameter list reinforces the purpose.

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 suggests pairing with get_transcript or summarize_transcript, but does not explicitly mention alternatives among siblings (e.g., list_playlist_videos, get_video_metadata) or when not to use this tool. The guidance is present but limited.

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

summarize_transcriptA

Fetch a YouTube video's transcript and return it with summarization instructions.

The LLM client should use the returned instructions and transcript to produce a summary. The output is structured into clearly-labeled sections so a human can review the prompt before letting the LLM act on it.

Args: url: YouTube video URL or video ID prompt: Custom summarization instructions. If omitted, a default summary prompt is used. languages: Preferred languages in priority order (e.g. ["en", "de"]). Defaults to English. include_timestamps: When True, prefix each transcript line with [HH:MM:SS]. include_metadata: When True (default), include a [VIDEO] block with title, channel, published date, duration, views, and description.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
promptNo
languagesNo
include_metadataNo
include_timestampsNo

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?

With no annotations, the description does carry the burden. It explains that the tool returns instructions and transcript for the LLM to produce a summary, and output is structured. However, it does not disclose potential errors, rate limits, or prerequisites like authentication. The key behavior is transparent but not exhaustive.

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

Conciseness4/5

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

The description is front-loaded with the core action, then uses a clear 'Args' list for parameters. It is slightly verbose but every sentence provides value. Could be tightened slightly but remains effective.

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 five parameters, no annotations, and presence of an output schema, the description covers the main behaviors and parameter details. It explains the output structure but misses error handling or return format specifics (likely covered by output schema). Comprehensive enough for an agent.

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

Parameters5/5

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

Schema description coverage is 0%, but the description includes a detailed 'Args' section explaining each parameter's purpose, defaults, and behavior (e.g., languages in priority order, timestamps format). This adds significant meaning beyond the schema.

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 it fetches a YouTube transcript and returns it with summarization instructions, distinguishing it from siblings like get_transcript which returns raw transcript. The purpose is specific: to provide a meta-output for LLM summarization, not a direct summary.

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 usage is implied from the description (use when you want a summary with instructions), but there is no explicit guidance on when to choose this over get_transcript or other siblings. No exclusions or alternatives are mentioned, leaving the agent to infer.

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. Dates show when Glama detected each change.

  1. 1 tool updatev0.6.0
    • Addedsearch_videos
  2. 4 tool updatesv0.3.0
    • Changedget_transcript2 fields changed
      • addedInput schema / properties / include_metadata
        Added value: +{
        +  "default": true,
        +  "title": "Include Metadata",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / include_timestamps
        Added value: +{
        +  "default": false,
        +  "title": "Include Timestamps",
        +  "type": "boolean"
        +}
    • Addedget_video_metadata
    • Addedlist_playlist_videos
    • Changedsummarize_transcript2 fields changed
      • addedInput schema / properties / include_metadata
        Added value: +{
        +  "default": true,
        +  "title": "Include Metadata",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / include_timestamps
        Added value: +{
        +  "default": false,
        +  "title": "Include Timestamps",
        +  "type": "boolean"
        +}
  3. 3 tool updatesv0.1.0
    • First observedget_transcript
    • First observedlist_transcripts
    • First observedsummarize_transcript

TDQS

A4.2/5.0
Disambiguation5/5

Each tool targets a clear and distinct aspect: listing transcript languages, fetching transcripts, summarizing with instructions, fetching metadata, listing playlist videos, and searching. Overlap between get_transcript and summarize_transcript is clarified by the latter's added summarization step, and descriptions make the difference explicit.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with lowercase snake_case (e.g., list_transcripts, get_transcript, summarize_transcript). The naming is predictable and intuitive.

Tool Count5/5

Six tools cover the core functionality of a YouTube summarization service (transcript retrieval, summarization, metadata, search, playlist listing) without unnecessary redundancy. The scope is well-balanced.

Completeness5/5

The tool surface provides end-to-end coverage: listing available transcripts, fetching them in multiple formats, summarizing with custom prompts, retrieving video metadata, searching videos, and listing playlist contents. No obvious gaps for the stated purpose.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/zlatkoc/youtube-summarize'

If you have feedback or need assistance with the MCP directory API, please join our Discord server