MCP Browser YouTube Transcript
# MCP Browser YouTube Transcript
A Docker-based MCP server that uses Puppeteer (Headless Chrome) to fetch YouTube transcripts directly from the video page UI. This approach bypasses the aggressive rate limiting (HTTP 429) often encountered with standard API endpoints or `youtube-dl`.
## Features
- `get_transcript`: Fetch the full plain text transcript.
- `get_timed_transcript`: Fetch the transcript with timestamps and deep links.
- `get_video_info`: Fetch video metadata using `youtube-dl-exec`.
## How it Works
1. **Browser Automation**: Launches a headless Chromium instance inside the Docker container.
2. **UI Scraping**: Navigates to the YouTube video URL, clicks "Show transcript", and parses the DOM elements.
3. **Efficiency**: Uses a global browser instance to avoid the overhead of launching a new browser for every request.
## Usage
### Docker (Recommended)
1. Build and run the server:
```bash
docker compose build
docker compose run --rm -i mcp-browser-youtube
```
2. Configure your MCP client (e.g., Claude Desktop, VS Code) to use the Docker command:
```json
{
"mcpServers": {
"youtube-browser": {
"command": "docker",
"args": ["compose", "-f", "/path/to/mcp-browser-youtube-transcript/docker-compose.yml", "run", "--rm", "-i", "mcp-browser-youtube"]
}
}
}
```
### Local Development
1. Install dependencies:
```bash
npm install
```
2. Run the server:
```bash
node index.js
```
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: get_timed_transcript retrieves transcript with timestamps, get_transcript retrieves plain text transcript, and get_video_info fetches metadata. There is no overlap or ambiguity between these functions.
All tool names follow a consistent verb_noun pattern using snake_case (get_timed_transcript, get_transcript, get_video_info). The naming is predictable and uniform throughout the set.
Three tools is appropriate for the server's purpose of accessing YouTube transcripts and video info, though it feels slightly minimal. Each tool earns its place, but there might be room for additional related functions like search or list operations.
The toolset covers the core needs for YouTube transcript and video metadata access well, with no obvious dead ends. However, there are minor gaps such as the inability to search for videos or handle playlist transcripts, which agents might need to work around.