yt-transcript-mcp
# 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
Scored across 1 tool
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.
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.
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.
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.