mcp-youtube
This server acts as a high-efficiency Model Context Protocol (MCP) server for YouTube, providing token-optimized, structured data from the YouTube Data API v3 for seamless integration with LLMs.
Core capabilities:
Search and retrieve video details with filters for query, type, recency, duration, region, and channel
Fetch detailed video metadata including statistics, engagement ratios, and optional tags or description levels
Obtain video transcripts in full text or key segments (intro/outro) with multi-language support
Access channel statistics such as subscriber count, view count, video count, and creation date
Discover top-performing videos by channel based on view count with configurable detail levels
Find trending videos by region and category to identify popular content
Retrieve video comments with sorting, reply fetching, and customizable detail levels
List available video categories for specific regions to support filtering operations
Identify outlier channels within niches using MongoDB for advanced analysis
Performance features:
MongoDB integration for caching API responses and reducing quota usage
Token-efficient data structures optimized for AI language models
Batch processing capabilities for multiple videos/channels simultaneously
Integrates with Google Cloud Console for YouTube Data API v3 key management and quota monitoring.
Uses MongoDB for caching API responses and storing analysis data to improve performance and reduce YouTube API quota usage.
Provides comprehensive YouTube Data API v3 integration with tools for video search and metadata retrieval, transcript fetching, channel statistics and analysis, trending content discovery, and video categorization - all optimized for token-efficient LLM consumption.
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., "@mcp-youtubesearch for recent Python tutorial videos and give me the top 5 results"
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 Data MCP Server (@kirbah/mcp-youtube)
A production-grade YouTube Data MCP server engineered specifically for AI agents.
Unlike standard API wrappers that flood your LLM with redundant data, this server strips away YouTube's heavy payload bloat. It is designed to save you massive amounts of context window tokens, protect your daily API quotas via caching, and run reliably without breaking your workflows.
Why Choose This Server?
Most MCP servers are weekend projects. @kirbah/mcp-youtube is built for reliable, daily, cost-effective agentic workflows.
🎯 Want feedback on your own channel, not just raw data? Check out CreatorLens - a companion Claude Skill built on this MCP that diagnoses common growth problems (weak hooks, bad thumbnails, flatlined videos) using a real strategist's framework, not just numbers.
📉 1. Save Up to 87% on Tokens (and Context Window)
The raw YouTube API returns massive JSON payloads filled with nested eTags, redundant thumbnails, and localization data that LLMs don't need. This server structures the data to give your LLM exactly what it needs to reason, and nothing else.
%%{init: { "theme": "base", "themeVariables": { "xyChart": { "plotColorPalette": "#ef4444, #22c55e" } } } }%%
xychart-beta
title "Token Consumption (Lower is Better)"
x-axis ["getVideoDetails", "searchVideos", "getChannelStats"]
y-axis "Context Tokens" 0 --> 1200
bar "Raw YouTube API" [854, 1115, 673]
bar "MCP-YouTube (Optimized)" [209, 402, 86]API Method | Raw YouTube Tokens | MCP-YouTube Tokens | Token Savings | Data Size |
| 673 | 86 | ~87% Less | 1.9 KB ➔ 0.2 KB |
| 854 | 209 | ~75% Less | 2.9 KB ➔ 0.6 KB |
| 1115 | 402 | ~64% Less | 3.4 KB ➔ 1.2 KB |
(Curious? You can compare the raw API responses vs optimized outputs in the examples folder).
🛡️ 2. Protect Your API Quotas (Smart Caching)
The YouTube Data API has strict daily limits (10,000 quota units). If your LLM gets stuck in a loop or re-asks a question, standard servers will drain your API limit in minutes. This server includes an optional MongoDB caching layer. If your agent requests a video details or searches the same trending videos twice, the server serves it from the cache - costing you 0 API quota points.
🏗️ 3. Production-Grade & Actively Maintained
Tired of MCP tools crashing your AI client? This server is built to be a rock-solid dependency:
97% Test Coverage: Comprehensively unit-tested (check the Codecov badge).
Zero Lint Errors/Warnings: Enforces strict, clean code (
npm run lintpasses 100%).Active Security: Automated Dependabot patching ensures underlying libraries are never left with known vulnerabilities.
Strict Type Safety: Built using Zod validation and the robust MCP TypeScript Starter architecture.
Related MCP server: Youtube-MCP
Quick Start: Installation
🟢 Zero-Config Mode (No API Key Required)
Want to just fetch transcripts? You can use this server immediately without any configuration! Just install and go. Add a YouTube API key later to unlock deep search and analytics.
The easiest way to install this server is by clicking the "Add to Claude Desktop" button on the Glama server page.
If you are configuring manually (e.g., in Cursor), just add this bare-minimum setup:
{
"mcpServers": {
"youtube": {
"command": "npx",
"args": ["-y", "@kirbah/mcp-youtube"]
}
}
}✨ Tip: In Zero-Config mode, you can ask your AI to simply "Read the transcript for youtube://transcript/{videoId}"!
🟡 Manual Configuration (Unlock All Features)
If you prefer to configure your MCP client manually (e.g., Claude Desktop or Cursor), add the following to your configuration file:
Get a YouTube Data API v3 Key (See Setup Instructions below).
(Highly Recommended) Get a free MongoDB Connection String to enable quota-saving caching.
{
"mcpServers": {
"youtube": {
"command": "npx",
"args": ["-y", "@kirbah/mcp-youtube"],
"env": {
"YOUTUBE_API_KEY": "YOUR_YOUTUBE_API_KEY_HERE",
"MDB_MCP_CONNECTION_STRING": "mongodb+srv://user:pass@cluster0.abc.mongodb.net/youtube_niche_analysis"
}
}
}
}(Windows PowerShell Users: If npx fails, try using "command": "cmd" and "args": ["/k", "npx", "-y", "@kirbah/mcp-youtube"])
Next Step: Add a Skill
Once your server is connected, try CreatorLens - a Claude Skill built specifically for this MCP that turns raw YouTube data into growth diagnostics (weak hooks, packaging, niche doubt, format pivots).
Key Features
Optimized Video Information: Search videos with advanced filters. Retrieve detailed metadata, statistics (views, likes, etc.), and content details, all structured for minimal token footprint.
Efficient Transcript Management: Fetch video captions/subtitles with multi-language support, perfect for content analysis by LLMs.
Insightful Channel Analysis: Get concise channel statistics (subscribers, views, video count) and discover a channel's top-performing videos without data bloat.
Lean Trend Discovery: Find trending videos by region and category, and get lists of available video categories, optimized for quick AI processing.
Structured for AI: All responses are designed to be easily parsable and immediately useful for language models.
Efficient Comment Retrieval: Fetch video comments with fine-grained control over the number of results and replies, optimized for sentiment analysis and feedback extraction.
Available Tools
The server provides the following MCP tools, each designed to return token-optimized data:
Tool Name | Description | Parameters (see details in tool schema) |
| Retrieves detailed, lean information for multiple YouTube videos including metadata, statistics, engagement ratios, and content details. |
|
| Searches for videos or channels based on a query string with various filtering options, returning concise results. |
|
| Retrieves token-efficient transcripts (captions) for multiple videos, with options for full text or key segments (intro/outro). |
|
| Retrieves lean statistics for multiple channels (subscriber count, view count, video count, creation date). |
|
| Retrieves a list of a channel's top-performing videos with lean details and engagement ratios. |
|
| Retrieves a list of trending videos for a given region and optional category, with lean details and engagement ratios. |
|
| Retrieves available YouTube video categories (ID and title) for a specific region, providing essential data only. |
|
| Retrieves comments for a YouTube video. Allows sorting, limiting results, and fetching a small number of replies per comment. |
|
| Identifies channels that consistently perform as outliers within a specific niche. Requires a MongoDB connection. |
|
For detailed input parameters and their descriptions, please refer to the inputSchema within each tool's configuration file in the src/tools/ directory (e.g., src/tools/video/getVideoDetails.ts).
Note on API Quota Costs: Most tools are highly efficient.
getVideoDetails,getChannelStatistics, andgetTrendingVideoscost only 1 unit per call. ThegetTranscriptstool has 0 API cost. The newgetVideoCommentstool has a variable cost: the base call is 1 unit, but if you request replies (by settingmaxReplies > 0), it costs an additional 1 unit for each top-level comment it fetches replies for. The search-based tools are the most expensive:searchVideoscosts 100 units andgetChannelTopVideoscosts 101 units.
Advanced Usage & Local Development
If you wish to contribute, modify the server, or run it locally outside of an MCP client's managed environment:
Prerequisites
Node.js (version specified in
package.jsonengines field - currently>=20.0.0)npm (usually comes with Node.js)
A YouTube Data API v3 Key (see YouTube API Setup)
Local Setup
Clone the repository:
git clone https://github.com/kirbah/mcp-youtube.git cd mcp-youtubeInstall dependencies:
npm ciConfigure Environment: Create a
.envfile in the root by copying.env.example:cp .env.example .envThen, edit
.envto add yourYOUTUBE_API_KEY:YOUTUBE_API_KEY=your_youtube_api_key_here MDB_MCP_CONNECTION_STRING=your_mongodb_connection_string_here
Development Scripts
# Run in development mode with live reloading
npm run dev
# Build for production
npm run build
# Run the production build (after npm run build)
npm start
# Lint files
npm run lint
# Run tests
npm run test
npm run test -- --coverage # To generate coverage reports
# Inspect MCP server using the Model Context Protocol Inspector
npm run inspectorLocal Development with an MCP Client
To have an MCP client run your local development version (instead of the published NPM package):
Ensure you have a script in
package.jsonfor a non-watching start, e.g.:"scripts": { "start:client": "tsx ./src/index.ts" }Configure your MCP client to spawn this local script:
{ "mcpServers": { "youtube_local_dev": { "command": "npm", "args": ["run", "start:client"], "working_directory": "/absolute/path/to/your/cloned/mcp-youtube", "env": { "YOUTUBE_API_KEY": "YOUR_LOCAL_DEV_API_KEY_HERE" } } } }Note on the env block above: Setting YOUTUBE_API_KEY directly in the env block for the client configuration is one way to provide the API key. Alternatively, if your server correctly loads its .env file based on the working_directory, you might not need to specify it in the client's env block, as long as your local .env file in the project root contains the YOUTUBE_API_KEY. The working_directory path must be absolute and correct for the server to find its .env file.
YouTube API Setup
Go to the Google Cloud Console.
Create a new project or select an existing one.
In the navigation menu, go to "APIs & Services" > "Library".
Search for "YouTube Data API v3" and Enable it for your project.
Go to "APIs & Services" > "Credentials".
Click "+ CREATE CREDENTIALS" and choose "API key".
Copy the generated API key. This is your
YOUTUBE_API_KEY.Important Security Step: Restrict your API key to prevent unauthorized use. Click on the API key name, and under "API restrictions," select "Restrict key" and choose "YouTube Data API v3." You can also add "Application restrictions" (e.g., IP addresses) if applicable.
System Requirements
Node.js:
>=20.0.0(as specified inpackage.json)npm (for managing dependencies and running scripts)
Deep Dive: findConsistentOutlierChannels Tool
The findConsistentOutlierChannels tool is designed to identify emerging or established YouTube channels that consistently outperform their size within a specific niche. This tool is particularly useful for content creators, marketers, and analysts looking for high-potential channels.
Important Note: This tool requires a MongoDB connection to store and analyze channel data. Without MDB_MCP_CONNECTION_STRING configured, this tool will not be available.
Internal Logic Overview
The tool operates through a multi-phase analysis process, leveraging both YouTube Data API and a MongoDB database:
Candidate Search (Phase 1):
Uses the provided
queryto search for relevant videos and channels on YouTube.Filters initial results based on
videoCategoryIdandregionCodeif specified.Collects a broad set of potential channels for deeper analysis.
Channel Filtering (Phase 2):
Retrieves detailed statistics for candidate channels (subscribers, total views, video count).
Filters channels based on
channelAge(e.g., 'NEW' for channels under 6 months, 'ESTABLISHED' for 6-24 months).Ensures channels meet a minimum video count to be considered for consistency.
Deep Analysis (Phase 3):
For each filtered channel, fetches their recent top-performing videos.
Calculates a "viral factor" for each video (e.g., views relative to subscriber count).
Assesses the
consistencyLevel(e.g., 'MODERATE' for ~30% of videos showing outlier performance, 'HIGH' for ~50%).Determines
outlierMagnitude(e.g., 'STANDARD' for views > subscribers, 'STRONG' for views > 3x subscribers).
Ranking & Formatting (Phase 4):
Ranks channels based on their consistency, outlier magnitude, and overall performance within the niche.
Formats the results into a token-optimized structure suitable for LLMs, including key channel metrics and examples of outlier videos.
Key Parameters Controlling the Flow
The behavior of this tool is primarily controlled by the following parameters:
query(string, required): The central topic or niche to analyze (e.g., "DIY home repair", "quantum computing explained").channelAge(enum: "NEW", "ESTABLISHED", default: "NEW"): Focuses the search on emerging or more mature channels.consistencyLevel(enum: "MODERATE", "HIGH", default: "MODERATE"): Sets the threshold for how consistently a channel's videos must perform as outliers.outlierMagnitude(enum: "STANDARD", "STRONG", default: "STANDARD"): Defines how significantly a video's performance must exceed typical expectations (e.g., views vs. subscribers) to be considered an "outlier."videoCategoryId(string, optional): Narrows the search to a specific YouTube category ID.regionCode(string, optional): Targets channels relevant to a particular geographical region.maxResults(number, default: 10): Limits the number of top outlier channels returned.
Security Considerations
API Key Security: Your
YOUTUBE_API_KEYis sensitive. Never commit it directly to your repository. Use environment variables (e.g., via a.envfile which should be listed in.gitignore).API Quotas: The YouTube Data API has a daily usage quota (default is 10,000 units). All tool calls deduct from this quota. Monitor your usage in the Google Cloud Console and be mindful of the cost of each tool. For a detailed breakdown of costs per API method, see the official documentation.
Input Validation: The server uses Zod for robust input validation for all tool parameters, enhancing security and reliability.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Available Tools
9 toolsfindConsistentOutlierChannelsARead-onlyIdempotentInspect
A powerful, high-cost discovery tool. It finds emerging channels that show consistent, high-performance relative to their size within a specific topic and timeframe.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Required. The core topic or niche to investigate (e.g., 'stoic philosophy', 'AI history explainers'). | |
| channelAge | No | Optional. Filters by channel age. Default: 'NEW'. 'NEW' = under 6 months (emerging), 'ESTABLISHED' = 6-24 months (proven). | NEW |
| maxResults | No | Optional. Max number of channels to return. Default: 10. | |
| regionCode | No | Optional. ISO 2-letter country code (e.g., 'US', 'DE') to target a regional audience. | |
| videoCategoryId | No | Optional. YouTube video category ID to narrow search (e.g., '27' for Education). Improves relevance. | |
| consistencyLevel | No | Optional. Minimum required consistency. Default: 'MODERATE'. 'MODERATE' (~30%) for broad discovery. 'HIGH' (~50%) for exceptional channels. | MODERATE |
| outlierMagnitude | No | Optional. Required 'viral factor' for videos. Default: 'STANDARD'. 'STANDARD' (views>subs) for regular content. 'STRONG' (views>3x subs) for viral channels. | STANDARD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only and idempotent, which the description does not contradict. The description adds 'high-cost' as a behavioral trait, but without explaining what that entails (e.g., rate limits, compute). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, front-loaded with cost warning. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters and no output schema, the description is brief. It explains the core function but does not mention return format or any edge cases. Lacks detail on how the 'consistency' or 'outlier magnitude' manifest in output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all parameters. The description does not add further meaning beyond restating that the tool works on a topic and timeframe. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool finds emerging channels with consistent high performance relative to size within a topic and timeframe. It distinguishes from sibling tools like searchVideos which search for videos, not channels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes it is 'high-cost', implying cautious use, but does not explicitly state when to use this tool vs alternatives like searchVideos or getChannelStatistics. No exclusions or clear context for when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getChannelStatisticsARead-onlyIdempotentInspect
Retrieves statistics for multiple channels. Returns detailed metrics including subscriber count, view count, video count, and channel creation date for each channel. Use this when you need to analyze the performance and reach of multiple YouTube channels.
| Name | Required | Description | Default |
|---|---|---|---|
| channelIds | Yes | Array of YouTube channel IDs to get statistics for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, indicating safe read-only behavior. The description adds value by specifying the returned metrics (subscriber count, view count, etc.), which helps the agent understand the output. No additional behavioral traits (e.g., rate limits) are disclosed, but the annotations cover the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two sentences that front-load the action and purpose. Every word earns its place, with no redundancy or unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, full schema coverage, annotations), the description is fairly complete. It explains the return metrics and the use case. It could optionally mention limitations like maximum array size, but that is not critical for a basic stats retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a detailed description for the only parameter channelIds. The description adds no new semantic information beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves statistics for multiple channels and lists specific metrics. The verb 'retrieves' and resource 'statistics for multiple channels' are specific. It distinguishes from sibling tools like getChannelTopVideos and getVideoDetails by focusing on batch channel statistics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: 'Use this when you need to analyze the performance and reach of multiple YouTube channels.' It does not mention when not to use or provide alternatives, but the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getChannelTopVideosARead-onlyIdempotentInspect
Retrieves a channel's most popular videos. CRITICAL: Requires a valid channelId (starting with 'UC...'), NOT a channel handle or name. Use searchVideos (type='channel') first to find the channelId if you only have a name.
| Name | Required | Description | Default |
|---|---|---|---|
| channelId | Yes | YouTube channel ID to get top videos from | |
| maxResults | No | Maximum number of top videos to return (1-500, default: 10) | |
| includeTags | No | Specify 'true' to include the video's 'tags' array in the response, which is useful for extracting niche keywords. The 'tags' are omitted by default to conserve tokens. | |
| descriptionDetail | No | Controls video description detail to manage token cost. Options: 'NONE' (default, no text), 'SNIPPET' (a brief preview for broad scans), 'LONG' (a 500-char text for deep analysis of specific targets). | NONE |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint and idempotentHint annotations, description adds critical detail about channelId format ('UC...'), token cost management via includeTags and descriptionDetail parameters, and default behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is efficient, front-loaded with purpose, uses 'CRITICAL' emphasis for key constraint, and every sentence adds necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main behavioral aspects, token management, and ID constraint, but lacks explicit description of the output structure (e.g., video attributes), which is acceptable given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters are described in schema (100% coverage), but description adds extra context: channelId format constraint, token conservation for includeTags and descriptionDetail, and explanation of options.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Retrieves a channel's most popular videos' with a specific verb and resource, and distinguishes from sibling tool searchVideos by explaining the channelId requirement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (with valid channelId), when not to use (handle/name), and references searchVideos as alternative to obtain channelId, providing clear usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTranscriptsARead-onlyIdempotentInspect
Retrieves specific, meaningful segments of a video's transcript. By default, it returns the intro 'hook' and the final 'outro' or call to action. It can also return the full transcript text. Use this to efficiently analyze a video's key messaging.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language code for transcripts (e.g., 'en', 'ko', 'es'). Defaults to environment setting or 'en' | en |
| format | No | The desired transcript format. 'full_text': Returns the entire transcript as a single string. 'key_segments': (Default) Returns only the video's intro hook and final call to action. | key_segments |
| videoIds | Yes | Array of YouTube video IDs to get transcripts for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds that by default it returns intro hook and outro, and can return full text. No contradictions; it enriches understanding of tool behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, clear and front-loaded. First sentence defines action, second lists outputs and purpose. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers default behavior, alternatives, and use case. It could mention return structure (e.g., 'array of segments') for completeness, but current info is sufficient for basic understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%. The description adds meaning beyond schema by explaining what 'key_segments' entails (hook and outro) and the tool's purpose. This provides value beyond the parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves specific transcript segments (hook and outro) or full text, using verbs like 'retrieves' and 'returns'. It distinguishes from siblings like getVideoDetails or searchVideos by focusing on transcript analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Use this to efficiently analyze a video's key messaging', providing clear context. However, it does not explicitly state when not to use it or compare to sibling tools, though siblings are unrelated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTrendingVideosARead-onlyIdempotentInspect
Retrieves trending videos based on region and category. Returns a list of videos that are currently popular in the specified region and category. Use this when you want to discover what's trending in specific areas or categories. To get available category IDs and their names, use the getVideoCategories tool first.
| Name | Required | Description | Default |
|---|---|---|---|
| categoryId | No | YouTube category ID to filter trending videos by category. Use getVideoCategories tool to get available category IDs. | |
| maxResults | No | Maximum number of trending videos to return (1-500, default: 10) | |
| regionCode | No | Two-letter country code (e.g., 'US', 'GB', 'JP'). Defaults to 'US' | US |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description 'Retrieves' is consistent. No additional behavioral details beyond annotations, but no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each purposeful: action, usage instruction, and sibling tool reference. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple listing tool with no output schema. Provides necessary context to use with getVideoCategories. Missing details on pagination or default behavior, but sufficient for agent selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and description adds value by mentioning the need to use getVideoCategories for categoryId, but does not elaborate on parameter formats or constraints beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Retrieves trending videos' specifies action and resource. Distinguishes from sibling tools like getVideoCategories and searchVideos by focusing on trending content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this when you want to discover what's trending' and directs to use getVideoCategories first for category IDs. Does not specify when not to use it, but provides clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getVideoCategoriesARead-onlyIdempotentInspect
Retrieves available video categories for a specific region. Returns a list of YouTube video categories with their IDs and titles that can be used for filtering trending videos or other category-specific operations. Different regions may have different available categories.
| Name | Required | Description | Default |
|---|---|---|---|
| regionCode | No | Two-letter country code (e.g., 'US', 'GB', 'JP'). Defaults to 'US' | US |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, and the description adds no additional behavioral context beyond what annotations provide. It does not mention rate limits, caching, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences front-load the core purpose, then add return details and regional context. No redundant or unnecessary words, each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one simple parameter and annotations cover safety, the description is mostly complete. It could mention that categories are generally static per region, but it is sufficient for an agent to understand and use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; the description adds no meaning beyond the schema. It mentions region-specific categories, but that is already conveyed by the parameter description. Baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves available video categories for a specific region, specifying it returns categories with IDs and titles for filtering. It distinguishes itself from sibling tools like getTrendingVideos by focusing on categories, not video content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for filtering trending videos or category-specific operations but does not explicitly state when to use this tool versus alternatives or when not to use it. No exclusions or alternative tool names are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getVideoCommentsARead-onlyIdempotentInspect
Retrieves comments for a video. Warning: Setting maxReplies > 0 significantly increases API cost. Only set maxReplies if you specifically need to analyze conversation threads. Defaults to top-level comments only.
| Name | Required | Description | Default |
|---|---|---|---|
| order | No | Sort order for comments. Use 'relevance' (default) for most helpful or 'time' for newest. | relevance |
| videoId | Yes | The 11-character ID of the YouTube video. | |
| maxReplies | No | Max replies per comment to return (0-5, default: 0). Use 0 for best performance. | |
| maxResults | No | Max number of top-level comments to return (1-100, default: 20). | |
| commentDetail | No | Detail level for comment text. 'SNIPPET' (default, 200 chars) or 'FULL' (entire text). | SNIPPET |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and the description confirms this by noting it's a retrieval operation. Additionally, it warns about increased API cost when setting maxReplies > 0, which is valuable beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no unnecessary words. Front-loaded with purpose, followed by a critical warning, then a usage guideline. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters (all documented in schema), annotations covering read-only/idempotent, and no output schema, the description is fairly complete. It could mention the return format (e.g., list of comment objects), but the core information is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds a cost warning for maxReplies and notes default behavior, slightly increasing value. However, it doesn't elaborate on other parameters beyond what's in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Retrieves comments for a video' with a specific verb and resource. It distinguishes from siblings like getVideoDetails or searchVideos by focusing on comments. The warning about maxReplies and default behavior further clarifies scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use maxReplies ('only if you specifically need to analyze conversation threads') and defaults to top-level comments. Lacks explicit when-not-to-use compared to other tools, but the purpose is sufficiently distinct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getVideoDetailsARead-onlyIdempotentInspect
Get detailed information about multiple YouTube videos. Returns comprehensive data including video metadata, statistics, and content details. Use this when you need complete information about specific videos.
| Name | Required | Description | Default |
|---|---|---|---|
| videoIds | Yes | Array of YouTube video IDs to get details for | |
| includeTags | No | Specify 'true' to include the video's 'tags' array in the response, which is useful for extracting niche keywords. The 'tags' are omitted by default to conserve tokens. | |
| descriptionDetail | No | Controls video description detail to manage token cost. Options: 'NONE' (default, no text), 'SNIPPET' (a brief preview for broad scans), 'LONG' (a 500-char text for deep analysis of specific targets). | NONE |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark as read-only and idempotent. Description adds value by detailing token conservation behavior for tags and descriptionDetail, which is not in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose, no redundant words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description mentions return types (metadata, statistics, content details). Could specify exact fields but is sufficient for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are documented. Description adds important context about token optimization for includeTags and descriptionDetail, aiding cost-aware usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves detailed information about multiple YouTube videos, including metadata, statistics, and content details. It distinguishes from sibling tools focused on channels, transcripts, or searches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use when needing complete information about specific videos. Lacks explicit when-not-to-use instructions, but context is clear given sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchVideosARead-onlyIdempotentInspect
Universal search tool for YouTube content. Use this to find videos (default) or channels. To find a specific content creator, you MUST set type to 'channel'. Supports filtering by recency (e.g., 'pastWeek') and videoDuration. Returns videoId or channelId needed for other tools.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Type of content to search for (default: video) | |
| order | No | Sort order for results (default: relevance) | |
| query | Yes | Search query string to find videos | |
| recency | No | Filter by recency. Possible values: 'any', 'pastHour', 'pastDay', 'pastWeek', 'pastMonth', 'pastQuarter', 'pastYear'. | |
| channelId | No | Restrict search to specific channel ID | |
| maxResults | No | Maximum number of results to return (1-500, default: 10) | |
| regionCode | No | 2-letter country code to restrict results | |
| videoDuration | No | Filter by video duration. 'any' (default): no duration filter. 'short': videos less than 4 minutes. 'medium': videos 4 to 20 minutes. 'long': videos longer than 20 minutes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds value by specifying that the tool returns videoId or channelId needed for other tools and mentions filtering capabilities, providing context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences, each adding value: first sentence states purpose, second gives specific usage guidance, third notes return values. No fluff, well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the parameter count and schema richness, the description explains return IDs and filtering. It lacks pagination details or full response structure, but is sufficient for a search tool with good schema documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with well-described parameters. The description adds minimal extra meaning beyond the schema, such as emphasizing that 'type' must be set to 'channel' for channel searches, but overall does not significantly enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a universal search tool for YouTube content, explicitly distinguishing between searching for videos (default) and channels. It also mentions returning IDs needed for other tools, which sets it apart from sibling tools that are more specialized.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on when to use this tool (finding videos or channels) and explicitly instructs to set 'type' to 'channel' for content creators. It implies when not to use it by the existence of sibling tools for specific tasks, but lacks explicit exclusions.
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.
9 tool updates
v1.1.5- Added
findConsistentOutlierChannels - Changed
getChannelStatistics1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
getChannelTopVideos1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
getTranscripts1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
getTrendingVideos1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
getVideoCategories1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
getVideoComments1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
getVideoDetails1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
searchVideos1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
8 tool updates
v1.0.0- First observed
getChannelStatistics - First observed
getChannelTopVideos - First observed
getTranscripts - First observed
getTrendingVideos - First observed
getVideoCategories - First observed
getVideoComments - First observed
getVideoDetails - First observed
searchVideos
TDQS
Each tool targets a distinct aspect of YouTube data: channels (statistics, top videos, outlier discovery), videos (details, comments, transcripts, trending), search (videos/channels), and categories. There is no overlap; even searchVideos and getTrendingVideos serve different use cases.
All tool names follow a consistent camelCase pattern with descriptive verb+noun structure (e.g., getChannelStatistics, searchVideos). The naming is predictable and clear.
9 tools is appropriate for a YouTube analysis server. It covers essential operations without being excessive, offering a focused set that includes search, channel/video details, transcripts, comments, trending, and a unique discovery tool.
The tool set covers core YouTube analysis needs: search, channel statistics, video details, transcripts, comments, trending, and categories. Minor missing features like playlist management are not central to the server's apparent purpose, so the surface is largely complete.
Maintenance
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
An MCP server that gives any LLM or agent clean YouTube transcripts on demand: a single video, a whole channel, or a playlist, plus AI cleanup of auto-generated captions. API-key auth, credit-based, same backend as the public v1 API. Get a free API key with 25 free credits at youtubetranscriptdownload.com/account.
YouTube MCP — wraps the YouTube Data API v3 (BYO API key)
YouTube transcripts, search, channel/playlist listings and upload tracking for AI agents. No signup.
💯 The fastest YouTube transcript + YouTube search MCP for AI agents. Try for free.
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server for intelligent YouTube video analysis that provides token-optimized summaries, sentiment analysis, and entity extraction from transcripts. It enables AI assistants to perform video reporting, channel monitoring, and comprehensive YouTube searches through structured data tools.1051Apache 2.0
- AlicenseAqualityDmaintenanceProduction-grade Model Context Protocol server for YouTube intelligence. Extract, analyze, and automate insights from YouTube channels and videos using the official YouTube Data API v3. Built for AI agents, automation pipelines, and content intelligence workflows.161MIT
- AlicenseNot gradedqualityCmaintenanceStreamable HTTP MCP server for YouTube that enables video search, channel exploration, playlist browsing, and video detail retrieval via the YouTube Data API.276MIT
- AlicenseAqualityAmaintenanceMCP server for extracting structured intelligence from YouTube channels and videos — transcripts, topics, and competitive signals for AI-powered research workflows.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/kirbah/mcp-youtube'
If you have feedback or need assistance with the MCP directory API, please join our Discord server