# 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