Token Optimized Youtube Data and Transcript

by kirbah

22 stars
366 downloads
Not rated
GitHub

About

High-efficiency YouTube MCP server: Get token-optimized, structured data for your LLMs using the YouTube Data API v3.

Details

Author
kirbah
GitHub stars
22
Downloads
366
Categories
Search, Other, Media

- Token‑efficient data structure saving up to 87% of LLM context tokens.
- Optional MongoDB caching layer to avoid duplicate API quota consumption.
- Multi‑language transcript retrieval with full text or key segments.
- 97% test coverage, zero lint errors, and active Dependabot security patching.
- Tools for video details, search, channel stats, trending, categories, and comments.
- Zero‑config mode for transcripts; no API key required.

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Token Optimized Youtube Data and Transcript
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install via npx with npx -y @kirbah/mcp-youtube in your MCP client configuration. For full features, set the YOUTUBE_API_KEY environment variable and optionally MDB_MCP_CONNECTION_STRING for caching. The server provides tools like getVideoDetails, searchVideos, getTranscripts, getChannelStatistics, getTrendingVideos, and getVideoComments. Use zero-config mode by just adding the base npx command; transcripts work immediately without any API key.

getTranscripts

Retrieves specific, meaningful segments of a video's transcript. By default, it returns the intro 'hook' and the final 'outro' or call to action. It can also return the full transcript text. Use this to efficiently analyze a video's key messaging.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "token optimized youtube data and transcript": {
            "youtube": {
                "command": "npx",
                "args": [
                    "-y",
                    "@kirbah/mcp-youtube"
                ],
                "env": {
                    "YOUTUBE_API_KEY": "YOUR_YOUTUBE_API_KEY_HERE",
                    "MDB_MCP_CONNECTION_STRING": "optional db for cache ie. mongodb+srv://user... server.com"
                }
            }
        }
    }
}

McpServers

{
    "youtube": {
        "command": "npx",
        "args": [
            "-y",
            "@kirbah/mcp-youtube"
        ],
        "env": {
            "YOUTUBE_API_KEY": "YOUR_YOUTUBE_API_KEY_HERE",
            "MDB_MCP_CONNECTION_STRING": "optional db for cache ie. mongodb+srv://user... server.com"
        }
    }
}

YouTube Data MCP Server (@kirbah/mcp-youtube)

<!-- Badges Start -->
<p align="left">
<!-- GitHub Actions CI -->
<a href="https://github.com/kirbah/mcp-youtube/actions/workflows/ci.yml">
CI Status
</a>
<!-- Codecov -->
<a href="https://codecov.io/gh/kirbah/mcp-youtube">
Code Coverage
</a>
<!-- NPM Version -->
<a href="https://www.npmjs.com/package/@kirbah/mcp-youtube">
NPM Version
</a>
<!-- NPM Downloads -->
<a href="https://www.npmjs.com/package/@kirbah/mcp-youtube">
NPM Downloads
</a>
<!-- Node Version -->
<a href="package.json">
Node.js Version Support
</a>
</p>

<a href="https://glama.ai/mcp/servers/@kirbah/mcp-youtube">

</a>
<!-- Badges End -->

A production-grade YouTube Data MCP server engineered specifically for AI agents.

Unlike standard API wrappers that flood your LLM with redundant data, this server strips away YouTube's heavy payload bloat. It is designed to save you massive amounts of context window tokens, protect your daily API quotas via caching, and run reliably without breaking your workflows.

Why Choose This Server?

Most MCP servers are weekend projects. @kirbah/mcp-youtube is built for reliable, daily, cost-effective agentic workflows.

📉 1. Save Up to 87% on Tokens (and Context Window)

The raw YouTube API returns massive JSON payloads filled with nested eTags, redundant thumbnails, and localization data that LLMs don't need. This server structures the data to give your LLM exactly what it needs to reason, and nothing else.

%%{init: { "theme": "base", "themeVariables": { "xyChart": { "plotColorPalette": "#ef4444, #22c55e" } } } }%%
xychart-beta
    title "Token Consumption (Lower is Better)"
    x-axis ["getVideoDetails", "searchVideos", "getChannelStats"]
    y-axis "Context Tokens" 0 --> 1200
    bar "Raw YouTube API" [854, 1115, 673]
    bar "MCP-YouTube (Optimized)" [209, 402, 86]

| API Method | Raw YouTube Tokens | MCP-YouTube Tokens | Token Savings | Data Size |
| :--------------------- | :----------------- | :----------------- | :------------ | :-------------- |
| getChannelStatistics | 673 | 86 | ~87% Less | 1.9 KB ➔ 0.2 KB |
| getVideoDetails | 854 | 209 | ~75% Less | 2.9 KB ➔ 0.6 KB |
| searchVideos | 1115 | 402 | ~64% Less | 3.4 KB ➔ 1.2 KB |

_(Curious? You can compare the raw API responses vs optimized outputs in the examples folder)._

🛡️ 2. Protect Your API Quotas (Smart Caching)

The YouTube Data API has strict daily limits (10,000 quota units). If your LLM gets stuck in a loop or re-asks a question, standard servers will drain your API limit in minutes.
This server includes an optional MongoDB caching layer. If your agent requests a video details or searches the same trending videos twice, the server serves it from the cache - costing you 0 API quota points.

🏗️ 3. Production-Grade & Actively Maintained

Tired of MCP tools crashing your AI client? This server is built to be a rock-solid dependency:

- 97% Test Coverage: Comprehensively unit-tested (check the Codecov badge).
- Zero Lint Errors/Warnings: Enforces strict, clean code (npm run lint passes 100%).
- Active Security: Automated Dependabot patching ensures underlying libraries are never left with known vulnerabilities.
- Strict Type Safety: Built using Zod validation and the robust MCP TypeScript Starter architecture.

