TranscriptAPI YouTube Transcript + YouTube Search MCP
Provides tools for retrieving transcripts, searching videos, browsing channels, extracting playlists, and monitoring uploads on YouTube.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@TranscriptAPI YouTube Transcript + YouTube Search MCPGet transcript of the last video from MKBHD channel"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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).
Why TranscriptAPI MCP
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:
Find @NASA's three most-viewed videos about the Moon landing,
get the transcript of each, and write a 5-bullet comparison.That single prompt uses 3 of our 12 tools (search_youtube, search_channel_videos, get_youtube_transcript) without you writing a line of code.
Related MCP server: YouTube MCP
🧩 Install as an Agent Plugin · easiest
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.
plugin.json # Agent Plugins 1.0.0 manifest
mcp.json # hosted MCP server, streamable-http, OAuth (no keys)
skills/youtube/SKILL.md # when + how to use the 12 tools
.cursor-plugin/plugin.json # Cursor plugin manifest, same MCP + skill (+ marketplace.json)VS Code: Command Palette → Chat: Install Plugin From Source, then paste:
https://github.com/ZeroPointRepo/youtube-mcpOr register a local clone in settings.json:
"chat.pluginLocations": { "/absolute/path/to/youtube-mcp": true }Cursor: Customize in the sidebar → find the plugin → Install. For a local clone:
git clone https://github.com/ZeroPointRepo/youtube-mcp ~/.cursor/plugins/local/transcriptapiThen Developer: Reload Window.
Add to Cursor: MCP server only, no clone. Paste this deeplink into your browser:
cursor://anysphere.cursor-deeplink/mcp/install?name=transcriptapi&config=eyJ1cmwiOiJodHRwczovL3RyYW5zY3JpcHRhcGkuY29tL21jcCJ9ChatGPT, 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.
30-second example
Summarize this video for me: https://youtu.be/UF8uR6Z6KLcThe 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:
What has @TED posted in the last month? → get_channel_latest_videos (free)
Find talks on protein folding, summarize the best three.
→ search_youtube, then transcriptsThere are no credentials in this package: Agent Plugins 1.0.0 forbids embedded secrets, and authorization is client-managed. Verify the package yourself:
curl -sO https://agent-plugins.org/schemas/1.0.0/plugin.schema.json
curl -sO https://agent-plugins.org/schemas/1.0.0/mcp.schema.json
npx ajv-cli@5 validate --spec=draft2020 -s plugin.schema.json -d plugin.json
npx ajv-cli@5 validate --spec=draft2020 -s mcp.schema.json -d mcp.json🛠️ Quick Install
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
Name:
transcript-apiType:
SSE(Remote)URL:
https://transcriptapi.com/mcp
Or 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:
Open Claude Settings (click your profile icon → Settings)
Go to Connectors → Add custom connector
Enter the following details:
Name:
TranscriptAPIURL:
https://transcriptapi.com/mcp
Click Add, then click Connect to authorize via your browser.
(Optional) In the connector settings, change permissions to "Allow unsupervised" for seamless usage.
Full Guide: Claude Integration Guide →
claude mcp add --transport http transcript-api https://transcriptapi.com/mcpChatGPT supports OAuth for secure authentication. Enable Developer Mode in ChatGPT settings first.
Quick Setup:
In ChatGPT, go to
Settings→Connected Apps→AddEnter the MCP Server URL:
https://transcriptapi.com/mcpClient ID & Secret are optional:
Leave them blank to use Dynamic Client Registration (recommended/simpler).
(Advanced) Or enter Client ID & Secret from your dashboard for static registration.
Click Add and authorize via the browser popup.
Full 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).
Create a new Agent
Under "Actions" or "Tools", add a new MCP Server
URL:
https://transcriptapi.com/mcpAuth Type: API Key
Paste your API Key from the dashboard
Add 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"
}
}🔐 Authentication
API Key
Simple and universal. Works with every MCP client.
Get your API key from your dashboard
Keys start with
sk_prefixAdd to config as a Bearer token:
"headers": {
"Authorization": "Bearer sk_your_api_key_here"
}Security: Store keys in environment variables where possible and never commit them to version control.
OAuth 2.1
Automatic, secure authentication without manual key management.
Dynamic Client Registration (DCR):
Supported by: Claude Desktop, Claude Web, ChatGPT
Just add the MCP URL: client auto-registers
No credentials needed
You'll authorize once via browser redirect
Static Client Registration:
Supported by: ChatGPT (optional)
Get Client ID + Secret from the MCP Integration Dashboard
More control over client identity
Full reference: Authentication docs →
🧰 Available Tools
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.
1. get_youtube_transcript
Fetch 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 |
| string | required | YouTube URL (full or short) or 11-char video ID |
| boolean |
| Include video title, author, thumbnail |
| string |
|
|
| boolean |
| 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 downExample 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" }
}2. get_youtube_video_info · FREE
Basic 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 |
| 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.
3. get_video_metadata
Rich 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 |
| string | required | YouTube URL (full or short) or 11-char video ID |
| string[] | none | Extras: |
Cost: 1 credit per successful request.
Example prompt:
Get the view count, publish date, and tags for https://youtu.be/UF8uR6Z6KLc.4. search_youtube
Search 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 |
| string | required (first call) | Search query |
| string |
|
|
| string |
| First-page sort: |
| string | none | First-page upload window (videos only): |
| string | none | First-page duration bucket (videos only): |
| string |
| 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.5. get_channel_info
A 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 |
| string | required |
|
Cost: 1 credit per successful request.
Check the returned tabs before calling get_channel_sections or list_channel_videos with a tab.
6. get_channel_latest_videos · FREE
Get the ~15 most recent uploads from any channel via RSS. Perfect for monitoring, daily recaps, or triggering downstream pipelines.
Parameter | Type | Default | Description |
| string | required |
|
Cost: Free.
Example prompt:
Every morning, list new uploads from @NASA and @natgeo.7. search_channel_videos
Search 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 |
| string | required |
|
| string | required | Query to search within the channel |
| string |
| Pagination token |
Cost: 1 credit per page (~30 results per page).
Example prompt:
On @NASA's channel, find every video about the Moon landing.8. list_channel_videos
List 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 |
| string | required (first call) |
|
| string |
| Which feed: |
| string |
|
|
| string |
| 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.
9. list_channel_playlists
Paginated 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 |
| string | required (first call) |
|
| string |
| Pagination token |
Cost: 1 credit per page.
10. list_channel_posts
Paginated 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 |
| string | required (first call) |
|
| string |
| Pagination token |
Cost: 1 credit per page.
11. get_channel_sections
The 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 |
| string | required |
|
| string |
| Which curated page: |
Cost: 1 credit per successful request.
podcasts and releases exist only on channels that have them (empty results otherwise).
12. list_playlist_videos
Get 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 |
| string | required (first call) | Playlist URL or playlist ID |
| string |
| Pagination token |
Cost: 1 credit per page (~100 results per page).
💡 Use Cases & Prompts
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." |
💳 Pricing & Rate Limits
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 |
1 Credit = 1 successful request (HTTP 200)
Failed and rate-limited requests do not consume credits.
get_channel_latest_videosis free (no credits charged).
🚨 Troubleshooting
Verify your API key starts with
sk_Check for extra spaces when copying
Ensure the key is active in your dashboard
If using OAuth, try re-authorizing
Check your credit balance at the dashboard
Purchase more credits or upgrade your plan
The video might not have captions/subtitles enabled
The video might be private or age-restricted
The video might be region-locked
Respect the
Retry-AfterheaderImplement exponential backoff in your client
Upgrade to a paid plan for higher limits
Clear browser cookies and try again
For ChatGPT, try switching between Dynamic and Static registration
Ensure popup blockers aren't preventing the auth window
🔗 Also available as a REST API
Building 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 |
Base URL: https://transcriptapi.com/api/v2
🤝 Connect
🌐 Website: transcriptapi.com
📚 Docs: transcriptapi.com/docs
🔧 API Reference: transcriptapi.com/docs/api
🤖 MCP Setup Guides: Claude · ChatGPT · OpenAI Agent Builder
💬 Contact: transcriptapi.com/contact
📂 Listed in: awesome-agent-plugins, our directory of verified Agent Plugins on the open standard
📋 MCP Registry
This server is published to the official Model Context Protocol Registry under the name:
com.transcriptapi/youtube-transcript-and-youtube-searchThis server cannot be deployed
Maintenance
Related MCP Connectors
YouTube transcripts, search, channel browsing, and playlists for AI agents via MCP.
An MCP server that gives any LLM or agent clean YouTube transcripts on demand: a single video, a whole channel, or a playlist, plus AI cleanup of auto-generated captions. API-key auth, credit-based, same backend as the public v1 API. Get a free API key with 25 free credits at youtubetranscriptdownload.com/account.
YouTube transcripts, search, channel/playlist listings and upload tracking for AI agents.
MCP server for RiverScript, an AI transcription platform - fetches transcripts shared via a link.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables interaction with the YouTube Data API, allowing users to search videos, get video and channel details, analyze trends, and fetch video transcripts.-
- AlicenseAqualityDmaintenanceAn MCP server that enables users to retrieve YouTube transcripts and perform video or channel searches without requiring Google API keys. It supports transcript chunking and provides tools for detailed video content analysis and channel metadata extraction.530 npm4MIT
- AlicenseAqualityDmaintenanceMCP server that provides YouTube video data to AI agents, supporting search, metadata, comments, and transcripts without an API key.514 npmMIT
- AlicenseAqualityDmaintenanceMCP server that lets AI agents search YouTube and fetch transcripts.23MIT