Skip to main content
Glama
jerroldneal

MCP Browser YouTube Transcript

by jerroldneal
README.md
# 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

B3.4/5.0

Scored across 3 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness4/5

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.