youtube-mcp
The YouTube MCP server provides a comprehensive interface to the YouTube Data API v3, enabling you to search, retrieve, and analyze YouTube content programmatically.
Search Videos – Search YouTube videos with advanced filters including sort order, duration, definition (HD/SD), license type, video type, region, channel, topic, and date range.
Search Channels – Find YouTube channels by keyword query.
Search Playlists – Search for playlists by keyword query.
Get Video Details – Retrieve comprehensive information (statistics, content details, topics, etc.) for one or more videos by ID.
Get Channel Details – Fetch detailed channel information including statistics, branding, and topics by ID.
Get Channel by Handle – Look up a YouTube channel using its @username/handle.
Get Trending Videos – Retrieve the most popular videos for a specific region, optionally filtered by category.
Get Video Categories – Browse available video categories for a given region.
Get Channel Videos – List recent uploads from a specific channel, with optional date filtering.
Get Playlist Videos – Retrieve videos from any YouTube playlist by playlist ID.
Get Video Comments – Fetch comments on a specific video, sortable by relevance or time.
Provides tools for searching videos, channels, playlists, getting trending content, video details, comments, and more via the YouTube Data API v3.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@youtube-mcpsearch for AI news from the last week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
YouTube MCP Server
Model Context Protocol (MCP) server for YouTube Data API v3. Provides tools for searching videos, channels, playlists, getting trending content, video details, comments, and more.
Features
Video Search - Search YouTube videos with advanced filters (duration, definition, region, date range, etc.)
Channel Search - Find channels by query
Video Details - Get comprehensive video information (statistics, content details, topics, etc.)
Channel Details - Get channel statistics, branding, topics, and more
Trending Videos - Get most popular videos by region and category
Video Categories - Browse available video categories
Channel Videos - Get recent uploads from a specific channel
Playlist Videos - Get videos from any playlist
Playlist Search - Search for playlists
Video Comments - Get comments on videos
Channel by Handle - Look up channels by @username
Related MCP server: YouTube MCP Server
Installation
git clone https://github.com/PPiai/youtube-mcp.git
cd youtube-mcp
pip install -e .Or with uv:
uv pip install -e .Configuration
Requires a YouTube Data API v3 key. Get one from Google Cloud Console.
Copy .env.example to .env and fill in your values:
cp .env.example .envVariable | Default | Description |
| — | Required. YouTube Data API v3 key |
|
|
|
|
| Bind host (HTTP mode) |
|
| Bind port (HTTP mode) |
Transports
This server supports two transports, selected by MCP_TRANSPORT:
Streamable HTTP (remote service — default)
Runs as a persistent HTTP service on a single port (default 8000).
Endpoint | Method | Purpose |
|
| MCP streamable-HTTP endpoint (JSON-RPC) |
|
| Health check — returns |
MCP_TRANSPORT=streamable-http PORT=8000 youtube-mcp
# MCP endpoint: http://localhost:8000/mcp/
# Health: http://localhost:8000/healthNote — trailing slash. The MCP endpoint is mounted at
/mcp, soPOST /mcpreturns a 307 redirect to/mcp/. Always point clients at/mcp/(with the trailing slash) to avoid clients that don't follow redirects onPOST.
Connecting an MCP client to the remote endpoint (e.g. mcp.json /
Claude Desktop style config):
{
"mcpServers": {
"youtube": {
"type": "streamable-http",
"url": "https://<your-domain>/mcp/"
}
}
}Quick test with curl:
# Health
curl https://<your-domain>/health
# Initialize (note: streamable-HTTP replies with an SSE stream)
curl -X POST https://<your-domain>/mcp/ \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}'
# Call a tool
curl -X POST https://<your-domain>/mcp/ \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_videos","arguments":{"query":"ai news","max_results":2}}}'⚠️ Security. The HTTP endpoint has no built-in authentication — anyone who can reach the URL can issue requests and consume your YouTube API quota. Put it behind an authenticating reverse proxy / network policy, or keep it on a private network. Do not expose it publicly without protection.
stdio (local)
Launched on-demand by a local client (e.g. via uvx):
mcp_servers:
youtube:
command: "uvx"
args: ["youtube-mcp"]
env:
YOUTUBE_API_KEY: "your_api_key_here"
MCP_TRANSPORT: "stdio"
timeout: 120
connect_timeout: 60Deploy (EasyPanel / Docker)
Build and run as a container:
docker build -t youtube-mcp .
docker run -p 8000:8000 -e YOUTUBE_API_KEY="your_api_key_here" youtube-mcpOn EasyPanel, set YOUTUBE_API_KEY as a service environment variable (not a
build-arg), expose port 8000, and point the MCP client to
https://<your-domain>/mcp.
Available Tools
Tool | Description |
| Search videos with filters |
| Search channels |
| Get detailed video info |
| Get detailed channel info |
| Get trending videos by region |
| Get video categories |
| Get channel's recent videos |
| Get playlist videos |
| Search playlists |
| Get video comments |
| Get channel by @handle |
Example Queries
"Search for videos about AI news from the last week"
"Get trending videos in Brazil (BR)"
"Find channels about programming tutorials"
"Get details for video dQw4w9WgXcQ"
"Get comments on a viral video"
"Find playlists about machine learning"
Development
# Install dev dependencies
pip install -e ".[dev]"
# Run the server locally over HTTP and smoke-test it
MCP_TRANSPORT=streamable-http youtube-mcp &
curl http://localhost:8000/healthNo automated test suite yet —
pytestis wired up in thedevextra but there are no tests under atests/directory. Contributions welcome.
License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/PPiai/youtube-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server