Skip to main content

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

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

Quick start (recommended)

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

Metadata

Release files for youtube-summarize 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for youtube-summarize 0.6.0
File Size Uploaded
youtube_summarize-0.6.0.tar.gz 10.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for youtube-summarize 0.6.0
File Interpreter ABI Platform
youtube_summarize-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 22.8 kB

Release files / youtube_summarize-0.6.0.tar.gz

Download URL youtube_summarize-0.6.0.tar.gz
Size 10.7 kB
Tags Source
SHA-256 checksum
How to use checksums
687b0c9d1f173233ab6056b8d650d943184168c27c5cadd7135cc5ad38a1332d
BLAKE2b-256 checksum
How to use checksums
809b22e9967d6e4e1cb25258cb0f2ad13f2a0167581f70782dfa8f24d56f696e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 30, 2026.

Transparency log

Release files / youtube_summarize-0.6.0-py3-none-any.whl

Download URL youtube_summarize-0.6.0-py3-none-any.whl
Size 12.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9ee1e6150e59b78456c5bb6f447ca302260d4e78408e45da088653ae6d7fb3c3
BLAKE2b-256 checksum
How to use checksums
0236173681dc2bcede1866728b0a92f8e9cfc9f7a2f4ca42465714a6eae4d1d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page