Skip to main content
Glama
YouTube Studio MCP

YouTube Studio MCP

by nelsonrogers

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
YOUTUBE_STUDIO_MCP_HOMENoOAuth client and tokens.~/.config/youtube-studio-mcp (`%APPDATA%\youtube-studio-mcp`)
YOUTUBE_STUDIO_MCP_PROFILENoWhich signed-in channel to use (see multiple channels).default
YOUTUBE_STUDIO_MCP_CLIENT_IDNoProvide the OAuth client inline instead of a file (client ID).
YOUTUBE_STUDIO_MCP_LOG_LEVELNoLogging (always to stderr).WARNING
YOUTUBE_STUDIO_MCP_OUTPUT_DIRNoWhere charts and exports go when given a bare filename.~/Documents/youtube-studio-mcp
YOUTUBE_STUDIO_MCP_ENABLE_WRITENoSet to `1` to expose the editing tools (requires `auth --write`).off
YOUTUBE_STUDIO_MCP_CLIENT_SECRETNoProvide the OAuth client inline instead of a file (client secret).
YOUTUBE_STUDIO_MCP_DATA_LAG_DAYSNoHow many recent days to leave out of rolling periods because their data is incomplete (0-7).3
YOUTUBE_STUDIO_MCP_CLIENT_SECRET_FILENoUse an OAuth client file elsewhere.<home>/client_secret.json

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

Tools for a YouTube creator's own channel (YouTube Studio data via the official APIs).

Getting started: if a tool reports that you are not signed in, call get_auth_status, then authenticate (opens Google sign-in in the user's browser) and wait for the user to finish.

Picking tools:

  • Overview / "how am I doing": get_performance_summary (period vs previous period).

  • Trends and growth charts: get_metrics_over_time (granularity day/week/month/year).

  • Best/worst content: get_top_videos; catalogue and lifetime stats: list_videos.

  • Audience (age, gender, countries, devices, Shorts vs long-form, subscribers vs not): get_audience_breakdown. Discovery: get_traffic_sources (source_type='YT_SEARCH' = search terms).

  • One video: get_videos_details, get_audience_retention, and video_id on the analytics tools.

  • Media kit / sponsor deck: get_media_kit_data, then create_chart for visuals.

  • Money: get_revenue (monetized channels). Impressions & CTR: get_impressions (beta).

  • Anything else: query_analytics (raw YouTube Analytics API v2).

Data notes: analytics dates are US Pacific time and lag ~2-3 days; periods end at the latest complete day and every result states its exact date range — quote it. Percentages are 0-100. Public subscriber counts are rounded by YouTube. Don't invent numbers that a tool didn't return.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_auth_statusA

Check whether the server is signed in to YouTube, which channel it reads, and which permissions were granted. Call this first if any other tool reports a sign-in problem.

authenticateA

Start Google sign-in in the user's browser and return the sign-in URL immediately.

The user must approve access in the browser (choosing the account or Brand Account that owns the channel). Afterwards call get_auth_status to confirm. Only works when the MCP server runs on the user's own computer. Signing in again replaces the stored token.

get_channelA

The signed-in channel's profile and lifetime public stats: subscribers, total views, video count, creation date, country, handle, description, keywords and topics.

list_videosA

List the channel's uploads (including private/unlisted/scheduled, newest first) with public lifetime stats: views, likes, comments, engagement rate, duration, format guess. Costs ~1 quota unit per 50 videos. For period-specific performance use get_top_videos.

get_videos_detailsB

Full metadata and lifetime public stats for specific videos: title, description, tags, category, privacy, duration, captions, live-stream details, views, likes, comments.

list_playlistsA

The channel's playlists with item counts and privacy. Use list_videos(playlist_id=...) to see a playlist's videos.

list_commentsA

Read comment threads (top-level comments with reply counts) for the channel or one video, e.g. to summarise audience sentiment, find questions, or spot content ideas.

get_performance_summaryA

Headline numbers for a period, like Studio's Overview tab: views, engaged views, watch time (hours), average view duration/percentage, subscribers gained/lost/net, likes, comments, shares, engagement rate, optionally revenue, each with the previous period and % change. Works for the channel or a single video.

get_metrics_over_timeA

A time series of metrics by day, week, month or year — for trend analysis and growth charts. Adds netSubscribers when gained and lost are both requested. Buckets cut off by the date range are flagged partial=true.

get_top_videosA

Rank the channel's videos by performance within a period (like Studio's 'Top content'), with title, publish date, YouTube's content type (Shorts/Videos/Live), views, watch time, average view duration/percentage, likes, comments, shares, subscribers gained and engagement rate.

