Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
YT_CONFIRMNoConfirmation mode: always, never, or public (default).public
YT_CHUNK_MBNoUpload chunk size in MB, rounded to 256 KB.16
YT_MCP_VAULTNoSet to file to use the encrypted file instead of the OS keychain.auto
YT_CONFIG_DIRNoDirectory for YT configuration files.
OPENAI_API_KEYNoSpeech-to-text API key (fallback for TRANSCRIBE_API_KEY).
OPENAI_BASE_URLNoOpenAI-compatible base URL (fallback for TRANSCRIBE_BASE_URL).
YT_MCP_DATA_DIRNoDirectory for the MCP server's data and certificates.
GOOGLE_CLIENT_IDNoDesktop-app OAuth client ID. Defaults to the value stored in the OS keychain.
TRANSCRIBE_MODELNoSpeech-to-text model or deployment name.whisper-1
TRANSCRIBE_API_KEYNoSpeech-to-text API key.
YT_DEFAULT_ACCOUNTNoDefault YouTube account/channel to use.
TRANSCRIBE_BASE_URLNoAny OpenAI-compatible speech-to-text endpoint.https://api.openai.com/v1
YT_DAILY_UNIT_LIMITNoDaily quota unit limit used for the local estimate.10000
GOOGLE_CLIENT_SECRETNoDesktop-app OAuth client secret. Defaults to the value stored in the OS keychain.
YT_DAILY_UPLOAD_LIMITNoDaily upload limit used for the local estimate.100

Instructions

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

Manage a YouTube channel through the official YouTube Data and Analytics APIs.

Start with auth_status. If no channel is connected, call connect_channel (it opens Google sign-in in the browser).

What you can do:

  • Publish: generate_metadata → write title/description/chapters/tags → preview_metadata → upload_video (file_path on this computer, or url) → follow get_upload_status until ready. Thumbnail, playlists and captions can go in the same call. Uploads resume from the last byte after drops or restarts.

  • Videos: list_my_videos, get_video, update_video, set_visibility (publish/unlist/schedule), set_thumbnail, set_video_localizations, delete_video.

  • Channel: get_channel, update_channel (description, keywords, trailer, translations), set_channel_banner, set_watermark.

  • Community: list_comments (per video or channel-wide, including held-for-review and likely spam), reply_to_comment, moderate_comments, delete_comment.

  • Analytics: get_analytics (overview, daily, top_videos, traffic_sources, search_terms, geography, devices, demographics, retention, custom).

  • Organise: playlists (list/create/update/delete/add/remove/reorder), captions (list/upload/download/delete, transcribe_video), templates.

Safety: anything public (publishing, scheduling, public replies, channel profile and banner changes) or destructive needs the user's approval. If a tool returns CONFIRMATION REQUIRED, show the summary to the user and only call again with the confirmation_token after they say yes. Never invent approval.

Quota: one Google Cloud project has a daily budget (about 100 uploads and 10,000 API units). On quota errors, stop; uploads resume after the midnight Pacific reset. Unaudited Google Cloud projects may have uploads forced to private; tools report it when it happens.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
auth_statusA

Show whether Google OAuth is configured, which YouTube channels are connected (and whether their sign-in is healthy), the default channel, today’s quota use, and known project limitations. Call this first in a new conversation.

connect_channelA

Start Google sign-in to connect (or reconnect) a YouTube channel. Opens the browser on this computer and returns the sign-in link; the user picks the Google account and channel (brand accounts work). Waits up to wait_seconds for them to finish.

list_channelsB

List the YouTube channels connected to this server.

set_default_channelA

Choose which connected channel is used when a tool call does not name one.

disconnect_channelA

Remove a connected channel and revoke this app’s Google access to it. Needs the user’s confirmation.

upload_videoA

Upload a video file from this computer (file_path) or a public URL to YouTube with a resumable, checkpointed upload that survives network drops and restarts. Optionally schedule it (publish_at), set a thumbnail, add it to playlists and attach captions in the same call. Runs in the background: returns a job_id right away (or the finished video if it completes within wait_seconds). Poll get_upload_status. Private uploads start immediately; public, unlisted and scheduled uploads need the user’s confirmation first. Tip: write metadata first (generate_metadata, then preview_metadata).

get_upload_statusA

Status of an upload job (progress, errors, resulting video) and/or a video’s YouTube processing state (processing, failed, rejected), plus a check for the "locked to private" restriction. Can wait for changes.

list_uploadsB

Recent upload jobs from this computer, newest first, with progress and results.

cancel_uploadA

Stop an upload job that has not finished. It can be resumed later with resume_upload.

resume_uploadB

Resume a stopped, failed or cancelled upload from the last byte YouTube confirmed (for example after a quota reset or reconnecting the channel). Network drops and quota resets are also retried automatically.

list_my_videosA

List videos on the channel, newest first (including private, unlisted and scheduled ones), with privacy, schedule, duration and view counts. Paginate with page_token.

get_videoB

Full details of one video: metadata, privacy and schedule, processing state, duration, captions flag and statistics.

update_videoA

Change a video’s title, description, tags, category, languages, audience and other settings. Only the fields you pass change. Optionally apply a template to the fields you pass (title format; footer and hashtags when you pass description; template tags when you pass tags). Changing visibility to public/unlisted or scheduling needs the user’s confirmation (or use set_visibility).

set_visibilityA

Change who can see a video: private, unlisted or public, or schedule it with publish_at. Anything other than private needs the user’s confirmation.

delete_videoA

Permanently delete a video from YouTube. Cannot be undone. Always needs the user’s confirmation.

set_thumbnailA

Upload a JPG or PNG (max 2 MB, ideally 1280x720) from this computer as the video’s thumbnail. The channel must be phone-verified.

