youtube-studio-mcp
Provides tools for analyzing YouTube channels and videos, including channel overview, video details, top-performing videos, video listings, and comment retrieval for sentiment analysis.
Provides access to YouTube Studio analytics, enabling retrieval of channel metrics such as views, watch time, subscriber changes, likes, impressions, CTR, traffic sources, and audience demographics over custom date ranges.
Click on "Deploy 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., "@youtube-studio-mcpShow me my top performing videos from the last 28 days."
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 Studio & Channel Analytics MCP Server
A Production-Grade Model Context Protocol (MCP) Server for YouTube Studio & Channel Intelligence
Empower AI assistants (Claude, Cursor, Antigravity, etc.) to analyze your YouTube channel, track video metrics, deep-dive into YouTube Studio analytics, discover audience traffic sources, and analyze community sentiment — configured entirely through .env.
🚀 Features & MCP Tool Suite
YouTube Studio MCP provides 8 specialized tools:
Tool | Category | Description |
| Channel Stats | Returns channel title, handle, subscriber count, total lifetime views, video count, topic categories, and description. |
| Studio Analytics | Queries core Studio metrics ( |
| Demographics & Traffic | Detailed breakdowns by dimension: |
| Video Intelligence | Ranks your top videos by views, watch time minutes, or subscribers gained in any date range. |
| Video Deep-Dive | Deep-dive analytics on a single specific video (daily trajectory, watch time, audience retention, traffic sources). |
| Content Inventory | Lists uploaded videos with current views, likes, comments, duration, and privacy status. |
| Video Metadata | Returns full metadata, tags, description, category, and statistics for specified video IDs. |
| Community & Sentiment | Retrieves top comment threads and replies across your channel or on a specific video for sentiment analysis and feedback. |
Related MCP server: youtube-organic-mcp
⚙️ Environment Configuration (.env)
All credentials and settings are read directly from .env:
# Google OAuth 2.0 Credentials (from Google Cloud Console)
YOUTUBE_CLIENT_ID=your_client_id.apps.googleusercontent.com
YOUTUBE_CLIENT_SECRET=your_client_secret
# OAuth Refresh Token (written automatically by run_auth.py)
YOUTUBE_REFRESH_TOKEN=🛠️ Step-by-Step Setup Guide
1. Clone & Install Dependencies with uv
git clone https://github.com/Dhananjayrbiraris/youtube-mcp.git
cd youtube-mcp
uv venv
uv pip install -e .2. Set Up Google Cloud Project (One-Time)
Open Google Cloud Console.
Create a new project (e.g.
YouTube-Studio-MCP).In APIs & Services > Library, enable:
YouTube Data API v3
YouTube Analytics API
In OAuth consent screen:
User Type: External -> fill app name & your email.
Under Test users, add your Google email address.
In Credentials:
Click Create Credentials > OAuth client ID.
Application Type: Desktop App.
Copy the Client ID and Client Secret.
Paste them into
.env:YOUTUBE_CLIENT_ID=123456789-xxxx.apps.googleusercontent.com YOUTUBE_CLIENT_SECRET=GOCSPX-xxxx
3. Run 1-Click Authenticator
uv run run_auth.pyThis launches your browser for a 1-click Google OAuth login. It automatically writes the YOUTUBE_REFRESH_TOKEN directly into your .env file.
4. Connect to your AI Client
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"youtube-studio": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/youtube-mcp",
"run",
"youtube-studio-mcp"
]
}
}
}💡 Example AI Prompts
"Give me an overview of my YouTube channel's performance over the last 28 days."
"Where is most of my traffic coming from (search, suggested videos, or browse features)?"
"Which of my videos generated the most subscribers this month?"
"Summarize common themes and questions from the comments on my latest video."
"Show me my audience breakdown by age group and country."
🧪 Testing
Run the test suite:
pytest📄 License
This project is licensed under the MIT License.
Available Tools
8 toolsget_analytics_by_dimensionA
Fetches channel analytics broken down by a specific dimension.
Args: dimension: The dimension to analyze. Supported values: - 'trafficSource' (YouTube search, suggested videos, browse features, external, etc.) - 'deviceType' (mobile phone, computer, TV, tablet) - 'country' (top geographic viewer locations) - 'ageGroup' (demographics: 18-24, 25-34, 35-44, etc.) - 'gender' (viewer gender percentage) - 'operatingSystem' (Android, Windows, iOS, etc.) - 'day' or 'month' time_period: Preset time period ('7d', '28d', '90d', '365d', 'last_month'). Defaults to '28d'. start_date: Optional explicit start date (YYYY-MM-DD). end_date: Optional explicit end date (YYYY-MM-DD). max_results: Maximum number of rows to return (default: 20).
Returns: A ranked list of metrics for each dimension value.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | ||
| dimension | Yes | ||
| start_date | No | ||
| max_results | No | ||
| time_period | No | 28d |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the behavioral burden. It adds useful facts—default time_period of '28d', optional date overrides, max_results row cap, and a ranked-list return shape—but it does not state read-only behavior, handling of conflicting time_period plus start/end dates, or data availability caveats.
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?
One-sentence purpose, then an Args list that gives each parameter purpose and allowed values, then a Returns line. No filler; the long dimension enum is justified because it is the key selection info.
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?
The description covers all five parameters and the broad return shape, and an output schema exists to detail metric fields. It is missing only a pointer to when this tool is preferred over sibling analytics tools and any interaction rules between time_period and explicit dates, so it is strong but not fully complete.
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?
With schema description coverage at 0%, the description fully compensates by enumerating supported dimension values (trafficSource, deviceType, country, ageGroup, gender, operatingSystem, day/month), time_period presets, date format, and max_results semantics. This goes far beyond bare parameter names.
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 first sentence names the action ('Fetches'), the resource ('channel analytics'), and the differentiator ('broken down by a specific dimension'), and the supported dimension list clarifies scope. This separates it from sibling get_channel_analytics, which presumably returns rollups rather than per-dimension breakdowns.
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?
No explicit when-to-use/when-not-to-use statement or sibling comparison appears; the intended use is only implied by the phrase 'broken down by a specific dimension.' It would be stronger if it told the agent to choose this tool over get_channel_analytics when dimensional grouping is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_channel_analyticsA
Queries core YouTube Studio channel analytics for a specified timeframe.
Args: time_period: Preset time period ('7d', '28d', '90d', '365d', 'last_month'). Defaults to '28d'. start_date: Explicit start date in YYYY-MM-DD format (overrides time_period if both start & end are provided). end_date: Explicit end date in YYYY-MM-DD format. dimensions: Dimension to group by, e.g. 'day' (default) or None for a single aggregate row.
Returns: Summary metrics (total views, watch time hours, avg view duration, subscribers gained/lost, net growth, likes, shares, comments, impressions, CTR) and daily time-series data points.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | ||
| dimensions | No | day | |
| start_date | No | ||
| time_period | No | 28d |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It explains defaults, date override behavior, and return metrics, but does not mention permissions, rate limits, data availability, or explicitly state that this is a read-only operation. This is acceptable but not comprehensive.
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 well-structured with purpose, args, and returns sections. It is slightly longer than necessary because the return list is detailed even though an output schema exists, but every section earns its place and there is no fluff.
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?
The description covers all parameters and the return shape, and the output schema exists to handle return details. It is missing explicit guidance on when to use this tool versus analytics siblings, but it provides enough information to configure and invoke the tool correctly.
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 0%, but the description compensates fully by documenting all four parameters: time_period presets and default, start_date/end_date formats and override behavior, and dimensions default/meaning. This adds substantial meaning beyond the bare 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 states a specific verb ('Queries'), resource ('core YouTube Studio channel analytics'), and scope ('for a specified timeframe'), making the tool's function clear. It does not explicitly differentiate from siblings like get_analytics_by_dimension or get_channel_overview, but the name and description convey channel-level analytics clearly.
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 channel analytics over a time period with optional grouping, but it does not state when to prefer this tool over siblings such as get_analytics_by_dimension or get_channel_overview. There are no explicit exclusions or alternative routing, so guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_channel_overviewA
Fetches high-level metadata and lifetime statistics for your YouTube channel.
Returns channel title, handle, subscriber count, total lifetime views, video count, creation date, topic categories, and channel description.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full transparency burden. It clearly indicates a read-only 'Fetches' operation and enumerates the returned data in detail. It does not mention authentication, data freshness, or rate limits, but for a zero-parameter metadata tool this is reasonably transparent.
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 two sentences with no wasted words. The first sentence front-loads the core purpose, and the second provides a concrete, useful enumeration of returned fields.
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 simple zero-parameter tool with an output schema, the description is largely complete: it states the scope and the full set of returned metadata. It could be slightly more complete with explicit sibling differentiation, but nothing essential to invoking the tool is missing.
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 tool has zero parameters, and the schema description coverage is 100% with an empty properties object. Per the rubric, this is a baseline 4. The description correctly focuses on return values rather than parameters.
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 a specific verb and resource: 'Fetches high-level metadata and lifetime statistics for your YouTube channel.' It also lists concrete returned fields, which helps distinguish it from video-level siblings. However, it does not explicitly distinguish itself from the closely related get_channel_analytics sibling, so it falls short of a 5.
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?
Usage context is implied: an agent can infer this is for channel-level summary data rather than video-level or detailed analytics. But the description provides no explicit guidance on when to choose this over get_channel_analytics or other siblings, and no exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_performing_videosA
Identifies and ranks your top-performing videos within a time period.
Args: time_period: Preset time period ('7d', '28d', '90d', '365d', 'last_month'). Defaults to '28d'. start_date: Optional explicit start date (YYYY-MM-DD). end_date: Optional explicit end date (YYYY-MM-DD). order_by: Metric to rank by: 'views', 'estimatedMinutesWatched', 'subscribersGained', or 'likes'. max_results: Number of top videos to return (default: 10).
Returns: Ranked list of videos with title, duration, period views, watch time, subscribers gained, and lifetime views.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | ||
| order_by | No | views | |
| start_date | No | ||
| max_results | No | ||
| time_period | No | 28d |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It does disclose ranking behavior, metric choices, and the returned fields. However, it omits edge-case behavior like how time_period interacts with explicit dates, data freshness, or any rate-limit/error 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?
The purpose is front-loaded in a single clear sentence, followed by a structured Args/Returns list. Every line is informative and there is no filler or repetition.
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 read-only ranking tool with moderate complexity, the description covers all parameters and return fields. It is slightly incomplete only in not explaining when to choose this tool instead of sibling analytics tools and in not covering date-conflict behavior.
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 0%, but the description fully documents every parameter: time_period presets and default, start_date/end_date format, order_by allowed values, and max_results default. This adds rich meaning beyond the bare 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 states a specific verb ('Identifies and ranks'), a specific resource ('your top-performing videos'), and a temporal scope ('within a time period'). This clearly distinguishes it from sibling tools like list_channel_videos or get_channel_overview.
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: use this when you need a ranked list of top videos by a chosen metric. However, it gives no explicit guidance on when to prefer this tool over siblings, nor does it mention any exclusions or alternative tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_video_analyticsA
Performs deep-dive analytics on a single specific video.
Args: video_id: The 11-character YouTube video ID (e.g. 'dQw4w9WgXcQ'). time_period: Preset time period ('7d', '28d', '90d', '365d', 'last_month'). Defaults to '28d'. start_date: Optional explicit start date (YYYY-MM-DD). end_date: Optional explicit end date (YYYY-MM-DD).
Returns: Video metadata, daily trajectory, total period views & watch time, and traffic source breakdown for this specific video.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | ||
| video_id | Yes | ||
| start_date | No | ||
| time_period | No | 28d |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 does disclose the non-mutating analytics nature, the default time_period of '28d', and the return payload via the Returns section. However, it does not state what happens when time_period and explicit start/end dates are provided together, how invalid video_ids are handled, or any auth/rate-limit context — moderate gaps for a tool with zero annotation support.
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 purpose sentence is front-loaded and the Args/Returns sections are compact and information-dense. Every parameter line earns its place given the 0% schema coverage, and the Returns block adds interpretive color like 'daily trajectory.' Only minor redundancy exists since an output schema is present, so the Returns section is not strictly necessary but remains brief.
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 4-parameter tool with no annotations, the description covers invocation essentials: all parameters documented with formats and defaults, plus a clear return summary. What is missing is interaction guidance for overlapping siblings (get_video_details, get_analytics_by_dimension) and edge-case semantics such as whether time_period and explicit dates are mutually exclusive or how they combine. This is adequate for calling the tool but leaves selection and boundary questions open.
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 0%, but the description fully compensates: video_id is given its 11-character format plus a concrete example ('dQw4w9WgXcQ'), time_period lists all five valid preset values and its default, and start_date/end_date specify their YYYY-MM-DD format and optionality. This adds meaning far beyond the bare schema, which lacks any property 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?
Opens with a specific verb+resource: 'Performs deep-dive analytics on a single specific video.' The 'single specific video' scoping separates it from channel-level siblings like get_channel_overview and get_channel_analytics, while 'deep-dive analytics' and the listed return payload (daily trajectory, views, watch time, traffic sources) distinguish it from the metadata-oriented get_video_details. An agent can select this tool without opening the schema.
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?
Usage context is implied rather than stated: the 'single specific video' + 'analytics' phrasing suggests it is the per-video analytics counterpart to channel-level tools, but no alternative is named and no when-to-use/when-not-to-use rule is given. The description does not address how it differs from nearby siblings such as get_video_details or get_analytics_by_dimension, leaving the agent to infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_video_commentsA
Fetches comment threads and audience discussions for a video or the whole channel.
Args: video_id: Optional specific YouTube video ID. If omitted, retrieves recent comments across the channel. max_results: Number of comment threads to fetch (max 100). order: Sort order: 'relevance' (top comments) or 'time' (newest first).
Returns: List of comments with author, comment text, likes, timestamp, and sample replies.
| Name | Required | Description | Default |
|---|---|---|---|
| order | No | relevance | |
| video_id | No | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It explains the effect of omitting video_id, the max_results cap, the order options with their meanings, and the shape of the returned list. It does not mention auth, rate limits, or pagination, but for a read-only fetch it provides solid transparency.
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 well-structured with an opening sentence, an Args block, and a Returns block. Every line carries necessary information, and the main purpose is front-loaded. There is no redundant or filler content.
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?
Despite having no annotations, the description covers purpose, parameter semantics, optional behavior, and return contents, which is enough for an agent to invoke the tool correctly. It falls slightly short of a 5 only by not addressing potential pagination, auth requirements, or rate limits, though these are less critical for a comment-fetch operation.
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 0%, but the description fully compensates by documenting all three parameters: video_id's optionality and fallback behavior, max_results' count and cap of 100, and order's two allowed values with their meanings. This adds substantial value beyond the bare schema types and defaults.
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 uses a specific verb ('Fetches') and a clear resource ('comment threads and audience discussions') for either a video or the whole channel. This distinguishes it from sibling tools, which are all analytics or video-list oriented and none of which mention comments.
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 context for when to use the tool and how to vary behavior: providing video_id targets one video, while omitting it retrieves recent channel-wide comments. It does not explicitly name alternatives or exclusions, but the video-versus-channel guidance gives enough context for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_video_detailsA
Fetches full metadata, description, tags, and statistics for specified video IDs.
Args: video_ids: Comma-separated list of YouTube video IDs (e.g. 'vid1,vid2').
Returns: Complete video details including title, description, tags, topic categories, view/like/comment counts, duration, and content settings.
| Name | Required | Description | Default |
|---|---|---|---|
| video_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It clearly signals a read-only operation via 'Fetches' and lists the returned data categories. It does not disclose API quotas, authentication requirements, error behavior for invalid video IDs, or whether hidden/unlisted videos are included, so transparency is adequate but not comprehensive.
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 and well-organized into Args and Returns sections. Every sentence adds useful information, and the parameter format is front-loaded before the return summary. There is no unnecessary filler or repetition of the tool name.
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 single-parameter read-only tool with an output schema, the description covers the key calling details: what to pass and what to expect back. The main missing piece is usage differentiation from analytics/comment siblings, but that was already captured under usage guidelines and does not prevent correct invocation.
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 schema provides only the parameter name and type, with 0% schema description coverage, so the description must compensate. It does so fully by specifying that video_ids is a comma-separated list and providing an explicit example ('vid1,vid2'), which is exactly the operational detail an agent needs.
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 states a specific verb ('Fetches') and resource ('full metadata, description, tags, and statistics for specified video IDs'), making the tool's purpose clear. It does not explicitly contrast with sibling tools like get_video_analytics or get_video_comments, but the described content is distinct enough for an agent to infer the difference.
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 usage context is implied: use this tool when you need complete metadata and statistics for specific video IDs. However, there is no explicit guidance about when not to use it, nor any mention of alternatives such as get_video_analytics for analytics or get_video_comments for comments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_channel_videosA
Lists your channel's uploaded videos in reverse chronological order.
Args: max_results: Number of videos to retrieve (max 50 per page). page_token: Optional page token for pagination.
Returns: List of videos with video ID, title, publish date, duration, views, likes, comments, and privacy status.
| Name | Required | Description | Default |
|---|---|---|---|
| page_token | No | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It reveals reverse chronological ordering, pagination via page_token, the 50-per-page limit, and the returned video fields. It does not mention auth, rate limits, or error behavior, but the read-only 'Lists' framing plus pagination details are meaningful for a list operation.
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 core purpose is front-loaded in the first sentence and the Args/Returns sections are clearly formatted. It is efficient overall, though the Returns list is partly redundant with the existing output schema and Args details duplicate schema property names.
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 low-complexity read tool with only two optional parameters and an output schema, the description covers the essential behavior, pagination, and return contents. The main missing piece is when to select this over sibling tools, but that gap is more about routing than about invoking the tool correctly.
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 schema properties only provide names, types, and defaults (schema_description_coverage 0%). The description compensates fully by defining max_results as the number of videos to retrieve capped at 50 per page and page_token as the optional pagination token, adding meaning the schema lacks.
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 opens with a specific verb+resource: 'Lists your channel's uploaded videos in reverse chronological order.' This clearly identifies the tool's function and differentiates it from sibling analytics/detail tools like get_channel_analytics or get_video_details by focusing on an unfiltered chronological listing.
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?
No guidance explains when to choose this tool over siblings such as get_top_performing_videos or get_video_details. The use case is only implied by the verb 'Lists', and there are no explicit alternatives, exclusions, or prerequisites.
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.
8 tool updates
v0.1.0- First observed
get_analytics_by_dimension - First observed
get_channel_analytics - First observed
get_channel_overview - First observed
get_top_performing_videos - First observed
get_video_analytics - First observed
get_video_comments - First observed
get_video_details - First observed
list_channel_videos
TDQS
Scored across 8 tools
There are several analytics tools with overlapping parameters and outputs: get_channel_analytics can group by day, which overlaps with get_analytics_by_dimension, and get_top_performing_videos overlaps with list_channel_videos in returning video statistics. However, each tool's detailed description clarifies the intended focus (summary vs dimension vs ranked list), so agents can generally disambiguate.
All tools use snake_case and nearly all start with get_, with list_channel_videos as the only list_ exception. The pattern is easily predictable, though get_top_performing_videos and get_analytics_by_dimension are phrase-style names rather than clean verb_noun resource names.
Eight tools is a well-scoped size for a YouTube Studio analytics server; each tool covers a distinct reporting need without redundancy or bloat. This is within the ideal range and doesn't overwhelm an agent.
The toolset provides solid read-only coverage of channel analytics, video metadata/performance, and comments, supporting common creator reporting workflows. Notable gaps exist for video-level dimension breakdowns beyond traffic source and any management actions, but given the analytics-focused descriptions, these are minor.
Maintenance
Related MCP Connectors
YouTube transcripts, search, channel/playlist listings and upload tracking for AI agents.
YouTube transcripts, search, channels, playlists and bulk transcript jobs for AI agents. 14 tools.
YouTube transcripts, search, channel browsing, and playlists for AI agents via MCP.
SEO & marketing toolkit for AI agents: GA4, Search Console, AdSense, GTM, PageSpeed, Trends.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides AI assistants with comprehensive YouTube analytics and channel management capabilities, including channel performance, video analytics, audience insights, and content strategy tools.17 npm1-
- AlicenseAqualityCmaintenanceEnables AI assistants to access YouTube organic analytics, including channel stats, video performance, watch time, and audience engagement, via the YouTube Data API v3 and Analytics API v2.615 npmMIT
- FlicenseAqualityCmaintenanceEnables AI assistants to analyze YouTube channels, videos, transcripts, and content strategy through structured tool calls.1717 npm-
- AlicenseBqualityCmaintenanceProvides comprehensive access to YouTube Data, Analytics, and Reporting APIs, enabling AI assistants to manage videos, analyze performance, handle comments, and extract transcripts.40MIT