MCP YouTube Transcript
An MCP server retrieving transcripts of YouTube videos
Description from the maker (original English)
Public social media data: profiles, posts, comments, transcripts and ad libraries, 30+ platforms.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
CAPTAPI_API_KEY, CAPTAPI_BASE_URL, AuthorizationValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"captapi": {
"command": "npx",
"args": [
"-y",
"@captapi/mcp"
],
"env": {
"CAPTAPI_API_KEY": "your-value",
"CAPTAPI_BASE_URL": "your-value"
}
}
}
}Run this in your terminal
claude mcp add --transport http captapi https://api.captapi.com/mcp --header 'Authorization: Bearer {api_key}'claude mcp add captapi --env CAPTAPI_API_KEY=your-value --env CAPTAPI_BASE_URL=your-value -- npx -y @captapi/mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"captapi": {
"url": "https://api.captapi.com/mcp",
"headers": {
"Authorization": "Bearer {api_key}"
}
}
}
}Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"captapi": {
"command": "npx",
"args": [
"-y",
"@captapi/mcp"
],
"env": {
"CAPTAPI_API_KEY": "your-value",
"CAPTAPI_BASE_URL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"captapi": {
"type": "http",
"url": "https://api.captapi.com/mcp",
"headers": {
"Authorization": "Bearer {api_key}"
}
}
}
}Paste into .vscode/mcp.json in your project
{
"servers": {
"captapi": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@captapi/mcp"
],
"env": {
"CAPTAPI_API_KEY": "your-value",
"CAPTAPI_BASE_URL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.
Your choice stays on this device in a cookie; no account needed.
CAPTAPI_BASE_URL envAuthorization secret required HTTP headerThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Tool names and descriptions exactly as the server reported them on Nov 7, 2026. The maker wrote them, not us; we show them as plain text.
youtube_transcriptYouTube's published captions with timestamps — not speech-to-text. Flat 1 credit; 404 is free. Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
youtube_audio_transcriptSpeech-to-text for YouTube audio. Use it when a video has no captions — or when you want a transcript of what was actually spoken rather than YouTube's published captions. Priced per started minute of audio. Costs 2 credits/min of audio. Empty results and failures are never charg
youtube_summarizeAI summary from YouTube's published captions — same source as /transcript. Flat 3 credits; caption-miss 404 is free. Costs 3 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
youtube_video_detailsYouTube video metadata + stats. Always includes degraded / degradedReason — retry when degraded is true. Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
youtube_commentsGet comments on any YouTube video — text, author, likes, and truncated publishedTimeApprox from the relative label, with cursor pagination (nextCursor + hasMore). Flat 2 credits per call; 0 when the video has comments turned off (commentsDisabled: true). Costs 2 credits. Empty re
youtube_channel_detailsYouTube channel stats — ISO country, createdAt date-only, real banner or null, quote-aware SEO tags, absolute links. Flat 1 credit. Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
youtube_searchYouTube search with cursor pagination — typed hits, ids, canonical URLs, filters (2 credits/page, 0 when a page finds nothing). Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
youtube_channel_videosChannel uploads with cursor pagination — exact publishedAt from reel_item_watch (same as channel-shorts). Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
youtube_playlist_videosPaginated playlist contents — cursor/nextCursor/hasMore, same row shape as channel-videos. Flat 2 credits/page. Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
youtube_playlistPlaylist metadata only — title, channel{}, totalVideos, thumbnailUrl. No videos[]. Flat 1 credit. Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
youtube_shorts_transcriptTranscript for a YouTube Short — rejects long-form videos (≤3 min only). Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
youtube_shorts_summarizeAI summary of a YouTube Short — rejects long-form videos (≤3 min only). Costs 3 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
youtube_shorts_detailsYouTube Short metadata — same schema as Video Details, with isShort:true; long-form videos get HTTP 422. Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
youtube_shorts_commentsComments on a YouTube Short — rejects long-form videos (≤3 min only). Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
youtube_channel_shortsChannel Shorts with cursor pagination — same row shape as channel-videos (exact publishedAt). Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
youtube_trending_shortsYouTube Shorts recommendation sequence — fixed window per call (no cursor), not a global chart. Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
youtube_channel_streamsChannel Live tab only — liveStatus per row; 0 credits when hasLiveTab is false. Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
youtube_hashtag_searchDefault ~10 credits (limit 10; 1/result). Videos from youtube.com/hashtag/{name} — nested channel{}, viewCountIsApproximate. Not keyword search. Costs ~10 credits (1/result). Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fr
youtube_comment_repliesReplies under a top-level comment — parentReplyCount + cursor. Nested reply ids return 404. Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
youtube_channel_playlistsChannel playlists with cursor pagination — id, title, totalVideos, thumbnailUrl. Flat 2 credits/page. Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
youtube_community_postsCommunity posts — channel{}, publishedTimeApprox, likeCountIsApproximate, linkedVideos[], cursor (1 credit). Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
youtube_community_post_detailsOne community post — list schema + commentCount trio + isEdited. Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
youtube_video_sponsorsSponsorBlock community segments — free while the CC BY-NC-SA commercial-use exception is pending. Costs 0 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
tiktok_transcriptTranscript Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
tiktok_summarizeSummarizer Costs 4 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
tiktok_video_detailsGet everything about one TikTok video from its URL — caption, view/like/comment/share/save counts, creator, sound, hashtags, and thumbnail. Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
tiktok_commentsTikTok comments — clean schema plus authorName, stable authorId/authorSecUid and commentLanguage for listening loops. Unresolvable videos are 404 at 0 credits. Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always
tiktok_channel_detailsResolve a TikTok @handle to id + secUid — createTime, ttSeller, bioLink, decoded privacy flags. Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
tiktok_profile_regionFind out where a TikTok creator is likely based and what language they use — country, language, stable ids, and core profile stats. Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
tiktok_audience_demographicsAudience country + language mix for a TikTok creator — engagement sample, not a follower census. Costs 3 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
tiktok_search_suggestionsGet the autocomplete terms TikTok suggests in its search bar for a keyword — the real phrases people search, ranked, so you can find trending queries and long-tail keyword ideas. Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache h
tiktok_channel_postsLatest videos from a TikTok profile, cursor-paginated, with isPinned and caption mention text. Flat 2 credits; failures are 0 credits. Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
tiktok_comment_repliesReplies under a TikTok comment — same authorId/authorSecUid/commentLanguage shape as comments. Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
tiktok_user_followersList a TikTok user's followers — id, secUid, createTime, region, language, cursor pagination. Flat 1 credit. Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
tiktok_user_followingsList who a TikTok user follows — id, secUid, createTime, region, language, cursor pagination. Flat 1 credit. Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
tiktok_music_postsList TikTok videos that use a specific sound — caption, author, exact engagement, canonical hashtags, and mentions, with cursor pagination. Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
tiktok_top_searchTikTok Top/General search — videos and photo carousels when TikTok includes them, with contentType + images[]. Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
tiktok_search_by_hashtagDefault ~7 credits (limit 10; 0.7/result). Videos from TikTok's /tag/{name} challenge feed — not keyword or username search. Cursor + hasMore. Costs ~7 credits (0.7/result). Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fre
tiktok_search_usersSearch TikTok users — distinct creators only, id + secUid, per-counter isApproximate flags, cursor pagination. Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
tiktok_song_detailsTikTok sound metadata — usageCount, artists[{id,secUid,handle}], audio{bpm,loudness,beats}, commerce rights (1 credit; 2 via the fallback path). Costs 1 credit (2 via fallback path). Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default a
tiktok_trending_feedFor You by default; pass orderBy/period/page for Creative Center popular videos (like/hot/comment/repost) with totalCount. Flat 2 credits. Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
tiktok_popular_hashtagsRelated TikTok hashtags — Creative Center chart when it answers (asOf = the chart's data date, stale when over 3 days old), otherwise a disclosed niche fallback. Flat 2 credits. Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hi
tiktok_liveCheck whether a TikTok creator is live right now and get the stream URLs (CMAF/DASH + FLV, HLS when TikTok exposes it) — one GET with an @handle, 1 credit. Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh
tiktok_live_infoIdentical to TikTok Live (isLive, creator.id/secUid, streamQualities hls/cmaf). Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
tiktok_popular_creatorsCreative Center creators + createTime / bioLinkRisk / ttSeller hydrate for partnership vetting. Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
instagram_transcriptTurn any Instagram Reel's speech into text — the full transcript plus timestamped segments, ready for search, subtitles, or AI pipelines. Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
instagram_summarizeGet an AI summary of any Instagram Reel — a short paragraph plus key points, without watching the video. Costs 4 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
instagram_detailsGet an Instagram post, Reel or carousel — caption, publish date, likes, comments, views, media URLs, author, per-slide children, and promo codes / disclosure words from the caption. Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache
instagram_commentsDefault ~9 credits (limit 10; 0.9/result). Session-paged Instagram comments — a logged-out 2-row preview of a larger thread is 503 SESSION_UNAVAILABLE at 0 credits. Costs ~9 credits (0.9/result). Empty results and failures are never charged. Pass cache=true for a free 24h cache h
instagram_channel_detailsInstagram profile stats — fixed key set (null fillers), fbid, bioLinks, isBusinessAccount, approx flags. Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
instagram_channel_postsDefault ~3 credits (limit 10; 0.3/result). Latest posts from a public Instagram profile — carousel children[], mediaCount, isPinned, caption promo codes, user{} in one call. Costs ~3 credits (0.3/result). Empty results and failures are never charged. Pass cache=true for a free 24
instagram_channel_reelsDefault ~3 credits (limit 10; 0.3/result). Latest Reels from a public Instagram profile — isPinned, optional since date filter, pass userId to skip resolve; ceil(n×0.3) credits; nextCursor + hasMore. Costs ~3 credits (0.3/result). Empty results and failures are never charged. Pas
instagram_reels_searchNative tag feed first, slower fallback paths on a miss. Max 50. Flat 2 credits. Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
instagram_trending_reelsCache-first trending Reels. Feed outage → labelled country hashtag-clips stand-in (listing field), never a silent swap. Max 50. Flat 2 credits. Costs 2 credits. Empty results and failures are never charged. Successful calls bill even on cache hits.
instagram_tagged_postsPosts that tag an Instagram account — author verified/avatar when available, staleFeed when Instagram only exposes an archive. Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
instagram_reels_by_audio_idDefault ~14 credits (limit 10; 1.4/result). Is this Instagram sound trending? Reels that use it + isTrendingInClips / trendRank / rich music{}. Costs ~14 credits (1.4/result). Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always f
instagram_hashtag_searchHashtag Explore: native grid first, fallback path only on miss. Max 50. Flat 2 credits. Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
instagram_profile_searchResolve a brand or @handle to one public Instagram profile — stable id, bio, links, and stats (not niche discovery). Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
instagram_embedClassic Instagram embed snippet — blockquote.instagram-media + embed.js. Drop html into your page. Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
instagram_highlightsPersistent Story Highlight albums for a public profile — id, title, cover, owner. Flat 1 credit. Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account CDCStream, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Responded in 117 ms (HTTP 200)
No sign-in needed
Read 60 tool descriptions and found no hidden instructions to the AI
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: CAPTAPI_API_KEY, Authorization
Either way works: install it on your computer or connect to the cloud version.
The GitHub repo last changed –, and the latest version (0.5.2) reached the registry today.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: MCP YouTube Transcript, Google Analytics MCP, BibiGPT YouTube Video Summarizer
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
An MCP server retrieving transcripts of YouTube videos
GA4 MCP server for AI agents: schema discovery, server-side aggregation, analysis-ready defaults.
AI video summarizer: summarize and transcribe YouTube, Bilibili, TikTok and podcast videos.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Captapi's hosted Model Context Protocol server gives Claude, Cursor, VS Code and other MCP clients read access to public social media data through one API key. Each Captapi REST endpoint is exposed as one MCP tool that returns JSON.
This repository holds documentation and the registry manifest only. It contains no server source code.
https://api.captapi.com/mcpPOST)Authorization: Bearer or x-api-key: io.github.CDCStream/captapiPublic data only: nothing behind a login. For LinkedIn, only pages visible without signing in.
As of October 2026 the server lists 178 tools. Tool names follow _ , for example youtube_transcript, tiktok_comments or instagram_profile.
Platforms: TikTok, YouTube, Facebook, Instagram, GitHub, LinkedIn, Reddit, X (Twitter), Spotify, Threads, Rumble, Pinterest, Twitch, Google Maps, Truth Social, Kwai, SoundCloud, Bluesky, Snapchat, Kick, Amazon shop pages, and link-in-bio pages (Linktree, Linkme, Linkbio, Pillar, Komi).
Tool categories:
analytics_post, analytics_compare)account_*)Run tools/list against the endpoint for the current list with exact input schemas. Listing tools does not need a key.
Sign up at captapi.com, then create a key at captapi.com/dashboard/api-keys. New accounts get 100 free credits after email verification; no credit card is needed.
Each tool call uses the credits of the matching endpoint, listed on its page under captapi.com/apis. Calls that fail are not charged.
Keep your key out of shared config files and version control.
Replace capt_live_xxxxxxxxxxxxxxxx with your key.
claude mcp add --transport http captapi https://api.captapi.com/mcp \
--header "Authorization: Bearer capt_live_xxxxxxxxxxxxxxxx"
~/.cursor/mcp.json (global) or .cursor/mcp.json (per project):
{
"mcpServers": { "captapi": { "url": "https://api.captapi.com/mcp", "headers": { "Authorization": "Bearer capt_live_xxxxxxxxxxxxxxxx" } } } }
Claude Desktop's config file starts local (stdio) servers, so use the @captapi/mcp npm package, which calls the same API. Open Settings → Developer → Edit Config and add:
{
"mcpServers": { "captapi": { "command": "npx", "args": ["-y", "@captapi/mcp"], "env": { "CAPTAPI_API_KEY": "capt_live_xxxxxxxxxxxxxxxx" } } } }
Requires Node.js. Restart Claude Desktop after saving.
Point the client at https://api.captapi.com/mcp and send the key in a header. Either form works:
Authorization: Bearer capt_live_xxxxxxxxxxxxxxxx
x-api-key: capt_live_xxxxxxxxxxxxxxxx
Raw check with curl:
curl -s https://api.captapi.com/mcp \
-H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -H "Authorization: Bearer capt_live_xxxxxxxxxxxxxxxx" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"account_balance","arguments":{}}}'
The server is stateless: no session ID is needed, and GET on the endpoint returns 405. Without a key, initialize and tools/list work, and tools/call returns an error result asking for a key.
server.json is a copy of the manifest published to the official MCP Registry as io.github.CDCStream/captapi.
See SECURITY.md.
The documentation and configuration in this repository are MIT licensed. See LICENSE. Use of the Captapi API is governed by the Terms of Service and Acceptable Use Policy.