# YouTube Transcript MCP Server
> Give Claude, ChatGPT, Cursor, Claude Code and any MCP client the ability to read **YouTube transcripts**. Hosted, nothing to install. Free API key: 10 requests a day.
A hosted [Model Context Protocol](https://modelcontextprotocol.io) server that exposes one tool, `get_youtube_transcript`, backed by [youtube-transcript.ai](https://youtube-transcript.ai). Paste a YouTube link mid-conversation and your AI reads the full transcript on demand.
**Connector URL:**
```
https://youtube-transcript.ai/mcp?key=YOUR_KEY
```
Replace `YOUR_KEY` with your API key. [Create a free key](https://youtube-transcript.ai/get-api-key) with a Google sign-in; it takes about a minute.
---
## Why
- **Free to start.** A free key covers 10 transcripts a day. Pro is 1,000 a day for $120 a year, on the same key.
- **Reliable.** A hardened fetch pipeline with proxy fallback returns transcripts even on videos that block typical scrapers.
- **Any language.** Pick a caption track by language code (`en`, `zh-CN`, `es`, `ja`, …) or let it choose the default.
- **Built for agents.** One tool, plain-text output with title and metadata. Multi-hour videos come back in parts, so nothing gets cut off.
## Authentication
Tool calls need an API key. There is no OAuth. Send the key in one of two ways:
| Where | Example |
|-------|---------|
| Header | `Authorization: Bearer YOUR_KEY` |
| URL | `https://youtube-transcript.ai/mcp?key=YOUR_KEY` |
The URL form is for clients that only accept a connector URL.
## Quick start
### Claude (web / desktop)
Settings → **Connectors** → **Add custom connector**
| Field | Value |
|-------|-------|
| Name | `youtube-transcript.ai` |
| URL | `https://youtube-transcript.ai/mcp?key=YOUR_KEY` |
Then ask: *“Summarize this video: https://youtu.be/dQw4w9WgXcQ”*
### ChatGPT
In the custom connector / MCP server setup, add an MCP server with URL `https://youtube-transcript.ai/mcp?key=YOUR_KEY` (transport: **Streamable HTTP**), enable it for your chat, then paste a YouTube link.
### Claude Code
```bash
claude mcp add --transport http --scope user youtube-transcript \
https://youtube-transcript.ai/mcp \
--header "Authorization: Bearer YOUR_KEY"
```
### Cursor
Add to `~/.cursor/mcp.json`, or to `.cursor/mcp.json` inside one project:
```json
{
"mcpServers": {
"youtube-transcript": {
"url": "https://youtube-transcript.ai/mcp",
"headers": { "Authorization": "Bearer YOUR_KEY" }
}
}
}
```
### Codex
Add to `~/.codex/config.toml`:
```toml
[mcp_servers.youtube-transcript]
url = "https://youtube-transcript.ai/mcp"
http_headers = { "Authorization" = "Bearer YOUR_KEY" }
```
### Clients that only launch local servers
For clients that start MCP servers from a config file and cannot take a remote URL, bridge with [`mcp-remote`](https://www.npmjs.com/package/mcp-remote):
```json
{
"mcpServers": {
"youtube-transcript": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://youtube-transcript.ai/mcp?key=YOUR_KEY"]
}
}
}
```
### Let your agent do it
Paste [`https://youtube-transcript.ai/mcp.md`](https://youtube-transcript.ai/mcp.md) into a coding agent. It is a plain-text version of these instructions, written for an AI to follow.
## Tool reference
### `get_youtube_transcript`
Fetch the full text transcript of a YouTube video.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `video` | string | yes | YouTube URL (watch, `youtu.be`, shorts, embed) or a bare 11-character video ID |
| `lang` | string | no | Caption language code, e.g. `en`, `zh-CN`, `es`. Omit for the default track |
| `offset` | integer | no | Where to continue a long transcript. Use the value given at the end of the previous part |
Returns plain text: the transcript with title, duration, and a list of available languages. Transcripts over 120,000 characters come back in parts; each part ends with a note giving the `offset` for the next call.
## Example prompts
- “Summarize the key points of `` in 5 bullets.”
- “Pull the transcript of this video and translate it to Spanish.”
- “What does the speaker say about pricing in ``? Quote the exact lines.”
## Programmatic use
The server speaks standard MCP over Streamable HTTP (JSON-RPC). A zero-dependency example is in [`examples/quickstart.mjs`](examples/quickstart.mjs):
```bash
YT_TRANSCRIPT_KEY=YOUR_KEY node examples/quickstart.mjs https://youtu.be/dQw4w9WgXcQ
```
Calling from your own code without MCP? There is a plain HTTP endpoint too: see the [YouTube Transcript API](https://youtube-transcript.ai/api).
## Limits
- Free: 10 requests a day. Pro: 1,000 a day for $120 a year. Upgrade from the [key page](https://youtube-transcript.ai/get-api-key).
- Every tool call counts as one request, including each part of a long transcript. The count resets at 00:00 UTC.
- The video needs captions, either written by the uploader or auto-generated by YouTube.
## Notes
- **Not affiliated** with YouTube or Google. Transcripts are fetched from publicly available captions.
- Listed in the official MCP Registry as `ai.youtube-transcript/youtube-transcript`.
## Links
- Web tool (no AI client needed): https://youtube-transcript.ai
- Connector landing page: https://youtube-transcript.ai/mcp
- HTTP API: https://youtube-transcript.ai/api
## License
MIT