by sinjab
Extracts YouTube video metadata and transcripts via an MCP server, offering tool-based access, detailed logging, and robust error handling.
Mcp Youtube Extract provides an MCP server that can retrieve comprehensive information from YouTube videos, including title, description, channel, publish date, and full transcripts with fallback mechanisms for both manually created and auto‑generated subtitles.
pip install mcp-youtube-extract
export YOUTUBE_API_KEY=your_youtube_api_key
mcp_youtube_extract
get_yt_video_info
tool with a video ID to receive metadata and transcript.get_yt_video_info
.Q: Do I need a YouTube API key?
A: Yes, the server requires a YouTube Data API v3 key for metadata requests. Set it in YOUTUBE_API_KEY
.
Q: Can the server run without internet? A: No, it relies on YouTube APIs to fetch data.
Q: What transcript languages are supported? A: It returns the default language transcript provided by YouTube; auto‑generated captions are used as a fallback when manual captions are unavailable.
Q: How are errors reported? A: Errors are returned in a standardized JSON format and are also logged with stack traces.
Q: Is there a way to limit API usage? A: Implement rate‑limiting in the client or configure Google Cloud quotas for your API key.
A Model Context Protocol (MCP) server for YouTube operations, demonstrating core MCP concepts including tools and logging.
This package is now available on PyPI! You can install it directly with:
pip install mcp-youtube-extract
Visit the package page: mcp-youtube-extract on PyPI
The easiest way to get started is to install from PyPI:
pip install mcp-youtube-extract
Or using pipx (recommended for command-line tools):
pipx install mcp-youtube-extract
This will install the latest version with all dependencies. You can then run the MCP server directly:
mcp_youtube_extract
For development or if you prefer uv:
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone and install the project
git clone https://github.com/sinjab/mcp_youtube_extract.git
cd mcp_youtube_extract
# Install dependencies (including dev dependencies)
uv sync --dev
# Set up your API key for development
cp .env.example .env
# Edit .env and add your YouTube API key
Clone the repository:
git clone https://github.com/sinjab/mcp_youtube_extract.git
cd mcp_youtube_extract
Install in development mode:
uv sync --dev
For development, create a .env
file in the project root with your YouTube API key:
# YouTube API Configuration
YOUTUBE_API_KEY=your_youtube_api_key_here
For production, set the environment variable directly in your system:
export YOUTUBE_API_KEY=your_youtube_api_key_here
Required:
YOUTUBE_API_KEY
: Your YouTube Data API key (required for video metadata)To use this MCP server, you'll need a YouTube Data API key. Here's how to get one:
# Install from PyPI
pip install mcp-youtube-extract
# Run the server
mcp_youtube_extract
# Using uv
uv run mcp_youtube_extract
# Or directly
python -m mcp_youtube_extract.server
# Run all pytest tests
uv run pytest
# Run specific pytest test
uv run pytest tests/test_with_api_key.py
# Run tests with coverage
uv run pytest --cov=src/mcp_youtube_extract --cov-report=term-missing
Note: The tests/
directory contains 4 files:
test_context_fix.py
- Pytest test for context API fallback functionalitytest_with_api_key.py
- Pytest test for full functionality with API keytest_youtube_unit.py
- Unit tests for core YouTube functionalitytest_inspector.py
- Standalone inspection script (not a pytest test)Test Coverage: The project currently has 62% overall coverage with excellent coverage of core functionality:
youtube.py
: 81% coverage (core business logic)logger.py
: 73% coverage (logging utilities)server.py
: 22% coverage (MCP protocol handling)__init__.py
: 100% coverage (package initialization)The test_inspector.py
file is a standalone script that connects to the MCP server and validates its functionality:
# Run the inspection script to test server connectivity and functionality
uv run python tests/test_inspector.py
This script will:
get_yt_video_info
tool with a sample videoThe server provides one main tool: get_yt_video_info
This tool takes a YouTube video ID and returns:
Example Usage:
# Extract video ID from YouTube URL: https://www.youtube.com/watch?v=dQw4w9WgXcQ
video_id = "dQw4w9WgXcQ"
result = get_yt_video_info(video_id)
To use this MCP server with a client, add the following configuration to your client's settings:
{
"mcpServers": {
"mcp_youtube_extract": {
"command": "mcp_youtube_extract",
"env": {
"YOUTUBE_API_KEY": "your_youtube_api_key"
}
}
}
}
{
"mcpServers": {
"mcp_youtube_extract": {
"command": "uv",
"args": [
"--directory",
"<your-project-directory>",
"run",
"mcp_youtube_extract"
],
"env": {
"YOUTUBE_API_KEY": "your_youtube_api_key"
}
}
}
}
mcp_youtube_extract/
├── src/
│ └── mcp_youtube_extract/
│ ├── __init__.py
│ ├── server.py # MCP server implementation
│ ├── youtube.py # YouTube API utilities
│ └── logger.py # Logging configuration
├── tests/
│ ├── __init__.py
│ ├── test_context_fix.py # Context API fallback tests
│ ├── test_inspector.py # Server inspection tests
│ ├── test_with_api_key.py # Full functionality tests
│ └── test_youtube_unit.py # Unit tests for core functionality
├── logs/ # Application logs
├── .env # Environment variables (create from .env.example)
├── .gitignore # Git ignore rules (includes coverage files)
├── pyproject.toml
├── LICENSE # MIT License
└── README.md
The project uses a comprehensive testing approach:
test_youtube_unit.py
): Test core YouTube functionality with mocked APIstest_context_fix.py
, test_with_api_key.py
): Test full server functionalitytest_inspector.py
): Interactive server inspection toolThe project includes robust error handling:
# Install build dependencies
uv add --dev hatch
# Build the package
uv run hatch build
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
git checkout -b feature/amazing-feature
)git commit -m 'Add some amazing feature'
)git push origin feature/amazing-feature
)If you encounter any issues or have questions, please:
Please log in to share your review and rating for this MCP.
{ "mcpServers": { "mcp_youtube_extract": { "command": "mcp_youtube_extract", "args": [], "env": { "YOUTUBE_API_KEY": "<YOUR_API_KEY>" } } } }
Explore related MCPs that share similar capabilities and solve comparable challenges
by modelcontextprotocol
A Model Context Protocol server that provides web content fetching capabilities.
by microsoft
Provides fast, lightweight browser automation using Playwright's accessibility tree, enabling LLMs to interact with web pages through structured snapshots instead of screenshots.
by firecrawl
Provides powerful web scraping capabilities for LLM clients such as Cursor, Claude, and others, enabling content extraction, crawling, search, and batch processing through a Model Context Protocol server.
by zcaceres
Fetches web content and returns it in HTML, JSON, plain‑text, or Markdown formats, optionally applying custom request headers.
by tinyfish-io
Extract structured data from any web page by invoking AgentQL's extraction tool through a Model Context Protocol server, enabling AI assistants to retrieve and format web information on demand.
by cyberchitta
Fetches HTML or markdown from bot‑protected websites, delivering plain‑text content that AI assistants can process.
by xxxbrian
Provides realistic browser-like HTTP request capabilities with accurate TLS/JA3/JA4 fingerprints, enabling LLMs to bypass anti-bot measures and retrieve web content, plus conversion of PDF and HTML to Markdown for easier LLM processing.
by djannot
Scrape webpages and convert them to well‑formatted markdown, automatically handling cookies, captchas, paywalls and other interactive elements using AI‑driven vision analysis.
by Dumpling-AI
Provides comprehensive MCP services that integrate Dumpling AI’s data APIs, web scraping, document conversion, AI agents, knowledge‑base management, and secure JavaScript/Python execution.