YouTube MCP Server

by temiedani

Not rated
GitHub

About

An MCP server for interacting with YouTube content, enabling AI models to access and manage YouTube data via its API.

Details

Author
temiedani
Categories
Cloud Service, Other, Web Scraping, Infrastructure

Setup

Install YouTube MCP Server in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/temiedani/youtube-mcp-server

Follow the installation instructions in the repository README, then restart your MCP client.

Model Contex Protocol (MCP) server that enables AI models to interact with YouTube content through a standardized interface. This server provides a set of tools for video search, content analysis, comment processing, and more.

- Search YouTube videos
- Get trending videos
- Find related content
- Channel information

- Detailed video information
- Channel statistics
- Video transcripts
- Comprehensive summaries

- Comment retrieval
- Comment analysis
- User interaction data

# Using Homebrew (recommended) brew install python@3.11 # Verify installation python3 --version # Should show Python 3.11.x
# Update package list sudo apt update # Install Python sudo apt install python3.11 python3.11-venv # Verify installation python3 --version # Should show Python 3.11.x

- Download Python installer frompython.org
- Run the installer
- Check "Add Python to PATH" during installation
- Open Command Prompt and verify:

python --version # Should show Python 3.11.x
# Install uv using the official installer curl -LsSf https://astral.sh/uv/install.sh | sh # Verify installation uv --version
# Install uv using the official installer (Invoke-WebRequest -Uri "https://astral.sh/uv/install.ps1" -UseBasicParsing).Content | pwsh -Command - # Verify installation uv --version
# Install uv using pip pip install uv # Verify installation uv --version
# Go to Google Cloud Console https://console.cloud.google.com # Click on "Select a Project" at the top # Click "New Project" # Name it (e.g., "youtube-mcp-server") # Click "Create"
# In the Google Cloud Console: # 1. Go to "APIs & Services" > "Library" # 2. Search for "YouTube Data API v3" # 3. Click "Enable"
# In the Google Cloud Console: # 1. Go to "APIs & Services" > "Credentials" # 2. Click "Create Credentials" > "OAuth client ID" # 3. Select "Desktop app" as application type # 4. Name it (e.g., "YouTube MCP Client") # 5. Click "Create"
# 1. After creating credentials, click "Download JSON" # 2. Rename the downloaded file to 'credentials.json' # 3. Move it to your project root: mv ~/Downloads/client_secret_.json ./credentials.json # Verify the file exists and has correct permissions ls -l credentials.json # Should show -rw------- (readable only by you)

- Never commitcredentials.jsonortoken.pickleto git
- Keep your credentials secure and don't share them
- If credentials are compromised:
- Go to Google Cloud Console
- Delete the compromised credentials
- Create new credentials
- Update your localcredentials.json

git clone https://github.com/yourusername/youtube-mcp-server.git cd youtube-mcp-server

- Create and activate a virtual environment:

# Create virtual environment python -m venv .venv # Activate virtual environment # On macOS/Linux: source .venv/bin/activate # On Windows (Command Prompt): .venv\Scripts\activate # On Windows (PowerShell): .venv\Scripts\Activate.ps1
# Install project in editable mode uv pip install -e . # If you encounter any SSL errors on macOS, you might need to: export SSL_CERT_FILE=/etc/ssl/cert.pem

- Set up YouTube API credentials:

- Go toGoogle Cloud Console
- Create a new project
- Enable YouTube Data API v3
- Create credentials (OAuth 2.0 Client ID)
- Download the credentials and save asclient_secrets.json

For development, you might want to install additional tools:

# Install development dependencies uv pip install -e ".[dev]" # Install pre-commit hooks pre-commit install
# Required environment variables YOUTUBE_API_KEY=your_api_key_here # Optional configuration YOUTUBE_API_QUOTA_LIMIT=10000 # Daily quota limit YOUTUBE_API_REGION=US # Default region
# Check if credentials are properly set up ls -l credentials.json # Should exist and be readable ls -l .env # Should exist and be readable ls -l token.pickle # Should exist after first authentication # Test the server python mcp_videos.py
@mcp.tool() async def get_videos(search: str, max_results: int)
@mcp.tool() async def get_video_info(video_id: str)
@mcp.tool() async def get_channel_details(channel_id: str)
@mcp.tool() async def get_video_comments_tool(video_id: str, max_results: int = 100)
@mcp.tool() async def get_trending_videos_tool(region_code: str = "US", max_results: int = 50)
@mcp.tool() async def get_related_videos_tool(video_id: str, max_results: int = 25)
@mcp.tool() async def summarize_video(video_id: str, include_comments: bool = True)
@mcp.tool() async def generate_video_flashcards( video_id: str, max_cards: int = 10, categories: Optional[List[str]] = None, difficulty: Optional[str] = None )

This tool generates educational flash cards from video content:

- Creates different types of cards (Fill in the blank, Q&A, Definition)
- Includes timestamps for video reference
- Categorizes cards by type and difficulty
- Provides card statistics

# Generate 15 flash cards from a video cards = generate_video_flashcards( video_id="dQw4w9WgXcQ", max_cards=15, categories=["Q&A", "Definition"], difficulty="Medium" ) # Generate all types of cards cards = generate_video_flashcards( video_id="dQw4w9WgXcQ", max_cards=20 )

- Fill in the blank: Tests recall of specific terms or concepts
- Q&A: Questions about key points in the video
- Definition: Explains important concepts

