Skip to main content
Glama
youtube-personal-feed

youtube-personal-feed

by toniher

youtube-personal-feed

npm version

MCP server and CLI for your YouTube subscriptions. Exposes your feed, channel uploads, playlists (including Liked Videos), and video details to AI assistants and the terminal — with https://www.youtube.com/watch?v= links for transcript tools.

Quick Start

Prerequisites: Node.js 18+, Google account with YouTube Data API v3 enabled.

1. Google Cloud (one-time)

  1. Google Cloud Console → APIs & Services → Library → enable YouTube Data API v3.

  2. OAuth consent screen → External, add your Gmail under Test users, add scope https://www.googleapis.com/auth/youtube.readonly.

  3. Credentials → Create Credentials → OAuth client ID → Desktop App.

  4. Save to ~/.config/youtube-personal-mcp/.env (or .env in repo root):

    CLIENT_ID=your-client-id.apps.googleusercontent.com
    CLIENT_SECRET=your-client-secret

2. Install & authenticate

npm install -g youtube-personal-feed
youtube-personal-feed-auth  # opens browser; token saved to ~/.config/youtube-personal-mcp/token.json

Related MCP server: @striderlabs/mcp-youtube

MCP Setup

Add to claude_desktop_config.json (Claude Desktop) or your OpenCode MCP config:

{
  "mcpServers": {
    "youtube-personal-feed": {
      "command": "youtube-personal-feed-mcp"
    }
  }
}

Local development: npx tsx src/index.ts with cwd set to the repo.

Tools

Tool

Description

Options

list_subscriptions

Channels you subscribe to

query?, maxResults? (default 50)

list_feed

Latest uploads across subscriptions

limit? (20), sinceDays?, channelId?

list_channel_uploads

Recent uploads for any channel

channelId, maxResults? (15)

list_playlist

Videos from any playlist (LL, PL...)

playlistId, maxResults? (15)

list_liked_videos

Your Liked Videos (LL)

maxResults? (15)

get_video

Video metadata and stats

videoId

Feed items include videoUrl for transcript tools.

CLI

Outputs JSON. Global install:

youtube-personal-feed subscriptions --query tech --limit 20
youtube-personal-feed feed --limit 10 --since-days 7
youtube-personal-feed uploads UCJaGVXG4KgOUXUtcmAHAOdA --limit 15
youtube-personal-feed video 64wtzsSQx84

From source (authenticate first):

npm run auth
npm run cli -- feed --limit 10

Works for all tools: subscriptions, feed, uploads, playlist, liked, video.

Quota & Caching

YouTube API limit is 10,000 units/day. Uploads use the channel's uploads playlist (1 unit/request). Subscriptions cached 30 min, uploads/videos 10 min.

Development

npm run auth                  # authenticate locally (before cli)
npm run cli -- <command>      # run CLI from source
npm run typecheck             # check types
npm run lint                  # lint + format check
npm run format                # format with Biome
npm run build                 # compile to dist/
npm run smoke                 # API smoke test (needs auth)

Available Tools

6 tools
get_videoB

Get details for a single YouTube video by ID.

Inputs: videoId (required).

list_channel_uploadsA

List the most recent uploads of a specific channel (not required to be subscribed).

Inputs: channelId (required), maxResults.

list_feedA

List the most recent uploads across all subscribed channels (the subscription feed). Returns standard https://www.youtube.com/watch?v= URLs that can be fed into a transcript-extraction MCP.

Inputs: limit, channelId, sinceDays.

list_liked_videosB

List the user's Liked Videos playlist ('LL'). Returns standard https://www.youtube.com/watch?v= URLs.

Inputs: maxResults.

list_playlistB

List videos from any YouTube playlist ID (e.g. LL for Liked Videos or custom PL...).

Inputs: playlistId (required), maxResults.

list_subscriptionsB

List YouTube channels the authenticated user is subscribed to.

Inputs: query, maxResults.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 6 tools

    Disambiguation4/5

    Each list_* tool targets a distinct source: subscriptions, aggregate feed, channel uploads, generic playlist, liked videos, plus a single-video getter. The only real overlap is list_liked_videos being a described shortcut for list_playlist('LL'), and list_channel_uploads vs list_feed could occasionally be confused, but descriptions clarify these.

    Naming Consistency5/5

    All names follow a predictable verb_noun pattern (list_subscriptions, list_feed, list_channel_uploads, list_playlist, list_liked_videos) with a single get_video for the singular-resource lookup, which is exactly what you'd expect.

    Tool Count5/5

    Six tools is well-scoped for a read-only personal feed server; each tool maps to a meaningful viewing surface with no filler. Nothing feels thin or bloated.

    Completeness3/5

    Core read paths (subscriptions, feed, uploads, playlists, liked, video details) are covered, but there is no search capability and no subscription/playlist management operations, so an agent that needs to discover videos by keyword or modify state hits a dead end.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers