youtube-mcp-server
0:00

Give your AI
hands on YouTube.

An open-source Model Context Protocol server that lets Claude — or any MCP client — search videos, read transcripts, and scout channels. No SDK, no glue code.

$ npx -y zubeid-youtube-mcp-server
103k+npm downloads
548GitHub stars
10MCP tools
MITlicense

What a session looks like

Your AI chains tools on its own: search for videos, pick one, pull the transcript, answer from the actual words spoken.

Ten tools, four services

Every tool maps to the YouTube Data API v3 — plus keyless transcript retrieval and creator-discovery filters you won't find in the raw API.

videos_getVideo
Full detail for one video — snippet, statistics, content details, any part you ask for. videoId · parts?
videos_searchVideos
Search all of YouTube with date, channel, and subscriber-band filters, plus creator-only mode and custom sort orders. query · maxResults? · order? · publishedAfter? · channelMinSubscribers? · creatorOnly? · sortBy? · …
transcripts_getTranscript no API key
The words spoken in a video, timestamped, in your chosen language. Works without a YouTube API key. videoId · language?
channels_getChannel
One channel's profile with normalized metadata: country, join date, custom URL, contact links, creator-vs-brand signals. channelId
channels_getChannels
Batch lookup for many channels at once, optionally with each channel's latest upload date. channelIds · parts? · includeLatestUpload?
channels_searchChannels
Find channels by handle, name, or query — filter by subscriber band and how recently they uploaded. query · minSubscribers? · lastUploadAfter? · creatorOnly? · sortBy? · …
channels_findCreators
Discover creators from the videos that mention a topic — built for scouting indie channels by size and activity. query · channelMinSubscribers? · videoPublishedAfter? · sampleVideosPerChannel? · …
channels_listVideos
A channel's uploads, newest first. channelId · maxResults?
playlists_getPlaylist
Title, owner, and metadata for a playlist. playlistId
playlists_getPlaylistItems
Every video in a playlist, in order. playlistId · maxResults?

Install

Pick your client. Everything below is copy-paste ready.

Add this to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\) or your project's .mcp.json. Extra keys are optional fallbacks — the server rotates to the next key when one runs out of quota.

{
  "mcpServers": {
    "youtube": {
      "command": "npx",
      "args": ["-y", "zubeid-youtube-mcp-server"],
      "env": {
        "YOUTUBE_API_KEY": "your_youtube_api_key"
      }
    }
  }
}

Add to .vscode/mcp.json in your workspace — VS Code prompts for the key and stores it securely.

{
  "inputs": [
    { "type": "promptString", "id": "apiKey", "description": "YouTube API Key", "password": true }
  ],
  "servers": {
    "youtube": {
      "command": "npx",
      "args": ["-y", "zubeid-youtube-mcp-server"],
      "env": { "YOUTUBE_API_KEY": "${input:apiKey}" }
    }
  }
}

One command installs and configures the server for Claude Desktop.

npx -y @smithery/cli install @ZubeidHendricks/youtube --client claude

The container serves MCP over HTTP at /mcp with a readiness probe at /ready — drop it behind n8n, LibreChat, or anything that speaks streamable HTTP.

# build with your .env present, then:
docker build -t youtube-mcp-server .
docker run --rm -p 8088:8088 youtube-mcp-server

You'll need a free YouTube Data API v3 key from the Google Cloud Console for video, channel, and playlist tools. Transcripts work with no key at all.