YouTube MCP Server
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
Jump to
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:
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 thedocumentation
- Open anissue
- Contact the maintainers
- Watch the repository
- Check thereleases
- Follow thechangelog
⚠️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.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.




