BulkTranscripts YouTube
Hosted remote MCP server for YouTube: fetch clean transcripts (single or batch), search videos/channels/playlists, list channel or playlist videos, and track new uploads — no signup, free tier, no local install.
Documentation
1,000 videos per bulk joba whole channel or playlist
10 tools for your assistanttranscripts, search, uploads
30 free credits to startGoogle sign-in, no card
$0 to read a video againyour library stays free
What is a YouTube MCP server?
An MCP (Model Context Protocol) server gives an AI assistant such as Claude, ChatGPT or Cursor a set of tools it can call. The BulkTranscripts MCP server is hosted, so there is nothing to run: connect it with one URL and one Google sign-in and the assistant can fetch transcripts, search YouTube, list channels and playlists, and watch for new uploads.
Connect it in about a minute
Pick your app. Every one ends the same way: one Google sign-in, and the account starts with 30 free credits.
Claude (web & desktop): add a custom connector
In Claude, open Settings → Connectors → Add custom connector. Name it BulkTranscripts, paste the URL below, press Add, then Connect. A sign-in page opens: continue with Google and the account includes 30 free credits. Then just ask, for example "Get the transcript of this video and summarize it" with a YouTube link.
https://bulktranscripts.co/mcp
What your assistant can do with it
Ten tools in five jobs. Costs are per call; anything already in your library is free to read again.
Read transcripts
The full text with title, channel and timestamps, so answers quote what was actually said.
get_transcript1 video 1 creditget_transcriptsup to 20 at once 1 per video
Pull a whole channel
A channel, playlist or podcast back catalogue in one job. Runs on the server, so the chat never times out.
start_bulk_extractup to 1,000 videos 1 per videoget_bulk_statusprogress freelist_bulk_resultswhat landed free
Find the right videos
Search all of YouTube, or search inside one creator's channel for a topic.
search_youtubeby keyword 1 creditsearch_channelinside a channel 1 credit
List an archive
Every video on a channel or in a playlist, so the assistant picks what to read.
get_channel_videosup to 1,000 1 creditget_playlist_videosin order 1 credit
Watch for new uploads
“Did anyone I follow post this week?” Poll it every morning; it never costs a thing.
get_latest_videosnewest uploads free
You just ask
You never type a tool name. Ask in plain words and the assistant picks the tool, the way it picks a search engine.
Which tool runs for which request ↓
Things people ask it
Paste a link or name a channel. The bigger the archive, the more it saves you.
A whole podcast
“Pull every episode of this podcast and list the books the host keeps recommending, with the episodes that mention them.”
A course playlist
“Read all the lectures in this playlist and build a study guide with one section per lecture.”
Competitor channels
“What have these three channels posted this month? One line each, then the themes they share.”
One creator, one topic
“What has @hubermanlab said about caffeine timing? Quote the episodes.”
Where experts disagree
“Find the most-watched videos on intermittent fasting and tell me where the experts disagree.”
Every morning
“Check @TED, @veritasium and @3blue1brown for new uploads and brief me on anything about AI.” free
Why a hosted server
Nothing to run
No npx, Docker or keys to juggle. BulkTranscripts runs the extraction (proxy routing, retries, a shared cache) and keeps it working when YouTube changes.
Pay once, re-read free
30 free credits with Google sign-in. A transcript costs 1 credit the first time it enters your library; reading it again is free in every app. One-time packs that never expire, no subscription.
Built for whole channels
Bulk jobs run up to 1,000 videos on the server and report progress, so long jobs survive the chat. Videos without captions are skipped and never charged.
Hosted server vs. the GitHub MCP servers
BulkTranscripts operates the extraction service for you. Self-hosting gives you control of the implementation and deployment, with responsibility for its maintenance. Features vary by repository: check the specific server's documentation before choosing. This is a deployment comparison written by BulkTranscripts, not a benchmark of every alternative.
| BulkTranscripts MCP | Self-hosted repos (npx / uvx) | |
|---|---|---|
| Setup | Hosted URL with OAuth or a license key | Runtime and hosting depend on the chosen repository |
| Where requests come from | Managed extraction with residential routing and retries; failures remain possible | The network or proxy you configure |
| Tools | Transcript, batch of 20, YouTube search, channel search, channel list, playlist list, free new-upload check | Check the repository's tool list |
| Whole channel or playlist | List up to 1,000 videos, then batch-fetch | Check listing, pagination and batch support |
| Cache | Shared cache; repeat reads from your library are free | Depends on implementation and configuration |
| Authentication | OAuth sign-in or a license key header; credits follow the account | Depends on implementation and deployment |
| Cost | 30 free, then one-time packs from $4.99 for 200; credits never expire | Check licensing, hosting, network and maintenance costs |
Which tool runs, and what it costs
You never call these by name — the assistant picks from the descriptions. This is the mapping it lands on, so you know what a request will cost before you ask.
| You say… | Tool used | Credits |
|---|---|---|
| "Summarize this video: [URL]" | get_transcript | 1 (0 if it is already in your library) |
| "Compare what these four talks say about X" | get_transcripts | 1 per new video |
| "Find the best explainers on Y" | search_youtube, then get_transcripts for the picks | 1 + 1 per transcript |
| "What has @creator said about Z?" | search_channel, then get_transcripts | 1 + 1 per transcript |
| "Turn this course playlist into study notes" | get_playlist_videos, then get_transcripts in batches of 20 | 1 + 1 per lecture |
| "Audit this channel's whole archive" | get_channel_videos (up to 1,000), then selective get_transcripts | 1 + 1 per transcript read |
| "Did @creator post anything this week?" | get_latest_videos | 0 |
Full parameters and return fields for every tool
Generated from the same tool schema the server sends to your client, so what you see here is exactly what Claude, Cursor or ChatGPT sees.
| Tool | Parameters | Returns | Cost |
|---|---|---|---|
get_transcript Get YouTube video transcript | - video string · required YouTube video URL or 11-character video id. - language string · optional Preferred caption language code, e.g. 'en' or 'de'. Defaults to 'en', falling back to whatever exists. - include_segments boolean · optional Include the timestamped segment list. Default false — the plain text is usually what you want. - fresh boolean · optional Bypass the cache and re-extract (costs a credit). Default false. | Title, channel, duration, upload date, language, clean paragraph text, word count and (on request) timed segments for one video. | 1 credit on first library addition · repeat reads free |
get_transcripts Get many transcripts at once | - videos array of string · required Up to 20 YouTube video URLs or ids. - language string · optional Preferred caption language code. Default 'en'. | Up to 20 transcripts in one call, fetched in parallel; the call returns within about 40 seconds and anything still fetching comes back on the next call, free. Videos without captions are reported per item and do not fail the batch. One call is one request against the rate limit. | 1 credit per new transcript · repeats free |
get_channel_videos List a channel's videos | - channel string · required Channel @handle, URL, or UC… id. - limit integer · optional Max videos to list, default 100. | A channel's video list (id, title, duration, URL), up to 1,000, ready to feed into get_transcripts. | 1 credit |
get_playlist_videos List a playlist's videos | - playlist string · required Playlist URL or id (the list= value). - limit integer · optional Max videos to list, default 100. | Every video in a playlist, in playlist order. | 1 credit |
get_latest_videos Track new uploads (free) | - channel string · required Channel @handle, URL, or UC… id. | A channel's newest uploads (up to 15) with publish dates and views. | Free — always |
start_bulk_extract Start a bulk extraction job | - url string · required Channel (@handle or URL), playlist URL/id, or a single video URL. - max_videos integer · optional Cap on videos to process, default 100. - language string · optional Preferred caption language code. Default 'en'. | A run_id straight away, plus videos_found once the listing is done (small sources list within the call). The server then fetches every transcript into this account's library in the background. | Listing free · 1 credit per new transcript |
get_bulk_status Check a bulk job | - run_id string · required The run_id from start_bulk_extract. | status, total, completed, failed, skipped, quota, remaining and check_again_in_seconds for a job. | Free |
list_bulk_results List a bulk job's results | - run_id string · required The run_id from start_bulk_extract. - cursor integer · optional next_cursor from the previous page; omit for the first page. - limit integer · optional Items per page, default 50. | A page of per-video outcomes (id, title, channel, duration, word count, status, error code) with next_cursor. No transcript text. | Free |
Troubleshooting
The connector shows “Needs authentication” or never finishes connecting
Open the sign-in your client offers (Claude Code: /mcp → Authenticate; Claude web: Settings → Connectors → the connector's menu → Reconnect; Cursor: Settings → MCP → Login). The sign-in page is served by BulkTranscripts and accepts Google or a license key. If the page never opens, the client is probably an older build without MCP OAuth: use the key-in-URL form https://bulktranscripts.co/mcp?key=YOUR_LICENSE_KEY instead.
I get 401 right after buying a pack
The key is issued at checkout but the payment webhook that activates it can land a few seconds later. Wait a moment and retry; nothing is charged for the failed call.
The assistant answers from memory instead of calling the tool
Paste the full YouTube URL (not just the title) and say “use BulkTranscripts” or “fetch the transcript” once. Check the connector is enabled for the current chat; ChatGPT and Claude web both have a per-conversation toggle.
out_of_credits in the middle of a batch
The transcripts already fetched are returned with partial: true and a stopped count, and the error carries a purchase link. Credits are added to the same account you signed in with, so nothing needs reconnecting afterwards.
no_transcript for a video that clearly has captions
Some videos only have captions in one language; ask for that language explicitly (“get the German transcript”). Live streams and members-only videos expose no captions. Never charged.
Long videos (2h+) take a while or the client times out
Extraction usually finishes in a few seconds, but the first read of a long, uncached video can take longer than a strict client timeout. Ask again: the second request returns instantly from the cache and the credit is not charged twice.
Something else
Every error has a stable code listed in the error table. Still stuck? Email hello@bulktranscripts.co with the tool name and the code.
Building against the REST API instead? Same engine, same credits: API docs · OpenAPI spec · agent skill.
Questions
Which MCP clients does it work with?
Anything that speaks MCP over streamable HTTP: Claude Code, Claude web/desktop connectors, ChatGPT developer mode, Cursor, Windsurf, VS Code, Codex, Cline, Grok, and the official MCP SDKs.
Is it really free to try?
Yes. Signing in with Google includes 30 free transcript additions, no card needed. The latest-uploads tool is free forever.
Do I have to run anything locally?
No. It is a hosted remote server at https://bulktranscripts.co/mcp: no npx, no uvx, no Docker, no API key juggling to start.
How is this different from the open-source YouTube transcript MCP servers?
BulkTranscripts is hosted and includes search, channel and playlist listing, batch fetching, a shared cache, and account-based authentication. Self-hosted servers vary in features and give you control of deployment and maintenance. Check each repository's tools, limits, authentication, and network requirements.
Can it read a whole channel?
Yes: the agent lists the channel's videos (up to 1,000), then batch-fetches transcripts. Videos already in your account's library come back instantly and free.
Hand your assistant its first channel
Copy the URL, add it as a connector, sign in with Google. 30 free credits, no card.
Server URL
https://bulktranscripts.co/mcp
Stuck on setup? Email hello@bulktranscripts.co with the app or code you are using and what you see. A person answers, usually within a day.