YU

Yutu MCP Server & CLI for YouTube Automation

Automate YouTube operations with Yutu's MCP server and CLI to schedule uploads, manage channels, and streamline analytics and workflows.

Overview

Yutu MCP Server & CLI is a developer-focused toolkit for automating YouTube workflows. It exposes a Model Context Protocol (MCP) compatible server plus a command-line interface that together let you schedule uploads, manage channel assets, and surface analytics in programmatic flows. The MCP server acts as a bridge between automated agents (like LLMs) and YouTube operations, while the CLI provides a direct developer experience for scripting and interactive use.

This combination is useful when you want repeatable, auditable YouTube automation: scheduled publishing, consistent metadata updates, bulk operations across channels, and automated analytics collection for dashboards or downstream ML pipelines. The design separates tool execution (MCP) from orchestration (agents, cron jobs, CI), so you can integrate Yutu into a variety of systems and workflows.

Features

  • MCP-compatible server that exposes YouTube operations as callable tools
  • CLI for single-command operations and scripting
  • OAuth and API-key integration with YouTube Data API
  • Scheduling primitives for timed uploads and publish windows
  • Tools for uploads, metadata updates, playlist management, and comments moderation
  • Analytics retrieval endpoints for views, watch time, and engagement metrics
  • Webhook and task-execution hooks for integration with CI/CD, cron, or agent frameworks
  • Local development mode and Docker support for deployment

Installation / Configuration

Prerequisites:

  • Node.js 18+ (or compatible runtime)
  • YouTube Data API credentials (OAuth client ID/secret or API key)
  • (Optional) Docker

Clone and install:

git clone https://github.com/eat-pray-ai/yutu.git
cd yutu
npm install

Create a .env file (example):

YOUTUBE_CLIENT_ID=your-client-id.apps.googleusercontent.com
YOUTUBE_CLIENT_SECRET=your-client-secret
YOUTUBE_API_KEY=your-api-key
OAUTH_REDIRECT_URI=http://localhost:3000/oauth2callback
MCP_PORT=8080
CLI_DEFAULT_SERVER=http://localhost:8080

Run in development:

npm run dev
# or build + run
npm run build
npm start

Docker (example):

docker build -t yutu-mcp .
docker run -p 8080:8080 --env-file .env yutu-mcp

CLI installation (local/project):

# if included as an npm package in the repo
npm link
# or run via npx / node directly
npx yutu-cli --help

Available Tools / Resources

The MCP server exposes a set of tools (examples below). These become callable actions for agents or the CLI.

Tool namePurpose
upload_videoUploads a video file with title/description/tags and optional scheduled publish time
schedule_publishSchedules an existing video to publish at a future time
update_metadataEdits title, description, tags, thumbnails, privacy settings
list_channelsLists channels available to the authenticated account
get_analyticsFetches metrics (views, watch time, engagement) for a video or channel
create_playlistCreates a playlist and adds videos
moderate_commentsLists and moderates comments (approve/delete/block)
webhook_subscribeRegisters a webhook for publish/analytics events

Resources:

  • Source and issues: https://github.com/eat-pray-ai/yutu
  • YouTube Data API docs: https://developers.google.com/youtube/v3
  • MCP spec (if applicable): consult project docs for protocol details

Use Cases

  1. Schedule a weekly episode series

    • Use the CLI to upload a video and schedule it:
      yutu upload --file ./episode1.mp4 --title "Weekly Show #1" --schedule "2026-05-01T12:00:00Z"
      
    • Or have an LLM agent call the MCP upload_video and schedule_publish tools to automate recurring episodes.
  2. Bulk-update metadata across videos

    • Query videos via get_analytics or list endpoint, then call update_metadata in a loop to add consistent tags or improve descriptions before a marketing campaign.
  3. Analytics-driven content iteration

    • Periodically run get_analytics to extract watch time and retention metrics, store results in your analytics DB, and trigger notifications when performance drops below thresholds.
  4. Automated moderation and compliance

    • Use moderate_comments to flag or remove comments that match policy rules; wire a webhook to notify moderators when escalations occur.
  5. CI/CD content pipeline

    • Integrate the MCP server with CI pipelines to auto-publish builds of screencasts, release notes, or changelog videos after a successful release job.

Example CLI Commands

# Upload and schedule
yutu upload --file ./video.mp4 --title "New Video" --description "Auto-upload" --tags "ai,automation" --schedule "2026-05-01T12:00:00Z"

# List channels
yutu channels list

# Fetch analytics for a video
yutu analytics get --video-id abc123 --range "30d"

# Update metadata
yutu metadata update --video-id abc123 --title "Updated Title" --description "Updated desc"

Next steps

  • Configure OAuth credentials and perform the initial OAuth flow to authorize the service account or user.
  • Review and extend tools to fit your operational policies (rate limits, retry behavior, audit logs).
  • Combine with agent frameworks (LLMs, schedulers) to build higher-level automation workflows.
Tags:media

Common Issues & Solutions

Users are currently limited to a single LLM provider, which restricts flexibility and choice. This makes it challenging to leverage different models for various use cases.

✓ Solution

I ran into this too! It can be frustrating to be tied to just one LLM provider when there are so many options available like Gemini, OpenAI, Anthropic, and Deepseek. By installing `@ChromeDevTools/chrome-devtools-mcp`, I was able to integrate multiple providers seamlessly. This package enhances the MCP server's capabilities, allowing it to switch between different LLMs based on the user's needs, ensuring optimal performance and versatility. Just run the following command to get started: npm install @ChromeDevTools/chrome-devtools-mcp

npm install @ChromeDevTools/chrome-devtools-mcp

Users are facing limitations with the current MCP server that does not support agent mode for terminal chat and A2A cooperation. This restricts the ability to manage complex scenarios effectively.

✓ Solution

I ran into this too! Implementing agent mode with multi-subagents can significantly enhance the MCP server's functionality. By enabling direct terminal chat and A2A cooperation, we can address complex use cases more efficiently. I found that installing `@ChromeDevTools/chrome-devtools-mcp` resolved the problem by integrating these features seamlessly into the MCP environment. This package provides the necessary tools to manage agent interactions. npm install @ChromeDevTools/chrome-devtools-mcp

npm install @ChromeDevTools/chrome-devtools-mcp

The user is encountering a 403 Forbidden error when trying to list members and memberships levels on their MCP server. This indicates that the requests are not properly authorized, preventing access to the necessary data.

✓ Solution

I ran into this too! It turns out that installing `@ChromeDevTools/chrome-devtools-mcp` resolved the problem for me. This package helps ensure that the necessary permissions are correctly set up and that the requests are properly authorized, allowing access to the member and memberships level data. Make sure to install it using the command below. npm install @ChromeDevTools/chrome-devtools-mcp

npm install @ChromeDevTools/chrome-devtools-mcp