 
TubeMCP
MCP server that lets AI agents search YouTube and fetch transcripts. Zero config — just install and go.
What is MCP? Model Context Protocol lets AI assistants like Claude call external tools. TubeMCP gives your AI agent the ability to search YouTube and read any video's transcript — useful for summarization, Q&A, research, and content analysis.
Prerequisites
- Python 3.10+ — download
Installation
pip install tubemcp
or
uv tool install tubemcp
Then add it to your client:
Claude Code:
claude mcp add tubemcp -- tubemcp
Claude Desktop — add to your claude_desktop_config.json:
{
"mcpServers": {
"tubemcp": {
"command": "tubemcp"
}
}
}
Cursor — add to .cursor/mcp.json:
{
"mcpServers": {
"tubemcp": {
"command": "tubemcp"
}
}
}
Windsurf — add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"tubemcp": {
"command": "tubemcp"
}
}
}
What you get
youtube_get_transcript
Fetch the English transcript and metadata for any YouTube video.
Input: A YouTube URL or video ID in any of these formats:
https://www.youtube.com/watch?v=VIDEO_IDhttps://youtu.be/VIDEO_IDhttps://www.youtube.com/embed/VIDEO_IDhttps://www.youtube.com/v/VIDEO_IDVIDEO_ID(bare 11-character ID)
Returns:
video_id— the video IDtitle— video titlechannel_name— channel namethumbnail_url— thumbnail URLduration_seconds— video durationpublish_date— publish datetranscript— full transcript textfrom_cache— whether the result was served from cache
youtube_search
Search YouTube with multiple queries for broader coverage. Results are deduplicated by video ID. Returns metadata only — no transcripts.
Input:
queries(list[str]) — search queries to run. Use 2–3 from different angles for best results.max_results_per_query(int, default3) — max results returned per query.
Returns a list of results, each containing:
video_id— the video IDtitle— video titlechannel_name— channel nameurl— video URLduration_seconds— video duration
Caching
Transcripts are cached locally in ~/.tubemcp/cache.db (SQLite). Subsequent requests for the same video are served instantly from cache.
Troubleshooting
spawn uvx ENOENT
This means your MCP client can't find the uvx command. Three fixes:
- uv not installed — Install it: https://docs.astral.sh/uv/getting-started/installation/
- uv not on PATH — Use the full path to
uvxin your config (find yours withwhich uvx):
"command": "/Users/you/.local/bin/uvx"
- Switch to pip — Skip uv entirely. Install with
pip install tubemcpand use"command": "tubemcp"in your config (see pip installation above).
Verify uv is working:
uvx --version
Development
git clone https://github.com/BlockBenny/tubemcp.git
cd tubemcp
pip install -e ".[dev]"
pytest
Contributing
See CONTRIBUTING.md for development setup and guidelines.
License
MIT











