Skip to main content
Glama
YouTube Data MCP Server

YouTube Data MCP Server

by diasm3

YouTube Data MCP Server

A Model Context Protocol (MCP) server for extracting YouTube video transcripts, comments, and search results. Supports both Stdio and StreamableHTTP transports.

Features

  • getTranscript - Extract subtitles/transcripts with optional timestamps

  • getVideoInfo - Get video metadata (title, views, comments count)

  • getComments - Fetch comments with pagination and sorting

  • getCommentReplies - Get replies to specific comments

  • searchYoutube - Search videos, channels, and playlists

Related MCP server: youtube-summarize

What's New in v2.0

  • Dual Transport: Stdio (default) + StreamableHTTP for web integration

  • Reliable Transcripts: Replaced youtube-transcript with youtube-caption-extractor (bot detection bypass, serverless support)

  • Timestamp Support: Optional start time and duration for each transcript segment

  • Modular Architecture: Clean separation of concerns (config, types, services, tools)

  • MCP SDK v1.25.2: Latest SDK with improved stability

Requirements

  • Node.js 18+

  • SerpAPI key (for search, comments, video info)

Installation

git clone https://github.com/diasm3/serpapi-youtube-mcp-server.git
cd serpapi-youtube-mcp-server
npm install

Configuration

Create a .env file:

SERPAPI_KEY=your_serpapi_key_here
PORT=3000  # optional, for HTTP mode

Get your SerpAPI key at serpapi.com.

Running the Server

# Build
npm run build

# Stdio mode (default) - for Claude Desktop, Cursor, etc.
npm start

# HTTP mode - for web applications
npm start -- --http
# or
MCP_TRANSPORT=http npm start

HTTP Endpoints

When running in HTTP mode:

  • GET /health - Health check

  • POST /mcp - MCP request handler

MCP Client Configuration

Claude Desktop / Cursor

{
  "mcpServers": {
    "youtube-data": {
      "command": "node",
      "args": ["/path/to/serpapi-youtube-mcp-server/build/index.js"],
      "env": {
        "SERPAPI_KEY": "your_serpapi_key_here"
      }
    }
  }
}

Using npx

{
  "mcpServers": {
    "youtube-data": {
      "command": "npx",
      "args": ["-y", "youtube-data-mcp"],
      "env": {
        "SERPAPI_KEY": "your_serpapi_key_here"
      }
    }
  }
}

API Tools

getTranscript

Extract transcript/subtitles from a YouTube video.

Parameter

Type

Required

Description

url

string

Yes

YouTube URL or video ID

lang

string

No

Language code (default: 'en')

includeTimestamps

boolean

No

Include start/duration per segment

Get the Korean transcript for https://youtube.com/watch?v=xxxxx with timestamps

getVideoInfo

Get video metadata using SerpAPI.

Parameter

Type

Required

Description

url

string

Yes

YouTube URL or video ID

Returns: title, views, publish date, channel, comment count, pagination tokens

getComments

Fetch video comments with pagination.

Parameter

Type

Required

Description

url

string

Conditional

Required for first page

limit

number

No

Max comments (default: 100)

sort

string

No

'relevance' or 'time'

pageToken

string

No

For pagination

getCommentReplies

Get replies to a specific comment.

Parameter

Type

Required

Description

pageToken

string

Yes

repliesToken from comment

searchYoutube

Search YouTube for videos, channels, playlists.

Parameter

Type

Required

Description

query

string

Yes

Search query

limit

number

No

Max results (default: 10)

gl

string

No

Country code (us, kr, jp)

hl

string

No

Language code (en, ko, ja)

sp

string

No

Filter parameter

pageToken

string

No

For pagination

Project Structure

src/
├── index.ts          # Server entry (Stdio + HTTP)
├── config/           # Environment configuration
├── types/            # Zod schemas + TypeScript types
├── services/
│   ├── serpapi.ts    # SerpAPI integration
│   └── youtube.ts    # Transcript extraction
├── tools/            # MCP tool definitions
└── utils/            # Helper functions

Troubleshooting

Transcript not available

  • Some videos don't have captions enabled

  • Try different language codes (en, ko, ja, etc.)

  • Auto-generated captions may not be available for all videos

SerpAPI errors

  • Verify your API key is valid

  • Check your SerpAPI quota/limits

  • Ensure the video is publicly accessible

HTTP mode not starting

  • Check if PORT is already in use

  • Verify environment variables are set

License

MIT

Available Tools

5 tools
getCommentRepliesA

Fetch replies to a specific YouTube comment. Use repliesToken from getComments response.

Inputs: pageToken (required).

getCommentsA

Fetch YouTube video comments with pagination. Supports sorting by relevance or time. Use nextPageToken for pagination.

Inputs: url, sort, limit, pageToken.

getTranscriptA

Extract transcript/subtitles from a YouTube video. Returns full text with video metadata. Supports multiple languages and optional timestamps.

Inputs: url (required), lang, includeTimestamps.

getVideoInfoA

Get YouTube video metadata: title, views, publish date, channel, comment count, and pagination tokens for comments.

Inputs: url (required).

searchYoutubeA

Search YouTube for videos, channels, and playlists. Returns results with thumbnails, views, and channel info.

Inputs: query (required), gl, hl, sp, +2 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 5 tools

    Disambiguation5/5

    Each tool targets a distinct YouTube data aspect: transcript, video metadata, comments, comment replies, and search. There is no overlap or ambiguity between them.

    Naming Consistency4/5

    Four tools follow a consistent 'get' + noun pattern (getTranscript, getVideoInfo, getComments, getCommentReplies), but searchYoutube deviates by using a verb-noun phrase. The pattern is mostly consistent and readable.

    Tool Count5/5

    With 5 tools, the server is well-scoped for YouTube data retrieval. Each tool serves a clear and necessary function without excessive granularity or missing core operations.

    Completeness4/5

    The tool set covers major YouTube data retrieval needs: search, video info, transcript, comments, and replies. Minor gaps exist (e.g., playlist or channel details) but the core workflows are well supported.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      MCP server that fetches YouTube video transcripts and optionally summarizes them. Supports multiple transcript formats (text, JSON, SRT, WebVTT), multi-language retrieval, and flexible YouTube URL parsing.
      6
      41 PyPI
      6
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables users to fetch YouTube video transcripts via a single MCP tool, with support for multiple languages and OAuth-protected access.
      -