Skip to content

MCP (Model Context Protocol)

Use TranscriptAPI to fetch transcripts, search YouTube, browse channels, and list playlists — all from within your AI assistant via Model Context Protocol (MCP).

Model Context Protocol (MCP) is a standardized framework that enables AI assistants like Claude and ChatGPT to connect directly with external tools and data sources. With TranscriptAPI’s MCP integration, your AI can fetch YouTube transcripts on-demand without manual copy-pasting or switching between applications.

Key Benefits:

  • Direct integration into your AI workflow
  • No manual transcript fetching needed
  • Consistent, structured data format
  • Works with any MCP-compatible platform

TranscriptAPI offers unique advantages for YouTube Transcript MCP integration:

TranscriptAPI works with any platform that supports MCP. Whether your platform uses OAuth for seamless authentication (like Claude and ChatGPT) or requires manual API key configuration (like OpenAI Agent Builder), we provide both options to ensure maximum compatibility.

  • Battle-tested with major AI platforms
  • Consistent performance across all authentication methods
  • Same powerful transcript extraction engine as our REST API
  • Flexible authentication options (OAuth or API Key) based on your platform’s requirements

Before setting up TranscriptAPI with MCP, ensure you have:

  • A TranscriptAPI account (sign up free)
  • An AI assistant or platform that supports MCP
  • For OAuth: A web browser for the initial authorization
  • For API Key: An active API key from your dashboard

Get your MCP configuration details from the MCP dashboard or use these settings:

PropertyValue
Server NameTranscript API
Server URLhttps://transcriptapi.com/mcp
DescriptionUse TranscriptAPI to fetch YouTube video transcript automatically
IconDownload Icon

TranscriptAPI supports two authentication methods to work with different MCP platforms:

OAuth provides automatic, secure authentication without manual key management. Supported by:

  • Claude (Dynamic Client Registration - optional credentials)
  • ChatGPT (Static Client Registration - requires Client ID/Secret)
  • Any MCP client supporting OAuth 2.1

Two Registration Methods:

TranscriptAPI supports both Dynamic Client Registration (DCR) and Static Client Registration to work with different platforms:

1. Dynamic Client Registration (Claude, optional)

  • Claude and other clients that support DCR can automatically register
  • No Client ID/Secret needed - just add the MCP server URL
  • The client automatically discovers OAuth endpoints and registers itself
  • You’ll be redirected to authorize access (one-time)

2. Static Client Registration (ChatGPT, required)

  • ChatGPT requires Client ID and Client Secret upfront
  • Get your credentials from the MCP Integration dashboard
  • Select “OAuth (Recommended)” and click “Generate Credentials”
  • Copy your Client ID and Client Secret
  • Add them to your ChatGPT MCP connector configuration

How it works:

  1. Add the MCP server URL to your client
  2. For ChatGPT: Add Client ID and Client Secret
  3. For Claude: Credentials are optional (DCR supported)
  4. The client automatically discovers our OAuth endpoints
  5. You’ll be redirected to authorize access (one-time)
  6. Tokens are managed automatically with refresh support

Technical Details:

  • Uses OAuth 2.1 with both Dynamic Client Registration (RFC 7591) and Static Registration
  • Authorization server metadata: /.well-known/oauth-authorization-server
  • Protected resource metadata: /.well-known/oauth-protected-resource
  • Required scope: mcp:access
  • Access tokens prefixed with oat_

Benefits:

  • No manual key management (for DCR clients)
  • Automatic token refresh
  • Secure, time-limited access
  • Revocable permissions
  • Platform-specific support (ChatGPT and Claude)

TranscriptAPI exposes 6 tools through MCP:

ToolDescriptionCost
get_youtube_transcriptFetch video transcript as markdown or JSON1 credit
search_youtubeSearch YouTube for videos or channels1 credit
get_channel_latest_videosGet latest ~15 videos from a channel (RSS)Free
search_channel_videosSearch within a specific channel1 credit
list_channel_videosPaginated list of all channel uploads1 credit/page
list_playlist_videosPaginated list of playlist videos1 credit/page

All channel tools accept flexible input: @handle, full YouTube URL, or UC... channel ID.

Extract transcripts from any YouTube video with full control over the output format.

Parameters:

ParameterTypeDefaultDescription
video_urlstringrequiredYouTube video URL or 11-character video ID
send_metadatabooleantrueInclude video title, author, and thumbnail
formatstring"text"Output format: "text" (markdown) or "json" (structured)
include_timestampbooleantrueInclude timestamps with each segment

