BulkTranscripts logo BulkTranscripts
Hosted YouTube MCP server · 30 free credits

YouTube MCP server: give ChatGPT and Claude a whole channel

One prompt pulls the transcripts of up to 1,000 videos: a channel, a playlist, a podcast's back catalogue. Your assistant then reads what was actually said, not just the titles. It can also search YouTube and watch channels for new uploads. Nothing to install.

Server URL
https://bulktranscripts.co/mcp

Add it as a connector in your app, sign in with Google, then just ask. Steps for your app ↓

1,000videos per bulk joba whole channel or playlist
10tools for your assistanttranscripts, search, uploads
30free credits to startGoogle sign-in, no card
$0to 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.

00:30Setup

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
01:10Ten tools

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 video1 credit
  • get_transcriptsup to 20 at once1 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 videos1 per video
  • get_bulk_statusprogressfree
  • list_bulk_resultswhat landedfree

Find the right videos

Search all of YouTube, or search inside one creator's channel for a topic.

  • search_youtubeby keyword1 credit
  • search_channelinside a channel1 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,0001 credit
  • get_playlist_videosin order1 credit

Watch for new uploads

“Did anyone I follow post this week?” Poll it every morning; it never costs a thing.

  • get_latest_videosnewest uploadsfree

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 ↓
01:52Watch

One prompt, 15 transcripts, one playbook

A real recording in ChatGPT, sped up where it waits.

Watch: one ChatGPT prompt, 15 transcripts, one playbook (2:22, narrated).
02:24Ideas

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

03:05Hosted

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 MCPSelf-hosted repos (npx / uvx)
SetupHosted URL with OAuth or a license keyRuntime and hosting depend on the chosen repository
Where requests come fromManaged extraction with residential routing and retries; failures remain possibleThe network or proxy you configure
ToolsTranscript, batch of 20, YouTube search, channel search, channel list, playlist list, free new-upload checkCheck the repository's tool list
Whole channel or playlistList up to 1,000 videos, then batch-fetchCheck listing, pagination and batch support
CacheShared cache; repeat reads from your library are freeDepends on implementation and configuration
AuthenticationOAuth sign-in or a license key header; credits follow the accountDepends on implementation and deployment
Cost30 free, then one-time packs from $4.99 for 200; credits never expireCheck licensing, hosting, network and maintenance costs
03:40Reference

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 usedCredits
"Summarize this video: [URL]"get_transcript1 (0 if it is already in your library)
"Compare what these four talks say about X"get_transcripts1 per new video
"Find the best explainers on Y"search_youtube, then get_transcripts for the picks1 + 1 per transcript
"What has @creator said about Z?"search_channel, then get_transcripts1 + 1 per transcript
"Turn this course playlist into study notes"get_playlist_videos, then get_transcripts in batches of 201 + 1 per lecture
"Audit this channel's whole archive"get_channel_videos (up to 1,000), then selective get_transcripts1 + 1 per transcript read
"Did @creator post anything this week?"get_latest_videos0
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.

ToolParametersReturnsCost
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
search_youtube
Search YouTube
  • query string · required
    Search terms, e.g. 'claude code tutorial'.
  • type video | channel | playlist · optional
    What to search for. Default video.
  • limit integer · optional
    Max results, default 10.
Videos, channels or playlists matching a query: id, title, channel, duration, URL and view count.1 credit
search_channel
Search inside a channel
  • channel string · required
    Channel @handle, URL, or UC… id.
  • query string · required
    Topic to search for within the channel.
  • limit integer · optional
    Max results, default 10.
Videos inside one channel that match a topic, same fields as search.1 credit
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.

04:15Questions

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.

More YouTube transcript tools

Updated