Skip to main content
Glama

YouTube Content Management MCP Server

get_playlist_metrics.py2.92 kB
from server import mcp from mcp.types import TextContent from typing import List from utils.tool_utils import YouTubeAPIError, get_youtube_client from googleapiclient.errors import HttpError from utils.models import PlaylistIdInput @mcp.tool() def get_playlist_metrics(arguments: dict) -> List[TextContent]: """Retrieve statistics for a specific YouTube playlist. This function queries the YouTube Data API v3 to fetch metrics for a given playlist, including item count and total view count of all videos, formatted as a TextContent object. Args: arguments: A dictionary containing: - playlist_id (str): The YouTube playlist ID (required). Returns: List[TextContent]: A list containing a single TextContent object with a formatted string including the playlist's title, item count, and total view count. If the playlist is not found, returns a single TextContent with a "No playlist found" message. Raises: YouTubeAPIError: If the API key is missing, the playlist ID is invalid, the API request fails, or the input arguments are invalid (via Pydantic). """ try: input_data = PlaylistIdInput(**arguments) except ValueError as e: raise YouTubeAPIError(f"Invalid input arguments: {e}") youtube = get_youtube_client() try: playlist_response = youtube.playlists().list( part='snippet', id=input_data.playlist_id ).execute() playlist_items = playlist_response.get('items', []) if not playlist_items: return [TextContent(type="text", text="No playlist found for the given ID.")] playlist_title = playlist_items[0]['snippet']['title'] playlist_items_response = youtube.playlistItems().list( part='contentDetails', playlistId=input_data.playlist_id, maxResults=50 ).execute() video_ids = [item['contentDetails']['videoId'] for item in playlist_items_response.get('items', [])] item_count = len(video_ids) total_views = 0 if video_ids: videos_response = youtube.videos().list( part='statistics', id=','.join(video_ids) ).execute() total_views = sum(int(item['statistics'].get('viewCount', 0)) for item in videos_response.get('items', [])) return [TextContent( type="text", text=(f"**{playlist_title}**\n" f"Playlist ID: {input_data.playlist_id}\n" f"Items: {item_count}\n" f"Total Views: {total_views}") )] except HttpError as e: raise YouTubeAPIError(f"YouTube API error for playlist ID '{input_data.playlist_id}': {e}") except Exception as e: raise YouTubeAPIError(f"Unexpected error for playlist ID '{input_data.playlist_id}': {e}")

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/NastyRunner13/youtube-content-management-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server