get_audience_breakdownA

Who watches and how: demographics, geography, devices, subscriber vs non-subscriber views, Shorts vs long-form split, playback locations. Rows include readable labels and share_pct of views, ready for media-kit charts.

get_traffic_sourcesA

How viewers find the content: views and watch time by traffic source (search, suggested, browse, Shorts feed, external, ...) or, with source_type, the top search terms / referring videos / websites for that source.

get_audience_retentionA

The audience-retention curve for one video, with timestamps, key retention milestones and the steepest drop-off moments. Defaults to the video's lifetime.

audience_watch_ratio = share of viewers still watching at that moment (can exceed 1 when people rewatch a part). relative_retention compares with similar-length YouTube videos (0-1; above 0.5 is better than average).

get_revenueB

Monetization report (YouTube Partner Program channels): estimated revenue, ad revenue, gross revenue, RPM, CPM, playback-based CPM, monetized playbacks and ad impressions, with a trend and the top-earning videos.

query_analyticsA

Run any YouTube Analytics API v2 report for the channel (ids=channel==MINE) — the escape hatch when no other tool fits. See https://developers.google.com/youtube/analytics/channel_reports for valid combinations. Notes: the 'video' dimension needs sort and max_results <= 200; 'insightTrafficSourceDetail' needs a filter on insightTrafficSourceType, sort and max_results <= 25; demographics (ageGroup/gender) only support viewerPercentage; the 'month' dimension aligns dates to whole months automatically. YouTube's error message is returned if a combination is invalid.

enable_impressions_reportsA

One-time setup for thumbnail impressions & click-through rate (CTR), which the Analytics API does not provide. Creates a YouTube Reporting API job for the channel (safe to call again). YouTube then publishes daily reports: the first ones ~48 hours later, plus 30 days of history. Use get_impressions afterwards.

get_impressionsA

Thumbnail impressions and impressions click-through rate (CTR) from the YouTube Reporting API, by day, by video, or in total. Requires enable_impressions_reports to have been run at least ~2 days earlier; only days YouTube has published are included.

get_media_kit_dataA

Everything a creator media kit / sponsor deck needs, as one stable JSON snapshot (schema_version 1, snake_case, *_pct 0-100, *_s seconds): channel profile, period performance vs previous period, Shorts vs long-form performance, impressions funnel, daily and monthly trends, audience age/gender/countries/devices, recent uploads with thumbnails, top videos and traffic sources. Anything YouTube can't provide is null and explained in unavailable instead of failing the call.

create_chartA

Render a polished, media-kit-ready chart (PNG, SVG or PDF) from data you provide — typically numbers from the analytics tools. Uses a colour-blind-safe palette by default, thin marks, clean axes and direct value labels. Returns the saved file path(s) and a preview image.

Prompts

Interactive templates invoked by user choice

NameDescription
channel_checkupReview how the channel performed in a period and suggest what to do next.
media_kit_refreshCollect fresh media-kit numbers and render the standard charts.
video_deep_diveExplain how one video performed and what to learn from it.
comment_digestSummarise what the audience is saying in the comments.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.7/5.0

Scored across 19 tools

Disambiguation4/5

Most tools have sharply distinct targets: auth status vs. authenticate, list_videos vs. get_videos_details vs. get_top_videos, and each analytics tool covers a different report (summary, time series, audience, traffic, retention, revenue). The overlap risk is concentrated in get_media_kit_data (a composite of nearly everything else) and query_analytics (escape hatch that can reproduce other tools' output), plus get_impressions vs. enable_impressions_reports, though the descriptions do state when to use each.

Naming Consistency4/5

Nearly all tools follow snake_case verb_noun (get_channel, list_videos, get_audience_breakdown, get_traffic_sources). Minor deviations exist: bare 'authenticate', the different verb style in 'query_analytics', and the awkward plural in 'get_videos_details' versus the singular 'get_channel'/'get_video' pattern. The enable_/get_ pair for impressions is a sensible sub-convention.

Tool Count4/5

At 19 tools the surface leans heavy for a single-platform server, but each tool maps to a real YouTube Studio/analytics view rather than duplicating another. Composite tools (get_media_kit_data, query_analytics) arguably consolidate several others, yet they serve distinct aggregation/escape-hatch use cases.

Completeness4/5

Analytics and reporting coverage is excellent: performance, trends, top content, audience, traffic, retention, revenue, impressions/CTR and a raw-query fallback, plus chart rendering. Gaps are on the write side — comments can be read but not replied to or moderated, and there is no video/playlist metadata editing or upload, though those are arguably outside a 'Studio reporting' scope.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues