{
  "markdown": "# youtube-summarize\n\nMCP server that fetches YouTube video transcripts and optionally summarizes them.\n\n![Demo — summarizing a YouTube video in Claude](assets/claude-usage-example.gif)\n\n## Features\n\n- **Fetch transcripts** in multiple formats (text, JSON, SRT, WebVTT, pretty-print)\n- **Video metadata** — title, description, channel, upload date, duration, views, chapters (via yt-dlp)\n- **Optional timestamps** in plain-text transcripts\n- **Summarize videos** — returns transcript with the prompt clearly broken out for human review before the LLM acts on it\n- **List playlist videos** — fast enumeration of any public playlist with optional sorting\n- **Search videos** — clean ranked results with sort and filter options, without the ads, Shorts shelves, and personalized recommendations of the YouTube website\n- **List available languages** for any video's transcripts\n- **Flexible URL parsing** — accepts full YouTube URLs (`youtube.com/watch?v=`, `youtu.be/`, `youtube.com/embed/`, `youtube.com/shorts/`) or bare video IDs\n- **Multi-language support** — request transcripts in specific languages with fallback priority\n\n## Tools\n\n### `get_transcript`\n\nFetch 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.\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `url` | string | *required* | YouTube video URL or video ID |\n| `languages` | string[] | `[\"en\"]` | Preferred languages in priority order |\n| `format` | string | `\"text\"` | Output format: `text`, `json`, `pretty`, `webvtt`, `srt` |\n| `preserve_formatting` | boolean | `false` | Keep HTML formatting tags in the transcript |\n| `include_timestamps` | boolean | `false` | When `true` with `format=\"text\"`, prefix each line with `[HH:MM:SS]`. Ignored for other formats (they already include timestamps). |\n| `include_metadata` | boolean | `true` | Prepend a `[METADATA]` block before the transcript. Pass `false` for transcript-only output. |\n\n### `summarize_transcript`\n\nFetch 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.\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `url` | string | *required* | YouTube video URL or video ID |\n| `prompt` | string | *(default prompt)* | Custom summarization instructions |\n| `languages` | string[] | `[\"en\"]` | Preferred languages in priority order |\n| `include_timestamps` | boolean | `false` | Prefix each transcript line with `[HH:MM:SS]`. |\n| `include_metadata` | boolean | `true` | Include a `[VIDEO]` block with title, channel, published, duration, views, and description. |\n\n### `get_video_metadata`\n\nFetch metadata (title, description, channel, upload date, duration, views, tags, chapters, etc.) for a YouTube video. Backed by yt-dlp.\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `url` | string | *required* | YouTube video URL or video ID |\n\n### `list_playlist_videos`\n\nList 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.\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `url` | string | *required* | YouTube playlist URL (with `?list=...`) or bare playlist ID |\n| `limit` | integer | `500` | Maximum videos to return |\n| `sort_by` | string | `\"index\"` | One of: `index` (playlist order), `title`, `duration`, `views`. `upload_date` is not supported. |\n| `order` | string | `\"asc\"` | `asc` or `desc` |\n\n### `search_videos`\n\nSearch 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.\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `query` | string | *required* | Search terms |\n| `limit` | integer | `10` | Maximum results to return |\n| `sort_by` | string | `\"relevance\"` | One of: `relevance`, `date` (newest first), `views`, `rating` |\n| `uploaded` | string | `\"any\"` | Filter by upload time: `any`, `hour`, `today`, `week`, `month`, `year` |\n| `duration` | string | `\"any\"` | Filter by length: `any`, `short` (<4 min), `medium` (4–20 min), `long` (>20 min) |\n\n### `list_transcripts`\n\nList available transcript languages for a video.\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `url` | string | *required* | YouTube video URL or video ID |\n\n## Installation\n\n### Quick start (recommended)\n\n```bash\nuvx youtube-summarize\n```\n\n### Claude Desktop\n\nAdd to your `claude_desktop_config.json`:\n\n- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- Windows: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"youtube-summarize\": {\n      \"command\": \"uvx\",\n      \"args\": [\"youtube-summarize\"]\n    }\n  }\n}\n```\n\n### Claude Code\n\n```bash\nclaude mcp add youtube-summarize -- uvx youtube-summarize\n```\n\n### Other MCP clients\n\nRun the server over stdio:\n\n```bash\nuvx youtube-summarize\n```\n\n## Prerequisites\n\n- Python 3.13+\n- [uv](https://docs.astral.sh/uv/) package manager\n\n## Development\n\n```bash\n# Install dependencies\nuv sync\n\n# Launch the MCP inspector (web UI for testing tools)\nuv run mcp dev main.py\n```\n\n## License\n\nMIT\n\n---\n\nmcp-name: io.github.zlatkoc/youtube-summarize\n",
  "bytes": 5920,
  "sha": "97f0f32791367730664aad4f2cace959df954c377d374a5ca9b51cf84e5645fc",
  "repo_slug": "zlatkoc/youtube-summarize",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_zlatkoc_youtube_summarize_2360ebb2/readme"
}