Accepted URL Formats:

  • Full URL: https://www.youtube.com/watch?v=dQw4w9WgXcQ
  • Short URL: https://youtu.be/dQw4w9WgXcQ
  • Video ID only: dQw4w9WgXcQ

Example Usage:

// Get transcript as markdown with metadata (default)
get_youtube_transcript({
video_url: "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
})
// Returns:
{
"content": "# Metadata\n## Title: Rick Astley - Never Gonna Give You Up\n## Author: RickAstleyVEVO\n## Author URL: https://www.youtube.com/@RickAstley\n## Thumbnail: https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg\n\n# Transcript\n[0.0s] Never gonna give you up\n[4.12s] Never gonna let you down..."
}
// Get JSON format without metadata
get_youtube_transcript({
video_url: "dQw4w9WgXcQ",
format: "json",
send_metadata: false
})
// Returns:
{
"content": {
"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
}
]
}
}
// Get plain text without timestamps
get_youtube_transcript({
video_url: "dQw4w9WgXcQ",
format: "text",
include_timestamp: false,
send_metadata: false
})
// Returns:
{
"content": "# Transcript\nNever gonna give you up Never gonna let you down Never gonna run around and desert you..."
}

Output Formats:

Returns markdown-formatted text with optional metadata header and timestamped transcript lines.

# Metadata
## Title: Video Title Here
## Author: Channel Name
## Author URL: https://www.youtube.com/@ChannelName
## Thumbnail: https://i.ytimg.com/vi/VIDEO_ID/hqdefault.jpg
# Transcript
[0.0s] First line of transcript
[3.5s] Second line of transcript
[7.2s] Third line of transcript

Search YouTube for videos or channels. Returns structured results with video IDs, titles, view counts, and thumbnails.

Parameters:

ParameterTypeDefaultDescription
querystringrequiredThe search query
search_typestring"video"Type of search: "video" or "channel"
limitnumber10Maximum number of results to return

Example Usage:

search_youtube({
query: "TED talk artificial intelligence",
search_type: "video",
limit: 5
})
// Returns:
{
"content": {
"results": [
{
"video_id": "abc123",
"title": "The future of AI | TED Talk",
"channel": "TED",
"view_count": "2.5M views",
"published": "2024-03-15",
"thumbnail": "https://i.ytimg.com/vi/abc123/hqdefault.jpg"
}
// ... more results
]
}
}

Get the ~15 most recent videos from a YouTube channel via RSS. Free — no credits consumed.

Parameters:

ParameterTypeDefaultDescription
channelstringrequiredChannel identifier: @handle, channel URL, or UC... ID

Accepted Input Formats:

  • Handle: @TED
  • URL: https://www.youtube.com/@TED
  • Channel ID: UCsT0YIqwnpJCM-mx7-gSA4Q

Example Usage:

get_channel_latest_videos({
channel: "@TED"
})
// Returns:
{
"content": {
"channel": {
"name": "TED",
"url": "https://www.youtube.com/channel/UCsT0YIqwnpJCM-mx7-gSA4Q"
},
"results": [
{
"video_id": "xyz789",
"title": "The next breakthrough in AI",
"published": "2024-06-01",
"thumbnail": "https://i.ytimg.com/vi/xyz789/hqdefault.jpg"
}
// ... up to ~15 results
]
}
}

Search for videos within a specific YouTube channel. Costs 1 credit per request.

Parameters:

ParameterTypeDefaultDescription
channelstringrequiredChannel identifier: @handle, channel URL, or UC... ID
querystringrequiredSearch query within the channel
limitnumber10Maximum number of results to return

Example Usage:

search_channel_videos({
channel: "@TED",
query: "education",
limit: 5
})
// Returns:
{
"content": {
"results": [
{
"video_id": "def456",
"title": "The future of education | TED Talk",
"view_count": "1.2M views",
"published": "2024-01-20",
"thumbnail": "https://i.ytimg.com/vi/def456/hqdefault.jpg"
}
// ... more results
]
}
}

List all videos in a channel with pagination (~100 per page). Costs 1 credit per page.

Parameters:

ParameterTypeDefaultDescription
channelstringnoneChannel identifier: @handle, URL, or UC... ID (first call)
continuationstringnonePagination token from previous response (subsequent calls)

Provide either channel (first call) or continuation (next pages) — not both.

Example Usage:

// First call — start listing
list_channel_videos({
channel: "@TED"
})
// Returns:
{
"content": {
"results": [
{
"video_id": "ghi789",
"title": "How AI could empower any business",
"view_count": "800K views",
"published": "2024-05-10"
}
// ... ~100 results
],
"continuation_token": "Ehl...",
"has_more": true
}
}
// Next page — use continuation token
list_channel_videos({
continuation: "Ehl..."
})

