Skip to main content
Glama
README.md
# YouTube Transcript MCP Server

A Model Context Protocol (MCP) server that fetches and cleans transcripts from YouTube videos using `yt-dlp`.

## Features

- **Robust Transcript Fetching**: Uses `yt-dlp` to retrieve subtitles.
    - Attempts to fetch manual subtitles first (high quality).
    - Falls back to auto-generated subtitles if manual ones are unavailable.
- **Smart Cleaning**:
    - Removes VTT formatting, tags, and timestamps.
    - Deduplicates repeated lines common in auto-generated captions.
    - Cleans up common YouTube auto-caption artifacts.
- **MCP Integration**: Fully compatible with Claude Desktop and other MCP clients.

## Tools

### `get_youtube_transcript`

Fetches and cleans the transcript for a given YouTube video URL.
- **Arguments**: `url` (string) - The full URL of the YouTube video.
- **Returns**: A clean string containing the video transcript.

## Installation

This project uses `uv` for dependency management.

### Prerequisites

- [uv](https://docs.astral.sh/uv/) installed.
- A recent version of Python.

### Setup

1. Clone the repository:
   ```bash
   git clone https://github.com/warshanks/yt-transcript-mcp.git
   cd yt-transcript-mcp
   ```

2. Install dependencies:
   ```bash
   uv sync
   ```

## Configuration

### Claude Desktop

To use this server with Claude Desktop, add the following to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "yt-transcript": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/yt-transcript-mcp",
        "run",
        "server.py"
      ]
    }
  }
}
```

Replace `/absolute/path/to/yt-transcript-mcp` with the actual path to your cloned repository.

## Development

To run the server locally for testing or development:

```bash
uv run server.py
```

## License

MIT

TDQS

A4.4/5.0

Scored across 1 tool

Disambiguation5/5

With only a single tool, there is no potential for confusion between tools. The purpose of get_youtube_transcript is clearly defined and specific to fetching YouTube transcripts.

Naming Consistency5/5

The tool name follows the standard verb_noun pattern (get_youtube_transcript), which is consistent and descriptive. Even though there is only one tool, the naming convention is appropriate.

Tool Count4/5

The server's scope is narrowly defined as retrieving YouTube transcripts, and a single tool covers this purpose effectively. While the count is below the typical 3-15 range, it is not excessive or insufficient for such a focused domain.

Completeness5/5

The tool fully addresses the domain of fetching and cleaning YouTube transcripts, including fallback from manual to auto-generated subtitles. There are no obvious missing operations for a transcript-fetching service.

Maintenance

ActivityInactive
ResponsivenessNo issues