Skip to main content
Glama

yt-analytics-mcp

MCP server for YouTube channel deep analytics. Extracts transcripts, computes quantitative metrics (WPM, profanity, humor taxonomy, rhetoric fingerprint, title formula, posting schedule), and generates multi-creator comparison dashboards.

Dashboard overview

Charts detail

Tools

Tool

Description

yt_analyze_channel

Analyze a channel: download transcripts, compute metrics, cache results

yt_list_analyses

List all cached channel analyses

yt_get_analysis

Retrieve full cached analysis JSON for a channel

yt_remove_analysis

Remove a cached analysis

yt_compare_creators

Build a tabbed HTML comparison dashboard from cached analyses

Related MCP server: YouTube MCP

Quick Start

# Install
cd yt-analytics-mcp
npm install

# Add to Claude Code settings
# ~/.claude/settings.json → mcpServers

Claude Code Config

{
  "mcpServers": {
    "yt-analytics": {
      "command": "node",
      "args": ["/path/to/yt-analytics-mcp/src/index.js"],
      "env": {
        "YT_ANALYTICS_DATA": "/path/to/yt-analytics-mcp/data"
      }
    }
  }
}

Usage

Analyze a single channel

Analyze @BennJordan's channel (20 videos, tech niche)
→ calls yt_analyze_channel with channel="@BennJordan", limit=20, niche="tech"

Returns structured JSON with per-video and aggregate metrics:

  • WPM (words per minute) with niche baseline comparison

  • Profanity density per minute

  • Humor taxonomy (crude, self-deprecating, confrontational, hyperbolic, absurd)

  • Rhetoric fingerprint (connector word frequencies: but, so, because, if you, etc.)

  • Title formula (CAPS usage, exclamation marks, parentheticals)

  • Posting schedule (day-of-week distribution, monthly activity, cadence gaps)

Build a comparison dashboard

Compare all analyzed channels in a tabbed dashboard
→ calls yt_compare_creators

Generates a self-contained HTML file with:

  • Sticky tab bar for switching between creators

  • KPI cards (videos, words, runtime, median WPM, profanity, avg length)

  • WPM horizontal bar chart with niche average line

  • Video structure timeline

  • Humor taxonomy doughnut chart

  • Profanity density bar chart

  • Rhetoric radar chart

  • Video length vs. speech rate bubble chart

  • Posting schedule — day-of-week bar chart, monthly activity line chart, cadence stats

  • Title formula badges

  • Opening line pattern breakdown

  • Connector language grid

  • Per-video data table

  • Written analysis

Workflow

1. yt_analyze_channel → analyze @Creator1 (cached)
2. yt_analyze_channel → analyze @Creator2 (cached)
3. yt_analyze_channel → analyze @Creator3 (cached)
4. yt_compare_creators → build tabbed dashboard from all cached analyses

The companion /yt-analytics skill adds Gemini qualitative analysis on top — editing mechanics, humor quotes, video structure timelines, energy modulation — then merges with the MCP's quantitative data.

Filtering by date

Analyze @RyanHumiston — last 2 years only, 20 videos
→ yt_analyze_channel with channel="@RyanHumiston", limit=20, max_age_days=730

The --max-age-days flag filters out videos older than N days before analysis.

Niche Baselines

Niche

Avg WPM

Fitness

~170

Tech

~160

Commentary

~190

Educational

~150

Gaming

~180

News

~175

Woodworking

~175

Music

~165

Requirements

  • Node.js 18+

  • Python 3.10+ with yt-dlp and youtube-transcript-api installed

  • No API keys needed

Data Storage

Analyses are cached as JSON files in the data/ directory (configurable via YT_ANALYTICS_DATA env var). Transcript files are stored in data/transcripts/.

Architecture

yt-analytics-mcp/
├── src/
│   └── index.js          # MCP server + HTML generator
├── scripts/
│   └── analyze_channel.py # Transcript extraction + quantitative analysis
├── docs/                  # Example screenshots
├── data/                  # Cached analyses (JSON) + transcripts
├── package.json
└── README.md