List videos in a YouTube playlist with pagination (~100 per page). Costs 1 credit per page.

Parameters:

ParameterTypeDefaultDescription
playliststringnonePlaylist URL or ID starting with PL, UU, LL, FL, or OL (first call)
continuationstringnonePagination token from previous response (subsequent calls)

Provide either playlist (first call) or continuation (next pages) — not both.

Example Usage:

// First call — start listing
list_playlist_videos({
playlist: "PLOGi5-fAu8bFIs_Lbp-MNwPKpPjBJGUzr"
})
// Returns:
{
"content": {
"results": [
{
"video_id": "jkl012",
"title": "Introduction to Machine Learning",
"channel": "TED-Ed",
"published": "2024-02-15"
}
// ... more results
],
"continuation_token": "Qmx...",
"has_more": true
}
}
// Next page — use continuation token
list_playlist_videos({
continuation: "Qmx..."
})

TranscriptAPI MCP works with any platform that supports the Model Context Protocol. Here are guides for popular platforms:

TranscriptAPI works with any tool, framework, or custom implementation that supports MCP:

  • OAuth-enabled platforms: Automatic authentication and token management
  • API key platforms: Manual configuration with your TranscriptAPI key
  • Custom implementations: Choose the authentication method that fits your needs

MCP requests consume credits and are subject to rate limits just like REST API calls:

ToolCost
get_youtube_transcript1 credit
search_youtube1 credit
get_channel_latest_videosFree
search_channel_videos1 credit
list_channel_videos1 credit per page
list_playlist_videos1 credit per page
  • Only charged on successful (HTTP 200) responses
  • Failed requests (4xx, 5xx) don’t consume credits
  • 200 requests per minute per API key/OAuth token
  • Rate limits apply across all API usage (REST + MCP combined)

See API Rate Limits for detailed information and best practices.

All MCP tools return user-friendly error messages that AI assistants can understand and communicate:

Error CodeDescriptionRetry?Solution
401Invalid authenticationCheck your API key or re-authorize OAuth
402Insufficient creditsPurchase more credits or upgrade plan
404Transcript not availableVideo may not have captions or be private
408Timeout / RetryTemporary failure - retry after 1-5 seconds
422Invalid YouTube URLProvide a valid YouTube URL or video ID
429Rate limit exceededWait before retrying (see Retry-After header)
500Server error⚠️Temporary issue, contact support if persistent
503Service unavailableService temporarily down - retry after 1-5 seconds

Errors are returned in a format that AI assistants can easily interpret:

{
"content": "Unable to fetch transcript: Payment required. You have no credits remaining. Please purchase more credits at https://transcriptapi.com/dashboard/billing"
}

The AI assistant will communicate these errors naturally to the user.

  • OAuth platforms: Let the platform handle token storage and refresh
  • API key platforms: Store keys in environment variables, never in code
  • Rotate API keys regularly for enhanced security
  • Monitor usage through the dashboard to detect anomalies
  • Batch requests when possible to stay within rate limits
  • Cache transcripts locally if you need them multiple times
  • Handle 402 errors gracefully—inform users about credit status
  • Implement exponential backoff for retries on 408/429/503 errors
  • Test with common videos first to ensure configuration works
  • Provide context to the AI about video content for better responses
  • Use metadata to give AI information about video source and author
  • Choose the right format: JSON for structured processing, text for natural language
  • “Authorization failed”: Clear browser cookies and try again
  • “Invalid redirect”: Ensure you’re using the latest MCP client version
  • Token expiration: OAuth tokens auto-refresh; if issues persist, re-authorize
  • “Invalid API key”: Verify key starts with sk_ and is active in dashboard
  • “No credits”: Check credit balance at /dashboard/billing
  • Key not working: Ensure no extra spaces when copying the key
  • No transcript returned: Video might not have captions available
  • Slow responses: Check if video is very long (>2 hours)
  • Connection errors: Verify your internet connection and firewall settings

Ready to get started? Here’s what to do next:

  1. Get your credentials: Sign up and get an API key or prepare for OAuth
  2. Choose your platform: Select from our platform-specific guides
  3. Configure MCP: Follow the configuration examples above
  4. Test it out: Try fetching a transcript from a YouTube video
  5. Explore the API: Check our REST API Reference for advanced usage

Need live testing? Try our Swagger UI to experiment with the API directly.