set_video_localizationsA

Add or update the title and description shown to viewers in other languages, e.g. {"hi": {"title": "...", "description": "..."}}. Merged with existing translations. The video needs a default_language set (update_video).

list_categoriesB

YouTube video categories you can assign (id and name) for a region.

list_playlistsB

All playlists on the channel with id, title, privacy and video count.

create_playlistC

Create a new playlist on the channel.

add_to_playlistB

Add a video to a playlist by playlist id or exact title. Optionally at a position (0 = first).

remove_from_playlistB

Remove a video from a playlist (the video itself is not deleted).

update_playlistA

Rename a playlist, change its description or privacy. Making it public or unlisted needs the user’s confirmation.

delete_playlistA

Delete a playlist (the videos in it are not deleted). Needs the user’s confirmation.

move_in_playlistA

Move a video to a new position in a playlist (0 = first). Works for playlists sorted manually.

list_playlist_itemsD

Videos in a playlist, in order.

list_captionsC

Caption tracks on a video (language, name, auto-generated or uploaded, draft).

upload_captionsB

Add a captions track (.srt, .vtt or other YouTube-supported format) to a video, from a file on this computer or inline content.

delete_captionsA

Delete an uploaded caption track (see list_captions for ids). Needs the user’s confirmation.

download_captionsA

Download a caption track of your own video as SRT (prefers uploaded tracks, falls back to auto-generated). Costs 250 quota units.

transcribe_videoA

Transcribe a video file on this computer with any OpenAI-compatible speech-to-text API (needs ffmpeg and a configured key). Saves an .srt you can pass to upload_video or upload_captions, and returns a timestamped transcript for writing metadata and chapters.

generate_metadataA

Collect everything needed to write a strong title, description, chapters and tags: the transcript with timestamps (from text you pass, a .srt/.vtt/.txt file, an uploaded video’s captions, or by transcribing a local file), the chosen template and YouTube’s rules. You then write the metadata and check it with preview_metadata.

preview_metadataA

Show exactly what would be sent to YouTube (title, description, tags, playlists) after applying a template, and check it against YouTube’s limits and chapter rules. No API call, no quota.

list_templatesC

Metadata templates (title format, description footer, default tags, hashtags, category, playlists, voice guidance) available for uploads.

save_templateB

Create or replace a metadata template, saved as JSON in the templates folder. Use {title} in title_format. extends inherits another template; tags and hashtags combine.

delete_templateC

Delete a saved template file.

quota_statusA

Estimated YouTube API quota used today (units and uploads) for this Google Cloud project, and when it resets (midnight Pacific Time).

get_channelC

The channel’s title, handle, description, keywords, country, default language, trailer, subscriber/view/video counts, banner and settings.

update_channelA

Change the channel description, keywords, country, default language or the trailer shown to non-subscribers. Only the fields you pass change. These are public, so the user confirms first. (The channel name and handle can only be changed in YouTube Studio.)

set_channel_bannerA

Upload a channel banner (JPG/PNG, 16:9, at least 2048x1152, ideally 2560x1440, max 6 MB). Public, so the user confirms first.

set_watermarkA

Set the subscribe watermark shown on all channel videos (square JPG/PNG, at least 150x150, max 1 MB), or remove it with remove: true.

list_commentsA

Comment threads on one video, or across the whole channel (newest first). Filter by moderation state (published, held_for_review, likely_spam) or search text. Includes replies.

reply_to_commentA

Post a public reply to a comment (comment_id = the top-level comment or thread id) or a new top-level comment on a video (video_id). Posts publicly as the channel, so the user confirms the exact text first.

moderate_commentsA

Publish held comments, hold comments for review, or remove (reject) them; optionally ban the author from commenting on the channel. Removing or banning needs the user’s confirmation.

delete_commentA

Delete a comment or reply that the channel itself wrote (other people’s comments are removed with moderate_comments). Needs the user’s confirmation.

get_analyticsA

YouTube Analytics for the channel or one video. Reports: overview (views, watch time, average view duration, subscribers gained/lost, likes, comments, shares), daily (trend by day), top_videos (best performers with titles), traffic_sources, search_terms (YouTube search queries), geography, devices, demographics (age/gender), retention (audience retention curve, needs video_id), subscribed_status, or custom (your own metrics/dimensions). Defaults to the last 28 days. Data lags about 2 days.

Prompts

Interactive templates invoked by user choice

NameDescription
publish_videoGuided flow: transcript → metadata → upload → thumbnail/playlists → confirm visibility.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.1/5.0

Scored across 46 tools

Disambiguation4/5

Most tools target a clearly distinct resource and action, and descriptions explicitly separate close pairs such as delete_comment vs moderate_comments and upload_video vs resume_upload. The main overlaps are update_video vs set_visibility and generate_metadata vs preview_metadata, but the descriptions clarify when to use each.

Naming Consistency4/5

Nearly all tools follow a consistent snake_case verb_noun pattern (list_playlists, create_playlist, update_video, delete_captions). The only deviations are noun-style status tools auth_status and quota_status, plus the slightly unusual list_my_videos, but the convention is still predictable overall.

Tool Count2/5

At 46 tools, the surface is very heavy for a single MCP server, even given YouTube's broad domain. Several tools could be consolidated or folded into options on existing tools (e.g. set_visibility into update_video, upload management helpers, template operations), so the set feels over-expanded.

Completeness4/5

Coverage is strong across auth, channels, videos, uploads, playlists, captions, comments, templates, analytics, thumbnails, and channel branding. Minor gaps remain, such as no obvious channel-wide video search or bulk operations, but core lifecycle workflows are well covered.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues