The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the ๐ฏ YouTube Transcript + YouTube Search MCP for AI Agents listing page.
The fastest YouTube transcript + YouTube search MCP for AI agents. Try for free.
12 tools: transcripts, video & channel metadata, video search, channel browsing, in-channel search, playlist extraction, and new-upload polling, for Claude, ChatGPT, Cursor, VS Code, Claude Code, and 20+ clients.
Powering 15M+ transcripts every month ยท 500K+ transcripts processed daily ยท 49ms median response time Trusted in production by youtubetotranscript.com (~11M/mo) and recapio.com (~2.8M/mo).
Most YouTube MCP servers do one thing: pull a single transcript. TranscriptAPI MCP is a full toolkit: transcripts, video search, channel search, channel browsing, playlist extraction, and free RSS-based upload tracking, all from one remote endpoint, all designed for AI agents.
| TranscriptAPI MCP | Typical YouTube MCP | |
|---|---|---|
| Hosting | โ Remote (no local install) | โ Local stdio install |
| Tools | โ 12 tools | โ 1 (transcript only) |
| YouTube search | โ Yes | โ No |
| Channel & playlist extraction | โ Yes | โ No |
| Latest-uploads monitoring (free) | โ Yes | โ No |
| OAuth 2.1 + API key auth | โ Both | โ Usually neither |
| Production scale (15M+ req/mo) | โ Yes | โ Hobbyist scrapers |
| Works on mobile Claude & web Claude | โ Yes | โ No |
| Agent-friendly error messages | โ Yes | โ Bare HTTP codes |
Quick taste:
That single prompt uses 3 of our 12 tools (search_youtube, search_channel_videos, get_youtube_transcript) without you writing a line of code.
This repository root is a conformant Agent Plugins 1.0.0 package: the portable format published 2026-08-06 and supported by ChatGPT, Codex, Cursor, GitHub Copilot, Kiro and VS Code. One install gets you the MCP server and a bundled youtube skill that teaches your agent when to use each tool and how not to waste credits.
VS Code: Command Palette โ Chat: Install Plugin From Source, then paste:
Or register a local clone in settings.json:
Cursor: Customize in the sidebar โ find the plugin โ Install. For a local clone:
Then Developer: Reload Window.
Add to Cursor: MCP server only, no clone. Paste this deeplink into your browser:
ChatGPT, Codex, GitHub Copilot, Kiro, any other client: point your client's plugin mechanism at this repository, or at a local clone. Agent Plugins 1.0.0 standardizes the package format, not installation, so each client owns its own install flow.
The agent calls get_youtube_transcript, gets the full timestamped transcript and summarizes it. No API key to configure: the first call opens an OAuth sign-in (free account, 100 credits, no card). Then try:
There are no credentials in this package: Agent Plugins 1.0.0 forbids embedded secrets, and authorization is client-managed. Verify the package yourself:
Requirements:
- A TranscriptAPI account (sign up free, first 100 credits free)
- An API key from your dashboard OR use OAuth (Claude, ChatGPT)
Recommended: Add a Rule to Auto-Invoke TranscriptAPI
Add this rule to your AI client so you don't need to explicitly ask for transcripts:
One-Click Install:
Manual Configuration:
Go to: Settings โ Features โ MCP โ Add New MCP Server
transcript-apiSSE (Remote)https://transcriptapi.com/mcpOr edit ~/.cursor/mcp.json:
Claude supports adding MCP servers directly via the "Custom Connector" UI.
Quick Setup:
TranscriptAPIhttps://transcriptapi.com/mcpFull Guide: Claude Integration Guide โ
ChatGPT supports OAuth for secure authentication. Enable Developer Mode in ChatGPT settings first.
Quick Setup:
Settings โ Connected Apps โ Addhttps://transcriptapi.com/mcpFull Guide: ChatGPT Integration Guide โ
OpenAI Agent Builder currently requires API Key authentication (OAuth not yet supported).
https://transcriptapi.com/mcpAdd to ~/.codeium/windsurf/mcp_config.json:
In Zed settings.json:
In settings.json under augment.advanced:
In .kilocode/mcp.json:
In Settings โ Tools โ AI Assistant โ MCP:
In ~/.gemini/settings.json:
In ~/.qwen/settings.json:
In mcp.json:
In Plugins โ JSON Config:
In Settings โ AI โ MCP:
In Settings โ Connectors โ Advanced:
Simple and universal. Works with every MCP client.
sk_ prefixSecurity: Store keys in environment variables where possible and never commit them to version control.
Automatic, secure authentication without manual key management.
Dynamic Client Registration (DCR):
Static Client Registration:
Full reference: Authentication docs โ
All 12 tools are exposed automatically once you connect. Successful calls cost 1 credit unless a tool states otherwise below. Failed/rate-limited calls do not consume credits.
Which video tool? Use
get_youtube_video_info(free) to discover transcript languages before fetching a transcript. Useget_video_metadata(1 credit) for view/like counts, publish date, description, duration, tags, or related videos.
get_youtube_transcriptFetch the transcript for any YouTube video, as markdown (with metadata) or structured JSON. Drop the output straight into summarizers, search indexes, or AI pipelines.
| Parameter | Type | Default | Description |
|---|---|---|---|
video_url | string | required | YouTube URL (full or short) or 11-char video ID |
send_metadata | boolean | true | Include video title, author, thumbnail |
format | string | "text" | "text" (markdown) or "json" |
include_timestamp | boolean | true | Add timestamps to each segment |
Cost: 1 credit per successful request.
Example output (markdown):
Example output (JSON):
get_youtube_video_info ยท FREEBasic metadata (title, author, thumbnail) plus the list of available transcript languages: call this before get_youtube_transcript to pick a language.
| Parameter | Type | Default | Description |
|---|---|---|---|
video_url | string | required | YouTube URL (full or short) or 11-char video ID |
Cost: Free.
For view/like counts, publish date, description, duration, tags, or related videos, use get_video_metadata instead.
get_video_metadataRich video metadata without needing captions: title, view/like-count text, publish date, structured description + links, uploading-channel summary, and thumbnails. Optional include extras pull heavier player-sourced data (duration, category, tags, caption-track inventory) and related videos.
| Parameter | Type | Default | Description |
|---|---|---|---|
video_url | string | required | YouTube URL (full or short) or 11-char video ID |
include | string[] | none | Extras: "details" (duration, category, tags, caption tracks) and/or "related" (related videos) |
Cost: 1 credit per successful request.
Example prompt:
search_youtubeSearch YouTube for videos, channels, playlists, or movies. Filter by type, sort, upload date, or duration, and paginate with a continuation token, perfect for discovery, research, and building content pipelines.
| Parameter | Type | Default | Description |
|---|---|---|---|
query | string | required (first call) | Search query |
search_type | string | "video" | "video", "channel", "playlist", or "movie" (first call only) |
sort | string | "relevance" | First-page sort: "relevance" or "views" |
upload_date | string | none | First-page upload window (videos only): hour, today, week, month, year |
duration | string | none | First-page duration bucket (videos only): short (under 4m), medium (4-20m), long (over 20m) |
continuation | string | null | Token from a prior call for next page |
Cost: 1 credit per page (~20 results per page).
Example prompt:
get_channel_infoA channel's profile: title, @handle, verified flag, subscriber/video-count text, description, keywords, tags, thumbnails, banners, and the tabs it exposes. Not paginated.
| Parameter | Type | Default | Description |
|---|---|---|---|
channel | string | required | @handle, channel URL, or UCโฆ channel ID |
Cost: 1 credit per successful request.
Check the returned tabs before calling get_channel_sections or list_channel_videos with a tab.
get_channel_latest_videos ยท FREEGet the ~15 most recent uploads from any channel via RSS. Perfect for monitoring, daily recaps, or triggering downstream pipelines.
| Parameter | Type | Default | Description |
|---|---|---|---|
channel | string | required | @handle, channel URL, or UCโฆ channel ID |
Cost: Free.
Example prompt:
search_channel_videosSearch inside one specific channel for videos matching a query. Great for researching a creator's content or finding niche topics in large channels.
| Parameter | Type | Default | Description |
|---|---|---|---|
channel | string | required | @handle, channel URL, or UCโฆ ID |
query | string | required | Query to search within the channel |
continuation | string | null | Pagination token |
Cost: 1 credit per page (~30 results per page).
Example prompt:
list_channel_videosList a channel's feed with pagination. Use tab to choose the uploads feed (default, ~100/page), Shorts, or live streams (~48/page), and the optional sort to order the Videos tab by latest, popular, or oldest. Ideal for building databases, bulk transcript extraction, or auditing a channel's full content library.
| Parameter | Type | Default | Description |
|---|---|---|---|
channel | string | required (first call) | @handle, channel URL, or UCโฆ ID |
tab | string | "videos" | Which feed: videos (uploads), shorts, or streams (live). Repeat the same tab when paginating. |
sort | string | null | latest, popular, or oldest. Omit for the uploads feed. Repeat the same value when paginating. |
continuation | string | null | Pagination token |
Sorting. Add sort=latest, popular, or oldest to channel/videos to get a channel's videos in the order you want, for example its most-popular uploads first. A sorted page returns about 30 videos (an unsorted page returns about 100), and every page costs the same 1 credit.
Sorted results come from YouTube's Videos tab (long-form only); Shorts have their own tab=shorts feed.
When paging, send the same sort on each request.
Every item carries members_only: true only when YouTube badges the video "Members only", and those items have no viewCountText, because YouTube does not publish view counts for membership content. It is always false on the uploads feed, on tab: "shorts", and on playlists.
Items from tab: "streams" carry lengthText and publishedTimeText (for example Streamed 2 years ago, or LIVE and a watching count while the stream is live). tab: "shorts" returns null for both, because YouTube's Shorts grid publishes neither a duration nor a publish date. On the channel-tab feeds (tab: "videos" with sort, tab: "shorts", tab: "streams") channelId, channelTitle, channelHandle and index are null.
Cost: 1 credit per page.
list_channel_playlistsPaginated list of the playlists on a channel (id, title, URL, video-count text, thumbnails). Pass a returned playlist id to list_playlist_videos to get its videos.
| Parameter | Type | Default | Description |
|---|---|---|---|
channel | string | required (first call) | @handle, channel URL, or UCโฆ ID |
continuation | string | null | Pagination token |
Cost: 1 credit per page.
list_channel_postsPaginated list of a channel's community (Posts tab) content: text, publish time, like-count text, and attachments (image, multi-image, video, playlist, or poll). Channels without a community tab return an empty results list, not an error.
| Parameter | Type | Default | Description |
|---|---|---|---|
channel | string | required (first call) | @handle, channel URL, or UCโฆ ID |
continuation | string | null | Pagination token |
Cost: 1 credit per page.
get_channel_sectionsThe curated, grouped sections of a channel page: titled shelves of videos, playlists, shorts, or featured channels, in the channel's own order. Not paginated.
| Parameter | Type | Default | Description |
|---|---|---|---|
channel | string | required | @handle, channel URL, or UCโฆ ID |
tab | string | "featured" | Which curated page: featured (Home), podcasts, or releases |
Cost: 1 credit per successful request.
podcasts and releases exist only on channels that have them (empty results otherwise).
list_playlist_videosGet every video in a YouTube playlist (PL/UU/LL/FL/OL IDs supported). Process entire courses, lecture series, or curated collections in a single call.
| Parameter | Type | Default | Description |
|---|---|---|---|
playlist | string | required (first call) | Playlist URL or playlist ID |
continuation | string | null | Pagination token |
Cost: 1 credit per page (~100 results per page).
| Use Case | Example Prompt |
|---|---|
| ๐ Summarize a video | "Summarize the key points from this video: [URL]" |
| ๐ Research a topic | "Search YouTube for the 5 most-watched videos on neural radiance fields; summarize each." |
| ๐ง Study notes | "Create study notes from this MIT lecture series playlist: [PLAYLIST URL]" |
| โ๏ธ Compare perspectives | "Compare arguments in these two videos: [URL1] [URL2]" |
| ๐ Translate | "Translate this video's transcript to Spanish: [URL]" |
| โ๏ธ Repurpose content | "Turn this video into a 1,500-word blog post: [URL]" |
| ๐ก Monitor a channel | "Each morning, list new uploads from @TED and tell me which to watch." |
| ๐๏ธ Build a content database | "Pull every video from @NASA and store title + transcript." |
| ๐ฏ Competitor analysis | "Search inside @NASA for any video about [a specific mission or topic] and summarize the takeaways." |
| Plan | Price | Credits | Rate Limit |
|---|---|---|---|
| Free | $0 (one-time) | 100 | 60 req/min |
| Starter Monthly | $5/month | 1,000/month | 200 req/min |
| Starter Annual | $54/year ($4.50/mo) | 1,000/month | 300 req/min |
get_channel_latest_videos is free (no credits charged).sk_Retry-After headerBuilding an app instead of an agent? The same backend ships as a JSON REST API.
| MCP | REST API | |
|---|---|---|
| Best for | AI assistants & agents | Apps & backend services |
| Setup | Add a URL | Code integration |
| Get started | This README | API docs โ ยท Swagger โ |
Base URL: https://transcriptapi.com/api/v2
This server is published to the official Model Context Protocol Registry under the name:
ยฉ 2026 Zero Point Studio d.o.o. ยท Released under the MIT License