TranscriptAPI YouTube Transcript + YouTube Search MCP
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 | ✅ 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.
🧩 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 6 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/dQw4w9WgXcQThe 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 six tools are exposed automatically once you connect. 1 credit = 1 successful (HTTP 200) request. Failed/rate-limited calls do not consume credits.
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. search_youtube
Search 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 |
| string | required | Search query |
| string |
|
|
| 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.3. get_channel_latest_videos · FREE
Get 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 |
| string | required |
|
Cost: Free.
Example prompt:
Every morning, list new uploads from @lexfridman and @hubermanlab.4. 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 Andrew Huberman's channel, find every video about sleep.5. list_channel_videos
List 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 |
| string | required |
|
| string |
| Pagination token |
Cost: 1 credit per page (~100 results per page).
6. 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 | 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 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." |
💳 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-search