Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
YTMCP_AUTH_MODENoAuthentication mode. Can be 'cookie', 'oauth', or 'auto' (default). When 'auto', the server picks the method automatically based on available credentials.auto
YTMCP_COOKIE_FILENoPath to a cookies.txt file or JSON export for browser cookie authentication (Option A).
YTMCP_OAUTH_CLIENT_IDNoOAuth 2.0 client ID from Google Cloud Console for OAuth device flow (Option B).
YTMCP_OAUTH_CLIENT_SECRETNoOAuth 2.0 client secret from Google Cloud Console for OAuth device flow (Option B).

Instructions

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

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

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

Tools

Functions exposed to the LLM to take actions

NameDescription
upload_videoA

Upload a video file to the authenticated YouTube channel.

Args: file_path: Absolute path to the video file on the local machine. title: Video title (max 100 chars). description: Video description text. tags: Optional list of tags/keywords. visibility: One of 'public', 'unlisted', 'private', 'scheduled'. category_id: YouTube category id (default '22' = People & Blogs). publish_at: ISO-8601 datetime; required when visibility='scheduled'. made_for_kids: COPPA compliance flag. thumbnail_path: Optional path to a custom thumbnail image.

update_video_metadataB

Update the metadata of an existing video.

Args: video_id: The YouTube video id to edit. title: New title (optional). description: New description (optional). tags: New tag list (optional). category_id: New category id (optional). default_language: New default language code, e.g. 'en' (optional).

set_video_visibilityB

Change a video's visibility.

Args: video_id: The YouTube video id. visibility: One of 'public', 'unlisted', 'private', 'scheduled'. publish_at: ISO-8601 datetime; required for 'scheduled'.

delete_videoB

Permanently delete a video from the channel.

Args: video_id: The YouTube video id to delete.

get_video_infoB

Get detailed information about a video (title, views, description).

Args: video_id: The YouTube video id.

search_videosC

Search YouTube for videos.

Args: query: Search keywords. limit: Maximum number of results (default 20).

list_channel_videosB

List a channel's uploaded videos (newest first).

Args: channel_id: The channel id (starts with 'UC'). limit: Maximum number of videos to return.

create_playlistB

Create a new playlist on the channel.

Args: title: Playlist title. description: Playlist description. visibility: One of 'public', 'unlisted', 'private'.

list_playlistsC

List all playlists belonging to a channel.

Args: channel_id: The channel id (starts with 'UC').

add_video_to_playlistC

Add a video to a playlist.

Args: playlist_id: Target playlist id (starts with 'PL'). video_id: Video id to add.

remove_video_from_playlistC

Remove a video from a playlist.

Args: playlist_id: Target playlist id. video_id: Video id to remove.

delete_playlistC

Delete a playlist.

Args: playlist_id: Playlist id to delete.

list_commentsB

List top-level comments for a video.

Args: video_id: The YouTube video id. limit: Maximum number of comments to return.

reply_to_commentB

Reply to a comment on a video.

Args: video_id: The video id the comment belongs to. comment_id: The comment to reply to. text: Reply text.

moderate_commentB

Moderate a comment (approve, hold, or reject).

Args: comment_id: Target comment id. action: One of 'published', 'heldForReview', 'rejected'.

get_channel_infoB

Get information about a channel (title, description, banner).

Args: channel_id: Channel id; if omitted, uses the authenticated channel.

get_subscriber_countB

Get the subscriber count of a channel.

Args: channel_id: Channel id; if omitted, uses the authenticated channel.

update_channel_brandingB

Update channel branding: banner, avatar, and profile links.

Args: banner_path: Local path to a new banner image. avatar_path: Local path to a new avatar image. links: List of {'title': ..., 'url': ...} profile links.

get_analyticsB

Get channel analytics (views, watch-time, subscribers gained/lost).

Args: channel_id: Channel id. period_days: Reporting window in days (default 28).

get_top_videosC

Get a channel's most-viewed videos.

Args: channel_id: Channel id. limit: Maximum number of videos to return.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.2/5.0

Scored across 20 tools

Disambiguation4/5

Most tools have clearly distinct purposes, but a few channel-video retrieval and channel-info tools have closely related scopes (e.g., get_top_videos vs list_channel_videos, get_channel_info vs get_subscriber_count), which could cause minor misselection.

Naming Consistency5/5

All tool names use a consistent snake_case verb_noun pattern (get_, list_, create_, update_, delete_, etc.) with no mixed conventions, making them predictable and readable.

Tool Count4/5

20 tools is on the higher side but reasonable for the broad YouTube channel management domain, covering videos, playlists, comments, analytics, and channel branding without obvious redundancy.

Completeness3/5

Core CRUD exists for videos and playlists, but notable gaps remain: no way to list videos within a playlist, no update_playlist, no update_channel_description/title, and no delete comment. These missing operations could hinder full playlist and channel management.

Maintenance

ActivityMaintained
ResponsivenessNo issues