- Easy: Basic recall and understanding
- Medium: Application of concepts
- Hard: Complex concepts and relationships

@mcp.tool() async def generate_video_quiz(video_id: str) -> str

This tool generates a comprehensive quiz from video content:

- Creates multiple choice questions
- Generates true/false statements
- Includes fill-in-the-blank questions
- Uses video metadata, transcript, and description
- Provides answers and explanations

# Generate a quiz from a video quiz = generate_video_quiz("dQw4w9WgXcQ")

- Based on video content
- Includes video metadata
- Tests understanding of key concepts

- Tests factual knowledge
- Based on video statistics
- Verifies understanding of claims

- Tests recall of specific terms
- Uses transcript content
- Focuses on key concepts

=== Video Quiz === Title: [Video Title] Channel: [Channel Name] URL: [Video URL] Question 1 (Multiple Choice): [Question text] 1. [Option 1] 2. [Option 2] 3. [Option 3] 4. [Option 4] Answer: [Correct answer] ------------------ Question 2 (True/False): [Statement] Answer: True/False ------------------ Question 3 (Fill in the blank): [Question with blank] Answer: [Correct answer] ------------------

- Generates exactly 10 questions
- Mixes different question types
- Includes video context
- Provides immediate feedback
- Uses video metadata for questions
- Incorporates transcript content
- Tests different levels of understanding

The project follows a modular architecture:

graph TD A[LLM Client] --> B[MCP Client] B --> C[MCP Server] C --> D[YouTube API] C --> E[Tool Registry] C --> F[Data Formatter] subgraph "Tools" E --> E1[Video Tools] E --> E2[Channel Tools] E --> E3[Comment Tools] E --> E4[Analysis Tools] end
youtube-mcp-server/ ├── mcp_videos.py # Main server implementation ├── youtube_api.py # YouTube API client ├── yt_helper.py # Helper functions ├── requirements.txt # Project dependencies ├── .env # Environment variables ├── .gitignore # Git ignore rules └── README.md # This file

- Create a new async function inmcp_videos.py
- Decorate it with@mcp.tool()
- Implement the tool logic
- Add appropriate error handling
- Update documentation

{ "title": str, "channel_title": str, "duration": str, "description": str, "view_count": int, "like_count": int, "comment_count": int, "url": str, "published_at": str }
{ "author": str, "text": str, "like_count": int, "published_at": str }

- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request

This project is licensed under the MIT License - see theLICENSEfile for details.

- FastMCPfor the MCP framework
-
YouTube Data APIfor the API
- All contributors and users of this project
- Check the
documentation
- Open an
issue
- Contact the maintainers

- Watch the repository
- Check the
releases
- Follow the
changelog

⚠️IMPORTANT: Never commit sensitive files to the repository:

- token.pickle
- client_secrets.json
- .envfiles
- Any other credential files

These files are automatically ignored by.gitignore, but if you accidentally commit them:

git rm --cached token.pickle git rm --cached client_secrets.json

- Revoke and regenerate any exposed credentials
- Update your local.envfile with new credentials
- Never share or expose these files publicly
- Always use environment variables for sensitive data
- Keep credentials in.envfile (already in.gitignore)
- Regularly rotate API keys and tokens
- Use OAuth 2.0 for authentication
- Monitor GitHub's secret scanning alerts

- VisitClaude Desktop
- Download the appropriate version for your OS:

- macOS:.dmgfile
- Windows:.exeinstaller
- Linux:.AppImageor.debpackage

# macOS # 1. Open the .dmg file # 2. Drag Claude to Applications folder # 3. Open from Applications # Windows # 1. Run the .exe installer # 2. Follow the installation wizard # 3. Launch from Start Menu # Linux (Ubuntu/Debian) sudo dpkg -i claude-desktop_.deb # For .deb package # OR chmod +x Claude-.AppImage # For AppImage ./Claude-.AppImage

- Click on the gear icon (⚙️) or
- Use keyboard shortcut:

- macOS:Cmd + ,
- Windows/Linux:Ctrl + ,

- Navigate to "MCP Settings" or "Advanced Settings"
- Add the following configuration:

{ "mcpServers": { "youtube_videos": { "command": "uv", "args": [ "--directory", "<your base directory>/youtube-mcp-server", "run", "mcp_videos.py" ] } } }

-

Replace<your base directory>with your actual project path

// macOS/Linux "/Users/username/Documents/youtube-mcp-server" // Windows "C:\\Users\\username\\Documents\\youtube-mcp-server"
# Test the MCP server path cd "<your base directory>/youtube-mcp-server" uv run mcp_videos.py

- The server should start automatically
- You'll see a connection status indicator
- Available tools will be listed in the interface

# Try a simple command get_videos("python programming", max_results=5)
# Check if the path is correct pwd # Should show your project directory # Verify Python environment which python # Should point to your virtual environment # Check uv installation uv --version

- Verify the server is running
- Check the configuration path
- Ensure all dependencies are installed
- Check the logs in Claude Desktop

# Path not found # Solution: Use absolute path in configuration # Permission denied # Solution: Check file permissions chmod +x mcp_videos.py # Module not found # Solution: Verify virtual environment source .venv/bin/activate # or appropriate activation command

An MCP server for interacting with YouTube's data and services.

Remote MCP that scrapes customer comments and reviews from Reddit, YouTube, Amazon, TikTok, app stores, and 25+ other platforms, then turns them into ad angles and customer language for marketers.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.