---

Quick Start: Installation

🟢 Zero-Config Mode (No API Key Required)

Want to just fetch transcripts? You can use this server immediately without any configuration! Just install and go. Add a YouTube API key later to unlock deep search and analytics.

The easiest way to install this server is by clicking the "Add to Claude Desktop" button on the Glama server page.

If you are configuring manually (e.g., in Cursor), just add this bare-minimum setup:

{
  "mcpServers": {
    "youtube": {
      "command": "npx",
      "args": ["-y", "@kirbah/mcp-youtube"]
    }
  }
}

_✨ Tip: In Zero-Config mode, you can ask your AI to simply "Read the transcript for youtube://transcript/{videoId}"!_

🟡 Manual Configuration (Unlock All Features)

If you prefer to configure your MCP client manually (e.g., Claude Desktop or Cursor), add the following to your configuration file:

1. Get a YouTube Data API v3 Key (See Setup Instructions below).
2. (Highly Recommended) Get a free MongoDB Connection String to enable quota-saving caching.

{
  "mcpServers": {
    "youtube": {
      "command": "npx",
      "args": ["-y", "@kirbah/mcp-youtube"],
      "env": {
        "YOUTUBE_API_KEY": "YOUR_YOUTUBE_API_KEY_HERE",
        "MDB_MCP_CONNECTION_STRING": "mongodb+srv://user:pass@cluster0.abc.mongodb.net/youtube_niche_analysis"
      }
    }
  }
}

_(Windows PowerShell Users: If npx fails, try using "command": "cmd" and "args": ["/k", "npx", "-y", "@kirbah/mcp-youtube"])_

Key Features

- Optimized Video Information: Search videos with advanced filters. Retrieve detailed metadata, statistics (views, likes, etc.), and content details, all structured for minimal token footprint.
- Efficient Transcript Management: Fetch video captions/subtitles with multi-language support, perfect for content analysis by LLMs.
- Insightful Channel Analysis: Get concise channel statistics (subscribers, views, video count) and discover a channel's top-performing videos without data bloat.
- Lean Trend Discovery: Find trending videos by region and category, and get lists of available video categories, optimized for quick AI processing.
- Structured for AI: All responses are designed to be easily parsable and immediately useful for language models.
- Efficient Comment Retrieval: Fetch video comments with fine-grained control over the number of results and replies, optimized for sentiment analysis and feedback extraction.

Available Tools

The server provides the following MCP tools, each designed to return token-optimized data:

| Tool Name | Description | Parameters (see details in tool schema) |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| getVideoDetails | Retrieves detailed, lean information for multiple YouTube videos including metadata, statistics, engagement ratios, and content details. | videoIds (array of strings) |
| searchVideos | Searches for videos or channels based on a query string with various filtering options, returning concise results. | query (string), maxResults (optional number), order (optional), type (optional), channelId (optional), etc. |
| getTranscripts | Retrieves token-efficient transcripts (captions) for multiple videos, with options for full text or key segments (intro/outro). | videoIds (array of strings), lang (optional string for language code), format (optional enum: 'full_text', 'key_segments' - default 'key_segments') |
| getChannelStatistics | Retrieves lean statistics for multiple channels (subscriber count, view count, video count, creation date). | channelIds (array of strings) |
| getChannelTopVideos | Retrieves a list of a channel's top-performing videos with lean details and engagement ratios. | channelId (string), maxResults (optional number) |
| getTrendingVideos | Retrieves a list of trending videos for a given region and optional category, with lean details and engagement ratios. | regionCode (optional string), categoryId (optional string), maxResults (optional number) |
| getVideoCategories | Retrieves available YouTube video categories (ID and title) for a specific region, providing essential data only. | regionCode (optional string) |
| getVideoComments | Retrieves comments for a YouTube video. Allows sorting, limiting results, and fetching a small number of replies per comment. | videoId (string), maxResults (optional number), order (optional), maxReplies (optional number), commentDetail (optional string) |
| findConsistentOutlierChannels | Identifies channels that consistently perform as outliers within a specific niche. Requires a MongoDB connection. | niche (string), minVideos (optional number), maxChannels (optional number) |

_For detailed input parameters and their descriptions, please refer to the inputSchema within each tool's configuration file in the src/tools/ directory (e.g., src/tools/video/getVideoDetails.ts)._

> _Note on API Quota Costs: Most tools are highly efficient. getVideoDetails, getChannelStatistics, and getTrendingVideos cost only 1 unit per call. The getTranscripts tool has 0 API cost. The new getVideoComments tool has a variable cost: the base call is 1 unit, but if you request replies (by setting maxReplies > 0), it costs an additional 1 unit for each top-level comment it fetches replies for. The search-based tools are the most expensive: searchVideos costs 100 units and getChannelTopVideos costs 101 units._

Advanced Usage & Local Development

If you wish to contribute, modify the server, or run it locally outside of an MCP client's managed environment:

Prerequisites

- Node.js (version specified in package.json engines field - currently >=20.0.0)
- npm (usually comes with Node.js)
- A YouTube Data API v3 Key (see YouTube API Setup)

Local Setup

1. Clone the repository:

    git clone https://github.com/kirbah/mcp-youtube.git
    cd mcp-youtube
    

2. Install dependencies:

    npm ci
    

3. Configure Environment:
Create a .env file in the root by copying .env.example:

    cp .env.example .env

Then, edit .env to add your YOUTUBE_API_KEY:
    YOUTUBE_API_KEY=your_youtube_api_key_here
MDB_MCP_CONNECTION_STRING=your_mongodb_connection_string_here

Development Scripts

```bash

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.