Skip to main content
Glama

License: MIT Python 3.10+

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

Related MCP server: YouTube MCP Server

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_ID

  • https://youtu.be/VIDEO_ID

  • https://www.youtube.com/embed/VIDEO_ID

  • https://www.youtube.com/v/VIDEO_ID

  • VIDEO_ID (bare 11-character ID)

Returns:

  • video_id — the video ID

  • title — video title

  • channel_name — channel name

  • thumbnail_url — thumbnail URL

  • duration_seconds — video duration

  • publish_date — publish date

  • transcript — full transcript text

  • from_cache — whether the result was served from cache

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, default 3) — max results returned per query.

Returns a list of results, each containing:

  • video_id — the video ID

  • title — video title

  • channel_name — channel name

  • url — video URL

  • duration_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:

  1. uv not installed — Install it: https://docs.astral.sh/uv/getting-started/installation/

  2. uv not on PATH — Use the full path to uvx in your config (find yours with which uvx):

    "command": "/Users/you/.local/bin/uvx"
  3. Switch to pip — Skip uv entirely. Install with pip install tubemcp and 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

Available Tools

2 tools
youtube_get_transcriptA

Fetch the transcript and metadata for a single YouTube video. Accepts a URL or video ID. Results are cached locally. Fetch only the videos most relevant to the user's question — avoid bulk fetching. The transcript field is an array of segments, each with text, start (seconds), and duration (seconds).

ParametersJSON Schema
NameRequiredDescriptionDefault
video_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions local caching and the segment structure of transcripts, adding useful context. However, it does not state whether the operation is read-only, potential errors, or authentication requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each providing unique and necessary information: purpose, usage constraint, and result format. It is front-loaded and free of filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with only one parameter and an output schema, the description covers the core purpose, usage context, parameter format, and even adds structural details about the transcript. It could mention error handling or rate limits, but these are not critical for a straightforward fetch operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only defines video_url as a string, but the description clarifies that it accepts a URL or video ID, which is essential for correct invocation. With 0% schema description coverage, this added meaning significantly helps the agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches transcript and metadata for a single YouTube video, using a URL or video ID. It distinguishes itself from the sibling tool youtube_search by specifying the exact resource (transcript) and action (fetch).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance to 'fetch only the videos most relevant to the user's question — avoid bulk fetching,' which helps the agent decide when to use this tool. It does not explicitly contrast with youtube_search, but the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv0.1.3
    • First observedyoutube_get_transcript
    • First observedyoutube_search

TDQS

A4.4/5.0
Disambiguation5/5

The two tools have completely distinct purposes: one searches for videos and returns metadata, the other fetches a transcript for a specific video. There is no overlap or ambiguity.

Naming Consistency4/5

Both tools share the 'youtube_' prefix and use verb-like names, but 'youtube_get_transcript' follows a verb_object pattern while 'youtube_search' is just a verb. Minor deviation from a consistent pattern.

Tool Count3/5

With only two tools, the server is minimal but covers its core workflow of search and transcript retrieval. This falls into the borderline range for tool count.

Completeness5/5

The search and get_transcript tools provide a complete workflow: an agent can find a video and then fetch its transcript. There are no obvious missing operations for the stated purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    An MCP server that provides YouTube data access without API keys or quotas. It enables agents to search videos, retrieve transcripts and metadata, and perform full-text search across cached content for AI context retrieval.
    3
    -

Latest Blog Posts

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/BlockBenny/tubemcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server