The MCP server wraps the Python analysis script and adds:

  • Result caching and management

  • Multi-creator comparison HTML generation

  • Structured tool interfaces for Claude Code

Available Tools

5 tools
yt_analyze_channelA

Analyze a YouTube channel: download transcripts and compute quantitative metrics (WPM, profanity, humor taxonomy, rhetoric fingerprint, title formula). Returns structured JSON. Results are cached for use in comparisons.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax videos to analyze (default 10)
nicheNoContent niche for WPM baseline comparison. Options: fitness (~170), tech (~160), commentary (~190), educational (~150), gaming (~180), news (~175), woodworking (~175), music (~165)
channelYesChannel URL, handle (@BennJordan), or name. Accepts full URLs (https://www.youtube.com/@BennJordan/videos) or just the handle.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses key behaviors: it downloads transcripts, computes specific metrics, returns structured JSON, and caches results. Since no annotations are provided, the description carries the full burden, and it adequately covers the main operations. It does not mention potential side effects, authentication, or rate limits, but for a read-only analysis tool, the transparency is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences long, immediately stating the core purpose and actions in the first sentence. It efficiently lists metrics, output format, and caching behavior without extraneous details. Every sentence adds value, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has three parameters, no output schema, and no annotations. The description provides a reasonable overview of what it does and what it returns, including specific metric names. It could be improved by describing the JSON structure or mentioning that results are cached for later retrieval via yt_get_analysis, but for a moderate-complexity tool, it is fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters (channel, limit, niche) are fully described in the input schema with types, defaults, and notes. The description does not add any additional parameter semantics beyond what the schema already provides. Since schema coverage is 100%, the description's lack of extra parameter details is acceptable, resulting in a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Analyze a YouTube channel: download transcripts and compute quantitative metrics (WPM, profanity, humor taxonomy, rhetoric fingerprint, title formula).' It uses a specific verb-adverb-resource structure and lists concrete outputs. This distinguishes it from sibling tools like yt_compare_creators (comparison) and yt_get_analysis (retrieve existing analysis).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'Results are cached for use in comparisons,' implying that the analysis can be reused by yt_compare_creators. However, it does not explicitly state when to use this tool vs. retrieving an existing analysis via yt_get_analysis, nor does it provide any contraindications or prerequisite knowledge. The guidance is implied but not explicit enough for an agent to make optimal decisions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

yt_compare_creatorsA

Build or update a tabbed HTML comparison dashboard from cached analyses. Specify which channels to include, or omit to include all cached analyses. Returns the HTML file path.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoDashboard title (default: "YouTube Creator — Deep Analytics")
channelsNoList of channel names/slugs to include. If omitted, includes all cached analyses.
output_pathNoOutput file path for the HTML dashboard. Defaults to data/creator-comparison.html

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool builds/updates an HTML file and returns the path, but it does not mention side effects (e.g., whether it overwrites existing files, requires permissions, or if it is idempotent). The phrase 'from cached analyses' suggests read-only on cache, but not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero fluff. It front-loads the core purpose and immediately provides actionable usage guidance. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 optional params, no output schema, and no annotations, the description covers the essential aspects: what it produces, how to include channels, and the return value. It could be slightly improved by noting prerequisites (e.g., that cached analyses must exist) or mentioning that the tool creates or overwrites a file, but overall it is quite complete for its simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description adds no new information beyond what the schema already provides. For example, the description's statement about omitting channels is identical to the schema's description. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Build or update') and resource ('tabbed HTML comparison dashboard from cached analyses'). It distinguishes from siblings (yt_analyze_channel, yt_get_analysis, etc.) by focusing on comparison rather than individual analysis or retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by stating you can specify channels or include all, but it does not explicitly say when to use this tool versus alternatives like yt_list_analyses or yt_analyze_channel. No exclusions or context for when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

yt_get_analysisB

Retrieve the full cached analysis JSON for a specific channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesChannel name or slug (as returned by yt_list_analyses)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility. It identifies the operation as a retrieval (non-destructive) but fails to disclose caching behavior, error conditions, authentication needs, or what 'full cached analysis JSON' entails beyond a vague label.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with zero wasted words, front-loading the purpose and resource. It is optimally concise for the information provided.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description is too brief. It does not explain the returned JSON content, error handling, prerequisites (e.g., existing analysis), or any side effects. A retrieval of 'full cached analysis' warrants more completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (the single parameter has a clear description referencing yt_list_analyses). The tool description adds no additional semantic meaning beyond what the schema already provides, so baseline score 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'retrieve' and explicitly names the resource 'full cached analysis JSON for a specific channel'. It clearly distinguishes from sibling tools like yt_list_analyses (listing) and yt_analyze_channel (analysis creation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context via the parameter reference to yt_list_analyses, but does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

yt_list_analysesA

List all cached channel analyses. Returns channel names, video counts, and analysis dates.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that the tool returns specific fields (channel names, video counts, analysis dates) but does not explicitly state that it is read-only or that it has no side effects. The description is adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no unnecessary words. It is direct and every word serves a purpose: stating the action, the resource, and the return values.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (no parameters, no output schema), the description provides the basic purpose and return fields. However, it could be more complete by noting that it is a read-only operation or mentioning caching behavior. Without annotations, the agent might need more context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the schema coverage is vacuously 100%. The description adds context by stating what the tool returns, which is beneficial beyond the empty schema. Baseline for 0 parameters is 4, and the description meets it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: listing all cached channel analyses. It specifies the verb 'List' and the resource 'cached channel analyses', distinguishing it from sibling tools like yt_analyze_channel (creates analyses) and yt_get_analysis (retrieves a specific one).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description does not mention any prerequisites, context, or reasons for choosing it over siblings like yt_analyze_channel or yt_get_analysis.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

yt_remove_analysisB

Remove a cached channel analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesChannel name or slug to remove

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It indicates a destructive action ('Remove') but does not clarify permanence, side effects (e.g., does it also remove analysis data?), or required permissions. The minimal description leaves ambiguity about the exact impact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no extraneous content. It is concise and front-loaded, though it could benefit from a brief usage note.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, single-parameter tool with no output schema, the description is sparse. It does not explain what happens after removal, how to verify success, or error conditions. More context is needed for safe usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (channel parameter described). The description adds no extra meaning beyond the schema, which is adequate. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove') and the resource ('cached channel analysis'). It effectively distinguishes from siblings like yt_analyze_channel and yt_get_analysis by specifying removal rather than creation, retrieval, or comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description does not specify prerequisites, such as whether an analysis must exist first, or when removal is appropriate (e.g., only if cache is outdated).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 5 tool updatesv1.0.0
    • First observedyt_analyze_channel
    • First observedyt_compare_creators
    • First observedyt_get_analysis
    • First observedyt_list_analyses
    • First observedyt_remove_analysis

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: analyzing a channel, comparing creators, retrieving cached analyses, listing them, and removing them. No overlap exists.

Naming Consistency5/5

All tools follow a consistent 'yt_verb_noun' pattern (e.g., yt_analyze_channel, yt_compare_creators), making the naming predictable and uniform.

Tool Count5/5

With 5 tools, the server is well-scoped for managing YouTube channel analyses. The count is appropriate for the domain without being excessive or insufficient.

Completeness5/5

The tool set covers the full lifecycle: create analysis, retrieve (list/get), update (compare dashboard), and delete. No obvious gaps for the intended purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables interaction with the YouTube Data API, allowing users to search videos, get video and channel details, analyze trends, and fetch video transcripts.
    -
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that enables users to retrieve YouTube transcripts and perform video or channel searches without requiring Google API keys. It supports transcript chunking and provides tools for detailed video content analysis and channel metadata extraction.
    5
    33 npm
    4
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server for intelligent YouTube video analysis that provides token-optimized summaries, sentiment analysis, and entity extraction from transcripts. It enables AI assistants to perform video reporting, channel monitoring, and comprehensive YouTube searches through structured data tools.
    10
    52
    Apache 2.0