A remote MCP that gives agents six YouTube operations: transcript retrieval, video search, channel browsing, in-channel search, playlist extraction, and RSS-based upload monitoring. It's built on TranscriptAPI's production infrastructure, which processes 500K+ transcripts daily with 49ms median response time. Works over streamable HTTP, so you can use it from Claude web, mobile, Cursor, VS Code, ChatGPT, and other clients without local installation. Supports both OAuth 2.1 and API key auth. The value proposition is straightforward: most YouTube MCPs scrape a single transcript, this one exposes the full YouTube data layer agents actually need for content research, channel analysis, and monitoring workflows. Free tier includes 100 credits to start.
Public tool metadata for what this MCP can expose to an agent.
YOUTUBE_GET_CHANNEL_ACTIVITIESGets recent activities from a YouTube channel including video uploads, playlist additions, likes, and other channel events.6 paramsGets recent activities from a YouTube channel including video uploads, playlist additions, likes, and other channel events.
partstringchannelIdstringpageTokenstringmaxResultsintegerpublishedAfterstringpublishedBeforestringYOUTUBE_GET_CHANNEL_ID_BY_HANDLERetrieves the YouTube Channel ID for a specific YouTube channel handle.1 paramsRetrieves the YouTube Channel ID for a specific YouTube channel handle.
channel_handlestringYOUTUBE_GET_CHANNEL_STATISTICSGets detailed statistics for YouTube channels including subscriber counts, view counts, and video counts.2 paramsGets detailed statistics for YouTube channels including subscriber counts, view counts, and video counts.
idstringpartstringYOUTUBE_GET_VIDEO_DETAILS_BATCHRetrieves multiple YouTube video resource parts in a single batch call. Use when you need cohort-level metrics for many videos to reduce quota usage and latency.3 paramsRetrieves multiple YouTube video resource parts in a single batch call. Use when you need cohort-level metrics for many videos to reduce quota usage and latency.
hlstringidarraypartsarrayYOUTUBE_LIST_CAPTION_TRACKRetrieves a list of caption tracks for a YouTube video, returning an empty list if no captions exist or failing if the video ID is invalid or not found.2 paramsRetrieves a list of caption tracks for a YouTube video, returning an empty list if no captions exist or failing if the video ID is invalid or not found.
partstringvideoIdstringYOUTUBE_LIST_CHANNEL_VIDEOSLists videos from a specified YouTube channel, ensuring results are of `type: 'video'`.4 paramsLists videos from a specified YouTube channel, ensuring results are of `type: 'video'`.
partstringchannelIdstringpageTokenstringmaxResultsintegerYOUTUBE_LIST_PLAYLIST_ITEMSTool to list videos in a playlist, with pagination support. Use when walking through a channel's uploads playlist to enumerate all videos.7 paramsTool to list videos in a playlist, with pagination support. Use when walking through a channel's uploads playlist to enumerate all videos.
partstringfieldsstringvideoIdstringpageTokenstringmaxResultsintegerplaylistIdstringonBehalfOfContentOwnerstringYOUTUBE_LIST_USER_PLAYLISTSRetrieves playlists owned by the authenticated user, implicitly using mine=True.3 paramsRetrieves playlists owned by the authenticated user, implicitly using mine=True.
partstringpageTokenstringmaxResultsintegerYOUTUBE_LIST_USER_SUBSCRIPTIONSRetrieves the authenticated user's YouTube channel subscriptions, allowing specification of response parts and pagination.3 paramsRetrieves the authenticated user's YouTube channel subscriptions, allowing specification of response parts and pagination.
partstringpageTokenstringmaxResultsintegerYOUTUBE_LOAD_CAPTIONSDownloads a specific YouTube caption track, which must be owned by the authenticated user, and returns its content as text. Note: This action requires you to own the video (YouTube Data API v3 restriction). Non-owned videos will return 403 Forbidden errors, including many auto...2 paramsDownloads a specific YouTube caption track, which must be owned by the authenticated user, and returns its content as text. Note: This action requires you to own the video (YouTube Data API v3 restriction). Non-owned videos will return 403 Forbidden errors, including many auto...
idstringtfmtstringYOUTUBE_SEARCH_YOU_TUBESearches YouTube for videos, channels, or playlists using a query term, returning the raw API response.5 paramsSearches YouTube for videos, channels, or playlists using a query term, returning the raw API response.
qstringpartstringtypestringpageTokenstringmaxResultsintegerYOUTUBE_SUBSCRIBE_CHANNELSubscribes the authenticated user to a specified YouTube channel, identified by its unique `channelId` which must be valid and existing.1 paramsSubscribes the authenticated user to a specified YouTube channel, identified by its unique `channelId` which must be valid and existing.
channelIdstringYOUTUBE_UPDATE_THUMBNAILSets the custom thumbnail for a YouTube video using an image from thumbnailUrl; the authenticated user must have permission to edit the video.2 paramsSets the custom thumbnail for a YouTube video using an image from thumbnailUrl; the authenticated user must have permission to edit the video.
videoIdstringthumbnailUrlstringYOUTUBE_UPDATE_VIDEOUpdates metadata for a YouTube video identified by videoId, which must exist; an empty list for tags removes all existing tags.6 paramsUpdates metadata for a YouTube video identified by videoId, which must exist; an empty list for tags removes all existing tags.
tagsarraytitlestringvideoIdstringcategoryIdstringdescriptionstringprivacyStatusstringYOUTUBE_UPLOAD_VIDEOUploads a video from a local file path to a YouTube channel; the video file must be in a YouTube-supported format.6 paramsUploads a video from a local file path to a YouTube channel; the video file must be in a YouTube-supported format.
tagsarraytitlestringcategoryIdstringdescriptionstringprivacyStatusstringvideoFilePathstringYOUTUBE_VIDEO_DETAILSRetrieves specified information parts (e.g., snippet, contentDetails, statistics) for a YouTube video, identified by its ID.2 paramsRetrieves specified information parts (e.g., snippet, contentDetails, statistics) for a YouTube video, identified by its ID.
idstringpartstring
The fastest YouTube transcript + YouTube search MCP for AI agents. Try for free.
Six tools — transcripts, 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 | ✅ 6 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:
Find Andrew Huberman's three most-viewed videos about sleep,
get the transcript of each, and write a 5-bullet comparison.
That single prompt uses 3 of our 6 tools — search_youtube, search_channel_videos, get_youtube_transcript — without you writing a line of code.
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:
When I share a YouTube URL, automatically use the TranscriptAPI MCP tool to fetch the transcript before responding. This applies to any video analysis, summarization, or question about YouTube content.
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:
{
"mcpServers": {
"transcript-api": {
"url": "https://transcriptapi.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Claude supports adding MCP servers directly via the "Custom Connector" UI.
Quick Setup:
TranscriptAPIhttps://transcriptapi.com/mcpFull Guide: Claude Integration Guide →
claude mcp add --transport http transcript-api https://transcriptapi.com/mcp
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 →
Or add this to VS Code user settings (settings.json):
"mcp.servers": {
"transcript-api": {
"type": "http",
"url": "https://transcriptapi.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
OpenAI Agent Builder currently requires API Key authentication (OAuth not yet supported).
https://transcriptapi.com/mcpAdd to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"transcript-api": {
"serverUrl": "https://transcriptapi.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
{
"mcpServers": {
"transcript-api": {
"url": "https://transcriptapi.com/mcp",
"type": "streamableHttp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
In Zed settings.json:
{
"context_servers": {
"transcript-api": {
"source": "remote",
"url": "https://transcriptapi.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
{
"mcpServers": {
"transcript-api": {
"type": "streamable-http",
"url": "https://transcriptapi.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
amp mcp add transcript-api https://transcriptapi.com/mcp --header "Authorization: Bearer YOUR_API_KEY"
In settings.json under augment.advanced:
"augment.advanced": {
"mcpServers": [
{
"name": "transcript-api",
"url": "https://transcriptapi.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
]
}
In .kilocode/mcp.json:
{
"mcpServers": {
"transcript-api": {
"type": "streamable-http",
"url": "https://transcriptapi.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
In Settings → Tools → AI Assistant → MCP:
{
"mcpServers": {
"transcript-api": {
"url": "https://transcriptapi.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
In ~/.gemini/settings.json:
{
"mcpServers": {
"transcript-api": {
"httpUrl": "https://transcriptapi.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
In ~/.qwen/settings.json:
{
"mcpServers": {
"transcript-api": {
"httpUrl": "https://transcriptapi.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
{
"mcpServers": {
"transcript-api": {
"serverUrl": "https://transcriptapi.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
{
"mcpServers": {
"transcript-api": {
"url": "https://transcriptapi.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
In mcp.json:
{
"mcpServers": {
"transcript-api": {
"url": "https://transcriptapi.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
In Plugins → JSON Config:
{
"mcpServers": {
"transcript-api": {
"url": "https://transcriptapi.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
In Settings → AI → MCP:
{
"transcript-api": {
"url": "https://transcriptapi.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
In Settings → Connectors → Advanced:
{
"url": "https://transcriptapi.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
Simple and universal. Works with every MCP client.
sk_ prefix"headers": {
"Authorization": "Bearer sk_your_api_key_here"
}
Security: 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 six tools are exposed automatically once you connect. 1 credit = 1 successful (HTTP 200) request. Failed/rate-limited calls do not consume credits.
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):
# Metadata
## Title: Rick Astley - Never Gonna Give You Up
## Author: RickAstleyVEVO
# Transcript
[0.0s] Never gonna give you up
[4.12s] Never gonna let you down
Example output (JSON):
{
"transcript": [
{ "text": "Never gonna give you up", "start": 0.0, "duration": 4.12 },
{ "text": "Never gonna let you down", "start": 4.12, "duration": 3.85 }
],
"metadata": { "title": "Rick Astley...", "author_name": "RickAstleyVEVO" }
}
search_youtubeSearch YouTube for videos or channels. Filter by type and paginate with a continuation token — perfect for discovery, research, and building content pipelines.
| Parameter | Type | Default | Description |
|---|---|---|---|
query | string | required | Search query |
search_type | string | "video" | "video" or "channel" |
continuation | string | null | Token from a prior call for next page |
Cost: 1 credit per page (~20 results per page).
Example prompt:
Search YouTube for "transformer architecture explained" and pick the
top 3 results by relevance.
get_channel_latest_videos · FREEGet the ~15 most recent uploads from any channel via RSS — no credits required. 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:
Every morning, list new uploads from @lexfridman and @hubermanlab.
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:
On Andrew Huberman's channel, find every video about sleep.
list_channel_videosList every video on a channel, ~100 per page. Ideal for building databases, bulk transcript extraction, or auditing a channel's full content library.
| Parameter | Type | Default | Description |
|---|---|---|---|
channel | string | required | @handle, channel URL, or UC… ID |
continuation | string | null | Pagination token |
Cost: 1 credit per page (~100 results per page).
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 | 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 creator | "Each morning, list new uploads from @hubermanlab and tell me which to watch." |
| 🏛️ Build a content database | "Pull every video from @veritasium and store title + transcript." |
| 🎯 Competitor analysis | "Search inside @MKBHD for any video about [competitor product] 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:
com.transcriptapi/youtube-transcript-and-youtube-search
© 2026 Zero Point Studio d.o.o. · Released under the MIT License
com.mcparmory/google-search
io.github.pipeworx-io/brave-search
marcopesani/mcp-server-serper
brave/brave-search-mcp-server
com.mcparmory/google-search-console
acamolese/google-search-console-mcp