youtube-transcripts
What it does Gives any MCP-compatible agent (Claude, Cursor, VS Code, ChatGPT, Codex) clean YouTube transcripts as timestamped markdown, ready to use as…
What it can do
- Get Transcript: Get the full transcript of a single YouTube video as timestamped markdown. Read-only: fetches existing captions, modifies nothing. Requires an API key; each successful call charges 1 c
- Polish Transcript: Get a cleaned-up transcript of a YouTube video's auto-generated captions: punctuation and capitalisation restored, filler and false starts removed, paragraphs added, misheard names
- Get Channel Transcripts: Get transcripts for a YouTube channel's most recent videos (newest first) as timestamped markdown, one section per video. Use for research across a creator's recent output; fo
What data it sees
Do you need an account
An API key from the service settings is required
What it does
Gives any MCP-compatible agent (Claude, Cursor, VS Code, ChatGPT, Codex) clean YouTube transcripts as timestamped markdown, ready to use as context. No scraping, no proxies, no YouTube rate limits to manage: the server handles the fetch and caches every result.
Tools
| Tool | What it does | Cost |
|---|---|---|
get_transcript |
Full transcript of one video (ID or URL) | 1 credit |
get_channel_transcripts |
Recent videos from a channel, newest first (limit 1-50) | 1 credit per video |
get_playlist_transcripts |
Videos from a playlist, in order (limit 1-50) | 1 credit per video |
polish_transcript |
Cleaned auto-captions: punctuation restored, filler removed, faithful to what was said | ~3 credits per 1,000 words (min 5) |
All tools are read-only. Videos without captions fail free. Rate limit: 5 requests per 10 seconds.
Setup
Get a free API key (25 free credits, no card) at youtubetranscriptdownload.com/account, then add the server:
{
"mcpServers": {
"ytd": {
"url": "https://youtubetranscriptdownload.com/api/mcp",
"headers": { "Authorization": "Bearer ytd_sk_YOUR_KEY" }
}
}
}
Claude Code:
claude mcp add --transport http \
--header "Authorization: Bearer ytd_sk_YOUR_KEY" \
ytd https://youtubetranscriptdownload.com/api/mcp
Example output
get_transcript returns the video title, source link, timestamped text, and a credit footer:
How Transformers Work
Source: https://youtube.com/watch?v=...
[00:00:12] The transformer architecture was introduced in the 2017 paper
Attention Is All You Need by Vaswani et al.
...
---
1 credit used · 42 remaining
get_channel_transcripts and get_playlist_transcripts return one section per video,
separated by dividers; videos without captions are noted and cost nothing:
Lex Fridman Podcast · 3 videos
[transcript of video 1]
---
[transcript of video 2]
---
abc123xyz: No transcript available (skipped, not charged)
---
2 credits used · 40 remaining
polish_transcript turns raw auto-captions into clean text, faithful to what was said:
Before: so um the transformer architecture was introduced uh in the
attention is all you need paper in in 2017
After: The transformer architecture was introduced in the Attention
Is All You Need paper in 2017.
Links
- Setup guide for all clients: https://youtubetranscriptdownload.com/mcp
- REST API docs (same backend): https://youtubetranscriptdownload.com/youtube-transcript-api
- Pricing: https://youtubetranscriptdownload.com/pricing
How to connect
How to connect youtube-transcripts to Claude
The server address to paste into Claude settings:
https://youtube-transcripts--hello-ympt.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect youtube-transcripts to ChatGPT
The server address to paste into ChatGPT settings:
https://youtube-transcripts--hello-ympt.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect youtube-transcripts to Cursor
The server address to paste into Cursor settings:
https://youtube-transcripts--hello-ympt.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (4)
Raw names from tools/list. Only developers need these.
| get_transcript | Get the full transcript of a single YouTube video as timestamped markdown. Read-only: fetches existing captions, modifies nothing. Requires an API key; each successful call charges 1 credit, including repeat calls for the same video, so reuse a transcript already in context instead of re-fetching. Videos without captions return an error and cost nothing. Rate limit: 5 requests per 10 seconds. |
| polish_transcript | Get a cleaned-up transcript of a YouTube video's auto-generated captions: punctuation and capitalisation restored, filler and false starts removed, paragraphs added, misheard names fixed, faithful to what was said. Use when raw captions are too messy to read or quote; for a plain transcript use get_transcript. Read-only; requires an API key. Each call charges credits by transcript length (about 3 per 1,000 words, minimum 5), including repeat calls, so keep the result in context. Human-uploaded captions (already clean) and transcripts over ~7,000 words return an error without charging. Rate limit: 5 requests per 10 seconds. |
| get_channel_transcripts | Get transcripts for a YouTube channel's most recent videos (newest first) as timestamped markdown, one section per video. Use for research across a creator's recent output; for one known video use get_transcript. Read-only; requires an API key. Charges 1 credit per video that returns a transcript, including repeat calls; videos without captions are skipped free. A 10-video call typically costs up to 10 credits, so start with a small limit. Rate limit: 5 requests per 10 seconds. |
| get_playlist_transcripts | Get transcripts for the videos in a YouTube playlist (in playlist order) as timestamped markdown, one section per video. Use for working through a course, series, or curated list; for one known video use get_transcript. Read-only; requires an API key. Charges 1 credit per video that returns a transcript, including repeat calls; videos without captions are skipped free. A 10-video call typically costs up to 10 credits, so start with a small limit. Rate limit: 5 requests per 10 seconds. |