home / mcp / youtube transcript dl mcp server

YouTube Transcript DL MCP Server

YouTube transcript download MCP server with stdio, SSE, and HTTP support

Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "jedarden-yt-transcript-dl-mcp": {
      "command": "yt-transcript-dl-mcp",
      "args": [
        "start"
      ],
      "env": {
        "HOST": "0.0.0.0",
        "PORT": "3000",
        "CACHE_TTL": "3600",
        "LOG_LEVEL": "info",
        "LOG_FORMAT": "simple",
        "CORS_ENABLED": "true",
        "CORS_ORIGINS": "*",
        "CACHE_ENABLED": "true",
        "MCP_TRANSPORT": "stdio",
        "CACHE_MAX_SIZE": "1000",
        "RATE_LIMIT_MAX": "100",
        "RATE_LIMIT_WINDOW": "900000"
      }
    }
  }
}

You can run the YouTube Transcript DL MCP Server to extract transcripts from YouTube videos using multiple transport methods, with options for single videos, bulk processing, and playlists. It supports caching, rate limiting, and easy containerization through Docker and an npm package, making it simple to deploy and scale for production or personal use.

How to use

To start working with transcripts, run the MCP server in the transport mode you prefer. For quick local testing, use stdio transport to start the server in the current process. If you want to serve requests over the network, you can use SSE or HTTP transports. Use the CLI test commands to verify transcripts for a YouTube video, a language preference, or a specific output format.

Practical usage patterns you can follow include:

How to install

# Prerequisites: Node.js and npm should be installed
```

1) Install the MCP server globally via npm
```
npm install -g yt-transcript-dl-mcp
```

2) Run in stdio mode (default)
```
yt-transcript-dl-mcp start
```

3) Run in SSE mode on a specific port
```
yt-transcript-dl-mcp start --transport sse --port 3000
```

4) Run in HTTP mode on a specific port
```
yt-transcript-dl-mcp start --transport http --port 3000
```

5) Verbose logging
```
yt-transcript-dl-mcp start --verbose
```

6) Quick test of a sample video from the CLI
```
yt-transcript-dl-mcp test dQw4w9WgXcQ
```

7) Build from source (clone, install, build)
```
git clone <repository-url>
cd yt-transcript-dl-repo
npm install
npm run build
```

8) Docker (pull and run)
```
# From a registry
docker pull ghcr.io/jedarden/yt-transcript-dl-mcp:latest
docker run -p 3001:3001 -p 3002:3002 ghcr.io/jedarden/yt-transcript-dl-mcp:latest --multi-transport

# Build from source and run
docker build -t yt-transcript-dl-mcp .
docker run -p 3001:3001 -p 3002:3002 yt-transcript-dl-mcp --multi-transport
```]} ,{

Additional configuration and usage notes

Configuration covers server settings, transport choice, caching, and logging. You can tune access control, rate limits, and cache behavior to match your needs.

Tools exposed by the MCP server enable you to obtain transcripts in different formats and scopes. Use these tools as building blocks for your workflows.

Configuration and security

Environment variables let you customize ports, transports, rate limits, and caching for production deployments. The following commonly used variables can be set to tailor behavior:

# Server configuration
PORT=3000
HOST=0.0.0.0
MCP_TRANSPORT=stdio

# CORS settings
CORS_ENABLED=true
CORS_ORIGINS=*

# Rate limiting
RATE_LIMIT_WINDOW=900000  # 15 minutes in ms
RATE_LIMIT_MAX=100

# Caching
CACHE_ENABLED=true
CACHE_TTL=3600  # 1 hour in seconds
CACHE_MAX_SIZE=1000

# Logging
LOG_LEVEL=info
LOG_FORMAT=simple

Troubleshooting and tips

If transcripts are not returning as expected, check your video accessibility, language selection, and output format. Enable debug logs to diagnose issues and review health indicators if you are running in Docker.

Available tools

get_transcript

Extract transcript from a single YouTube video in the requested language and format.

get_bulk_transcripts

Extract transcripts from multiple YouTube videos with options for language and output format.

get_playlist_transcripts

Extract transcripts from all videos in a YouTube playlist with language and format options.

format_transcript

Format transcript data into different formats such as text, json, or srt.

get_cache_stats

Retrieve current cache statistics and performance metrics.

clear_cache

Clear the transcript cache to free up memory and refresh data.