YouTube MCP Server
Provides tools for searching YouTube videos, retrieving detailed video information, and fetching video transcripts with language support.
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 MCP Serversearch for beginner Python tutorials"
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
A Model Context Protocol (MCP) server that provides comprehensive YouTube integration with video search, detailed video information retrieval, and transcript fetching capabilities.
Features
🔍 Video Search: Search YouTube videos with pagination support
📹 Video Details: Get comprehensive video information including statistics, content details, and metadata
📝 Transcript Fetching: Real transcript extraction with intelligent language prioritization
🌐 Multi-language Support: Automatic language detection and fallback for transcripts
⚡ Async Performance: Built with async/await for optimal performance
🔒 Input/Output Validation: Complete schema validation with detailed error reporting
Related MCP server: YouTube Insights MCP Server
Tools
1. search_videos
Search for videos on YouTube with flexible pagination.
Parameters:
query(string, required): Search query for finding videospageToken(string, optional): Token for pagination to get next/previous page results
Example:
{
"query": "python programming tutorial",
"pageToken": "CAUQAA"
}Returns: Search results with video snippets and pagination tokens
2. get_videos
Get detailed information about specific YouTube videos.
Parameters:
ids(array, required): List of video IDs to retrieve (max 50)parts(array, optional): Parts of video data to retrieveAvailable parts:
snippet,contentDetails,statistics,status,player,recordingDetails,fileDetails,processingDetails,suggestions,liveStreamingDetails,localizations,topicDetailsDefault:
["snippet"]
Example:
{
"ids": ["dQw4w9WgXcQ", "9bZkp7q19f0"],
"parts": ["snippet", "contentDetails", "statistics"]
}Returns: Comprehensive video data including duration, view counts, like counts, descriptions, and more
3. get_video_transcript
Extract video transcripts with intelligent language handling.
Parameters:
videoId(string, required): YouTube video IDlanguage(string, optional): Preferred language code (e.g., 'en', 'es', 'fr')
Language Priority:
Requested language (if specified)
English (fallback)
Manual transcripts (preferred over auto-generated)
Any available transcript
Example:
{
"videoId": "dQw4w9WgXcQ",
"language": "en"
}Returns: Transcript with text segments, precise timestamps, and language metadata
Installation
Prerequisites
YouTube Data API v3 Key:
Visit Google Cloud Console
Create a new project or select an existing one
Enable YouTube Data API v3
Create credentials (API Key)
Copy the API key for configuration
Setup
Install the server:
git clone <repository-url> cd youtube-mcp-server uv syncConfigure environment:
cp .env.example .env # Edit .env and add your YouTube API key: # YOUTUBE_API_KEY=your_actual_api_key_hereTest installation:
uv run python test_server.py
Claude Desktop Integration
Add to your Claude Desktop configuration:
{
"mcpServers": {
"youtube": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/yourusername/youtube-mcp-server",
"youtube-mcp-server"
],
"env": {
"YOUTUBE_API_KEY": "your_youtube_api_key_here"
}
}
}
}Usage Examples
Basic Video Search
# Search for Python tutorials
result = await search_videos("python programming tutorial")Get Video Details
# Get comprehensive video information
result = await get_videos(
ids=["dQw4w9WgXcQ"],
parts=["snippet", "contentDetails", "statistics"]
)Fetch Transcript
# Get transcript in preferred language
result = await get_video_transcript("dQw4w9WgXcQ", language="en")API Rate Limits
The YouTube Data API v3 has the following quota limits:
Default quota: 10,000 units per day
Search requests: 100 units each
Video details: 1 unit per video
Transcript requests: No additional quota cost (uses separate API)
Typical usage:
Video search + details: ~110 units (allows ~90 searches/day)
Transcript fetching: No quota impact
Development
Project Structure
youtube-mcp-server/
├── youtube_mcp_server/
│ ├── __init__.py
│ ├── __main__.py
│ ├── server.py # MCP server implementation
│ ├── handlers.py # Tool function implementations
│ └── tools.json # Tool schema definitions
├── test_cases.json # Comprehensive test cases
├── test_server.py # Test suite with schema validation
├── main.py # Development entry point
├── pyproject.toml # Project configuration
└── README.mdRunning Tests
# Run comprehensive test suite
uv run python test_server.py
# Run the server locally
uv run python main.pyAdding Features
Define tool schema in
youtube_mcp_server/tools.jsonImplement function in
youtube_mcp_server/handlers.pyUpdate mapping in
TOOL_FUNCTIONSAdd test cases in
test_cases.jsonRun tests to validate
Error Handling
The server provides comprehensive error handling:
🔑 API Key Issues: Clear messages for missing/invalid YouTube API keys
📊 Quota Management: Informative messages about API quota limits
✅ Input Validation: Detailed validation errors for incorrect parameters
🌐 Network Resilience: Graceful handling of connection issues
🔍 Schema Validation: Full input/output validation with detailed error messages
Technical Details
Dependencies
MCP Framework:
mcp>=1.6.0for Model Context Protocol supportGoogle API Client:
google-api-python-client>=2.0.0for YouTube Data APITranscript API:
youtube-transcript-api>=0.6.0for transcript extractionEnvironment:
python-dotenv>=1.0.0for configuration managementValidation:
jsonschema>=4.0.0for schema validation
Performance
Async Architecture: All operations use async/await for optimal performance
Connection Pooling: Efficient HTTP connection management
Error Recovery: Automatic retry logic for transient failures
Schema Caching: Tool schemas loaded once at startup
Security
Environment Variables: API keys stored securely in environment
Input Sanitization: All inputs validated against strict schemas
Rate Limiting: Built-in respect for YouTube API rate limits
Error Isolation: Detailed error messages without exposing internals
Contributing
Fork the repository
Create a feature branch
Implement your changes with tests
Ensure all tests pass:
uv run python test_server.pySubmit a pull request
License
MIT License - see LICENSE file for details.
Support
Documentation: Check test cases in
test_cases.jsonfor usage examplesValidation: Run
uv run python test_server.pyto validate your setupAPI Reference: YouTube Data API v3 Documentation
Issues: Open GitHub issues for bugs or feature requests
Built with ❤️ using the Model Context Protocol framework.
This server cannot be installed
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/OriShmila/youtube-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server