mcp-server-youtube
A Rust MCP server for YouTube. Search videos, read channels, browse playlists, fetch comments, and get transcripts — all from your AI assistant.
Why this one?
- Full YouTube Data API v3 coverage — videos, channels, playlists, comments, categories, trending, search with all filters and sorting options
- Working transcripts — uses rustypipe (InnerTube API) for reliable subtitle/caption extraction, including auto-generated captions. No API key quota consumed for transcripts
- Single binary, zero runtime dependencies — written in Rust, starts instantly
- Typed filter enums — search filters (duration, definition, license, etc.) are exposed as typed enums in the JSON schema, so AI models know exactly which values are valid without guessing
Tools
Videos
| Tool | Description |
|---|---|
videos_getVideo |
Get video details (snippet, statistics, content details) |
videos_searchVideos |
Search videos with filters for duration, definition, date range, region, captions, license, category, and more. Supports sorting by relevance, date, rating, or view count |
videos_getCategories |
List video categories for a region |
videos_getTrending |
Get trending/most popular videos for a region, optionally filtered by category |
Channels
| Tool | Description |
|---|---|
channels_getChannel |
Get channel info and statistics by channel ID |
channels_getByHandle |
Look up a channel by its handle (e.g. @shura_stone) |
channels_search |
Search for channels by name |
channels_listVideos |
List videos from a channel (by date) with pagination |
Playlists
| Tool | Description |
|---|---|
playlists_getPlaylist |
Get playlist info |
playlists_getPlaylistItems |
List videos in a playlist with pagination |
Comments
| Tool | Description |
|---|---|
comments_getComments |
Get comment threads on a video with pagination |
Transcripts & Captions
| Tool | Description |
|---|---|
transcripts_getTranscript |
Get video transcript/subtitles. Works with both auto-generated and manual captions. Returns plain text by default; set include_timestamps for per-segment timing. Uses rustypipe (InnerTube API) — no API key quota consumed |
transcripts_getBatch |
Fetch transcripts for multiple videos in one call with concurrent fetching. No API key quota consumed |
transcripts_listLanguages |
List available subtitle/caption languages for a video |
Setup
Get a YouTube API Key
- Go to Google Cloud Console
- Create a project (or select an existing one)
- Enable the YouTube Data API v3
- Create an API key under Credentials
Configuration
| Environment Variable | CLI Flag | Default | Description |
|---|---|---|---|
YOUTUBE_API_KEY |
--youtube-api-key |
required | YouTube Data API v3 key |
YOUTUBE_TRANSCRIPT_LANG |
--transcript-lang |
en |
Default transcript language |
MCP_TRANSPORT |
--transport |
stdio |
Transport: stdio or streamable-http |
HOST |
--host |
127.0.0.1 |
HTTP bind address |
PORT |
--port |
3000 |
HTTP port |
YOUTUBE_TRANSCRIPT_CONCURRENCY |
--transcript-concurrency |
50 |
Max concurrent transcript fetches for batch operations |
The API key is stored as a SecretString and never appears in logs or debug output.
Usage
Claude Desktop / Claude Code
With uvx:
{
"mcpServers": {
"youtube": {
"command": "uvx",
"args": ["mcp-server-youtube"],
"env": {
"YOUTUBE_API_KEY": "YOUR_API_KEY"
}
}
}
}
With rvx:
{
"mcpServers": {
"youtube": {
"command": "rvx",
"args": ["mcp-server-youtube"],
"env": {
"YOUTUBE_API_KEY": "YOUR_API_KEY"
}
}
}
}
Other installation methods
With Nix:
nix run github:vaporif/mcp-server-youtube
With cargo:
cargo install mcp-server-youtube
From releases:
Download a prebuilt binary from GitHub Releases.
HTTP Transport
YOUTUBE_API_KEY=your_key mcp-server-youtube --transport streamable-http --port 3000
The server listens on http://127.0.0.1:3000/mcp.
Debugging
Enable debug logging to see tool invocations:
RUST_LOG=debug mcp-server-youtube
Development
# Enter dev shell (requires Nix)
nix develop
# Build
cargo build
# Test
cargo test
# Lint
cargo clippy --workspace -- -D warnings
# Format
cargo fmt --all
License
GPL-3.0-or-later
Metadata
Release files for mcp-server-youtube 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| mcp_server_youtube-0.1.2-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| mcp_server_youtube-0.1.2-py3-none-musllinux_1_2_x86_64.whl | Python 3 | none | Linux musl 1.2+ x86-64 | Details |
| mcp_server_youtube-0.1.2-py3-none-musllinux_1_2_aarch64.whl | Python 3 | none | Linux musl 1.2+ ARM64 | Details |
| mcp_server_youtube-0.1.2-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| mcp_server_youtube-0.1.2-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details |
Total release size: 40.8 MB
Release files / mcp_server_youtube-0.1.2-py3-none-win_amd64.whl
| Download URL | mcp_server_youtube-0.1.2-py3-none-win_amd64.whl |
|---|---|
| Size | 7.2 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
1dd2f23e8f6cf3cd6b90e303e1ec6011f24d161eab93f1ce1b81d67d970ded01
|
|
BLAKE2b-256 checksum How to use checksums |
29b88d474787eed15ff754f7e22e18a2ac13c981c8725a96d5668334db56469d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.12.6
|
Release files / mcp_server_youtube-0.1.2-py3-none-musllinux_1_2_x86_64.whl
| Download URL | mcp_server_youtube-0.1.2-py3-none-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 8.8 MB |
| Tags | Linux musl 1.2+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
eb76d84d31549ef7c248415e3fa06996d8225e2d4c878ffab10c662d58e1bfd6
|
|
BLAKE2b-256 checksum How to use checksums |
e39e2a0a2fc0f8214483329b14771756070c985bbe171ce07bca4f127aedbad9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.12.6
|
Release files / mcp_server_youtube-0.1.2-py3-none-musllinux_1_2_aarch64.whl
| Download URL | mcp_server_youtube-0.1.2-py3-none-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 8.4 MB |
| Tags | Linux musl 1.2+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
31c9e250392673bfbce3cb87fab387c015d453e3f71b42f659b8a08bcf60f3d8
|
|
BLAKE2b-256 checksum How to use checksums |
d1e8139c7f567e87a5965f1fd6e2eb12153940e213817af05d97763554eee4ec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.12.6
|
Release files / mcp_server_youtube-0.1.2-py3-none-macosx_11_0_arm64.whl
| Download URL | mcp_server_youtube-0.1.2-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 8.0 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
83b7b11c1a8607ffa780ea7c2ec3a729bb3e85055e69878967a99bd4dc8d8e04
|
|
BLAKE2b-256 checksum How to use checksums |
e079b8f43bcb09691972f92c8d05a06a8812557a92c74b7b97c08910b36ef8ba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.12.6
|
Release files / mcp_server_youtube-0.1.2-py3-none-macosx_10_12_x86_64.whl
| Download URL | mcp_server_youtube-0.1.2-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 8.3 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
cc5d490acef8ef3174f90152c58b30d89d6b1ecada5e0e57f8d0c8274d8f8f8d
|
|
BLAKE2b-256 checksum How to use checksums |
ba99b7e6264d5da904920cdcd80be1e4749c82e6d2a08e94456a489a037d6a8a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.12.6
|
Security for mcp-server-youtube 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.